CN1965365B - 数据处理设备和数据处理方法 - Google Patents

数据处理设备和数据处理方法 Download PDF

Info

Publication number
CN1965365B
CN1965365B CN2005800190363A CN200580019036A CN1965365B CN 1965365 B CN1965365 B CN 1965365B CN 2005800190363 A CN2005800190363 A CN 2005800190363A CN 200580019036 A CN200580019036 A CN 200580019036A CN 1965365 B CN1965365 B CN 1965365B
Authority
CN
China
Prior art keywords
stream
data
control module
video
mark
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2005800190363A
Other languages
English (en)
Other versions
CN1965365A (zh
Inventor
藤波靖
浜田俊也
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of CN1965365A publication Critical patent/CN1965365A/zh
Application granted granted Critical
Publication of CN1965365B publication Critical patent/CN1965365B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/105Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2541Blu-ray discs; Blue laser DVR discs

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Television Systems (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

公开了数据处理设备和方法,用于与数据片段数量、节目、节目记录介质、数据记录介质和数据结构无关,而根据元数据指定被复用到复用数据中的数据。由复用基本流形成的节目流上作为元数据的Clip()包括为MPEG-2系统(ISO/IEC 13818-1)的每个属性定义的、并且用于识别数据的stream_id、和用于识别具有不是由MPEG-2系统所定义的属性的数据的private_stream_id的组。组的数量等于复用到节目流中的基本流的数量number_of_stream。由Clip()中所包括的stream_id和private_stream_id来指定被复用到节目流中的基本流。可以将本发明应用于使用DVD的游戏机。

Description

数据处理设备和数据处理方法
技术领域
本发明涉及数据处理设备和数据处理方法、程序和程序记录介质、数据记录介质和数据结构。本发明具体涉及使得例如以增加的方便性为特点的数据处理等成为可能的数据处理设备和数据处理方法、程序和程序记录介质、数据记录介质和数据结构。
背景技术
最近,例如DVD(数字多功能盘)作为大容量、可随机存取的记录介质广为流行,因此使用DVD执行各种处理的DVD设备也广为流行。
DVD设备包括,例如,用于对诸如来自DVD/在DVD上的电视广播节目之类的数据执行记录/回放的DVD记录机、用于将地址信息等记录在DVD上并且显示地址信息的汽车导航系统、和用于记录游戏的程序等并且执行该程序的游戏机。
注意,在例如非专利文献1中描述了DVD的详细情况。
[非专利文献1]DVD Specification for Read-Only Disc Part 3;Version 1.1December 1997
发明内容
本发明要解决的问题
要求诸如DVD之类的能够记录大量数据的记录介质、能使用其来执行各种处理的DVD设备等对这种大量数据执行以增加的方便性为特点的数据处理。
在考虑到这种情况下作出了本发明,本发明使得以增加的方便性为特点的数据处理等成为可能。
用于解决问题的装置
本发明的数据处理设备的特征在于具有用于读取元数据的读取装置。元数据与将一个片段或者多个片段数据复用到其中的复用数据相关,并且包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为一个片段或者多个片段数据的每个属性定义的、用于识别一个片段或者多个片段的数据的第一识别信息;和用于识别具有不以预定标准定义的属性的一个片段或者多个片段数据的第二识别信息。本发明的数据处理设备的特征还在于具有指定装置,用于根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据;和处理装置,用于处理由指定装置所指定的数据。
本发明的数据处理方法特征在于包括对其元数据的读取步骤。元数据与将一个片段或者多个片段数据复用到其中的复用数据相关,并且包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为一个片段或者多个片段数据的每个属性定义的、用于识别一个片段或者多个片段数据的第一识别信息;和用于识别具有不以预定标准定义的属性的一个片段或者多个片段数据的第二识别信息。本发明的数据处理方法特征还在于包括指定步骤,用于根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据;和处理步骤,用于处理由指定步骤所指定的数据。
本发明的程序特征在于包括读取元数据的读取步骤。元数据与将一个片段或者多个片段数据复用到其中的复用数据相关,并且包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为数据的每个属性定义的、用于识别数据的第一识别信息;和用于识别具有不以预定标准定义的属性的数据的第二识别信息。本发明的程序特征还在于包括指定步骤,用于根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据;和处理步骤,用于处理由指定步骤所指定的数据。
在本发明的程序记录介质上所记录的程序特征在于读取元数据的读取步骤。元数据与将一个片段或者多个片段数据复用到其中的复用数据相关,并且包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为数据的每个属性定义的、用于识别数据的第一识别信息;和用于识别具有不以预定标准定义的属性的数据的第二识别信息。本发明的在程序记录介质上所记录的程序特征还在于包括指定步骤,用于根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据;和处理步骤,用于处理由指定装置所指定的数据。
在本发明的数据记录介质上所记录的记录数据和数据结构特征在于包括将一个片段或者多个片段数据复用到其中的复用数据,而且元数据与复用数据相关。元数据与将一个片段或者多个片段数据复用到其中的复用数据相关,并且包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为数据的每个属性定义的、用于识别数据的第一识别信息;和用于识别具有不以预定标准定义的属性的数据的第二识别信息。
在本发明的数据处理设备和数据处理方法、程序、和程序记录介质上所记录的程序中,读取元数据。该元数据与将一个片段或者多个片段数据复用到其中的复用数据相关,并且包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为数据的每个属性定义的、用于识别数据的第一识别信息;和用于识别具有不以预定标准定义的属性的数据的第二识别信息。而且,根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据,和处理所指定的数据。
在本发明的数据结构和数据记录介质上所记录的所记录数据中,包括将一个片段或者多个片段数据复用到其中的复用数据,和关于复用数据的元数据。而且元数据包括与被复用到复用数据中的数据片段数量相同数量的组。每个组包括以预定标准为数据的每个属性定义的、用于识别数据的第一识别信息;和用于识别具有不以预定标准定义的属性的数据的第二识别信息。
本发明的效果
根据本发明,使得以增加的方便性为特点的数据处理等成为可能。特别是,可以与数据片段的数量无关地根据元数据指定被复用到复用数据中的数据。
附图说明
图1示出了将本发明应用于其中的盘设备的实施方式的硬件配置例子的框图;
图2示出了由CPU 112执行的软件模块的配置例子的框图;
图3示出了缓存器控制模块215的配置例子的框图;
图4示出了在盘101中的目录的配置例子的示意图;
图5示出了“PLAYLIST.DAT”文件的语法的示意图;
图6示出了PlayItem()的语法的示意图;
图7示出了PlayListMark()的语法的示意图;
图8示出了Mark()的类型和mark_byte值之间的关系的示意图;
图9示出了在PlayList()、PlayItem()、剪切片段(clip)和在剪切片段流文件中所存储的节目流之间的关系的示意图;
图10示出了剪切片段信息文件Clip()的语法的示意图;
图11示出用于识别基本流的private_stream_id和steam_id、以及基本流之间的关系的示意图;
图12示出了StaticInfo()的语法的示意图;
图13示出了DynamicInfo()的语法的示意图;
图14示出了EP_map()的语法的示意图;
图15示出了在MPEG-2系统中节目流、节目流回放和节目流包头部的语法的示意图;
图16示出了在MPEG-2系统中的PEC包的语法的示意图;
图17示出了在MPEG-2系统中的PES包的语法的示意图;
图18示出了在MPEG-2系统中的PES包的语法的示意图
图19示出了在PES_packet()的steam_id中描述的值和在MPEG-2系统中的基本流的属性(类型)之间的关系的示意图;
图20示出了由盘设置所采用的stream_id的示意图;
图21示出了private_stream1_PES_payload()的语法的示意图;
图22示出了priavate_stream_id值和在private_payload()中存储的基本流的属性之间的关系的示意图;
图23示出了private_stream2_PES_payload()的语法的示意图;
图24示出了au_information()的语法的示意图;
图25示出了“PLAYLIST.DAT”文件的具体例子的示意图;
图26示出了剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”的具体例子的示意图;
图27示出了在剪切片段信息文件“00001.CLP”中的EP_map()的具体例子的示意图;
图28示出了在Playlist#0和Playlist#1中的PlayListMark()的具体例子的示意图;
图29示出了解释预回放处理的流程图;
图30示出了用于解释回放处理的流程图;
图31示出了用于解释PlayItem改变处理的流程图;
图32示出了用于解释时间代码显示处理的流程图;
图33示出了用于解释流切换处理的流程图;
图34示出了用于解释由缓存器控制模块215的处理的流程图;
图35示出了用于解释由缓存器控制模块215的处理的流程图;
图36示出了用于解释视频流读取处理的流程图;
图37示出了用于解释音频流读取处理的流程图;
图38示出了用于解释字幕流读取处理的流程图;
图39示出了用于解释重新同步处理的流程图;
图40示出了用于解释标记处理的流程图;
图41示出了用于解释输出属性控制处理的流程图;
图42示出了在剪切片段信息文件“00003.CLP”中所描述的pts_change_point/DynamicInfo()组的具体例子的示意图;
图43示出了用于解释字幕显示控制处理的流程图;
图44示出了用于解释抓取控制处理和背景/屏幕保护程序处理的流程图;
图45示出了private_stream2_PES_payload()的另一种语法的示意图;以及
图46示出了au_infomation()的另一种语法的示意图。
对附图标记的说明
101盘、102盘驱动器、111总线、112CPU、113存储器、114驱动器接口、115输入接口、116视频解码器、117音频解码器、118视频输出接口、119音频输出接口、120视频输出终端、121音频输出终端、201操作系统、210视频内容回放程序、211脚本控制模块、212播放器控制模块、213内容数据提供模块、214解码控制模块、214A时间测量部分、215缓存器控制模块、215A缓存器、216视频解码器控制模块、217音频解码器控制模块、218字幕解码器控制模块、219图形处理模块、220视频输出模块、220A FIFO、221音频输出模块、221AFIFO、231数据开始指针存储部分、232数据写指针存储部分、233视频读取功能部分、234音频读取功能部分、235字幕读取功能部分、241视频读取指针存储部分、242 steam_id寄存器、243 au_information()寄存器、251音频读取指针存储部分、252 stream_id寄存器、253 private_stream_id寄存器、261字幕读取功能标号存储部分、262字幕读取指针存储部分、263 stream_id寄存器、264 private_stream id寄存器。
具体实施方式
以下,参照附图来详细说明本发明的实施例。
[硬件配置]
图1示出了将本发明应用其中的盘设备的实施方式的硬件配置例子的框图。
可以将图1的盘设备应用于例如盘播放器、游戏机、汽车导航系统和其他设备。
在图1的盘设备中,盘101例如是诸如DVD之类的光盘、或者磁光盘、磁盘,并且在其上记录有诸如视频数据、音频数据和字幕数据之类的内容数据、以及用于回放内容数据所需要的数据。
注意,在盘101上所记录的数据(所记录数据)根据需要还包括计算机可执行程序。而且,虽然采用作为盘形状的记录介质的盘101作为在本实施方式中的记录介质,但是所述记录介质可以替代地包括,例如,半导体存储和带形记录介质。而且,可以将从位于远程的盘101中读取并传送到的数据输入到图1的盘设备中。也就是,可以由连接到盘设备的不同设备来执行从盘101中读取数据,而且可以由盘设备来接收和处理由不同设备所读取的数据。而且,盘设备可以经由诸如因特网之类的网络,从在其存储器中存储有与在盘101上所记录的数据类似的数据的服务器等中分发数据以进行处理。而且,盘设备还可以从服务器或者其他设备中接收数据,临时将该数据存储在盘101上,之后处理在盘101上所记录的数据。
盘驱动器102允许将盘101可拆卸地附连到其上。盘驱动器102合并有接口(未示出),并且通过该接口连接到驱动器接口114。盘驱动器102驱动附连到其上的盘101,并且执行例如根据来自驱动器接口114的用于读取等的指令从盘101中读取数据的处理,而且,例如,将所读取的数据提供到驱动器接口114。
将CPU(中央处理单元)112、存储器113、驱动器接口114、输入接口115、视频解码器116、音频解码器117、视频输出接口118和音频输出接口119连接到总线111。
CPU 112和存储器113形成计算机系统。也就是,CPU 112执行作为在存储器113中所存储的程序的、在下面描述的软件模块,以控制整个盘设备,而且执行下面描述的各种处理。存储器113存储要由CPU 112执行的软件模块。而且,存储器113临时存储CPU 112的操作所需要的数据。注意,只能用非易失存储器、或者易失存储器和非易失存储器的组合来形成存储器113。而且,在图1的盘设备中提供有硬盘驱动器以在其上记录(安装)由CPU 112所执行的软件模块的情况中,只能够以易失存储器来形成存储器113。
这里,可以事先将由CPU 112所执行的程序(软件模块)记录在作为合并在盘设备中的记录介质的存储器113中。
替代地,可以将程序临时地或者永久地存储(记录)在盘101上,进而在除了盘101之外的、诸如软盘、CD-ROM(致密盘只读存储器)、MO(磁光)盘、磁盘或者存储器卡之类的可移动记录介质上。可以提供这种可移动记录介质作为所谓的软件包。
注意,可以事先从诸如上述的那些介质之类的可移动记录介质将程序存储在存储器113中,或者安装在盘设备中。而且,可以经由用于数字卫星广播的卫星从下载站通过无线传输、或者经由LAN(局域网)或者因特网之类的网络通过到盘设备的有线传输将程序安装在盘设备中,而且盘设备可以通过输入接口115接收这样传输的程序,以安装在合并于此的存储器113中。
而且,可以由单个CPU或者以分布方式由多个CPU来处理程序。
驱动器接口114在CPU 112的控制下来控制盘驱动器102,从而其将从盘101中由盘驱动器102所读取的数据经由总线111提供给CPU 112、存储器113、视频解码器116、音频解码器117等。
输入接口115接收由用户控制按键(按钮)或者遥控器(遥控装置)(未示出)所提供的信号,以经由总线111提供给CPU 112。注意,输入接口115还附加地作为诸如调制解调器(包括ADSL(非对称数字订户线)调制解调器)和NIC(网络接口卡)之类的通信接口工作。
视频解码器116将从盘101中由盘驱动器102所读取的并且经由驱动器接口114和总线111提供到其的视频数据的编码数据(编码的视频数据)进行解码,并且经由总线111将所产生的视频数据提供到CPU 112和视频输出接口118。
音频解码器117将从盘101中由盘驱动器102所读取的并且经由驱动器接口114和总线111提供到其的音频数据的编码数据(编码的音频数据)进行解码,并且经由总线111将所产生的音频数据提供到CPU 112和音频输出接口119。
视频输入接口118对经由总线111提供到其的视频数据执行必要的处理,以从视频输出终端120输出。音频输出接口199对经由总线111提供到其的音频数据执行必要的处理,以从音频输出终端121输出。
将视频输出终端120连接到诸如CRT(阴极射线管)或者液晶板之类的视频输出设备(未示出),因此将从视频输出终端120输出的视频数据提供给视频输出设备以在其上进行显示。将音频输出终端121连接到诸如扬声器或者放大器之类的音频输出设备(未示出),因此将从音频输出终端121中输出的音频数据提供给音频输出设备以从其输出。
注意,可以通过任何有线或者无线装置来执行分别将视频数据和音频数据从盘设备提供给视频输出设备和音频输出设备。
[软件模块的配置]
随后,图2示出了由图1的CPU 112所执行的软件模块的配置例子。
将由CPU 112所执行的软件模块大致分为操作系统(OS)201和作为应用程序的视频内容回放程序210。
[操作系统201]
当打开盘设备的电源时首先启动操作系统201(CPU 112执行操作系统201),然后执行诸如初始化之类的必要处理以调用作为应用程序的视频内容回放程序210。
操作系统201将诸如读取文件之类的类似基础架构的服务提供给视频内容回放程序210。也就是,例如,对于读取文件来说,当视频内容回放程序请求读取文件时,操作系统210经由驱动器接口114控制盘驱动器102以读取盘101上的数据,从而将数据传送服务提供给视频内容回放程序210。而且,操作系统210执行诸如解释文件系统之类的操作。
注意,操作系统210包括多任务处理功能,从而其能够(明显地)以时分方式并发地操作多个软件模块。也就是,由几个软件模块形成视频内容回放程序210,而这些软件模块可以彼此并发地操作。
[视频内容回放程序210]
视频内容回放程序210包括脚本控制模块211、播放器控制模块212、内容数据提供模块213、解码控制模块214、缓存器控制模块215、视频解码器控制模块216、音频解码器控制模块217、字幕解码器控制模块218、图形处理模块219、视频输出模块220和音频输出模块221。
视频内容回放程序210是在回放盘101时充当核心角色的软件。当将盘101装载(插入)到盘驱动器102中时,视频内容回放程序210根据其上所记录的内容来检查盘101是否符合下面描述的格式。而且,识别内容回放程序210从盘101中读取下面描述的脚本文件来执行,而且读取用于回放在盘101上所记录的内容所必须的元数据(数据库信息)的文件,以根据元数据来控制对内容的回放。
下面将描述形成图2的视频内容回放程序210的软件模块。注意,在图2中从原理上说,箭头实线代表内容数据,而箭头虚线代表控制数据。
[脚本控制模块211]
脚本控制模块211解释和执行在盘101上所记录的脚本文件中所描述的脚本程序(SCRIPT)。在脚本程序中,可以描述诸如“控制图形处理模块219以产生和显示诸如菜单之类的画面”、“根据来自诸如遥控器之类的UI(用户接口)的信号来改变菜单的显示(例如,在菜单上移动光标)”和“控制播放器控制模块212”之类的操作。
[播放器控制模块212]
播放器控制模块212参照在盘101上所记录的元数据(数据库信息)等,以执行关于内容的回放的控制。也就是,播放器控制模块212分析记录在盘101上的例如下面描述的PlayList()和Clip(),并且根据分析结果来控制内容数据提供模块213、解码控制模块214和缓存器控制模块215。而且,播放器控制模块213根据来自脚本控制模块211和输入接口115的指令,以下面描述的流切换技术(stream switching)执行控制以切换用于回放的流等。而且,播放器控制模块212从解码控制模块214获取时间以执行关于时间显示、下面描述的标记(Mark())等的处理。
[内容数据提供模块213]
内容数据提供模块213请求操作系统201根据播放器控制模块212的控制、或者根据缓存器控制模块215中所积累的数据量,从盘101中读取内容数据、元数据等。
注意,将根据内容数据提供模块213的请求从盘101中由操作系统201读取的元数据等提供到必须的那些模块。而且,将根据内容数据提供模块213的情况从盘101中由操作系统201所读取的内容数据提供给缓存器控制模块215。
[解码控制模块214]
解码控制模块214根据播放器控制模块212的控制,来控制视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的操作。而且,解码控制模块214在其中合并了用于测量时间的时间测量部分214A,并且管理通过视频解码器控制模块216的控制所输出的视频数据的输出和要与视频数据同步输出的数据的输出(输出数据)(即这里要通过音频解码器控制模块217的控制输出的音频数据),之间的同步。
[缓存器控制模块215]
缓存器控制模块215在其中合并有作为图1的存储器113的存储区域的一部分的缓存器215A,并且将由已经请求了操作系统201这样做的内容数据提供模块213从盘101中读取的内容数据存储在缓存器215A中。
而且,缓存器控制模块215根据视频解码器控制模块216、音频解码器控制模块217或者字幕解码器控制模块218的情况,分别将在缓存器215A中所存储的数据提供给视频解码器控制模块216、音频解码器控制模块217或者字幕解码器控制模块218。
也就是,缓存器控制模块215在其中合并视频读取功能部分233、音频读取功能部分234和字幕读取功能部分235,所有这些都将在下面参照图3进行描述。而且,缓存器控制模块215用它的视频读取功能部分233来处理来自视频解码器控制模块216的数据请求,从而将在缓存器215A中所存储的数据提供给视频解码器控制模块216。类似地,缓存器控制模块215用它的音频读取功能部分234来处理来自音频解码器控制模块217的数据请求,从而将缓存器215A中所存储的数据提供给音频解码器控制模块217,而且用它的字幕读取功能部分235来处理来自字幕解码器控制模块218的数据请求,从而将在缓存器215A中所存储的数据提供给字幕解码器控制模块218。
[视频解码器控制模块216]
视频解码器控制模块216控制在缓存器控制模块215中合并的视频读取功能部分233(图3),基于视频读取单元从缓存器控制模块215的缓存器215A中读取由编码视频数据所获得的数据(编码视频数据),以提供到图1的视频解码器116。而且,视频解码器控制模块216控制视频解码器116来解码基于视频存取单元的数据。而且,视频解码器控制模块216将在视频解码器116处进行解码所产生的视频数据提供给图形处理模块219。
这里,视频存取单元指的是与例如一个画面(一帧或者一场)相当的视频数据量。
[音频解码器控制模块217]
音频解码器控制模块217控制在缓存器控制模块215中合并的音频读取功能部分234(图3),基于音频存取单元从缓存器控制模块215中的缓存器215A中读取由编码音频数据所获得的数据(编码的音频数据),以提供到图1的音频解码器117。而且,音频解码器控制模块217控制音频解码器117对基于音频存取单元的数据进行解码。而且,音频解码器控制模块217将音频解码器117处进行解码所产生的音频数据提供给音频输出模块221。
这里,音频存取单元指的是预定量的音频数据(例如,与一个画面同步输出的数据量)。在本实施方式中,假设音频存取单元例如是已知的固定长度。
[字幕解码器控制模块218]
字幕解码器控制模块218控制在缓存器控制模块215中合并的字幕读取功能部分235(图3),基于字幕存取单元从缓存器控制模块215中的缓存器215A中读取由编码字幕数据所获得的数据(编码的字幕数据)。而且,字幕解码器控制模块218其中包括用于对从缓存器215A中所读取的数据进行解码的字幕解码软件(未示出)。而且,字幕解码器控制模块218将从解码中产生的字幕数据(字幕的画面数据)提供给图形处理模块219。
这里,字幕存取单元指的是预定量的字幕数据(例如,与一个画面同步输出的数据量)。在本实施方式中,假设字幕存取单元的大小例如要在每个字幕存取单元开始处进行描述。
[图形处理模块219]
图形处理模块219根据播放器控制模块212的控制(指令),在来自视频解码器控制模块216的视频数据之上(覆盖在上面),执行对来自字幕解码器控制模块218的字幕数据的放大或者缩小。而且,图形处理模块219执行放达、缩小和其他操作,以将已经被添加有字幕数据的视频数据的大小(画面框)适配到连接到图1的视频输出终端120的视频输出设备的显示屏幕中,并且输出所产生的视频数据到视频输出模块220。
而且,图形处理模块219根据来自脚本控制模块211和播放器控制模块212的指令(控制)产生菜单、消息等,以将它们覆盖在所输出的视频数据上。
而且,图形处理模块219根据连接到图1的视频输出终端120的视频输出设备的宽高比,将要被输出到视频输出模块220的视频数据的宽高比、以及用于指令在盘101上所记录的视频数据的宽高比的信息等进行转换。
也就是,在视频输出设备的宽高比为例如16∶9的情况中,当用于指令视频数据的宽高比的信息表示4∶3时,图形处理模块219在长度上(在水平方向中)压缩(减少)要被输出到视频输出模块220的视频数据,使得左右两侧为黑色,以进行输出。而且,在视频输出设备的宽高比为例如4∶3的情况中,当用于指令视频数据的宽高比的信息表示16∶9时,图形处理模块219在高度上(在垂直方向中)压缩(减少)要被输出到视频输出模块220的视频数据,使得上下两侧为黑色,以进行输出。
注意,在视频输出设备的宽高比等于由指令视频数据的宽高比为4∶3或者16∶9的信息所表示的宽高比的情况中,图形处理模块219直接将要被输出的视频数据输出到视频输出模块220,而不进行压缩。
此外,图形处理模块219例如根据播放器控制部分212的请求,捕获当前正在被处理的视频数据。而且,图形处理模块219存储所捕获的视频数据,或者将该数据提供给播放器控制模块212。
[视频输出模块220]
视频输出模块220排他地占有图1的存储器113的一部分用作FIFO(先进先出)220A(缓存器),以临时存储来自图形处理模块219的视频数据,或者适当地读取在FIFO 220A中所存储的视频数据,以将该数据输出到视频输出终端120(图1)。
[音频输出模块221]
音频输出模块221排他地占有图1的存储器113的一部分用作FIFO 221A(缓存器),以临时地存储来自音频解码器控制模块217的音频数据,或者适当地读取在FIFO 221A中所存储的音频数据,以将该数据输出到音频输出终端121(图1)。
而且,在来自音频解码器控制模块217的音频数据处于“双”(两种语言)模式(在该模式中,左声道承载作为“主音频”的音频数据而右声道承载作为“副音频”的音频信号)的情况中,音频输出模块221根据预定音频输出模式,将来自音频解码器控制模块217的音频数据输出到音频输出终端121。
也就是,当例如将“主音频”指定为音频输出模式时,音频输出模块221拷贝来自音频解码器控制模块217的音频数据的左声道音频数据作为右声道音频数据,而且将左声道和右声道所产生的音频数据(“主音频”音频数据)输出到音频输出终端121。而且,当将“副音频”指定为音频输出模式时,音频输出模块221拷贝来自音频解码器控制模块217的音频数据的右声道音频数据作为左声道音频数据,而且将左声道和右声道所产生的音频数据(“副音频”音频数据)输出到音频输出终端121。而且,当将“主/副音频”指定为音频输出模式时,音频输出模块221直接将来自音频解码器控制模块217的音频数据输出到音频输出终端121。
注意,在来自音频解码器模块217的音频数据处于“立体声”模式时,音频输出模块221将来自音频解码器控制模块217的音频数据直接输出到音频输出终端121,而不管指定什么样的音频输出模式。
这里,可以通过用户在其中显示由视频内容回放程序120所产生的菜单的屏幕等之上控制遥控器等来交互地进行音频数据模式指定。
[缓存器控制模块215的配置]
随后,图3示出了图2的缓存器控制模块215的配置例子。
缓存器控制模块215排他地占有图1的存储器113的一部分用作缓存器215,以临时地在缓存器215A中存储从盘101中所读取的数据。而且,缓存器控制模块215读取在缓存器215A中所存储的数据,并且将该数据提供给图2的视频解码器控制模块216、音频解码器控制模块217或者字幕解码器控制模块218。
也就是,缓存器控制模块215在缓存器215A之外还具有数据开始指针存储部分231和数据写指针存储部分232,两者都是存储器113的一部分,而且还具有视频读取功能部分233、音频读取功能部分234和字幕读取功能部分235作为其内部模块。
缓存器215A例如是环形缓存器,因此顺序地存储从盘101中所读取的数据。因为实际上是无尽头、类环形的存储,所以一旦充满了数据,缓存器215A就以盖写最旧的数据的方式来存储新数据。
数据开始指针存储部分231存储数据开始指针,该指针用于指示在缓存器215A中所存储的数据中还没有从缓存器215A中被读取的、因此是最旧的数据所存储的位置(地址)。
数据写指针存储部分222存储数据写指针,该指针用于指示将从盘101中读取的新数据写入缓存器215A中的位置(地址)。
这里,无论何时将从盘101中读取的数据存储在缓存器215A中,都如在附图中所示那样,顺时针地更新由数据写指针所指示的位置,而当从缓存器215A中读取数据时,将由数据开始指针所指示的位置如附图中所示那样,顺时针地更新。因此,在缓存器215A中所存储的数据中,实际上“有效”的数据是从数据开始指针所指示的位置到数据写指针所指示的位置顺时针存储的数据。
视频读取功能部分233根据图2的视频解码器控制模块216的请求,从缓存器215A中读取视频流(关于视频数据的基本流),并且将该视频流提供给视频解码器控制模块216。而且,音频读取功能部分234根据图2的音频解码器控制模块217的请求,从缓存器215A中读取音频流(关于音频数据的基本流),并且将该音频流提供给音频解码器控制模块217。而且,字幕读取功能部分235根据图2的字幕解码器控制模块218的请求,从缓存器215A中读取字幕流(关于字幕数据的基本流),并且将该音频流提供给字幕解码器控制模块218。
也就是,盘101其中记录有符合例如MPEG(运动图像专家组)2标准的MPEG-2系统节目流,而且缓存器215A存储从盘101中读取的节目流。在该节目流中,将诸如视频流、音频流和字幕流之类的一个或多个基本流进行时分复用。视频读取功能部分233具有用于解复用该节目流的功能,而且从缓存器215A中所存储的节目流中进行分离来读取视频流。
类似地,音频读取功能部分234也具有解复用该节目流的功能,并且通过从缓存器215A中所存储的节目流中进行分离来读取该音频流。而且,字幕读取功能部分235也具有用于对该节目流进行解复用的功能,而且通过从缓存器215A中所存储的节目流中进行分离来读取该字幕流。
这里,视频读取功能部分233具有视频读取指针存储部分241、stream_id寄存器242和au_information()寄存器243,所有的这些都是图1的存储器233的一部分。
视频读取指针存储部分241将用于指示其中存储由视频流的缓存器215A中的位置(地址)的视频读取指针进行存储,而视频读取功能部分233读取由视频读取指针所指示的在缓存器215A中的位置处所存储的数据作为视频流。stream_id寄存器242封包在缓存器215A中所存储的节目流,并且将用于识别(指定)要从节目流中被读取的视频流的、在下面描述的stream_id进行存储。au_information()寄存器243存储作为从缓存器215A中读取视频流所需要的(用于读取视频流的)数据的、下面描述的au_information()。
音频读取功能部分234具有音频读取指针存储部分251、stream_id寄存器252、和private_stream_id寄存器253,所有的这些都是图1的存储器113的一部分。
音频读取指针存储部分251将用于指示其中存储有音频流的缓存器215A中的位置(地址)的音频读取指针进行存储,而音频读取功能部分234读取在缓存器215A中由音频读取指针所指示的位置处所存储的数据作为音频流。stream_id寄存器252和private_stream_id寄存器253分析缓存器215A中所存储的节目流,并且将用于识别要从节目流中读取的音频流的、下面描述的stream_id和private_stream_id分别进行存储。
字幕读取功能部分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分析在缓存器215A中所存储的节目流,并且分别存储下面所描述的用于识别要从节目流中读取字幕流的private_stream_id和stream_id。
[描述在盘101上所存储的数据的数据格式]
随后,将描述在盘101上所存储的数据的数据格式。
图4示意地示出了盘101的目录结构。
盘101使用与例如ISO(国际标准化组织)-9660、UDF(通用盘格式:http://www.osta.org/specs/)和其他标准中的任何一种符合的文件系统。通过目录结构对盘101上所存储的数据的文件进行层级管理。这里,文件系统不限于与上述标准符合的那些。
在图4中,表示文件系统的基础的根目录包括“VIDEO”目录,而“VIDEO”目录包括两个目录:“CLIP”目录和“STREAM”目录。
除了“CLIP”目录和“STREAM”目录,“VIDEO”目录还包括两个数据文件,“STRIPT.DAT”文件和“PLAYLIST.DAT”文件。
“STRIPT.DAT”文件是其中描述了脚本程序的脚本文件。也就是,在“SCRIPT.DAT”文件中,描述了用于使得盘101的回放模式交互的脚本程序。由脚本控制模块211来解释和执行在“SCRIPT.DAT”文件中所描述的脚本程序。
“PLAYLIST.DAT”文件存储一个或多个PlayList()(下述图5的PlayList()),其中描述了用于诸如在盘101上所记录的视频数据之类的内容的回放过程。
“CLIP”目录包括一个或多个剪切片段信息文件,而“STREAM”目录包括一个或多个剪切片段流文件。也就是,在图4中,“CLIP”目录包括三个剪切片段信息文件,“00001.CLP”、“00002.CLP”和“00003.CLP”,而“STREAM”目录包括三个剪切流文件,“00001.PS”、“00002.PS”和“00003.PS”。
每个剪切片段流文件包括节目流,其中将一个或多个基本流进行时分复用。通过对诸如视频数据、音频数据或者字幕数据之类的一个片段或者多个片段数据(流)进行压缩和编码来获得基本流。
在每个剪切片段信息文件中,描述诸如对应剪切片段流文件的特性之类的关于剪切片段流的(文件)元数据。
也就是,剪切片段流文件逐个地与剪切片段信息文件对应。在图4中,根据要求使用五位数字之后跟随有点和“PS”的命名规则将文件名给予剪切片段流文件,而根据要求使用与对应剪切片段流文件的五位数字相同的五位数字之后跟随有点和“CLP”的命名规则将文件名给予剪切片段信息文件。
因此,可以通过检查其文件扩展名(在点右侧的部分)来识别文件是剪切片段流文件还是剪切片段信息文件,而且,可以通过检查除了它们的文件扩展名之外的部分(在点左侧的部分)是否彼此一致来识别剪切片段流文件是否与剪切片段信息文件对应。
下面将描述在盘101上所记录的这些文件的详情。
[PLAYLIS.DAT]
图5示出了在图4的“VIDEO”目录中所包括的“PLAYLIST.DAT”文件的内部结构(语法)。
这里,在图5中,在“语法”栏中的描述表示数据结构,而在“比特数”栏中的描述每个都表示在“语法”栏的对应行中的数据的比特长度。而且,作为“Mnemonic”栏中的描述之一的“bslbf”(比特串左比特第一)意味着从其最左比特转发“语法”栏的对应行中的数据,而“uimsbf”(不带符号的整数最高比特第一)意味着在“语法”栏的对应行中的数据是不带符号的整数,并且从最高比特开始进行转发。类似地将上述规则应用于与图5类似的任何下述附图中。
“PLAYLIST.DAT”文件以顺序排列的、用于描述诸如其文件名(filename)之类的信息的name_length(8比特)和name_string(255比特)开始。
也就是,name_length以字节表述后面的name_string的大小。name_string表示“PLAYLIST.DAT”文件的名称(filename)。
注意,对于name_string,将与name_length表示的从开始起的字节数相等当的数据用作有效名称。其中将name_length设置为值10,将相当于name_string的开始起10字节的数据理解为有效名称。
name_string之后跟随有number_of_P1ayLists(16比特)。rumber_of_PlayLists表述之后跟随的PlayList()的数量。number_of_PlayLists之后跟随有与number_of_PlayLists表示的数量相同的PlayList()。
PlayList()是播放列表,其中描述用于在盘101上所记录的剪切片段流文件的回放过程,并且具有下面的内部结构。
也就是,PlayList()以PlayList_data_length(32比特)开始。PlayList_data_length表示PlayList()的大小。
PlayList_data_length顺序地跟随有reserved_for_word_aligment(15比特)和capture_enable_flag_Playlist(1比特)。将15比特的reserved_for_word_alignment进行排列以使得在随后的1比特capture_enable_flag_Playlist位置处使得所谓字对准(以每十六比特位置对准)。capture_enable_flag_Playlist是1比特标号,其指示是否允许在图1的盘设备内在要被回放的盘101上二次使用(secondary use)与要由PlayList()回放的视频流对应的视频数据(属于PlayList()的视频数据)。将capture_enable_flag_Playlist设置到0或者1中的例如1指示允许二次使用属于PlayList()的视频数据,而将capture_enable_flag_Playlist设置到0或1中的例如0指示不允许(禁止)二次使用属于PlayList()的视频数据。
注意在图5中,capture_enable_flag_Playlist由1比特形成。但是,capture_enable_flag_Playlist还可以替代地由多个比特形成,从而实际上可以逐渐地允许二次使用属于PlayList()的视频数据。也就是,可以由例如2比特来形成capture_enable_flag_Playlist。在capture_enable_flag_Playlist表示值00B(其中B指示前面的数字是二进制数字)的情况下,可以禁止二次使用视频数据,而在capture_enable_flag_Playlist表示值01B的情况下,仅仅允许二次使用其中视频数据用作被减少到64×64像素或者更少的大小的视频数据。而且,在capture_enable_flag_Playlist表示值10B的情况下,允许二次使用视频数据而不对大小进行限制。
而且,可以不从上述大小的方面而从所期望的使用的方面,来限制二次使用视频数据。也就是,在capture_enable_flag_Playlist表示值01B的情况中,只有当使用视频内容回放程序210(图2)时才允许二次使用视频数据,而在capture_enable_flag_Playlist表示值10B的情况中,可以允许使用包括在图1的盘设备内的视频内容回放应用程序210的任何应用程序来二次使用视频数据。这里,除了图1的盘设备内的视频内容回放应用程序210以外的应用程序包括例如用于执行显示壁纸(背景)的处理的应用程序和屏幕保护程序。
注意,在capture_enable_flag_Playlist如上所述由2比特形成的情况下,排列在其前面的reserved_for_word_alignment应该由14比特形成以便于字对准。
而且,除了使用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_PlayItem(16比特)。number_of_PlayItem表示后面PlayItem()的数量。
number_of_PlayItem之后跟随着由number_of_PlayItem所表示的数量那么多的PlayItem()结构的描述。
这里,在单个PlayList()中,以PlayItem()的单元来描述用于内容的回放过程。
而且,对于PlayList()中与number_of_PlayItem所指示的数量一样多的PlayItem()的每一个来说,只要与PlayList()有关就给予唯一ID(标识)。也就是,将0给予PlayList()中的第一个PlayItem()作为ID,而将诸如1、2、...之类的数字以后面PlayItem()出现的顺序,顺序地给予它们作为ID。
number_of_PlayItem所表示的数量一样多的PlayItem()之后跟随着单个PlayListMark()。PlayListMark()是一组作为用于根据PlayList()所执行的回放在时间轴上的标记的、下面描述的Mark(),将在后面参照图7描述其详情。
[PlayItem()的描述]
随后,图6示出了在图5的PlayList()中所包括的PlayItem()的内部结构。
PlayItem()以length(16比特)开始,length表示包括其自己的PlayItem()的大小。
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()回放的剪切片段流文件(带有图4的扩展名PS的文件)对应的剪切信息文件(带有图4的扩展名CLP的文件)的文件名。注意,根据上面描述的规则来命名剪切片段流文件和剪切片段信息文件,可以从Clip_Information_file_name中识别要由PlayItem()回放的剪切片段信息文件的文件名,从而指定剪切片段流文件。
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()的描述]
随后,图7示出了在图5的PlayList()中所包括的PlayListMark()的内部结构。
PlayListMark()是一组作为用于根据包括该PlayListMark()的PlayList()(图5)而执行的回放在时间轴上的标记的零个或多个Mark()。单个Mark()至少具有表示用于根据PlayList()所执行的回放在时间轴上的单个时间(位置)的时间信息、表示Mark()的类型的类型信息、以及作为当类型信息表示用于导致事件发生的类型时的事件的自变量的自变量信息。
也就是,PlayListMark()以length(32比特)开始。Length表示包括其自己的PlayListMark()的大小。
length之后跟随有number_of_PlayList_marks(16比特),并且number_of_PlayList_marks表示后面跟随的Mark()的数量。number_of_PlayList_marks然后跟随有number_of_PlayList_marks所表示数量的Mark()结构的描述。
Mark()以mark_type(8比特)开始。mark_type是上面提到的类型信息,并且表示包括其自己的Mark()的类型。
在本实施方式中,有三种类型的Mark()可用,它们例如是Chapter(章)、Index(索引)和Event(事件)。
其类型是‘Chapter’的Mark()(下面在任何适当的时候都称为“章标记”)是指示作为用于分割PlayList()的开始定位单元的章的开始位置的标记。而且,其类型是‘Index’的Mark()(下面在任何适当的时候都称为“索引标记”)是指示作为将章分段的单元的索引的开始位置的标记。其类型是‘Event’的Mark()(下面在任何适当的时候都称为“事件标记”)是指示用于使得事件发生的位置的标记。如下面所述,将关于事件标记的事件的发生的通知给到脚本控制模块211。
这里,图8中示出了mark_type值和Mark()的类型之间的关系。根据图8,将1设置到章标记的mark_type中。而且,将2设置到索引标记的mark_type中,并且将3设置到事件标记的mark_type中。注意在图8中,在表示mark_type的8比特值中,0、以及4到255为将来扩展而保留。
返回到图7,mark_type跟随有mark_name_length(8比特)。而且,Mark()以mark_name_string(24字节)结束。mark_name_length和mark_name_string作用于描述Mark()的名称,而mark_name_length表示mark_name_string的有效大小以及mark_name_string表示Mark()的名称。因此,mark_name_length所指示的字节数量表示mark_name_string表示Mark()的有效名称的开始。
mark_name_length之后顺序跟随四个元件,ref_to_PlayItem_id(16比特)、mark_time_stamp(32比特)、entry_ES_stream_id(8比特)和entry_ES_private_stream_id(8比特)。这四个元件使得在PlayList()中所定义的任何Mark()与剪切片段流文件对应。
在ref_to_PlayItem_id中,描述给予Mark()所属于的PlayItem()的顺序编号的ID。ref_to_PlayItem_id指定Mark()所属于的PlayItem()(图6),因此指定剪切片段信息文件和剪切片段文件,如参照图6所述。
mark_time_stamp表示由ref_to_PlayItem_id所指定的剪切片段流文件内由Mark()所表示的位置(时间)。
这里,图9示出了PlayList()、PlayItem()、剪切片段和在剪切片段流文件中所存储的节目流之间的关系。
在图9中,PlayList()由三个PlayItem()形成,而将顺序编号的ID#0、#1和#2给予三个PlayItem()的每一个。这里,下面在任何适当的时候都将带有ID#i的PlayItem()描述为“PlayItem#i”。
而且,在图9中,将作为要由PlayItem#0、PlayItem#1、和PlayItem#2回放的内容的剪切片段分别指示为剪切片段A、剪切片段B和剪切片段C。
剪切片段的实质是在由图6的PlayItem()中的Clip_Information_file_name所指定(进而由剪切片段信息文件所指定)的剪切片段流文件中所存储的节目流中从IN_time到OUT_time的节目流。在图9中,将作为剪切片段A、剪切片段B和剪切片段C的实质的节目流分别指示为节目流A、节目流B和节目流C。
例如,在图9中,在作为用于根据PlayList()所执行的回放在事件轴上的位置(事件)t0处的标记的Mark()中,将其ref_to_PlayItem_id和mark_time_stamp描述如下。
也就是,事件t0是用于执行PlayItem#1的回放的时间,因此将作为PlayItem#1的ID的1描述在ref_to_PlayItem_id中。而且,在时间t0,回放作为剪切片段B的实质的节目流B,因此在mark_time_stamp中描述在其中存储有节目流B的剪切片段流文件中与时间t0对应的时间。
再次返回到图7,在Mark()与特定基本流相关联的情况下,使用entry_ES_stream_id和entry_ES_private_stream_id来指定基本流。也就是,在entry_ES_stream_id中,描述将Mark()与其关联的基本流的、下面描述的stream_id(在下面描述的图16到18中所示的PES_packet()并且包括在其中)。而且,在entry_ES_private_stream_id中,描述将Mark()与其关联的基本流的、下面描述的private_stream_id(在下面描述的图21中示出的private_stream1_PES_payload()中的private_header()并且包括在其中)。
例如,在将视频流#1和视频流#2复用在其中的剪切片段中,当用户想要改变用于回放视频流#1和用于回放视频流#2的章出现次数(chapter occurrencetimes)时,将视频流#1的stream_id和private_stream_id描述在用于视频流#1的回放期间的章标记出现次数的Mark()的entry_ES_stream_id和entry_ES_private_stream_id中,而且将视频流#2的stream_id和private_stream_id描述在用于视频流#2的回放期间的章标记出现次数的Mark()的entry_ES_stream_id和entry_ES_private_stream_id中。
注意,将不与任何特定基本流关联的Mark()的entry_ES_stream_id和entry_ES_private_stream_id设置为例如0。
entry_ES_private_stream_id之后跟随着mark_data(32比特)。在Mark()是事件标记的情况下,mark_data是作为由事件标记导致发生的事件的自变量的自变量信息。注意,在Mark()是章标记或者索引标记的情况下,可以将mark_data用作由章标记或者索引标记所表示的章号码或者索引号码。
[Clip()的描述]
随后,将描述在图4的“CLIP”目录中所包括的带有扩展名CLP的剪切片段信息文件的内部结构。
在图4中,将三个剪切片段信息文件“000011.CLP”、“00002.CLP”和“00003.CLP”包括在“CLIP”目录中,并且它们存储分别指示在“STREAM”目录中所包括的剪切片段流文件“00001.PS”、“00002.PS”和“00003.PS”的特性的元数据。
图10示出了这种剪切片段信息文件Clip()的内部结构。
剪切片段信息文件Clip()顺序以presentation_start_time和presentation_end_time(每个都是32比特)开始。presentation_start_time和presentation_end_time分别表示与剪切片段信息文件Clip()对应的剪切片段流文件(中所存储的节目流)的开始和结束时间。注意,将剪切片段流文件中的时间描述在多个90kHz中用作MPEG-2系统时间。
presentation_end_time之后顺序跟随有reserved_for_word_alignment(7比特)和capture_enable_flag_Clip(1比特)。7比特reserved_for_word_alignment用于字对准,而capture_enable_flag_Clip是指示是否允许二次使用视频数据的标志,与上述图5的capture_enable_flag_PlayList类似。
但是,图5的capture_enable_flag_PlayList指示是否允许二次使用与要由PlayList()回放的视频流对应的视频数据(属于PlayList()的视频数据),而图10的capture_enable_flag_Clip指示对于与同剪切片段信息文件Clip()对应的剪切片段流文件中所存储的视频流(视频基本流)对应的视频数据来说是否允许二次使用。因此,从要允许二次使用的视频数据的单元(范围)的方面来说,图5的capture_enable_flag_PlayList和图10的capture_enable_fag_Clip是不同的。
注意,图10的capture_enable_flag_Clip可以由多个比特形成,而不是如上面参照图5的capture_enable_flag_PlayList所解释的单个比特。
capture_enable_flag_Clip之后跟随有number_of_stream(8比特)。在number_of_stream中,描述跟随其自己之后的StreamInfo()结构的数量。因此,number_of_stream之后跟随着number_of_stream所表示的数量的StreamInfo()结构的描述。
StreamInfo()以length(16比特)开始。Length表示包括其自己的StreamInfo()的大小。然后length之后跟随有stream_id(8比特)和private_stream_id(8比特),并且通过stream_id和private_stream_id指定与StreamInfo()相关联的基本流。
这里,图11示出了在用于标识基本流的stream_id和private_stream_id以及基本流之间的关系。
stream_id与在MPEG-2系统标准中所指定的那些相同,而且在MPEG2系统标准中对于基本流(数据)的每个属性(类型)预先定义它们的值。因此,可以只通过stream_id来指定其属性定义在MPEG2系统标准中的基本流。
在本实施方式中,还可以处理其属性没有定义在MPEG2系统标准中的基本流。private_stream_id是用于标识其属性没有定义在MPEG2系统标准中的基本流的信息。
图11示出了与它们的stream_id和private_stream_id相关的,具有不同属性的四个基本流的关系。也就是,四个基本流是由MPEG所定义的编码(解码)方案所编码的视频基本流、由ATRAC(自适应变换声学编码,Adaptive TransformAcoustic Coding)所编码的音频基本流(下面在任何适当的时候都称为“ATRAC音频流”)、由LPCM(线性脉冲编码调制,Linear Pulse Code Modulation)方案所编码的音频基本流(下面在任何适当的时候都称为“LPCM音频流”)、以及字幕基本流(下面在任何适当的时候都称为“字幕流”)。
在MPEG2系统标准中,定义了使用值范围从0xE0到0xEF(0x指示其后跟随的数字是16进制数字)的任何一个作为标识基本流的stream_id,而将由MPEG所定义的编码方案所编码的视频基本流进行复用。因此,对于由MPEG所定义的编码方案所编码的视频基本流来说,可以将每个都由具有值范围从0xE0到0xEF的stream_id所标识的十六个视频基本流复用到节目流中。
注意,可以由由具有值范围从0xE0到0xEF的stream_id来标识由MPEG所定义的编码方案所编码的视频基本流,因此不需要(可以忽略)private_stream_id。
同时,MPEG2系统没有定义用于ATRAC视频流、LPCM音频流和字幕流的stream_id。
因此,在本实施方式中,对于没有为其由MPEG2系统定义stream_id的基本流来说,采用作为表示MPEG2系统中的属性“private_stream_1”的值的0xBD,因此,进行设计以在stream_id之外,使用诸如图11中所示的private_stream_id来标识(指定)基本流。
也就是,为了ATRAC音频流的标识,使用具有值范围从0x00到0x0F的private_stream_id。因此,可以将十六个ATRAC音频流复用到节目流中。而且,为了LPCM音频流的标识,使用具有值范围从0x10到0x1F的private_stream_id。因此,可以将十六个LPCM音频流复用到节目流中。而且,为了字幕流的标识,使用具有值范围从0x80到0x9F的private_stream_id。因此,可以将三十二个字幕流复用到节目流中。
注意,下面将描述stream_id和private_stream_id。
返回到图10,private_stream_id之后顺序跟随着StaticInfo()和reserved_for_word_alignment(8比特)。在StaticInfo()中,描述在由(在包括StaticInfo()的StreamInfo()中描述的)stream_id和private_stream_id所指定的基本流的回放期间保持不变的信息。下面将参照图12来描述StaticInfo()的详情。
reserved_for_word_alignment用于字对准。
reserved_for_word_alignment之后跟随着number_of_DynamicInfo(8比特)。number_of_DynamicInfo表示所跟随的pts_change_point(32比特)/DynamicInfo()组的数量。
因此,number_of_DynamicInfo之后跟随着由number_of_DynamicInfo所表示的数量的pts_change_point/DynamicInfo()结构组的描述。
pts_change_point表示与其成对的DynamicInfo()信息变为有效的时间。这里,表示定义基本流的开始的时间的pts_change_point等于与存储基本流的剪切片段流文件对应的剪切片段信息文件Clip()以其开始的presentation_start_time。
在DynamicInfo()中,特别是,将由stream_id和private_stream_id所指定的基本流的回放期间变化的“动态”信息进行描述。当与其配对的pts_change_point所表示的回放时间到来时,在DynamicInfo()中所描述的信息变为有效。注意,将参照图13来描述DynamicInfo()。
由number_of_DynamicInfo所表示的数量的pts_change_point/DynamicInfo()结构组之后跟随着EP_map()。注意,将参照图14在下面描述EP_map()。
[StaticInfo()的解释]
随后,参照图12,将解释图10的StaticInfo()的详情。
图12示出了StaticInfo()的语法。
StaticInfo()的内容根据对应基本流的属性(类型)而不同。通过包括该StaticInfo()的、在图10的StreamInfo()中所包括的stream_id和private_stream_id来判断与StaticInfo()对应的基本流的属性。
在与StaticInfo()对应的基本流是视频流(stream==VIDEO)的情况下,StaticInfo()由picture_size(4比特)、frame_rate(4比特)、和cc_flag(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(1比特)、和sampling_frequency(4比特)、以及用于进行字对准的reserved_for_word_alignment形成。
在audio_language_code中,描述表示用于在音频流中所包括的音频数据的语言的代码。channel_configuration表示诸如单声道(mono)/立体声(stereo)/多声道之类的、在音频流中所包括的音频数据的属性。lfe_existence指示在音频流中是否包括强调低频的声道,如果包括,则设置1,而如果不包括,则设置0。sampling_frequency是指示在音频流中所包括的音频数据的采样频率的信息。
在与StaticInfo()对应的基本流是字幕流的情况下(stream==SUBTITLE),StaticInfo()由subtitle_language_code(16比特)和configurable_flag(1比特)、以及用于字对准的reserved_for_word_alignment形成。
在subtitle_language_code中,描述表示用于在字幕流中所包括的字幕数据的语言的代码。configurable_flag是指示是否允许将显示模式从用于在字幕流中所包括的字幕数据的默认显示模式进行改变的信息,而且如果允许,则描述1,而如果不允许,则描述0。注意,字幕数据显示模式包括字幕数据的显示大小、位置、颜色、样式(例如闪烁)、方向(例如,垂直、水平)等。
[DynamicInfo()的解释]
随后参照图13,来解释图10的DynamicInfo()的详情。
图13示出了DynamicInfo()的语法。
DynamicInfo()以用字对准的reserved_for_word_alignment(8比特)开始,其之后跟随着根据与DynamicInfo()对应的基本流的属性而不同的元件。与上面参照图12所解释的StaticInfo()的情况类似,通过在包括该DynamicInfo()的图10的StreamInfo()中所包括的stream_id和private_stream_id来判断与DynamicInfo()对应的基本流的属性。
在DynamicInfo()中,如参照图10在上面所描述的,描述在基本流的回放期间变化的动态信息。这种动态信息不具体限于在图13的实施方式中的与同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_assigment(4比特)和用于字对准的reserved_for_word_alignment形成。在channel_assigment中,在音频流包括2声道音频数据的情况下,描述2声道音频流的输出属性(输出模式)。也就是,在channel_assigment中,描述指示将音频数据分配给“立体声(Stereo)”还是“双(Dual)”(双语)声道的信息。
在与DynamicInfo()对应的基本流是字幕流的情况下(stream==SUBTITLE),DynamicInfo()由用于字对准的reserved_for_word_alignment形成。也就是,在图13的实施方式中,不定义输出属性作为用于字幕流的动态信息。
[EP_map()的解释]
下面参数图14,描述图10的EP_map()的详情。
图14示出了的EP_map()的语法。
在EP_map()中,对于被复用到与包括该EP_map()的图10的剪切片段信息文件Clip()对应的剪切片段流文件中所存储的节目流中的每个基本流,描述了关于可以在其上开始基本流的解码的节目可开始点(进入点)的信息。
这里,对于具有固定速率的流,可以通过计算获得其节目可开始点,而对于诸如根据MPEG标准进行编码的视频流之类的、其大小对于每个视频存取单元不同的的流或者可变速率的流来说,不能通过计算来或其解码可开始点,因此,涉及流分析以发现解码可开始点。在执行随机存取时,快速识别解码可开始点是重要的,而EP_map()使得解码可开始点的这种快速识别成为可能。
注意,在MEPG2视频中,包括Sequence_header()(序列头部)的内画面(intra-picture)的开始是解码可开始点。
EP_map()以用于字对准的reserved_for_word_alignment(8比特)开始,其随后跟随有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比特)作为用于标识基本流的信息,其还跟随有number_of_EP_entries(32比特)。number_of_EP_entries表示由就在之前的stream_id和private_stream_id所标识(指定)的基本流的解码可开始点的数量。
number_of_EP_entries跟随有PTS_EP_start(32比特)/RPN_EP_start(32比特)组作为用于由紧邻着在之前的stream_id和private_stream_id所指定的基本流的节目可开始点信息,以humber_of_EP_entries所标识的次数重复排列PTS_EP_start(32比特)/RPN_EP_start(32比特)组。
作为一片解码可开始点信息的RPN_EP_start表示在其中存储有将由上述的stream_id和private_stream_id所指定的基本流复用到其中的节目流的剪切片段流文件内的解码可开始点时间(回放时间)。
在作为另一片解码可开始点信息的PTS_EP_start中,在用于节目流的pack()的单元中,描述通过对在其中存储有将由上述的stream_id和private_stream_id所指定的基本流复用到其中的节目流的剪切片段流文件内的解码可开始点进行计数而获得的值。注意在本实施方式中,假设将pack()的大小固定到2,048字节。而且,在本实施方式中,假设盘101(图1)的单个扇区等于2,048字节。
这里,对于视频流来说,紧邻着在其解码可开始点(进入点)之前有下面描述的private_stream_2封包(具有属性“private_stream_2”的PES_packet())。在private_stream_2封包中,存储用于对该private_stream_2封包到随后的private_stream_2封包之间所排列的视频流进行解码的信息。因此,对于视频流,在作为其解码可开始点信息的RPN_EP_start中,描述紧邻着在实际解码可开始点之前的private_stream_2封包的开始位置,而不是实际解码可开始点自己。
而且,在EP_map()中,将作为解码可开始点信息的PTS_EP_start/RPN_EP_start组预先对于由它们的stream_id和private_stream_id所指定的每个基本流以升序进行排序。结果,可以对作为解码可开始点信息的PTS_EP_start/RPN_EP_start组执行二分搜索。
注意,在例如日本专利申请公开(KOKAI)No.2000-341640(日本专利申请No.Hei11-317738)中公开了用于具有可变速率的流和具有不同视频存取单元大小的流的随机存取方法。
[剪切片段流文件的描述]
随后,将描述在图4的“STREAM”目录中所包括的具有扩展名PS的剪切片段流文件(图4中的文件“00001.PS”、“00002.PS”和“00003.PS”)的内部结构。
根据MPEG-2系统(ISO/IEC 13818-1)中所定义的MPEG2_Program_Stream()来形成剪切片段流文件。
也就是,图15示出了MPEG-2系统(ISO/IEC 13818-1:2000)中所描述的表2-31、表2-32和表2-33。
在剪切片段流文件中所存储的节目流是在MPEG-2系统标准的表2-31中所定义的MPEG2_Program_Stream(),并且由一个或多个pack()以及单个MPEG2_Program_end_code()形成。注意在日本专利No.2785220等中描述了MPEG2_Program_Stream()。
如MPEG-2系统标准的表2-32中所定义的那样,由单个Pack_header()和任意数量的RES_packet()形成单个pack()。在MPEG-2系统标准的表2-33中定义了Pack_header的详情。
这里,虽然在MPEG-2系统标准中将pack()的大小定义为可变化的,但是这里,假设将其固定在2,048字节,如上面图14中所述。而且,这里,假设单个pack()中的Pack_header()的数量是1、2或者3。在Pack()以下面描述的private_stream_3封包开始的情况下,紧邻着在其后面(在相同的Pack()内),总存在对应视频流的PES_packet()。而且,在此之外,可以将padding_packet(填充封包)排列作为第三PES_packet()。注意,将不例外地将private_stream_2封包排列在Pack()的开始。
在Pack()不以private_stream_2封包开始的情况下,Pack()以存储诸如视频、音频或者字幕数据之类的内容数据的PES_packet()开始,此外,可以将padding_packet(填充封包)排列作为第二SPE_packet()。
图16到18示出了在MPEG-2系统标准的表2-17中所定义的PES_packet()。
可以大致将PES_packet()分为包括packet_start_code_prefix、stream_id和PES_packet_length(图16)的部分、其结构由stream_id等改变而来的头部部分(包括stuffing_byte)(图16-18)、以及PES_packet_data_byte(图18)。注意,在PES_packet()是paddin_packet(stream_id==padding_stream)的情况下,在PES_packet_data_byte的位置以所需要的数量重复地排列padding_byte(0xFF)(图18)。
这里,在PES_packet()的头部部分中,可以排列指示被称为PTS(表现时间戳)的显示定时的信息、和指示被称为DTS(解码时间戳)的解码定时的信息,如图16和17中所示。在本实施方式中,假设将PTS添加到所有存取单元(由MPEG2系统所定义的解码单元并且形成基本流),而且仅仅在由MPEG2系统这样确定的情况下才添加DTS。
将要复用到节目流中的基本流存储在PES_packet()d PES_packet_data_byte中(图18)。而且在PES_packet()的stream_id中,描述与基本流的属性对应的值,以标识在PES_packet_data_byte中所存储的基本流。
在MPEG-2系统标准的表2-18中定义了PES_packet()的stream_id中所描述的值和基本流的属性(字节)之间的关系。这里,在图19中示出了MPEG-2系统标准的表2-18。
在本实施方式中,在图19中所示的MPEG-2系统标准中所定义的stream_id中,采用例如图20中所示的值。
也就是,在本实施方式中,采用五种样式,即10111101B、10111110B、10111111B、110xxxxxB以及1110xxxxB作为stream_id值。注意,“x”表示0和1中的任何一个。
将其属性被称为private_stream_1的基本流的PES_packet()的stream_id根据图20设置到10111101B。而且,将padding_packet的PES_packet()的stream_id根据图20设置到10111110B。而且,将其属性被称为private_stream_2的基本流的PES_packet()的stream_id根据图20设置到10111111B。
而且,将由MPEG所定义的音频流(音频基本流)的PES_packet()的stream_id设置到110xxxxxB。注意,在110xxxxxB中最低五比特xxxxx是用于区分音频流的音频流号码,而且可以将32(=25)个音频流(由MPEG所定义的音频流)复用到节目流(MPEG2_Program_Stream())中,32是使用该音频流号码可以彼此区分的音频的数量。
而且,将MPEG所定义的视频流(视频基本流)的PES_packet()的stream_id设置到1110xxxxB。注意在1110xxxxB中的较低4比特是用于区分视频流的视频流号码,而且将16(=24)个视频流(由MPEG所定义的视频流)复用到节目流中,16是使用该视频流号码可以彼此区分的示例的数量。
顺便,使用其stream_id是1110xxxxB的PES_packet()来存储由MPEG所定义的视频流,而且使用其stream_id是110xxxxxB的PES_packet()来存储由MPEG所定义的音频流。同时,在MPEG中没有指定用于存储由MPEG中没有定义的编码方案(例如,ATRAC方案)所编码的基本流的PES_packet()的stream_id,因此,不能象MPEG所定义的视频流和音频流那样,通过简单指定stream_id来将由MPEG所没有定义的编码方案所编码的基本流存储在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()的解释]
图21示出了private_stream1_PES_payload()的语法。
private_stream1_PES_payload()由private_header()和private_payload()形成。private_payload()存储诸如ATRAC音频流、LPCM音频流或者字幕流之类的、MPEG所没有定义的编码方案所编码的基本流。
private_header()以private_stream_id(8比特)开始。private_stream_id是用于标识在private_payload()中所存储的基本流的标识信息,而且例如被根据其属性(字节)设置到下面值的任何一个。
也就是,图22示出了在private_payload()中所存储的基本流的属性和private_stream_id值之间的关系。
在图22中,采用三种样式作为private_stream_id,即0000xxxxB、0001xxxxB和100xxxxxB。注意“x”表示0和1中的任何一个,与图20的情况类似。
根据图22,将其中把ATRAC音频流存储在其private payload()中的private_stream1_PES_payload()的private_stream_id设置为0000xxxxB。注意,0000xxxxB的较低4比特xxxx是用于区分ATRAC音频流的音频流号码,而可以将16(=24)个ATRAC音频流复用到节目流(MPEG2_Program_Stream())中,16是使用该音频流号码彼此进行区分的ATRAC音频流的数量。
而且,根据图22,将其中把LPCM音频流存储在其private_payload()中的private_stream1_PES_payload()的private_stream_id设置为0001xxxxB。注意,0001xxxxB的较低4比特是用于区分LPCM音频流的音频流号码,而可以将16(=24)个LPCM音频流复用到节目流中,16是使用该音频流号码可以彼此区分的LPCM音频流的数量。
此外,根据图22,将字幕流被存储在其private_payload()中的private_stream1_PES_payload()的private_stream_id设置为100xxxxxB。注意,100xxxxxB的较低5比特是用于区分字幕流的字幕流号码,而且可以将32(=25)个字幕流复用到节目流中,32是使用该音频流号码可以彼此区分的字幕流的数量。
这里,上述图11是图20和图22之间的关系的重新排列。
返回到图21,在private_stream1_PES_payload()中,private_stream_id之后跟随有其内容根据在private_payload()中所存储的基本流的属性而不同的部分。通过private_header()的头部处的private_stream_id来判断在private_payload()中所存储的基本流的属性。
在private_payload()中所存储的基本流是ATRAC音频流(private_stream_id==ATRAC)的情况下,排列用于将来扩展的reserved_for_future_use(8比特),其之后跟随有AU_locator(16比特)。AU_locator使用紧邻着在该AU_locator之后的位置作为基准,表示在private_payload()中所存储的ATRAC音频流(ATRAC音频存取单元)(音频帧)的音频存取单元的开始位置。在private_payload()中没有音频存取单元的情况下,在AU_locator中描述例如0xFFFF。
在private_payload()中所存储的基本流是LPCM音频流的情况下(private_stream_id==LPCM),顺序地排列fs_flag(1比特)、reserved_for_future_use(3比特)、ch_flag(4比特)和AU_locator(16比特)。
fs_flag指示在private_payload()中所存储的LPCM音频流的采样频率,例如,在采样频率是48kHz的情况下,将fs_flag设置到0,而在采样频率是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音频流(LPCM音频存取单元)(音频帧)的音频存取单元的开始位置。在private_payload()中没有音频存取单元的情况下,在AU_locator中描述例如0xFFFF。
private_payload()中所存储的基本流是字幕流的情况下(private_stream_id==SUBTITLE),排列用于将来扩展的reserved_for_future_use(8比特),其之后跟随有AU_locator(16比特)。AU_locator使用紧邻着在该AU_locator之后的位置作为基准,指示在private_payload()中所存储的字幕流的字幕存取单元的开始位置。在private_payload()中没有字幕存取单元的情况下,在AU_locator中描述例如0xFFFF。
[private_stream2_PES_payload()的解释]
随后,图23示出了private_stream2_PES_payload()的语法。
private_stream2_PES_payload()是private_stream_2 PES_packet()的PES_packet_data_byte(图18)的扩展,即private_stream_2 PES_packet()的扩展的PES_packet_data_byte,并且包括用于解码视频流的信息的描述。
在本实施方式中,将private_stream_2 PES_packet()紧邻着排列在视频流的节目可开始点之前。因此,在本实施方式中,一旦在节目流中已经发现了private_stream_2 PES_packet(),则可以紧邻着其之后在视频流上开始解码。
这里,对于视频流,图14的EP_map()的RPN_EP_start指示private_stream_2PES_packet()的开始位置。
private_stream2_PES_payload()以用于将来扩展的reserved_for_future_use(8比特)开始,其后顺序跟随有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()之后排列的视频流的stream_id(的相同值)。该video_stream_id指定要使用private_stream_2 PES_packet()(的private_stream2_PES_payload())中所存储的信息来解码的(PES_packet()存储其中的)视频流。
1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture从相对值的角度,对于由video_stream_id所指定的视频流,分别表示从private_stream_2PES_packet()到下一个的private_stream_2 PES_packet()的包括第一、第二、第三和第四参考画面的最后pack()位置。注意,例如在日本专利申请公开(KOKAI)No.Hei 09-46712(日本专利申请No.Hei 07-211420)中,将1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture公开作为bytes_to_first_P_pic、bytes_to_second_P_pic。
在au_information()中,描述关于从private_stream_2 PES_packet()到下一个private_stream_2 PES_packet()的视频流中的视频存取单元的信息。后面将参照图24来描述au_information()的详情。
VBI()用于描述闭路字幕信息。
每个视频流的每个解码可开始点都排列具有诸如上述的private_stream2_PES_payload()之类的private_stream_2 PES_packet()。
下面,图24示出了图23的au_information()的语法。
au_information()以length(16比特)开始。length表示包括其自己的au_information()的大小。length之后顺序跟随有reserved_for_word_alignment(8比特)和number_of_access_unit(8比特)。reserved_for_word_alignment用于字对准。
number_of_access_unit表示在包括其自己的private_stream_2 PES_packet()和下一个private_stream_2 PES_packet()之间所包括的视频存取单元(画面)的数量。
也就是,在其中图23的private_stream2_PES_payload()具有相同video_stream_id的private_stream_2 PES_packet()中,number_of_access_unit指示从该au_information()到下一个au_information()之前紧邻的位置(如果该au_information()是剪切片段流文件的最后的au_information(),则到剪切片段流文件的结束)有video_stream_id所指示的视频流中所包括的存取单元(画面)的数量。
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(1比特)、AU_length(21比特)和保留的比特。
在pic_struct_copy中,描述了pic_strcut()的拷贝,pic_strcut()在视频流符合MPEG4-AVC(ISO/IEC 14496-10)的情况下被定义在ISO/IEC 14496-10,D.2.2中并且被设置到对应的视频存取单元。注意,pic_strcut()是用于显示例如作为帧的画面、或者显示画面的顶半帧以及底半帧的信息。
au_ref_flag指示对应存取单元是否为用于解码另一个存取单元(的画面)的所参考的参考画面,而且如果是,则设置1,如果不是,则设置0。
AU_length以字节表示对应存取单元的大小。
[在盘101上所记录的数据的具体例子]
随后,图25到28示出了在图1的盘101上所记录的、具有上述格式的数据的具体例子。
这里,在图25到28中,对于视频流采用MPEG2-Video,而对于音频流采用ATRAC音频流。但是,视频流和音频流不限于这些类型。也就是,对于视频流,还可以采用例如MPEG4-Visual、MPEG4-AVC等。而且,对于音频流,还可以采用例如MPEG1/2/4-Audio和LPCM。
注意,与视频流和音频流不同,字幕流不经历相等间隔处的连续解码/显示(输出)处理。也就是,只偶尔将字幕流从图2的缓存器扩展模块215提供给字幕解码器模块218以进行解码。
图25到28示出了“PLAYLIST.DAT”文件和剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”等的具体例子,在这种情况下,如图4中所示,盘101包括“CLIP”目录中的三个剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”、以及“STREAM”目录中的与三个剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”分别对应的三个剪切片段流文件“00001.PS”、“00002.PS”和“00003.PS”的记录。但是,在图25到28中,省略诸如“PLAYLIST.DAT”文件之类的部分数据。
也就是,图25示出了上面参照图5描述的“PLAYLIST.DAT”文件的具体例子。
在图25中,将number_of_PlayLists设置到2,因此,在“PLAYLIST.DAT”文件中所包括的PlayList()的数量为2。在图25中,将两个PlayList()中的第一个描述为PlayList#0,而将第二个描述为PlayList#1。
对于作为第一PlayList()的PlayList#0来说,将capture_enable_flag_PlayList设置为1,因此允许根据PlayList#0要被回放的视频数据的二次使用。而且,对于PlayList#0来说,将number_of_PlayItems设置为2,因此在PlayList#0中所包括的PlayItem()的数量为2。在图25中,在“PlayList#0”栏的较低部分中描述了作为两个PlayItem()的PlayItem#0和PlayItem#1。
在作为PlayList#0中所包括的第一PlayItem()的PlayItem#0中,将Clip_Information_file_name设置到“00001.CLP”,分别将IN_time设置到180,090,将OUT_time设置到27,180,090,这全部已经参照图6描述过了。因此,在与剪切片段信息文件“00001.CLP”对应的剪切片段流文件“00001.PS”中,将要由PlayList#0的PlayItem#0所回放的剪切片段指定为从时间180,090到27,180,090。
在作为PlayList#0中所包括的第二PlayItem()的PlayItem#1中,将Clip_Information_file_name设置到“00002.CLP”,分别将IN_time设置到90,000,将OUT_time设置到27,090,000。因此,在与剪切片段信息文件“00002.CLP”对应的剪切片段流文件“00002.PS”中,将要由PlayList#0的PlayItem#1所回放的剪切片段指定为从时间90,000到27,090,000。
同时,在图25中,对于作为第二PlayList()的PlayList#1来说,将capture_enable_flag_PlayList设置为0,因此不允许(禁止)根据PlayList#l要被回放的视频数据的二次使用。而且,对于PlayList#1来说,将number_of_PlayItems设置为1,因此在PlayList#1中所包括的PlayItem()的数量为1。在图25中,在“PlayList#1”栏的较低部分中描述了作为仅仅一个PlayItem()的PlayItem#0的具体例子。
在作为PlayList#1中所包括的仅仅一个PlayItem()的PlayItem#0中,将Clip_Information_file_name设置到“00003.CLP”,分别将IN_time设置到90,000,将OUT_time设置到81,090,000,这全部都参照图6在上面描述过了。因此,在与剪切片段信息文件“00003.CLP”对应的剪切片段流文件“00003.PS”中,将要由PlayList#1的PlayItem#0所回放的剪切片段指定为从时间90,000到81,090,000。
随后,图26示出了上面参照图10所描述的剪切片段信息文件Clip()的具体例子。也就是,图26示出了图4的剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”的具体例子。
在剪切片段信息文件“00001.CLP”中,将present_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,因此,对于被复用到与剪切片段信息文件“1”对应的剪切0000.CLP”片段流文件“00001.PS”中所存储的节目流中的视频流(与其对应的视频数据)来说,允许二次使用。
而且,在图26中,将剪切片段信息文件“00001.CLP”的number_of_stream设置为4,因此,将四个基本流复用到在对应的剪切片段流文件“00001.PS”中所存储的节目流中。
现在假设四个基本流是stream#0、stream#1、stream#2、和stream#3。则,在图26中,在′“00001.CLP”′栏的较低部分中描述四个基本流stream#0、stream#1、stream#2、和stream#3的StreamInfo()的具体例子。
对于剪切片段流文件“00001.PS”的第一基本流stream#0来说,将stream_id设置为0xE0,因此,该基本流stream#0是视频流,如上面参照图20和22(或者图11)所述。注意在本实施方式中,视频流与上面提到的private_stream_id无关,但是在图26中将其设置为0x00。
而且,对于作为剪切片段流文件“00001.PS”的第一基本流的视频流stream#0来说,在其StreamInfo()中所包括的StaticInfo()(图12)中,将picture_size设置到‘720×480’,将frame_rate设置到‘29.97Hz’,将cc_flag设置到‘Yes’。因此,该视频流stream#0是具有720×480像素和29.97Hz的帧周期、进而包括闭路字幕数据的视频数据。
而且,对于作为剪切片段流文件“00001.PS”的第一基本流的视频流stream#0来说,将StreamInfo()的number_of_DynamicInfo(图10)设置到0,因此,不存在pts_change_poit/DynamicInfo()组。
随后,对于剪切片段流文件“00001.PS”的第二基本流stream#1来说,将stream_id设置到0xBD,而将private_stream_id设置到0x00。因此,该基本流stream#1是ATRAC音频流,如参照图20和22在上面描述的那样。
而且,对于作为剪切片段流文件“00001.PS”的ATRAC音频流stream#1来说,在该StreamInfo()中所包括的StaticInfo()(图12)中,将audio_language_code设置到‘Japanese(日语)’,将channel_configuration设置到‘STEREO’,将lfe_existence设置到‘NO’,而将sampling_frequency设置到‘48kHz’。因此,该ATRAC音频流stream#1是日语的音频数据并且是立体声的。而且,不包括强调低频的声道,并且采用频率是48kHz。
而且,对于作为剪切片段流文件“00001.PS”的第二基本流的ATRAC音频流stream#1来说,将StreamInfo()(图10)的number_of_DynamicInfo设置到0,因此,不存在pts_change_poit/DynamicInfo()组。
随后,对于剪切片段流文件“00001.PS”的第三基本流stream#2来说,将stream_id设置到0xBD,而将private_stream_id设置到0x80。因此,该基本流stream#2是字幕流,如上面参照图20和22所描述的那样。
而且,对于作为剪切片段流文件“00001.PS”的第三基本流的字幕流stream#2来说,在其StreamInfo()中所包括的StaticInfo()(图12)中,将subtitle_language_code设置到‘Japanese(日语)’,而将configurable_flag设置到0。因此,该字幕流stream#2是日语字幕流,而且,不允许(禁止)改变其显示模式。
而且,对于作为剪切片段流文件“00001.PS”的第三基本流的字幕流stream#2来说,将StreamInfo()(图10)的number_of_DynamicInfo设置到0,因此不存在pts_change_poit/DynamicInfo()组。
随后,对于作为剪切片段流文件“00001.PS”的第四基本流的字幕流stream#3来说,将stream_id设置到0xBD,而将private_stream_id设置到0x81。因此,该基本流stream#3是字幕流,如上面参照图20和22所描述的那样。
注意,为了在剪切片段流文件“00001.PS”中,将作为第三基本流的字幕流stream#2从作为第四基本流的字幕流stream#3中区分出来,将它们的private_stream_id分别设置到0x80和0x81。
此外,对于作为剪切片段流文件“00001.PS”的第四基本流的字幕流stream#3来说,在其StreamInfo()中所包括的StaticInfo()(图12)中,将subtitle_language_code设置到‘Japanese(日语)’,而将configurable_flag设置到1。因此,该字幕流stream#3是日语字幕流,而且,允许改变其显示模式。
而且,对于作为剪切片段流文件“00001.PS”的第四基本流的字幕流stream#3来说,将StreamInfo()(图10)的number_of_DynamicInfo设置到0,因此不存在pts_change_poit/DynamicInfo()组。
随后,在图26中,对于剪切片段信息文件“00002.CLP”,将presentation_start_time设置到90,000,而将presentation_end_time设置到27,090,000。因此,根据在与剪切片段信息文件“00002.CLP”对应的剪切片段流文件“00002.PS”中所存储的节目流,可以使用与300秒(27,090,000-90,000)/90kHz)等效的内容。
而且,在剪切片段信息文件“00002.CLP”中,将capture_enable_flag_Clip设置到0,因此,对于被复用到与剪切片段信息文件“00002.CLP”对应的剪切片段流文件“00002.PS”中所存储的节目流中的视频流(与其对应的视频数据)来说,不允许(禁止)二次使用。
而且,在图26中,将剪切片段信息文件“00002.CLP”的number_of_stream设置到4,因此,将四个基本流复用到在剪切片段流文件“00002.PS”中所存储的节目流中,与上述剪切片段流文件“00001.PS”的情况类似。
现在假设四个基本流是stream#0、stream#1、stream#2、和stream#3。那么,在图26中,在′“00002.CLP”′栏的较低部分中描述四个基本流stream#0、stream#1、stream#2、和stream#3的StreamInfo()(图10)的具体例子。
这里,在图26中,剪切片段流文件“00002.PS”的第一到第四基本流stream#0到stream#4具有与剪切片段流文件“00001.PS”的第一到第四基本流stream#0到stream#3等效的内容,因此,将省略对它们的描述。
注意,如上所述,剪切片段流文件“00002.PS”的第一到第四基本流stream#0到stream#4的StreamInfo()具有与第一到第四基本流stream#0到stream#3的内容等效的内容,因此,剪切片段流文件“00002.PS”的第一基本流stream#0是视频流,而第二基本流stream#1是ATRAC音频流。此外,第三基本流stream#2和第四基本流stream#3都是字幕流。
随后,在图26中,在剪切片段信息文件“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”中所存储的节目流中的视频流来说,允许二次使用。
而且,在图26中,将剪切片段信息文件“00003.CLP”的number_of_stream设置到3,因此,将三个基本流复用到在对应剪切片段流文件“00003.PS”中所存储的节目流中。
现在假设四个基本流是stream#0、stream#1、和stream#2。那么,在图26中,在′“00003.CLP”′栏的较低部分中描述三个基本流stream#0、stream#1、和stream#2的StreamInfo()(图10)的具体例子。
对于剪切片段流文件“00003.PS”的第一基本流stream#0来说,将stream_id设置为0xE0,因此,该基本流stream#0是视频流,如上面参照图20和22(或者图11)所述。注意与剪切片段流文件“00001.PS”的第一基本流stream#0类似,将private_stream_id设置为0x00。
此外,对于作为剪切片段流文件“00003.PS”的第一基本流的视频流stream#0来说,在其StreamInfo()中所包括的StaticInfo()(图12)中,将picture_size设置到‘720×480’,将frame_rate设置到‘29.97Hz’,将cc_flag设置到‘No’。因此,该视频流stream#0是具有720×480像素和29.97Hz的帧周期、进而不包括闭路字幕数据的视频数据。
而且,对于作为剪切片段流文件“00003.PS”的第一基本流的视频流stream#0来说,将StreamInfo()的number_of_DynamicInfo(图10)设置到2,因此,将两个pts_change_poit/DynamicInfo()组描述在其StreamInfo()中。
随后,对于剪切片段流文件“00003.PS”的第二基本流stream#1来说,将stream_id设置到0xE1,因此,该基本流stream#1是视频流,如参照图20和22(或者图11)在上面解释的那样。注意,为了在剪切片段流文件“00003.PS”中,将作为第一基本流的视频流stream#1与作为第二基本流的视频流stream#1进行区分,分别将它们的stream_id设置为0xE0和0xE1。而且,将private_stream_id设置到0x00,与剪切片段流文件“00002.PS”的第一基本流stream#0类似。
此外,对于作为剪切片段流文件“00003.PS”的第二基本流的视频流stream#1来说,将该StreamInfo()中所包括的StaticInfo()(图12)的picture_size、frame_rate和cc_flag设置到与作为第一基本流的视频流stream#0相同的值。因此,作为剪切片段流文件“00003.PS”的第二基本流的该视频流stream#1是具有720×480像素和29.97Hz的帧周期、进而不包括闭路字幕数据的视频数据。
而且,对于作为剪切片段流文件“00003.PS”的第二基本流的字幕流stream#1来说,将StreamInfo()(图10)的number_of_DynamicInfo设置到0,因此不存在pts_change_poit/DynamicInfo()组。
随后,对于剪切片段流文件“00003.PS”的第三基本流stream#2,将stream_id设置到0xBD,而且将private_stream_id设置到0x00。因此,如参照图20和22所述,该基本流stream#2是ATRAC音频流。
此外,对于作为剪切片段流文件“00003.PS”的第三基本流的ATRAC音频流stream#2来说,将其StreamInfo()中所包括的StaticInfo()(图12)的audio_language_code、channel_configuration、lfe_existence和sampling_frequency,设置到与作为剪切片段流文件“00001.PS”的第二基本流的ASTRAC音频流stream#1相同的值。因此,对于作为剪切片段流文件“00003.PS”的第三基本流的ATRAC音频流stream#2是日语音频数据并且是立体声的。此外,不包括强调低频的声道,而且采样频率是48kHz。
而且,对于对于作为剪切片段流文件“00003.PS”的第三基本流的ATRAC音频流stream#2来说,将StreamInfo()(图10)的number_of_DynamicInfo设置到3,因此,在其StreamInfo()中描述三个pts_change_poit/DynamicInfo()组。
随后,图27示出了上面参照图10所述的剪切片段信息文件Clip()的EP_map()的具体例子。也就是,图27示出了图4的剪切片段信息文件“00001.CLP”中的、图14的EP_map()的具体例子。
在图27中,将EP_map的number_of_stream_id_entries设置到1,因此,在该EP_map()中描述关于单个基本流的解码可开始点信息。
此外,在图27的EP_map()中,将stream_id设置到0xE0。因此,如上面参照图20和22所述,在EP_map()中,将关于由被设置到0xE0的stream_id所指定的视频流的解码可开始点信息(PTS_EP_start和RPN_EP_start(图14))进行描述。也就是,图27示出了剪切片段信息文件“00001.CLP”的EP_map(),而且在与剪切片段信息文件“00001.CLP”对应的剪切片段流文件“00001.PS”中,如上面参照图26所述,其stream_id是0xE0的基本流是剪切片段流文件“00001.PS”的第一视频流stream#0,因此,在图17的EP_map()中所描述的信息包括PTS_EP_start和RPN_EP_start作为该视频流stream#0的解码可开始点。
在图27中,描述了从开始的五个PTS_EP_start和RPN_EP_start,作为剪切片段信息文件“00001.CLP”的第一视频流stream#0的解码可开始点,而省略对第六和其后的PTS_EP_start和RPN_EP_start的描述。
注意,在图27的EP_map()中,将private_stream_id设置到0x00,但是如上所述,在stream_id表示视频流的情况下,private_stream_id与视频流无关(对于视频流被忽略)。
接下来,图28示出了上面参照图25所述的PlayList#0和PlayList#1(图5中的PlayList())中的PlayListMark()的具体例子。
图28的上面部分示出了PlayList#0的PlayListMark()(图7)。
在图28的上面部分中,将PlayList#0的PlayListMark()中的number_of_PlayList_marks设置到7,因此在PlayList#0(的PlayListMark())中所包括的Mark()的数量是7。
此外,在图28的上面部分中,作为PlayList#0中所包括的七个Mark()的第一Mark()的Mark#0使得其mark_type(图7)设置到‘Chapter’,因此,它是章标记。而且,Mark#0使得其ref_to_PlayItem_id(图7)设置到0,因此,其属于PlayList#0中所包括的、图25的两个PlayItem#0和#1的PlayItem#0。此外,Mark#0使得其mark_time_stamp设置到180,090,因此,它是关于要由PlayList#0中所包括的PlayItem#0回放的剪切片段流文件的时间(回放时间)180,090的标记。而且,Mark#0使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不与基本流相关联。而且,Mark#0使得其mark_data设置到1,因此,其表示被编号为1的章。
这里注意,如参照图25在上面所述,要由PlayList#0中所包括的PlayItem#0回放的剪切片段流文件是由该PlayItem#0的Clip_Information_file_name中所描述的“00001.CLP”所指定的剪切片段流文件“00001.PS”。因此,由Mark#0的mark_time_stamp所表示的上述时间180,090是剪切片段流文件“00001.PS”的时间。
在图28的上面部分中,作为在PlayList#0中所包括的七个Mark()的第五个Mark()的Mark#4也是与第一Mark#0类似的章标记。
也就是,作为第五Mark()的Mark#4使得其mark_type(图7)设置到‘Chapter(章)’,因此它是章标记。而且,Mark#4使得其ref_to_PlayItem_id(图7)设置到1,因此,其属于PlayList#0中所包括的、图25的两个PlayItem#0和#1的PlayItem#1。而且,Mark#4使得其mark_time_stamp设置到90,000,因此,它是关于要由PlayList#0中所包括的PlayItem#1回放的剪切片段流文件的时间(回放时间)90,000的标记。而且,Mark#4使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不与基本流相关联。而且,Mark#4使得其mark_data设置到2,因此,其表示被编号为2的章。
这里注意,如参照图25在上面所述,要由PlayList#0中所包括的PlayItem#1回放的剪切片段流文件是由该PlayItem#1的Clip_Information_file_name中所描述的“00002.CLP”所指定的剪切片段流文件“00002.PS”。因此,由Mark#4的mark_time_stamp所表示的上述时间90,000是剪切片段流文件“00002.PS”的时间。
而且,在图28的上面部分中,作为PlayList#0中所包括的七个Mark()的第二Mark()的Mark#1使得其mark_type(图7)设置到‘Index(索引)’,因此它是索引标记。而且,Mark#1使得其ref_to_PlayItem_id(图7)设置到0,因此,其属于PlayList#0中所包括的、图25的两个PlayItem#0和#1的PlayItem#0。此外,Mark#1使得其mark_time_stamp设置到5,580,090,因此,它是关于要由PlayList#0中所包括的PlayItem#0回放的剪切片段流文件的时间(回放时间)5,580,090的标记。而且,Mark#1使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不与基本流相关联。而且,Mark#1使得其mark_data设置到1,因此,其表示被编号为1的索引。
这里注意,如上所述,要由PlayList#0中所包括的PlayItem#0回放的剪切片段流文件是剪切片段流文件“00001.PS”。因此,由Mark#1的mark_time_stamp所表示的上述时间5,580,090是剪切片段流文件“00001.PS”的时间。
在图28的上面部分中,作为在PlayList#0中所包括的七个Mark()中的第三、第六和第七Mark()的Mark#2、Mark#5和Mark#6也是与第二Mark#1类似的索引标记。
而且,在图28的上面部分中,作为在PlayList#0中所包括的七个Mark()中的第四Mark()的Mark#3使得其mark_type(图7)设置到‘Event(事件)’,因此它是事件标记。而且,Mark#3使得其ref_to_PlayItem_id(图7)设置到0,因此,其属于PlayList#0中所包括的、图25的两个PlayItem#0和#1的PlayItem#0。此外,Mark#3使得其mark_time_stamp设置到16,380,090,因此,它是关于要由PlayList#0中所包括的PlayItem#0回放的剪切片段流文件的时间16,380,090的标记。而且,Mark#3使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不与基本流相关联。而且,Mark#3使得其mark_date设置到0,因此,其导致将0作为自变量而发生的事件。
这里注意,如上所述,要由PlayList#0中所包括的PlayItem#0回放的剪切片段流文件是剪切片段流文件“00001.PS”。因此,由Mark#3的mark_time_stamp所表示的上述时间16,380,090是剪切片段流文件“00001.PS”的时间。
这里,在图28的上面部分中,将自每个Mark()所属于的PlayItem()的开始的时间示出在PlayList#0的PlayListMark()列表的外面的右侧。而且,在其右侧,示出自PlayList#0的开始的时间。
接下来,图28的下面部分示出了PlayList#1的PlayListMark()(图7)。
在图28的下面部分中,将PlayList#1的PlayListMark()中的number_of_PlayList_marks设置到3,因此,在PlayList#1(的PlayListMark())中所包括的Mark()数量是三。
此外,在图28的下面部分中,作为PlayList#1中所包括的三个Mark()的第一Mark()的Mark#0使得其mark_type(图7)设置到‘Chapter’,因此,它是章标记。而且,Mark#0使得其ref_to_PlayItem_id(图7)设置到0,因此,其属于PlayList#1中所包括的、图25的仅仅一个PlayItem#0。此外,Mark#0使得其mark_time_stamp设置到90,000,因此,它是关于要由PlayList#1中所包括的PlayItem#0回放的剪切片段流文件的时间90,000的标记。而且,Mark#0使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不与基本流相关联。而且,Mark#0使得其mark_data设置到0,因此,其表示被编号为0的章。
这里注意,如参照图25在上面所述,要由PlayList#1中所包括的PlayItem#0回放的剪切片段流文件是由该PlayItem#0的Clip_Information_file_name中所描述的“00003.CLP”所指定的剪切片段流文件“00003.PS”。因此,由Mark#0的mark_time_stamp所表示的上述时间90,000是剪切片段流文件“00003.PS”的时间。
在图28的下面部分中,作为PlayLis#1中所包括的三个Mark()的第二Mark()的Mark#1使得其mark_type(图7)设置到‘Event’,因此,它是事件标记。而且,Mark#1使得其ref_to_PlayItem_id(图7)设置到0,因此,其属于PlayList#1中所包括的、图25的仅仅一个PlayItem#0。此外,Mark#1使得其mark_time_stamp设置到27,090,000,因此,它是关于要由PlayList#1中所包括的PlayItem#0回放的剪切片段流文件的时间27,090,000的标记。而且,Mark#1使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不关联于其stream_id由0xE0指定(标识)的基本流,即上面参照图20和22所解释的视频流。而且,Mark#1使得其mark_data设置到1,因此,其表示将1作为自变量而发生的事件。
这里注意,如上面所述,要由PlayList#1中所包括的PlayItem#0回放的剪切片段流文件是“00003.PS”。因此,由Mark#1的mark_time_stamp所表示的上述时间27,090,000是剪切片段流文件“00003.PS”的时间。
而且,Mark#1所关联于、并且其stream_id是0xE0的视频流是其stream_id为0xE0的视频流,描述在Mark#1所属于的、图25的PlayList#1中所包括的PlayItem#0的Clip_Information_file_name中所描述的“00003.CLP”中,即三个基本流stream#0到stream#2的第一基本流(视频流)stream#0被复用到由图26的剪切片段信息文件“00003.CLP”所指定的剪切片段流文件“00003.PS”中。
接下来,在图28的下面部分中,作为PlayList#1中所包括的三个Mark()的第三Mark()的Mark#2使得其mark_type(图7)设置到‘Event’,因此,它是事件标记。而且,Mark#2使得其ref_to_PlayItem_id(图7)设置到0,因此,其属于PlayList#1中所包括的、图25的仅仅一个PlayItem#0。此外,Mark#2使得其mark_time_stamp设置到27,540,000,因此,它是关于要由PlayList#1中所包括的PlayItem#0回放的剪切片段流文件的时间27,540,000的标记。而且,Mark#2使得其entry_ES_stream_id和entry_ES_private_stream_id都设置到0,因此,其不关联于其stream_id由0xE1指定(标识)的基本流,即上面参照图20和22所解释的视频流。而且,Mark#1使得其mark_data设置到2,因此,其表示将2作为自变量而发生的事件。
这里注意,如上面所述,要由PlayList#1中所包括的PlayItem#0回放的剪切片段流文件是“00003.PS”。因此,由Mark#2的mark_time_stamp所表示的上述时间27,540,000是剪切片段流文件“00003.PS”的时间。
而且,Mark#2所关联于、并且其stream_id是0xE1的视频流是其stream_id为0xE1的视频流,描述在Mark#2所属于的、图25的PlayList#1中所包括的PlayItem#0的Clip_Information_file_name中所描述的“00003.CLP”中,即三个基本流stream#0到stream#2的第二基本流(视频流)stream#1被复用到从图26的剪切片段信息文件“00003.CLP”中所识别的剪切片段流文件“00003.PS”中。
这里,在图28的下面部分中,在PlayList#1的PlayListMark()列表的外面的右侧,示出自每个Mark()所属于的PlayItem()的开始的时间。
注意,在图28中,在mark_data中描述由章或者索引标记所表示的章或者索引号码。但是,由章或者索引标记所表示的章或者索引不是必须在mark_data中描述,但是可以通过例如对PlayListMark()中的章或者索引标记进行计数来识别。
[盘设备的操作的解释]
随后,将解释图1的盘设备的操作,假设将诸如上面参照图25到28所述的数据(文件)之类的数据(文件)记录在图1的盘101上。
当已经将盘101插入到盘驱动器102中时,将关于该情形(effect)的消息经由驱动器接口114传达到视频数据内容回放程序210,进而到图2的操作系统201。当已经接收到关于已经将盘101插入到了盘驱动器102中的情形的消息时,视频内容回放程序210从操作系统201开始图29的预回放处理。
[预回放处理]
也就是,图29示出了由视频内容回放程序210所执行的预回放处理的流程图。
这里,下面根据流程图所解释的盘设备的操作或者处理不是必须按照该流程图所描述的顺序在时间上顺序执行,而是在某些情况下可以平行或者独立地执行。但是,在本说明书中,为了方便,将按照该流程图来解释盘设备的操作或者处理。
在预回放处理中,在步骤S101中,视频内容回放程序210使用操作系统201的文件系统功能来检查盘101,从而确定盘101是否为用于视频内容回放程序210的正常盘。
这里,如上所述,使用操作系统201的文件系统功能来执行对盘101的存取(从盘101中读取文件),但是在下面任何适当的时候都省略其说明。
在步骤S101中已经确定了盘101不是正常盘的情况下,即,例如在对于盘101所采用的文件系统不与操作系统201兼容的情况下,或者在根目录中不包括“VIDEO”目录的情况下,视频内容回放程序210判断操作系统201与盘101不兼容,而且该过程前进到步骤S102,以使得图形处理模块219执行错误处理,之后预回放处理结束。
也就是,当发生错误处理时,图形处理模块219产生关于盘101不正常的情形的错误消息(的视频数据),并且将来自视频输出模块220的视频数据输出,以显示错误消息。注意,错误处理还可以额外包括,例如,从音频输出模块221输出报警声音、从盘驱动器102中弹出盘101等。
同时,在步骤S 101中已经确定了盘101是正常盘的情况下,过程前进到步骤S103,从而视频内容回放程序210使得内容数据提供模块213请求操作系统201读取两个数据文件,即盘101的“VIDEO”目录中所包括的“SCRIPT.DAT”文件和“PLAYLIST.DAT”文件(图4),之后过程前进到步骤S104。在步骤S104中,将“SCRIPT.DAT”文件提供到脚本控制模块211,而将“PLAYLIST.DAT”文件提供到播放器控制模块212。
之后,处理从S104前进到步骤S105到S107,其中播放器控制模块212执行初始化处理。注意,脚本控制模块211进行等待,直到播放器控制模块212的初始化处理结束为止。
[播放器控制模块212的初始化处理]
在初始化处理中,在步骤S105中,播放器控制模块212分析“PLAYLIST.DAT”文件,以检查在“PLAYLIST.DAT”文件中所使用的剪切片段信息文件的数量及其文件名。
也就是,在当前情况中,所以“PLAYLIST.DAT”文件如图25中所示,而且由于在图25的“PLAYLIST.DAT”文件中将number_of_PlayLists设置到2,所以播放器控制模块212识别两个PlayList()(即第一PlayList#0和第二PlayList#1)的存在。而且,由于对于图25的“PLAYLIST.DAT”文件中的第一PlayItem#0来说,将number_of_PlayItem设置到2,所以播放器控制模块212识别该PlayList#0中两个PlayItem()(即,第一PlayItem#0和第二PlayItem#1)的存在。而且,播放器控制模块212参照在图25的“PLAYLIST.DAT”文件中的PlayList#0中所包括的第一PlayItem#0和第二PlayItem#1的每一个的Clip_Information_file_name,从而识别在PlayList#0中所包括的第一PlayItem#0的剪切片段信息文件(的文件名)是“00001.CLP”,而在PlayList#0中所包括的第二PlayItem#1的剪切片段信息文件(的文件名)是“00002.CLP”。
对于第二PlayList#1,类似的,由于将其number_of_PlayItems设置到1,所以播放器控制模块212识别仅仅一个PlayItem()(PlayItem#0)的存在,而且从该PlayItem#0中的其Clip_Information_file_name中识别PlayItem#0的剪切片段信息文件是“00003.CLP”。
之后,处理从步骤S105前进到步骤S106,其中播放器控制模块212从盘101中读取在步骤S105中所识别的剪切片段信息文件,从盘101的“VIDEO”目录内的“CLIP”目录中读取三个剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”。
这里,对于在步骤S106中读取剪切片段信息文件,只读取要被首先回放的、PlayList()中的PlayItem()的剪切片段信息文件就足够了。但是,在本实施方式中,如上所述,假设事先读取所有PlayList()中的PlayItem()的剪切片段信息文件。
在步骤S106的处理之后,过程前进到步骤S107,其中播放器控制模块212确定是否已经成功地读取了在步骤S105中识别的剪切片段信息文件,而且还确定(检查)在盘101上是否存在与所读取的剪切片段信息文件对应的剪切片段流文件。也就是,在步骤S107中,确定是否已经成功地读取了剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”,还确定分别与剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”仅仅是扩展名不同的剪切片段流文件“00001.PS”、“00002.PS”和“00003.PS”是否存在于盘101的“VIDEO”下的“STREAM”目录中。
在已经在步骤S107中确定了对步骤S105中所识别的剪切片段信息文件的读取已经失败的情况下,或者在盘101上没有发现与剪切片段信息文件对应的剪切片段流文件的情况下,即,例如,在盘101上没有记录根据“PLAYLIST.DAT”文件的回放所必须的剪切片段信息文件和剪切片段流文件的情况下,视频内容回放程序210判断该文件与盘101不兼容,而且过程前进到步骤S102,其中执行上述错误处理,然后完成预回放处理。
同时,在步骤S107中已经确定已经成功地读取了在步骤S105中所识别的剪切片段信息文件,并且在盘101上发现了与剪切片段信息文件对应的剪切片段流文件的情况下,播放器控制模块212结束初始化处理,之后过程前进到步骤S108。
在步骤S108中,脚本控制模块211开始解释和执行“SCRIPT.DAT”文件。
现在假设,例如,脚本控制模块211执行“SCRIPT.DAT”文件,从而对播放器控制模块212指令对第一PlayList()进行回放。然后,执行图30的回放处理。
[回放处理]
也就是,图30示出了用于解释由视频内容回放程序210所执行的回放处理的流程图。
[回放准备处理]
在回放处理中,播放器控制模块212在步骤S121和S122中执行用于由脚本控制模块211已经指令了其回放的PlayList()(即第一PlayList()(PlayList#0))的回放准备处理。
也就是,在步骤S121中,播放器控制模块212检查在第一PlayList#0中所包括的第一PlayItem#0的IN_time(图6),然后过程前进到步骤S122,其中播放器控制模块212检查用于开始回放的回放开始位置,其在要由第一PlayList#0中所包括的第一PlayItem#0回放的剪切片段流文件“00001.PS”上,并且与该PlayItem#0的IN_time对应。
这里,在PlayItem()的IN_time(图6)指示剪切片段流文件的开始的情况下,可能必须只从剪切片段流文件的开始读取节目流。但是,在IN_time指向除了剪切片段流文件的开始之外的位置的情况下,播放器控制模块212发现(检查)与IN_time对应的位置,并且必须从其读取节目流。
具体地说,在图25中的情况下,在第一PlayList#0中所包括的第一PlayItem#0的IN_time是180,090。播放器控制模块212从图27中所示的EP_map()中发现要由第一PlayList#0中所包括的第一PlayItem#0回放的剪切片段流文件“00001.CLP”的、与作为PlayItem#0的IN_time的180,090匹配的回放开始位置。
也就是,播放器控制模块212使用二分搜索等,在EP_map()中所描述的、PTS_EP_start表示的解码可开始点中,搜索满足公式PTS_EP_start≤IN_time的最大PTS_EP_start。这里,对等于或者小于IN_time的PTS_EP_start进行搜索的原因是由IN_time所指示的位置并不总是解码可开始点。
在当前的情况下,如上所述,IN_time是180,090。而且,在图27中所示的EP_map()中,在要由第一PlayList#0中所包括的第一PlayItem#0所回放的剪切片段流文件“00001.CLP”中,描述180,090作为满足公式PTS_EP_start≤IN_time的最大PTS_EP_start。因此,播放器控制模块212在图27中所示的整个EP_map()中搜索被设置到180,090的PTS_EP_start。
而且,播放器控制模块212读取作为与所搜索到的PTS_EP_start对应的PTS_EP_start的(扇区)305,从而将由作为305的PTS_EP_start所表示的剪切片段流文件“00001.CLP”上的位置确定为回放开始位置。
在播放器控制模块212以上述方式确定了回放开始位置之后,过程从步骤S122前进到步骤S123,其中播放器控制模块212控制图形处理模块219来显示时间代码。图形处理模块219根据播放器控制模块212的控制,产生时间代码(的视频数据),以输出到视频输出模块220,从而开始时间代码的显示。
这里,假设在步骤S123已经开始了其显示的时间代码是例如通过将PlayList()的开始转换为00:00:00(小时:分钟:秒)而获得的值。注意,可以与时间代码一同或者只显示章或者索引号码。
[PlayListMark()分析处理]
在已经在步骤S123中开始了时间代码的显示之后,过程前进到步骤S124,其中播放器控制模块212执行分析处理,以分析已经由脚本控制模块211指令其回放的PlayList(),即第一PlayList()(PlayList#0)中所描述的PlayListMark()(图7)。
具体地说,由于在已经被读取的“PLAYLIST.DAT”文件中的第一PlayList#0中,在图28的上面部分中所示的PlayListMark()中将number_of_PlayLsit_marks设置到7,所以播放器控制模块212识别在PlayList#0中所包括的Mark()的数量是七。
而且,播放器控制模块212分析在图28的上面部分中的、在PlayList#0中所包括的七个Mark(),并且从它们的ref_to_PlayItem_id中,识别作为七个Mark()的第一到第四个的四个Mark()属于PlayList#0的第一PlayItem()(PlayItem#0)。
之后,播放器控制模块212从属于PlayList#0的第一PlayItem#0的四个Mark()中提取mark_time_stamp,以发送到解码控制模块214作为具有四个元件的阵列。也就是,作为结果,将作为在图28的上面部分中的七个Mark()中的第一到第四个的四个Mark()的mark_time_stamp的四个时间{180,090}、{5,580,090}、{10,980,090}和{16,380,090},从播放器控制模块212发送到解码控制模块214。在该处理的该点上,还将关于这些时间具有属性“标记处理”的情形的消息从播放器控制模块212转达到解码控制模块214。当用其测量部分214A测量解码控制模块214的时间与其属性是“标记处理”的时间一致时,解码控制模块214将关于该情形(即,该时间已经与其属性是“标记处理”的时间一致)的消息和属性“标记处理”转达到播放器控制模块212。
[用于要被回放的基本流的确定处理]
随后,过程从步骤S124前进到步骤S125,其中播放器控制模块212确定要被回放的基本流。
也就是,在作为已经由脚本控制模块211指令的其回放的PlayList()的第一PlayList#0中第一PlayItem#0(图25)的Clip_Information_file_name中描述其文件名的、图26的剪切片段信息文件“00001.CLP”中,因为将number_of_streamsz设置为4,所以播放器控制模块212识别将四个基本流复用到对应的剪切片段流文件“00001.PS”中。而且,播放器控制模块212针对四个基本流,顺序地检查图26的剪切片段信息文件“00001.CLP”的StaticInfo()中的stream_id和必要的private_stream_id,以识别在四个基本流中,一个是视频流,一个是ATRAC音频,而两个是字幕流。也就是,识别被复用到剪切片段流文件“00001.PS”中的、具有它们相应的属性的基本流的数量。
注意,关于被复用到剪切片段流文件中的、具有它们相应的属性的基本流的数量的信息用于在回放期间切换基本流(诸如音频的切换、字幕的切换等)。此外,可能存在在剪切片段流文件中不存在字幕流(在内容中没有包括字幕)的情况,因此,关于其属性是“字幕流”的基本流的数量的信息用于判断是否包括字幕流。
播放器控制模块212根据诸如上面之类的对StaticInfo()的检查结果来选择和确定要被回放的基本流。在当前的情况下,由于在被复用到剪切片段流文件“00001.PS”中的四个基本流中,仅仅存在一个其属性是“视频流”的基本流,并且仅仅存在一个其属性是“音频流”的基本流,所以对应其属性是“视频流”和“音频流”的基本流来说没有选择的余地。因此,将仅仅一个视频流和仅仅一个音频流(ATRAC音频流)确定为要被回放的基本流。
此外,对于其属性是“字幕流”的基本流来说,存在被复用到剪切片段流文件“00001.PS”的四个基本流中的两个,因此要选择两个字幕流中的一个并且确定作为要被回放的基本流。这里,例如,假设要选择在两个字幕流中以剪切片段流文件“00001.PS”中出现的顺序作为第一个的那一个。
这里,如上所述,在识别被复用到剪切片段信息文件“00001.CLP”中的四个基本流的属性和数量时,必须指定这四个基本流的每一个。播放器控制模块212通过参照它们的stream_id和必要的private_stream_id来指定被复用到剪切片段流文件“00001.PS”中的四个基本流。
也就是,如上面参照图26的剪切片段信息文件“00001.CLP”所述,播放器控制模块212根据被设置到0xE0的stream_id,在被复用到剪切片段流文件“00001.PS”中的四个基本流中,指定作为其属性是“视频流”的基本流的视频流。
此外,如上面参照图26的剪切片段信息文件“00001.CLP”所述,播放器控制模块212根据被设置到0xBD的stream_id和被设置到0x00的private_stream_id,在被复用到剪切片段流文件“00001.PS”中的四个基本流中,指定作为其属性是“音频流”的基本流的ATRAC音频流。
而且,如上面参照图26的剪切片段流文件“00001.PS”所述,播放器控制模块212根据分别被设置到0xBD的stream_id和被设置到0x80的private_stream_id,以及被设置到0xBD的stream_id和被设置到0x81的private_stream_id,在被复用到剪切片段流文件“00001.PS”中的四个基本流中,指定作为其属性是“字幕流”的基本流的两个字幕流。
如上所述,可以通过在与剪切片段流文件对应的剪切片段信息文件中作为元数据所描述的stream_id/private_stream_id组合来指定被复用到剪切片段流文件中的基本流。
这里,stream_id/private_stream_id组合是提供来扩展MPEG2系统复用的机制。通过在元数据(数据库)中使用该stream_id/private_stream_id组合来指定基本流,可以可靠地指定基本流。此外,即使将private_stream_id的含意在将来进行扩展以增加对应的基本流的数量和类型(属性)的情况下,也可以直接使用当前的机制,因此该机制在可扩展性方面非常优越。
也就是,例如在BD(蓝光盘)标准中,将MPEG2中的传输流(TransportStream)的PID(封包ID)用于指定数据,因此MPEG2标准限制了BD标准。此外,例如在DVD_Video标准中,定义了与private_stream_id类似的sub_stream_id。但是,没有对sub_stream_id进行配置以在数据库中进行描述以指定流,但是仅仅在固定区域中进行描述以描述关于八或者三十二个流(见,例如,VI4-49,表4.2.1-2(VTS-AST_ATRT)和VI4-52,表4.2.1-2(VTS_SPST_ATRT))的信息,因此DVD_Video在可扩展性方面不优越。
同时,可以例如以number_of_stream所表示的数量在其中描述了元数据的图10的剪切片段信息文件Clip()中描述stream_id/private_stream_id组合,因此,可以根据如剪切片段信息文件Clip()中所描述的元数据所述的stream_id/private_stream_id组合来指定被复用到剪切片段流文件中的基本流,而不管基本流的数量(但是,在number_of_streams可以表示的数量范围内)。
注意,在本实施方式中,在图10的剪切片段信息文件中,不仅使用stream_id/private_stream_id组合来指定被复用到对应的剪切片段流文件中的基本流,而且作为图7的PlayListMark()中的entry_ES_stream_id/entry_ES_private_stream_id组合还指定例如将Mark()与其关联的基本流。而且,还附加地使用stream_id/private_stream_id组合来指定例如在图14的EP_map()中为其描述了解码可开始点信息的基本流。
[输出属性控制处理]
之后,过程从步骤S125前进到步骤S126,其中播放器控制模块212执行用于回放目标基本流(即在步骤S125确定要被回放的基本流)的输出属性控制处理。
具体地说,对于回放目标基本流的每一个,即在步骤125中确定要被回放的视频流、ATRAC音频流和字幕流,播放器控制模块212首先检查表示DynamicInfo()(图13)的数量的number_of_DynamicInfo(图10)。
这里,在现在的情况下,将作为回放目标的视频流、ATRAC音频流和字幕流复用到剪切片段流文件“00001.PS”中,所有它们的number_of_DynamicInfo都设置到0,如上面参照图26的“00001.CLP”所述。在以这种方式对于所有回放目标基本流将number_of_DynamicInfo都设置到0的情况下,播放器控制模块212不特别执行作为用于回放目标基本流的输出属性控制处理的处理。
注意,将在后面描述在对于回放目标基本流来说number_of_DynamicInfo不是0的情况下,要作为用于基本流的输出属性控制而被执行的处理。
[回放开始准备处理]
在步骤S 126的处理之后,过程前进到步骤S127,其中播放器控制模块212执行用于回放目标基本流的回放开始准备处理。
也就是,播放器控制模块212将把回放目标基本流复用到其中的剪切片段流文件“00001.PS”、和作为步骤S122中所确定的回放开始位置的、在EP_map()中所描述的RPN_EP_start(=350)给到内容数据提供模块213。
而且,播放器控制模块212在开始提供将回放目标基本流复用到其中的剪切片段流文件“00001.PS”中所存储的节目流到缓存器控制模块215之前,初始化缓存器控制模块215。
具体地说,在缓存器控制模块215(图3)中,将相同的值设置到在数据开始指针存储部分231中所存储的数据开始指针、在数据写指针存储部分232中所存储的数据写指针、在视频读取指针存储部分241中所存储的视频读取指针、在音频读取指针存储部分251中所存储的音频读取指针和在字幕读取指针存储部分262中所存储的字幕读取指针的每一个。
结果,在数据开始指针存储部分231中所存储的数据开始指针和在数字写指针存储部分232中所存储的数据写指针指向缓存器控制模块215的缓存器215A中的相同位置。这意味着在缓存器215A没有存储有效数据。
而且,播放器控制模块212将stream_id并且根据需要还有private_stream_id作为用于标识(指定)回放目标基本流的标识信息,提供给缓存器控制模块215。
也就是,如上所述,在回放目标基本流中,通过将其stream_id设置到0xE0而指定其属性为“视频流”的视频流;通过将其stream_id设置为0xBD并且将其private_stream_id设置为0x00来指定其属性为“音频流”的ATRAC音频流;以及通过将其stream_id设置为0xBD并且将其private_stream_id设置为0x80来指定其属性为“字幕”流的字幕流。播放器控制模块212将这些stream_id和private_stream_id提供到缓存器控制模块215。
在缓存器控制模块215(图3)中,视频读取功能部分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,并且用于在之后描述的标记处理中指定当前正在被回放的流。
播放器控制模块212还将与把回放目标基本流复用到其中的剪切片段流文件匹配的字幕读取功能标号,设置到字幕读取功能标号存储部分261中,作为对缓存器控制模块215的初始化(图3)。
也就是,在现在的情况下,将字幕流包括在把回放目标基本流复用到其中的剪切片段流文件“00001.PS”中,因此将其值设置到1的字幕读取功能标号设置到字幕读取功能标号存储部分261中,以使得字幕读取功能部分236进行工作。注意,在没有将字幕流包括在把回放目的基本流复用到其中的剪切片段流文件“00001.PS”中的情况下,将其值为0的字幕读取功能标号设置到字幕读取功能标号存储部分261中。在这种情况下,字幕读取功能部分235不工作(特别是不执行任何处理)。
此外,播放器控制模块212将已经由脚本控制模块211指令了其回放的第一PlayList#0中所包括的第一PlayItem#0(图25)中,作为IN_time的时间180,090和作为OUT_time的27,180,090给到解码控制模块214。在解码控制模块214中,使用IN_time来控制用于要由PlayItem()回放的剪切片段的解码开始,而OUT_time用于控制该剪切片段的解码结束进而用于控制后面描述的PlayItem变化。
而且,播放器控制模块212对图形处理模块219初始化字幕流显示模式指令。也就是,播放器控制模块212控制图形处理模块219以将字幕流显示模式设置到例如默认显示模式。
[数据读取开始]
之后,过程从步骤S127前进到步骤S128,其中播放器控制模块212控制内容数据提供模块213,从而内容数据提供模块213使用操作系统201的功能来读取存储了将要被回放的基本流复用到其中的节目流的剪切片段流文件。也就是,内容数据提供模块213指定盘101(图4)的“VIDEO”目录下“STREAM”目录中的剪切片段流文件“00001.PS”,而且还指定作为步骤S122中所确定的回放开始位置的扇区305以请求操作系统201来读取该文件。此外,内容数据提供模块213指定将从盘101读取的数据提供到缓存器控制模块215。
结果,开始从盘101读取剪切片段流文件“00001.PS”中所存储的节目流,而且将节目流提供给缓存器控制模块215。
缓存器控制模块215(图3)将从盘101读取并且提供到它的节目流写在由数据写指针存储部分232的数据写指针所指示的、缓存器215A中的位置,而且以所写数据的大小增加数据写指针。
下面,除非另外提及,假设只要在缓存器控制模块215的缓存器215A中有空闲空间可用,内容数据提供模块213就从盘101中读取数据,并且将所读取的数据提供和存储在缓存器控制模块215的缓存器215A中。因此,假设缓存器215A具有其中恒定积累的足够数据。
[解码器控制开始]
当已经开始了从盘101中读取数据然后已经以上述的方式开始将数据积累在缓存器控制模块215的缓存器215A中时,过程从步骤S218前进到步骤S219,其中解码控制模块214控制视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218,以开始从缓存器215A中读取数据作为解码操作的预先步骤。
也就是,作为结果,视频解码器控制模块216请求来自缓存器控制模块(图3)的视频读取功能部分233的数据,从而视频解码器控制模块216获取所请求的从缓存器控制模块215发送来的、在缓存器215A中所存储的一个视频存取单元,添加到该视频存取单元的PTS和DTS(下面在任何适当的时候都称为“时间戳”)、以及作为在解码可开始点之前紧邻的private_stream2 PES_packet()中所描述的信息(下面在任何适当的时候都称为“添加的信息”)的pic_struct_copy、au_ref_flag和AU_length。注意,每次视频解码器控制模块216获取视频存取单元都将时间戳从视频解码器控制模块216传送到解码控制模块214。
同时,音频解码器控制模块217还从缓存器控制模块215(图3)的音频读取功能部分234中请求数据,从而音频解码器控制模块217获取所请求的从缓存器控制模块215传送来的、在缓存器215A中所存储的单个(ATRAC)音频存取单元,以及添加到该音频存取单元的时间戳(PTS、DTS)。注意,每次音频解码器控制模块217获取音频存取单元,都将时间戳从音频解码器控制模块217传送到解码控制模块214。
而且,字幕解码器控制模块218请求来自缓存器控制模块215(图3)的字幕读取功能部分235的数据,从而字幕解码器控制模块218获取所请求的在缓存器215A中所存储的并且从缓存器控制模块215传送来的一个字幕存取单元,以及添加到该字幕读取单元的时间戳。注意,每次字幕解码器控制模块218获取字幕存取单元,都将时间戳从字幕解码器控制模块218传送到解码控制模块214。此外,在回放目标基本流中不存在字幕流的情况下,或者在缓存器215A中没存储有字幕存取单元的情况下,不将数据从缓存器控制模块215传送到字幕解码器控制模块218。
这里,每次从缓存器控制模块215请求时间数据,视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的每一个都传送数据请求的结果到解码控制模块214。
此外,将在后面描述当将数据从缓存器控制模块215传送到视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218时从缓存器215A中读取数据的详情。
[解码开始]
当视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218已经开始从缓存器控制模块215的缓存器215A中读取数据时,过程从步骤S129前进到步骤S130,其中开始对数据进行解码。
也就是,解码控制模块214指令视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218,根据作为在步骤S127中从播放器控制模块中给出的、在PlayList#0中所包括的第一PlayItem#0的IN_time的时间180,090,进而以上面参照步骤S129所述的方式从视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218传送来的时间戳,开始解码,同时在必要的时候移动它们的定时以确保同步。
这里,在例如日本专利No.3496725中公开了涉及用于确保定时的移动的定时的解码开始指令方法。简要地,将视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218所分别传送的时间戳的最小的一个,设置为由时间测量部分214A所测量的时间的初始值以开始时间测量,而且在时间测量部分214所测量的时间与该时间戳一致时给出解码开始指令。
已经从解码控制模块214接收到解码开始指令的视频解码器控制模块216响应于该指令,将从缓存器控制模块215(图3)的视频读取功能部分233获取的一个视频存取单元传送到视频解码器116(图1)以进行解码。而且,视频解码器控制模块216将解码所产生的视频数据提供给图形处理模块219。
之后,视频解码器控制模块216顺序地在视频解码器116处,解码每次一个地从缓存器控制模块215的视频读取功能部分233获取的视频存取单元,并且连续地将解码所产生的视频数据提供到图形处理模块219。
同时,已经从解码控制模块214接收到解码开始指令的音频解码器控制模块217响应于该指令,将从缓存器控制模块215(图3)的音频读取功能部分234获取的一个音频存取单元传送到音频解码器117(图1)以进行解码。而且,音频解码器控制模块217将解码所产生的音频数据提供到音频输出模块221。
之后,音频解码器控制模块217顺序地在音频解码器117处,解码每次一个地从缓存器控制模块215的音频读取功能部分234获取的音频存取单元,并且连续地将解码所产生的音频数据提供到音频输出模块221。
此外,已经从解码控制模块214接收到解码开始指令的字幕解码器控制模块218响应于该指令,使用所合并的字幕解码软件,将从缓存器控制模块215(图3)的字幕读取功能部分235获取的一个字幕存取单元进行解码,将解码所产生的字幕数据提供到图形处理模块219。
之后,字幕解码器控制模块218顺序地使用所合并的字幕解码软件,解码每次一个地从缓存器控制模块215的字幕读取功能部分235获取的字幕存取单元,并且连续地将解码所产生的字幕数据提供到图形处理模块219。
[图形处理]
之后,过程从步骤S130前进到步骤S131,其中图形处理模块219对以诸如上述方式之类的方式从视频解码器控制模块216提供到其的视频数据,以及在必要的情况下对从字幕解码器控制模块218提供到其的字幕数据,执行图形处理。
也就是,图形处理模块219根据来自播放器控制模块212的显示模式指令,首先执行诸如对来自字幕解码器控制模块218的字幕数据进行放大或者缩小之类的字幕处理。在没有从播放器控制模块212给出显示模式指令的情况下,或者在已经从其给出的默认显示模式指令的情况下,图形处理模块219直接保存来自字幕解码器控制模块218的字幕数据而不对其进行处理。
而且,图形处理模块219将来自视频解码器控制模块216的视频数据添加到来自字幕解码器控制模块218的字幕数据、或者从字幕处理中产生的字幕数据中,以获取其中将字幕数据重叠在来自视频解码器控制模块216的视频数据上的输出视频数据,以提供到视频输出模块220。
注意,在已经从脚本控制模块211和播放器控制模块212接收到用于显示诸如菜单、消息、时间代码、章或者索引号码之类的信息的指令的情况下,图形处理模块219产生信息,并且将其重叠在输出视频数据上,以提供到视频输出模块220。
[输出处理]
在步骤S131的处理之后,过程前进到步骤S132,其中视频输出模块220将以上面参照步骤S131所描述的方式从图形处理模块219提供到其的输出视频数据顺序地存储在FIFO 220A中,并且以预设的输出速率顺序地输出在FIFO220A中所存储的输出视频数据。
只要在FIFO 220A中有可用的某些(剩余)空间,视频输出模块220就接受来自图形处理模块219的输出视频数据。但是,在FIFO空间紧张的情况下,视频输出模块220请求图形处理模块219停止对输出视频数据的接收。结果,图形处理模块219停止其处理,而且请求解码器控制模块216和字幕解码器控制模块218停止它们的处理。作为结果,视频解码器控制模块216和字幕解码器控制模块218停止它们的处理。
在视频输出模块220已经请求了图形处理模块219停止对输出视频数据进行接收之后,并且当来自FIFO 220A的输出视频数据的输出前进从而在FIFO220A中一些空间变得可用时,视频输出模块220请求图形处理模块219接收到其的输出视频数据。将该请求从图形处理模块219转达到视频解码器控制模块216和字幕解码器控制模块218,这与用于停止对输出视频数据进行接收的请求类似。作为结果,图形处理模块219、进而视频解码器控制模块216和字幕解码器控制模块218恢复它们已经被停止的处理。
同时,音频输出模块221还将以上面参照步骤S130所述的方式从音频解码器控制模块217提供到其的输出音频数据顺序地存储在FIFO 221A中,并且以预设输出速率(采样频率)顺序地对FIFO 221A中所存储的输出音频数据进行输出。
只要在FIFO 221A中有可用的一些(剩余)空间,音频输出模块221就接受来自音频解码器控制模块217的输出音频数据。但是,在FIFO空间紧张的情况下,音频输出模块221请求音频解码器控制模块217停止接收音频数据。作为结果,音频解码器控制模块217停止其处理。
在音频输出模块221已经请求音频解码器控制模块217停止接收音频数据之后,而且当从FIFO 221A的输出音频数据的输出前进从而在FIFO 221A中一些空间变得可用时,音频输出模块221请求音频解码器控制模块217接收音频数据。作为结果,音频解码器控制模块217回复其被停止的处理。
随着以上述方式从视频输出模块220和音频输出模块221输出数据,连续地对基本流进行解码。
虽然上面参照图20和39解释了当图1的设备回放盘101时由该设备所执行的整个处理或者操作的流程,但是将在下面描述在盘101的回放期间由该盘设备所执行的其他处理或者操作。
[PlayItem改变]
图25中的第一PlayList#0的PlayItem#0的回放以参照图20和30在上面所描述的方式开始。根据PlayList#0,当第一PlayItem#0的回放结束时,开始回放第二PlayItem#1。也就是,通过PlayItem#0改变到PlayItem#1来执行PlayItem改变。
现在将参照图31的流程图来描述PlayItem改变处理。
当图25中第一PlayList#0的PlayItem#0(的剪切片段)的回放以上面参照图29和30所述的方式开始时,解码控制模块214(图2)在该第一PlayItem#0的回放期间继续检查由内置测量部分214A所测量的时间。
[PlayItem#0的回放结束]
而且当由测量部分214A所测量的时间等于作为在图30的步骤S127中从播放器控制模块212中给出的第一PlayItem#0的OUT_time的时间27,180,090(图25)时,解码控制模块214在步骤S151中执行解码中断控制以结束PlayItem#0的回放。
也就是,解码控制模块214控制视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218以停止它们的解码操作。而且,解码控制模块214控制视频输出模块220以继续作为当前正在被输出的输出视频数据的输出。
而且,解码器控制模块214将关于第一PlayItem#0的回放已经结束的情形的消息转达到播放器控制模块212。
[PlayItem#1的回放开始]
如上面参照图29的步骤S105所述,播放器控制模块212已经识别了在第一PlayList#0中存在第一PlayItem#0和第二PlayItem#1,因此当解码控制模块214通知已经结束了第一PlayItem#0的回放时,过程从步骤S151前进到步骤S152,其中播放器控制模块212开始第二PlayItem#1的回放,这与上面所述第一PlayItem#0的情况类似。
也就是,大致描述用于第二PlayList#1的回放过程,播放器控制模块212首先确定在EP_map()中所描述的RPN_EP_start之一作为用于第二PlayItem#1的回放开始位置,这与图30的步骤S122中的情况类似。
而且,播放器控制模块212以上面参照图30的步骤S124所描述的方式识别属于第二PlayItem#1的Mark(),识别具有它们相应的属性的、被以上面参照图30的步骤S125所述的方式复用到要由PlayItem#1回放的剪切片段流文件“00002.PS”中的基本流的数量,进而确定要被回放的基本流(回放目标)等。
而且播放器控制模块212与图30的步骤S127中的情况类似执行处理。
也就是,播放器控制模块212将作为回放开始位置的EP_map()中的RPN_EP_start和将回放目标基本流复用到其中的剪切片段流文件的文件名(即,在现在的情况中,在与第二PlayItem#1(图25)的Clip_informstion_file_name中所描述的“00002.CLP”对应的剪切片段流文件“00002.PS”的文件名)给予数据提供模块213。
而且,播放器控制模块212在开始将在把回放目标基本流复用到其中的剪切片段流文件“00002.PS”中所存储的节目流提供给缓存器控制模块215之前,对缓存器控制模块215进行初始化。
也就是,作为结果,在缓存器控制模块215(图3)中,将相同的值设置到数据开始指针存储部分中所存储的数据开始指针、数据写指针存储部分232中所存储的数据写指针、视频开始指针存储部分241中所存储的视频读取指针、音频读取指针存储部分251中所存储的音频读取指针和字幕读取指针存储部分262中所存储的字幕读取指针中。
而且,播放器控制模块212将stream_id、以及在必要时private_stream_id提供到缓存器控制模块215,作为用于标识(指定)回放目标基本流的标识信息。
在缓存器控制模块215(图3)中,视频读取功能部分233将用于从播放器控制部分212进行回放的基本流的视频流的stream_id存储在stream_id寄存器242中。而且,音频读取功能部分234将从播放器控制模块212回放目标基本流的音频流的stream_id和private_stream_id分别存储在stream_id寄存器252和private_stream_id寄存器253中。
而且,由于将当前回放目标基本流复用到其中的剪切片段流文件“00002.PS”包括字幕流,所以播放器控制模块212将用于回放的基本流的字幕流的stream_id和private_stream_id提供到字幕读取功能部分235,而字幕读取功能部分235将这些stream_id和private_stream_id分别存储在stream_id寄存器263和private_stream_id寄存器264中。
而且播放器控制模块212将其值与把回放目标基本流复用其中的剪切片段流文件匹配的字幕读取功能标号设置到字幕读取功能标号存储部分261中,作为对缓存器控制模块215的初始化(图3)。
也就是,在现在的情况下,由于将回放目标基本流复用到其中的剪切片段流文件“00002.PS”包括字幕流,所以将其值为1的字幕读取功能标号设置到字幕读取功能标号存储部分261中,以使得字幕读取功能部分235进行工作。
而且,播放器控制模块212将作为IN_time的时间90,000和作为将要被回放的第二PlayItem#1(图25)的OUT_time的时间27,090,000给到解码控制模块214。
而且,播放器控制模块212将字幕流显示模式指令初始化到图形处理模块219。也就是,播放器控制模块212控制图形处理模块219来将字幕流显示模式设置到默认显示模式。
注意,只有在用于回放的字幕流使得其configurable_flag(图12)设置到允许显示模式改变的1的情况下,从播放器控制模块212到图形处理模块219的字幕流显示模式指令才可以保持当前的显示模式不变。
之后,第二PlayItem#1的回放与第一PlayItem#0的回放类似地进行。而且解码控制模块214在第二PlayItem#1的回放期间,继续检查由内置测量部分214A所测量的时间。而且当由时间测量部分214A所测量的时间等于作为在步骤S152中(图31)从播放器控制模块212给出的第二PlayItem#1的OUT_time的时间27,090,000(图25)时,解码控制模块214与步骤S151中的情况类似执行解码中断控制,以结束对PlayItem#1回放。
[时间代码显示]
随后,如上所述,在图30的步骤S123中开始对时间代码的显示。连续地更新所显示的时间代码。
现在参照图32的流程图来描述时间代码显示处理。
当通过其内置时间测量部分214A测量1秒时,在步骤S171中,解码控制模块214(图2)将由时间测量部分214A所测量的当前时间与关于已经经过了一秒的情形的消息一同提供给播放器控制模块214,此后过程前进到步骤S172。在步骤S172中,播放器控制模块212从解码控制模块214接收该消息和当前时间,而且将当前时间转换为时间代码,之后,过程前进到步骤S173。
在步骤S173中,播放器控制模块212控制图形处理模块219以显示在步骤S172中所获取的时间代码,之后,过程返回到步骤S171。
作为结果,每秒都更新时间代码。注意,对时间代码更新的间隔不限于一秒。
[流切换]
随后,以参照图26所述的方式将两个字幕流复用到由都形成上面参照图25所解释的第一PlayList#0的、第一PlayItem#0所回放的剪切片段流文件“00001.PS”和第二PlayItem#1所回放的剪切片段流文件“00002.PS”中。
在以这种方式将具有相同属性的多个基本流复用到剪切片段流文件的情况中,可以执行其中可以将具有相同属性的多个回放目标基本流之一切换到另一个的流切换。
现在参照图33的流程图来解释流切换过程。
例如,在“SCRIPT.DAT”文件(图4)中将流切换指令作为脚本程序进行描述的情况下,通过脚本控制模块211执行脚本程序或者通过用户控制遥控器来将流切换请求给到播放器控制模块212。
也就是,当已经执行了其中描述了流切换指令的脚本程序时,将用于请求流切换的消息提供给播放器控制模块212。此外,当通过已经控制了遥控器的用户已经从遥控器接收了流切换指令信号时,输入接口155将用于请求流切换的消息提供给播放器控制模块212。
现在假设,例如,将作为用于请求字幕流切换的消息的字幕流切换消息提供到播放器控制模块212。然后,播放器控制模块212在步骤S191中检查其在确定用于图30的步骤S125中所执行的回放的基本流的时候已经识别的字幕流的数量。
在对于字幕流的数量的检查结果指示一个或者更少的情况下,播放器控制模块212忽略字幕流切换消息,因此,不执行随后的步骤S192到S914。
同时,在字幕流的数量是二或者更多的情况下,过程顺序地前进到步骤S192到S194,从而将当前正在被回放的字幕流切换到另一个字幕流。
也就是,在步骤S192中,在剪切片段信息文件上,播放器控制模块212指定当前正在被回放的字幕流。具体地说,现在假设正在回放其stream_id为0xBD而private_stream_id是0x80的、被上面参照图25所述的方式通过形成第一PlayList#0的第二PlayItem#1复用到剪切片段流文件“00002.PS”中的字幕流。然后,在步骤S192中,指定当前正在被回放的字幕流是被复用到剪切片段流文件“00002.PS”的两个字幕流中作为图26的剪切片段信息文件“00002.PLS”上的第三字幕流的stream#2。
然后,过程前进到步骤S193,其中播放器控制模块212将在剪切片段信息文件上在步骤S192中所指定的字幕流随后的字幕流识别(指定)作为要被随后回放的字幕流。在图26中,第三字幕流stream#2随后的字幕流是在剪切片段信息文件“00002.CLP”上的第四字幕流stream#3,因此,在步骤S193中,将第四字幕流stream#3识别为要随后回放的字幕流。
注意,在已经指定了当前正在被回放的字幕流是在被复用到剪切片段文件“00002.PS”中的两个字幕流中作为在图26的剪切片段信息文件“00002.CLP”上的第四字幕流的stream#3的情况下,例如将第三字幕流stream#3识别为要随后回放的字幕流。
之后,过程前进到步骤S194,其中播放器控制模块212将在步骤S193中被识别为要随后被回放的字幕流的stream_id和private_stream_id给到缓存器控制模块215(图3)的字幕读取功能部分235,以指令字幕读取功能部分235使用该stream_id和private_stream_id以随后从缓存器215A中读取字幕存取单元。
缓存器控制模块215(图3)的字幕读取功能部分235在步骤S194中将由播放器控制模块212给出的stream_id和private_stream_id分别新设置到stream_id寄存器263和private_stream_id寄存器264中,而且对stream_id由寄存器263和private_stream_id寄存器264中所分别新设置的stream_id和private_stream_id所指定的字幕存取单元执行从缓存器215A的随后读取。
在上述方式中,将要回放的字幕流从当前正在被回放的字幕流切换到另一个字幕流。
[由缓存器控制模块215执行的处理]
随后将参照图34到38描述由缓存器控制模块215(图3)执行的处理,即,将数据写到缓存器215A以及从缓存器215A读取数据。
如上面参照图3所述,缓存器控制模块215具有用于对于缓存器215A读取/写数据的五个指针。
也就是,如图34和35中所示,缓存器控制模块215使得数据控制指针存储在数据开始指针存储部分231中、数据写指针存储存储在数据写指针存储部分232中、视频读取指针存储在视频读取指针存储部分241、音频读取指针存储在音频读取指针存储部分251、以及字幕读取指针存储在字幕读取指针存储部分262中。
注意,在图34和35中,没有示出视频读取功能部分233的stream_id寄存器242和au_information()寄存器243、音频读取功能部分234的stream_id寄存器252和private_stream_id寄存器253、以及图3中的字幕读取功能部分235的字幕读取功能标号存储部分261、stream_id寄存器263、和private_stream_id寄存器264。
在数据开始指针存储部分231中所存储的数据开始指针表示在缓存器215A中剩余的最旧的数据(在需要被读取但是还没有被读取的数据中最旧的数据)的位置。在数据写指针存储部分232中所存储的数据写指针指示用于将数据写到缓存器215A中的位置,而且这是将缓存器215A中最新的数据写到该处的位置。
在视频读取指针存储部分241中所存储的视频读取指针表示要从缓存器215A中读取的视频流的位置。此外,在音频读取指针存储部分251中所存储的音频读取指针表示要从缓存器215A中被读取的音频流的位置,而在字幕读取指针存储部分262中所存储的字幕读取指针表示要从缓存器215A中被读取的字幕流的位置。
注意,如上面参照图3所述,数据开始指针、数据写指针、视频读取指针、音频读取指针和字幕读取指针全都沿着缓存器215A顺时针移动。
而且,在本实施方式中,将数据开始指针配置为被持续地更新,以便,如图35中所示,其指在与由视频读取指针、音频读取指针和字幕读取指针中任何一个所指示的最旧的数据的位置相同的位置。这里,在图35中,在视频读取指针、音频读取指针和字幕读取指针中,音频读取指针指示最旧的数据的位置,因此数据开始指针指示与音频读取指针相同的位置。
在具有诸如上面所述的数据写指针、视频读取指针、音频读取指针和字幕读取指针之类的数据开始指针的缓存器控制模块215中,当已经从盘101中读取了新数据并且写到缓存器215A时,将数据写指针进行顺时针更新,以便指在被新写入的数据之后紧邻的位置。
而且,当已经从缓存器215A读取了视频流、音频流或者字幕流时,与所读取的数据量成比例地顺时针分别更新视频读取指针、音频读取指针或者字幕读取指针。这里,与所读取的数据量成比例意味着与实际所读取的视频、音频或者字幕数据量对应的部分同在读取期间在所读取的数据之间所包括而不是被跳过的另一个流的数据部分之和。
此外,当已经更新了视频读取指针、音频读取指针或者字幕读取指针时,将数据开始指针进行更新以便指示在与视频读取指针、音频读取指针或者字幕读取指针中的任何一个所指示的最旧数据的位置相同的位置。
这里,缓存器控制模块215控制将数据写到缓存器215A,以便数据写指针不超过数据开始指针。
也就是,在缓存器控制模块215中,除非数据写指针超过数据开始指针,否则将从自盘101所读取的数据写到缓存器215A中由数据写指针所指示的位置,而且相应地对数据写指针进行更新。同时,在缓存器控制模块215中,当数据写指针要超过数据开始指针时,向内容数据提供模块213请求停止(中止)从盘101中读取数据,进而停止向缓存器215A写数据。结果,可以防止缓存器215A的溢出。
如上所述,仅仅通过两个指针,即数据开始指针和数据写指针,之间的位置关系来控制将从盘101中读取的数据写到缓存器215A中。
同时,对于从缓存器215A中读取数据来说,缓存器控制模块215控制从缓存器215A中读取数据,从而视频读取指针、音频读取指针和字幕读取指针、以及数据开始指针不超过数据写指针。
也就是,在缓存器控制模块215中,除非视频读取指针、音频读取指针或者字幕读取指针超过数据写指针,否则如视频解码器控制模块216、音频解码器控制模块217或者字幕解码器控制模块218所请求的,从视频读取指针、音频读取指针或者字幕读取指针所指示的缓存器215A中的位置处读取数据;更新视频读取指针、音频读取指针或者字幕读取指针;而且根据需要更新数据开始指针。同时,当视频读取指针、音频读取指针或者字幕读取指针将要超过数据写指针时,在缓存器控制模块215中,例如将来自视频解码器控制模块216、音频解码器控制模块217或者字幕解码器控制模块218的请求冻结,直到变为可以获得足够量的数据为止。结果,可以防止缓存器215的下溢(underflow)。
从上面,在缓存器215A中,将要提供到视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的数据,顺时针地存储在从数据开始指针所指示的位置到数据写指针所指示的位置的范围内(图34和35中的阴影部分),进而,视频读取指针、音频读取指针和字幕读取指针停留在该范围内。
注意,在上面的情况下,进行配置来更新数据开始指针以指示由视频读取指针、音频读取指针和字幕读取指针所指示的位置的最旧数据的位置。但是,还可以替代进行配置,从而(例如)数据开始指针指示在被该最旧数据的位置超过一预定时间(例如,1秒)的数据位置。
也就是,通常期待这样的情况,在视频读取指针、音频读取指针和字幕读取指针中,视频读取指针和音频读取指针通常指示在最旧数据的位置。
因此,在将数据开始指针进行更新以便指示在视频读取指针或者音频读取指针所指示的最旧数据位置所超过例如一秒的数据位置处的情况下,可以将其大小等于由视频读取指针或者音频读取指针所指示的最旧数据位置所超过一秒的数据保留在缓存器215A中。这里,在图34中,音频读取指针指示最旧数据位置,而数据开始指针指示该位置所超过一秒的数据位置。
如上所述,通过更新数据开始指针从而指示在相当一秒的过去数据(pastdata)的位置处,来增强盘设备的响应性。
也就是,如图35中所示,在对数据开始指针进行更新从而指示在由例如音频读取指针所指示的最旧数据位置的情况下,当指令在相反方向中的特别回放时,需要重新读取其从缓存器215A中的读取已经结束的数据,因此在允许特别回放之前,从已经指令了特别回放时经过了一些时间。
相反地,如图34中所示,在对数据开始指针进行更新从而指示在音频读取指针所指示的最旧数据位置过去一秒的数据位置的情况下,当指令了在相反方向中的特别回放时,如果需要开始特别回放的数据是缓存器215A中所存储器的、与一秒相当的过去数据,则可以立即开始特别回放,而不必涉及到如上所述地从盘101中重新读取数据。
注意,在将数据开始指针进行更新从而指示在由音频读取指针所指示的最旧数据位置过去一秒的数据位置处的情况下,在某些情况下可以不将需要开始特别回放的数据存储在缓存器215A中。在这种情况下,从盘101中重新读取需要开始特别回放的数据。
随后,将描述从缓存器215A中读取视频流、音频流和字幕流的每一个的详情。
如上面参照图30的步骤S127所述,当开始回放剪切片段流文件时,在缓存器控制模块215中,将视频读取指针、音频读取指针和字幕读取指针进行初始化以指示在缓存器215A上的相同位置处。
当已经从盘101中读取了在剪切片段流文件中所存储的节目流(MPEG2系统节目流)以提供到缓存器控制模块215时,在缓存器控制模块215中,将节目流存储在由缓存器215A的数据写指针所指示的位置处,而且顺时针地更新数据写指针。
而且,在缓存器控制模块215中(图3),视频读取功能部分233分析在缓存器215A中所存储的节目流的语法,通过根据视频解码器控制模块216的请求从缓存器215A所存储的节目流中进行提取(分离)来读取节目流(视频存取单元),以提供到视频解码器控制模块216。
类似地,音频读取功能部分234也分析在缓存器215A中所存储的节目流的语法,而且根据音频解码器控制模块217的请求从节目流中提取和读取音频流(音频存取单元),以提供到音频解码器控制模块217。而且字幕读取功能部分235还分析在缓存器215A中所存储的节目流的语法,根据字幕解码器控制模块218的请求从缓存器215A中所存储的节目流中提取和读取字幕流(字幕存取单元),以提供到字幕解码器控制模块218。
[读取视频流]
随后参照图36的流程图,描述由视频读取功能部分233(图3)所执行的从缓存器215A中读取视频流的处理的详情。
首先,在步骤S211中,视频读取功能部分233进行搜索以发现在缓存器215A中所存储的节目流中的private_stream_2 PES_packet()。也就是,如上面参照图20所述的,private_stream_2 PES_packet()的stream_id,10111111B(=0xBF),而且视频读取功能部分233进行搜索以发现其stream_id被设置到1011111B的PES_packet()。
这里,现在假设,例如上面所述,被复用到剪切片段流文件“00001.PS”中所存储的节目流中的基本流是回放目标基本流。在从盘101中读取节目流以存储在缓存器215A中的时候,在图30的步骤S122中,从剪切片段流文件“00001.PS”的EP_map()(图27)中所描述的解码可开始点信息中将扇区305确定为回放开始位置,进而,在图30的步骤S128中,指定作为回放开始位置的扇区305,从而请求操作系统201读取在剪切片段流文件“00001.PS”中所存储的节目流。
此外,对于视频流来说,在EP_map()中所描述的解码可开始点信息表示在实际解码可开始点之前紧邻的private_stream_2 PES_packet()的位置。
因此,已经读取在剪切片段流文件“00001.PS”中所存储的节目流之后紧邻的并且存储在缓存器215A中的,是存储在缓存器215A中其位置由数据开始指针和视频读取指针所指示的的private_stream_2 PES_packet()。
当在步骤S211中已经发现了private_stream_2 PES_packet()时,过程前进到步骤S212,其中视频读取功能部分233提取作为private_stream_2 PES_packet()的RES_packet_data_byte的private_stream2_PES_payload()(图23)中所描述的video_stream_id,以确定该video_stream_id是否与图30的S127中在stream_id寄存器242(图3)中所存储的用于回放的视频流的stream_id一致。
在已经在步骤S212中确定在private_stream2_PES_payload()中所描述的video_stream_id与stream_id寄存器242中所存储的回放目标视频流的stream_id不一致的情况下,即没有将在之前紧邻的步骤S211中所发现的private_stream_2PES_packet()排列在回放目标视频流的解码可开始点处的情况下,过程前进到步骤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,其中视频读取功能部分233从缓存器215A中读取private_stream_2 PES_packet()的private_stream2_PES_payload()中所描述的au_information,以存储在au_information()寄存器243(图3)中,之后,过程前进到步骤S214。
在步骤S214中,视频读取功能部分233以与private_stream_2 PES_packet()(其video_stream_id(图23)与在stream_id寄存器242(图3)中所存储的stream_id一致的private_stream_2 PES_packet())相当的大小,来更新在视频读取指针存储部分231中所存储的、在之前紧邻的步骤S211中所发现的视频读取指针。
也就是,在剪切片段流文件中,private_stream_2 PES_packet()之后紧邻着跟随有视频流(PES_stream()),其stream_id与其video_stream_id一致,因此,在步骤S214中,将视频读取指针进行更新从而指示在用于视频流的实际解码可开始点位置处。
之后,过程从步骤S214前进到步骤S215,其中视频读取功能部分233确定视频解码器控制模块216是否请求数据,如果没有,过程前进到步骤S215,以重复类似的处理。
此外,在步骤S215中已经确定了视频解码器控制模块216请求数据的情况下,过程前进到步骤S216,其中视频读取功能部分233以与au_information()寄存器243中所存储的au_information()的AU_length中所描述的字节数量相等的大小(即一个视频读取单元)来读取数据,以提供到视频解码器控制模块216,同时分析来自缓存器215A的、其位置由视频读取指针所指示的节目流的语法,而且以与从缓存器215A所读取的一个视频存取单元相等的大小来更新视频读取指针。
也就是,如上面参照图24所述,在au_information()中,描述了表示在包括其自己的private_stream_2 PES_packet()和随后的private_stream_2 PES_packet()之间所包括的视频存取单元(画面)的数量的number_of_access_unit。
而且,如上面参照图24所述,在au_information()中,描述了作为number_of_access_unit所表示的数量的视频存取单元的每一个的信息的pic_struct_copy、au_ref_flag和AU_length。
如上面参照图24所述,在au_information()中所描述的、number_of_access_unit所表示的数量的AU_length的每一个都表示在包括其自己的private_stream_2 PES_packet()和随后的private_stream_2 PES_packet()之间所包括的、由number_of_access_unit所表示的数量的视频存取单元的每一个的大小,因此,通过使用AU_length,视频读取功能部分233可以对存取单元进行剪切而不必分析视频流的语法。
也就是,在对MPEG2-Video和MPEG4-AVC存取单元进行剪切的情况下,已经需要在得知了视频流的语法之后来分析该视频流的语法。但是,在盘101上所记录的剪切片段流文件中所存储的节目流,紧邻在基于视频存取单元的视频流中一个或多个实际解码可开始点的每一个之前,包括其中描述了表示视频存取单元的大小的AU_length的private_stream_2 PES_packet()。因此,视频读取功能部分233可以根据在private_stream_2 PES_packet()中所描述的AU_length,从缓存器215A中读取视频存取单元(基于视频存取单元的视频流),而不必分析该视频流的语法,以提供到视频解码器控制模块216。
注意,在步骤S216中将视频存取单元提供给视频解码器控制模块216时,视频读取功能部分233还将au_information()中所描述的pic_struct_copy、au_ref_flag和AU_length作为关于视频存取单元的信息,以及在视频存取单元的单元中所添加的时间戳(PTS、DTS)提供到视频解码器控制模块216。
在已经在步骤S216中从缓存器215A中读取了一个视频存取单元以提供到视频解码器控制模块216之后,过程前进到步骤S217,其中视频读取功能部分233确定是否已经处理了在au_information()寄存器243中所存储的(图24)的number_of_access_unit所表示的数量的存取单元。
在已经在步骤S217中确定了还没有处理number_of_access_unit所表示的数量的存取单元的情况下,即在还没有从缓存器215A中读取由number_of_access_unit所表示的数量的存取单元,以提供到视频解码器控制模块216的情况下,过程返回到步骤S215,其中重复类似的处理。
此外,在步骤S217中已经确定了已经处理了由number_of_access_unit所表示的数量的存取单元的情况下,即已经从缓存器215A中读取了由number_of_access_unit所表示的数量的存取单元,以提供到视频解码器控制模块216的情况下,过程返回到步骤S211,其中搜索随后的private_stream_2PES_packet(),并且之后重复类似的过程。
[读取音频流]
参照图37的流程图,来描述由音频读取功能部分234(图3)所执行的从缓存器215A中读取音频流的处理的详情。
首先,在步骤S230中,音频读取功能部分234确定在步骤127中在stream_id寄存器252(图3)中所存储的回放目标音频流的stream_id是否表示private_stream_1 PES_packet()。
在已经在步骤S230中确定在stream_id寄存器252中所存储的stream_id不表示private_stream_1 PES_packet()的情况下,即如上面参照图20所述,在stream_id寄存器中所存储的stream_id是分配给根据MPEG标准被编码的音频流的110xxxxxxB的情况下,过程前进到步骤S231,其中音频读取功能部分234搜索在缓存器215A中所存储的节目流,以寻找表示由MPEG Audio所定义的音频帧开始的同步代码。由于同步代码位置与音频帧开始一致,因此音频读取功能部分234更新音频读取指针从而指示音频帧开始位置,其后过程从步骤S231前进到步骤S232。在步骤S232中,音频读取功能部分234在缓存器215A中所存储的节目流中进行搜索,以发现与stream_id寄存器252中所存储的stream_id一致的PES_packet(),之后过程前进到步骤S233。
在步骤S233中,音频读取功能部分234更新音频读取指针以指示在之前紧邻的步骤S232中所发现的PES_packet()的PES_packet_data_byte(图16到18)的开始,之后过程前进到步骤S237。
在步骤S237中,音频读取功能部分234确定音频解码器控制模块217是否请求数据,如果没有,则过程返回到步骤S237,以重复类似的处理。
此外,在已经在步骤237中确定了音频解码器控制模块217请求数据的情况下,过程前进到步骤S238,其中音频读取功能部分234从缓存器215A中读取具有已知固定长度的一个音频存取单元,以与添加到音频存取单元的时间戳(PTS、DTS)一同提供到音频解码器控制模块217,同时分析其位置由音频读取指针指示的、来自缓存器215A的节目流的语法。
而且,音频读取功能部分234以与从缓存器215A中所读取的一个音频存取单元相等的大小来更新音频读取指针,之后过程前进到步骤S237,其后重复类似的处理。
同时,在已经在步骤S230中确定了在stream_id寄存器252中所存储的stream_id表示private_stream_1 PES_packet()其情况中,即如参照图20在上面所述的,在stream_id寄存器252中所存储的stream_id是用于表示private_stream_1PES_packet()的10111101B(=0xBD)的情况下,过程前进到步骤S234,其中音频读取功能部分234进行搜索以发现在缓存器215A中所存储的节目流中的private_stream_1 PES_packet()。也就是,音频读取功能部分234进行搜索,以发现其stream_id被设置到10111101B的PES_packet()。
当已经在步骤S234中发现了private_stream_1 PES_packet()时,过程前进到步骤S235,其中音频读取功能部分234提取作为private_stream_1 PES_packet()的PES_packet_data_byte的private_stream1_PES_payload()(图21)中所描述的private_stream_id,以确定该private_stream_id是否与在图30的步骤S127中的private_stream_id寄存器253(图3)中所存储的回放目标音频流一致。
在已经在步骤S235中确定了该private_stream_id与private_stream_id寄存器253中所存储的private_stream_id不一致的情况下,即在前面紧邻的步骤S234中所发现的private_stream_1 PES_packet()不是回放目标音频流的情况下,过程返回到步骤S234,其中音频读取功能部分234在缓存器215A中所存储的节目流中搜索另一个private_stream_1 PES_packet(),之后重复类似的处理。
同时,在已经在步骤S235中确定了private_stream_id与在该private_stream_id寄存器253中所存储的private_stream_id一致的情况下,即在之前紧邻的步骤S234中所发现的private_stream_1 PES_packet()是回放目标音频流的情况下,过程前进到步骤S236,其中音频读取功能部分234从缓存器215A中读取该private_stream_1 PES_packet()的private_stream1_PES_payload()(图21)中所描述的AU_locator,并且将AU_loctor之后紧邻的位置与由AU_locator所表示大值相加以获得音频存取单元的开始位置。
也就是,AU_loctor使用AU_loctor之后紧邻的位置作为基准,表示在private_stream1_PES_payload()的private_load()中所存储的音频存取单元(或者字幕存储单元)的开始位置,因此,通过将由AU_loctor所表示的值与AU_loctor之后紧邻的位置相加,可以获得音频存取单元的(绝对)开始位置。
而且,在步骤S236中,音频读取功能部分234对音频读取指针存储部分251中所存储的音频读取指针进行更新,以指示因此获得的音频存取单元的开始位置,之后过程前进到步骤S237。
在步骤S237中,音频读取功能部分234确定音频解码器控制模块217是否请求数据,如果没有,则过程返回到步骤S237以重复类似的处理。
此外,在已经在步骤S237中确定了音频解码器控制模块217请求数据的情况下,过程前进到步骤S238,其中音频读取功能部分234从缓存器215A中读取具有已知固定长度的一个音频存取单元,以与被添加到该音频存取单元的时间戳一同提供到音频解码器控制模块217,同时分析来自缓存器215A的、其位置由音频读取指针所指示的节目流的语法。
而且,音频读取功能部分234以与从缓存器215A中所读取的一个音频存取单元相等的大小来更新音频读取指针,之后重复类似的处理。
[读取字幕流]
下面参照图38的流程图,解释由字幕读取功能部分235(图3)所执行的从缓存器215A中读取字幕流的处理的详情。
首先,在步骤S251中,字幕读取功能部分235确定在图30的步骤S127中的字幕读取功能标号存储部分261中所存储的字幕读取功能标号。在已经在步骤S251中确定了字幕读取功能标号被设置到0的情况下,即在将用于回放的基本流复用到其中的剪切片段流文件中不包括字幕流,因此已经在图30的步骤S127中将0设置在字幕读取功能标号存储部分261中的情况下,字幕读取功能部分235不特别执行处理。
同时,在已经在步骤S251中确定了字幕读取功能标号被设置到1的情况下,即在将回放目标基本流复用到其中的剪切片段流文件中包括字幕流,因此已经在图30的步骤S127中将1设置在字幕读取功能标号存储部分261中的情况下,过程前进到步骤S252,其中字幕读取功能部分235搜索在缓存器215A中所存储的节目流,以寻找与stream_id寄存器264(图3)中所存储的回放目标字幕流的stream_id一致的PES_packet()。
这里,虽然上面参照图30的步骤S127描述了将回放目标字幕流的stream_id存储在stream_id寄存器263(图3)中,但是如上面参照图20所述,字幕流的stream_id还可以是表示private_stream_1 PES_packet()的10111101B(=0xBD)。
因此,在步骤S252中,要搜索在缓存器215A中所存储的节目流中的private_stream_1 PES_packet()。
当已经在步骤S252中执行了对private_stream_1 PES_packet()的搜索而且已经发现了private_stream_1 PES_packet()时,过程前进到步骤S253,其中字幕读取功能部分235提取作为private_stream_1 PES_packet()的PES_packet_data_byte的在private_stream1_PES_payload()中所描述的private_stream_id(图21),以确定在图30的该private_stream_id是否与在图30的步骤S127中的private_stream_id寄存器264(图3)中所存储的回放目标字幕流的private_stream_id一致。
在已经在步骤S253中确定了在private_stream1_PES_payload()中所描述的private_stream_id与在private_stream_id寄存器264中所存储的private_stream_id不一致的情况下,即在之前紧邻的步骤S252中所发现的private_stream_1PES_packet()不是用于回放的字幕流的情况下,过程返回到步骤S252,其中字幕读取功能部分235在缓存器215A中所存储的节目流中搜索private_stream_1PES_packet(),之后重复类似的处理。
同时,在已经在步骤S253中确定了在private_stream1_PES_payload()中所描述的private_stream_id与private_stream_id寄存器264中所存储的private_stream_id一致的情况下,即在之前紧邻的步骤S252中所发现的private_stream_1 PES_packet()是回放目标字幕流的情况下,过程前进到步骤S254,其中字幕读取功能部分235从缓存器215A中读取在该private_stream_1PES_packet()的private_stream1_PES_payload()(图21)中所描述的AU_loctor,而且将在该AU_loctor之后紧邻的位置与由AU_loctor所表示的值相加在一起,以获得字幕存取单元的开始位置。
也就是,AU_loctor使用AU_loctor之后紧邻的位置作为基准,来表示在private_stream1_PES_payload()的private_payload()中所存储的字幕存取单元(或者音频存取单元),通过将AU_loctor所表示的值与AU_loctor之后紧邻的位置相加,来获得字幕存取单元的(绝对)开始位置。
而且,在步骤S254中,字幕读取功能部分235更新在字幕读取指针存储部分262中所存储的字幕读取指针,以指示因此获得的字幕读取单元的开始位置,之后过程前进到步骤S255。
在步骤S255,字幕读取功能部分235确定字幕解码器控制模块218是否请求数据,如果没有,则过程前进到步骤S255以重复类似处理。
而且,在已经在步骤S255中确定了字幕解码器控制模块218没有请求数据的情况下,过程前进到步骤S256,其中字幕读取功能部分235从缓存器215A中读取与字幕存取单元的开始处所描述的大小相等的一个字幕存取单元,以与被添加到该字幕存取单元的时间戳一同提供到字幕解码器控制模块218,同时分析来自字幕读取指针所指示的缓存器215A中的位置的节目流的语法。也就是,如上面参照图2所述,在字幕存取单元的开始处描述字幕存取单元的大小,而且字幕读取功能部分235读取与来自字幕读取指针所指示的缓存器215A位置的大小相等的数据,而且将作为所读取数据的字幕存取单元与被添加到字幕存取单元的时间戳一起,提供到字幕解码器控制模块218。
而且,字幕读取功能部分235以与从缓存器215A中所读取的一个字幕存取单元相等的大小来更新字幕读取指针,之后过程返回到步骤S255,其后重复类似的处理。
[重新同步处理]
随后,将描述图2的解码控制模块214所进行的视频数据和音频数据之间的同步控制。
如上面参照图30的步骤S130所述,解码控制模块214指令视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218来随着定时移动来开始解码,如果必要的话,确保它们的同步。但是,例如,根据之后在视频解码器116和音频解码器117中解码处理进行的程度,在某些情况下,视频数据的输出和作为要与视频数据同步输出的输出数据的音频数据的输出可能失步。
因此,解码控制模块214之前重新同步处理,其中修正视频数据的输出和作为要与视频数据同步输出的输出数据的音频数据的输出之间发生的失步,因此彼此同步地输出视频数据和音频数据。
参照图39的流程图,将描述重新同步处理。
在重新同步处理中,首先,在步骤S271中,解码控制模块214确定来自视频解码器控制模块216的视频存取单元的时间戳是否与来自音频解码器控制模块217的音频存取单元的时间戳失步较大。
也就是,如上面参照图30的步骤S129所述,每次从缓存器控制模块215中获取视频存取单元时,视频解码器控制模块216将视频存取单元的时间戳提供给解码控制模块214。类似地,每次从缓存器控制模块215中获取音频存取单元时,音频解码器控制模块217也将音频存取单元的时间戳提供给解码控制模块214。
在步骤S271中,解码控制模块214将来自视频解码器控制模块216和音频解码器控制模块217的在相同定时处(在可以被认为是相同定时的特定时间间隔内)所提供的时间戳进行比较,以确定这些时间戳之间的失步是否较大。
在已经在步骤S271中确定了来自视频解码器控制模块216的视频存取单元的时间戳与来自音频解码器控制模块217的音频存取单元的时间戳失步较大的情况下,即在视频存取单元的时间戳和音频存取单元的时间戳之间的失步等于(例如)两个视频帧(大约66毫秒)(其在它们可以被认为是彼此同步的规定范围内)的情况下,过程返回到步骤S271,其中解码控制模块214继续确定(监测)时间戳之间的失步。
同时,在已经在步骤S271中确定了来自视频解码器控制模块216的视频存取单元的时间戳与来自音频解码器控制模块217的音频存取单元的时间戳失步较大的情况下,即视频存取单元的时间戳和音频存取单元的时间戳之间的失步超过了其中认为它们是彼此同步的规定范围的情况下,过程前进到步骤S272,其中解码控制模块214将来自视频解码器控制模块216的视频存取单元的时间戳与来自音频解码器控制模块217的音频存取单元的时间戳进行比较,以确定视频数据的输出(解码)和音频数据输出之中哪一个在后面。
在已经在步骤S272中确定了视频数据的数据在音频数据的输出之后的情况下,过程前进到步骤S273,其中解码器控制模块214指令视频解码器控制模块216不解码和输出(显示)视频存取单元,即跳过其对视频存取单元的处理,以将其视频存取单元处理前移一个视频存取单元,之后过程前进到步骤S274。
在步骤S274,视频解码器控制模块216从解码控制模块214中接收跳过指令,而且根据跳过指令检查从缓存器控制模块215与视频存取单元一同提供到其的au_ref_flag(图24)。
也就是,在private_stream_2 PES_packet()的private_stream2_PES_payload()中所排列的au_information()(图24)中,包括作为存取单元信息的au_ref_flag,而且如上面参照图30的步骤S129和图36的步骤S216所述,缓存器控制模块215将视频存取单元的au_ref_flag与视频存取单元一同提供给视频解码器控制模块216。
在步骤S274中,检查因此与存取单元一同提供的存取单元的au_ref_flag。
而且过程从步骤S274前进到步骤S275,其中视频解码器控制模块216根据对从缓存器控制模块215提供到其的视频存取单元的au_ref_flag的检查结果,来确定该视频存取单元是否为在对其他画面解码时不参考的非参考画面。
这里,如上面参照图24所述,视频存取单元的au_ref_flag指示存取单元是否为参考画面,而且如果其是参考画面,则设置1,如果其不是参考画面,则设置0。
在已经在步骤S275中确定了从缓存器控制模块215提供来的视频存取单元不是非参考画面(作为非参考画面的视频存取单元)的情况下,即在从缓存器控制模块215提供来的视频存取单元是参考画面的情况下,过程前进到步骤S276,其中视频解码器控制模块216使得视频解码器116正常处理视频存取单元,之后过程返回到步骤S274,其中视频解码器控制模块216等待直到从缓存器控制模块215将随后视频存取单元提供到其为止。
此外,在已经在步骤S275中确定了从缓存器控制模块215提供来的视频存取单元是非参考画面的情况下,过程前进到步骤S277,其中视频解码器控制模块216允许视频解码器116跳过对该视频存取单元的处理,之后过程前进到步骤S271,其中视频解码器控制模块216等待直到随后的视频存取单元从缓存器控制模块215提供到其为止。
以这种方式,通过跳过对视频存取单元的处理,将视频存取单元处理向前移动大约一个视频存取单元(减少处理时间)。结果,加快已经在音频数据的输出之后的视频数据的输出。
同时,在已经在步骤S272中确定了视频数据的输出不在音频数据的输出之后的情况下,即在音频数据的输出在视频数据的输出之后的情况下,过程前进到步骤S278,其中解码器控制模块214经输出重复指令输出,该指令用于重复地将与当前正在被解码的视频存取单元对应的视频数据输出到视频解码器控制模块216,以防止视频存取单元处理提前,之后过程前进到步骤S279。
在步骤S279中,视频解码器控制模块216从解码控制模块214接收重复指令,而且,根据指令,将与当前正在由视频解码器116所解码的视频存取单元对应的视频数据重复地输出到图形处理模块219,之后过程返回到步骤S271,其中解码器控制模块216等待直到将随后的视频存取单元从缓存器控制模块215提供到其为止。
如上所述,解码器控制模块214确定视频数据的输出是否在音频数据的输出之后,如果视频数据的输出在音频数据的输出之后,则指令视频解码器控制模块216来跳过对一个存取单元的处理。而且视频解码器控制模块216根据已经被指令跳过的该存取单元的au_ref_flag,来确定存取单元是否为参考画面或者非参考画面,使得视频解码器116跳过对已经被指令跳过的存取单元的处理。因此,可以容易地同步视频数据的输出和音频数据的输出。
也就是,在其处理要被跳过的存取单元是参考画面的情况下,与该存取单元对应的视频数据需要在对要在对之后要被解码的另一个存取单元的进行解码期间为了参考进行解码。因此,在用于将视频数据的输出和音频数据的输出进行同步的同步控制中,一旦已经跳过了对作为参考画面的存取单元的处理,则不能解码参考该参考画面的另一个存取单元。因此,同步控制在显示视频数据时产生噪声。
因此,最好跳过不是参考画面的存取单元,即作为非参考画面的存取单元。
同时,为了在传统基本流中搜索作为非参考画面的存取单元,必须分析基本流的语法。例如,通过符合MPEG4-AVC的解码方案所获得的基本流具有非常复杂的语法,因此产生用于语法分析的巨大成本。
相反地,除了其中将视频存取单元排列在PES_packet_data_byte中的PES_packet()之外,还将其中排列了作为PES_packet_data_byte的扩展的private_stream1_PES_payload()(图23)的private_stream_2 PES_packet(),复用到盘101上所记录的剪切片段流文件中所存储的节目流中。而且在private_stream2_PES_payload()的au_information()(图24)中,描述了au_ref_flag,其指示对于其中的每个视频存取单元来说该视频存取单元是否是参考画面或者非参考画面。而且与对应的视频存取单元一起,将au_ref_flag从缓存器控制模块215提供到视频解码器控制模块216。因此,视频解码器控制模块216检查与视频存取单元一同提供到其的视频存取单元的au_ref_flag,因此其可以识别视频存取单元是参考画面还是非参考画面。
[标记处理]
下面参照图40的流程图,来描述根据PlayListMark()中所描述的Mark()而执行的标记处理。
解码控制模块214持续监视由内置时间测量部分214A所测量的当前时间,而且在步骤S301中确定该当前时间是否与PlayListMark()(图7)中所描述的任何一个Mark()中的mark_time_stamp一致。
也就是,如上面参照图10的步骤S124所描述的,当要回放图25所示的第一PlayList#0的第一PlayItem#0时,播放器控制模块212识别在图28的上面部分中所示出的PlayListMark()中所包括的七个Mark()中作为第一到第四个的四个Mark()是否属于第一PlayList#0的第一PlayItem#0,并且将封包作为这四个Mark()的mark_time_stamp的{180,090}、{5,580,090}、{10,980,090}和{16,380,090},与关于这些mark_time_stamp所表示的时间具有属性“mark processing(标记处理)”的情形的消息一起,发送到解码控制模块214。
在步骤S301,解码控制模块214确定当前时间是否与以诸如上面所述的方式将从播放器控制模块212提供到其的、其属性为“mark processing”的任何时间(mark_time_stamp)一致。
在已经在步骤S301中确定了当前时间与其属性为“mark processing”的任何时间不一致的情况下,过程前进到步骤S301,其中重复类似的处理。
此外,在已经在步骤S301中确定了当前时间与其属性为“mark processing”的任何时间一致的情况下,解码控制模块214将关于当前时间已经到达其属性为“mark processing”的时间、该时间的属性是“mark processing”并且已经与当前时间一致的情形的消息提供给播放器控制模块212,之后过程前进到步骤S302。
在步骤S302中,播放器控制模块212从解码控制模块214接收关于当前时间已经到达其属性为“mark processing”的时间、该时间(mark_time_stamp)的属性是“mark processing”并且已经与当前时间一致的情形的消息,从而识别mark_time_stamp已经与当前时间一致的Mark(),作为用于标记处理的Mark()(之后在任何适当的时候都称为“处理目标标记”)。
也就是,播放器控制模块212已经识别了当前正在被播放的PlayList()的PlayItem(),因此通过参照“PLAYLIST.DAT”(图5)中的PlayListMark()(图7)这些PlayList()和PlayItem()、以及来自解码控制模块214的其属性为“markprocessing”和其已经与当前时间一致的时间(mark_time_stamp)(以后称为“marktime(标志时间)”)来识别处理目标标记。
具体地说,现在假设(例如)图25中所示的第一PlayList#0的第一PlayItem#0正在回放。然后,根据这个事实,播放器控制模块212识别标记时间是作为在图28的上面部分中所示的PlayListMark()中所包括的七个Mark()中的第一到第四个的四个Mark()的mark_time_stamp的任何一个。
而且如果假设从解码控制模块214提供到播放器控制模块212的标记时间例如是16,380,090,则播放器控制模块212从作为在图28的上面部分中所示的PlayListMark()中所包括的七个Mark()中的第一到第四个的四个Mark()中,识别其mark_time_stamp与作为标记时间的16,380,090一致的第四Mark()作为处理目标标记。
当播放器控制模块212已经因此识别了处理目标标记时,过程从步骤S302前进到步骤S303,其中播放器控制模块212确定在处理目标标记中是否描述了用于指定基本流的entry_ES_stream_id和entry_ES_private_stream_id(图7)。
在已经在步骤S303中确定用于指定基本流的entry_ES_stream_id和entry_ES_private_stream_id(图7)没有描述在处理目标标记中的情况下,即在将entry_ES_stream_id和entry_ES_private_stream_id都设置到0x00的情况下,过程跳过步骤S304以前进到步骤S305,其中执行与处理目标标记对应的处理。
此外,在已经在步骤S303中确定了用于指定基本流的entry_ES_stream_id和entry_ES_private_stream_id(图7)描述在处理目标标记中的情况下,过程前进到步骤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参照处理目标标记的mark_type(图7),从而确定处理目标标记。
在已经在步骤S305中确定了处理目标标记是章标记或者索引标记的情况下,即在处理目标标记的mark_type是‘Chapter(章)’或者‘Index(索引)’的情况下,过程前进到步骤S306,其中播放器控制模块212指令图形处理模块219来用作为处理目标标记的章或者索引标记所表示的章或者索引号码来更新对章或者索引号码的显示,之后过程前进到步骤S301。
此外,在已经在步骤S305中确定了处理目标标记是事件标记的情况下,即在处理目标标记的mark_type是‘Event(事件)’的情况下,过程前进到步骤S307,其中播放器控制模块212将表示时间发生的事件消息和处理目标标记的mark_data发送(提供)到脚本控制模块211,之后过程前进到步骤S308。
在步骤S308中,脚本控制模块211从播放器控制模块212接收事件消息和mark_data,并且使用时间消息作为中断请求并且使用mark_data作为自变量,执行事先在“SCRIPT.DAT”文件中所描述的系列处理,之后过程前进到步骤S301。
也就是,在脚本控制模块211中,执行与mark_data对应的处理。
具体地说,例如在图28的下面部分中所示的PlayList#1的PlayListMark()中,第二Mark()(Mark#1)和第三Mark()(Mark#2)都将它们的mark_type设置到‘Event’,但是将它们的mark_data分别设置到不同的值,即1(Mark#1)和2(Mark#2)。
在已经接收到与第二Mark()对应的事件消息的情况中和在已经接收到与第三Mark()对应的事件消息的情况中,脚本控制模块211响应于事件消息使用相同的事件处理程序(handler)(中断处理例程)来执行处理。通过检查在处理程序内分别提供有事件消息的mark_data,脚本控制模块211对用于每个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,以在与通过将18从mark_data中减去而获得的值(1到16)对应的亮度下显示第二类型图标。
在另一种情况下,例如,在将由用户所控制的控制器连接到输入接口115(图1)进而控制器将振动电机合并到其中(该电机带有偏离中心的重量附连到其DC(直流)电机的轴(shaft)从而导致对DC电机的操作的振动)的情况下,当mark_data采用范围从35到42的任何值时,只要通过从mark_data减去34获得与值(1到8)对应的操作时间,就能够使得振动电机进行操作。
mark_data是数值,并且可以通过脚本控制模块211所执行的脚本程序来描述其使用方法和算法。因此,可以使用与所规定的值不一致的mark_data,但是也由盘101的制造商或者提供在盘101上所记录的数据的内容提供商等来独立地设置规则。
如上所述,在标记处理中,当当前事件与其属性为“mark processing”的时间一致时,从作为其属性为“mark processing”的时间的标记时间中识别处理目标标记。而且,在处理目标标记中没有描述用于指定基本流的entry_ES_stream_id和entry_ES_private_stream_id的情况下,执行与处理目标标记的mark_data对应的处理。此外,即使在处理目标标记中描述了用于指定基本流的entry_ES_stream_id和entry_ES_private_stream_id的情况下,如果由这些entry_ES_stream_id和entry_ES_private_stream_id所指定的基本流正在回放,则执行与处理目的标记的mark_type对应的处理。
因此,例如假设在图25中所示的PlayList#1现在正在被回放,执行下面描述的标记处理。
也就是,在PlayList#1的PlayListMark()中,如图28中的下面部分所示,分别描述了其mark_time_stamp被设置到90,000、27,090,000和27,540,000的第一Mark()(Mark#0)、第二Mark()(Mark#1)和第三Mark()(Mark#2)。
而且,在图28的下面部分的PlayListMark()中,分别将0xE0和0xE1描述在第二Mark()和第三Mark()的entry_ES_stream_id中,因此,将由0xE0和0xE1指定其stream_id的基本流与第二Mark()和第三Mark()关联。
这里,如上面参照图25所述,在第二PlayList#1中仅仅描述一个PlayItem()(PlayItem#0),并且根据PlayItem#0,将要回放剪切片段流文件“00003.PS”。而且,如上面参照与剪切片段流文件“00003.PS”对应的图26的剪切片段信息文件“00003.CLP”所述的,将三个基本流,即由被设置到0xE0的stream_id所指定的视频流stream#0、由被设置到0xE1的stream_id所指定的视频流stream#1、以及由被设置到0xBD的stream_id和被设置到0x00的private_stream_id所指定的音频流stream#2,复用到剪切片段流文件“00003.PS”中。
因此,用于图28的下面部分的PlayListMark()的第二Mark(),将其stream_id设置到0xE0的、被复用到剪切片段流文件“00003.PS”的视频流stream#0进行关联,而用第三Mark(),将其stream_id被设置到0xE1的、被复用到剪切片段文件“00003.PS”中的视频流stream#1进行关联。
在要开始图25的第二PlayList#1的PlayItem#0的回放情况下,播放器控制模块212以上面参照图30的步骤S124所描述的方式,识别在图28的下面部分中所示出的PlayListMark()中所包括的三个Mark()属于PlayList#1的PlayItem#0,并且将作为三个Mark()的mark_time_stamp的时间{90,000}、{27,090,000}和{27,540,000},与关于由这三个mark_time_stamp所表示的时间具有属性“markprocessing”的情形的消息一同发送到解码控制模块214。
在标记处理中,在对PlayList#1的PlayItem#0进行回放期间,解码控制模块214持续检查由时间测量部分214A所测量的当前时间是否与都具有属性“mark processing”的时间{90,000}、{27,090,000}和{27,540,000}中的任何一个一致,而且在当前时间与其属性为“mark processing”的时间一致时,解码控制模块214将作为其属性为“mark processing”的时间、并且与当前时间一致的标记时间,以及关于当前时间已经到达其属性为“mark processing”的时间的情形的消息,提供给播放器控制模块212。
也就是,现在假设(例如)当前时间与都具有属性“mark processing”的时间{90,000}、{27,090,000}和{27,540,000}中的时间27,090,000一致。则解码控制模块214将作为其属性为“mark processing”而且已经与当前时间一致的时间的标记时间27,090,000,以及关于当前时间已经到达属性为“makr processing”的时间的情形的消息,提供到播放器控制模块212。
播放器控制模块212已经识别当前正在回放PlayList#1的PlayItem#0,因此,通过将图28的下面部分中所示的PlayListMark()中所描述的Mark()中、作为属于该PlayList#1的PlayItem#0的三个Mark()的mark_time_stamp的时间{90,000}、{27,090,000}和{27,540,000}的每一个,与作为来自解码控制模块214的标记时间的时间27,090,000进行比较,播放器控制模块212将其mark_time_stamp与标记时间270,090,000一致的Mark(),即在图28的下面部分中的PlayListMark()中所描述的第二Mark()(Mark#1),识别为处理目标标记(步骤S302)。
在图28的下面部分中的PlayListMark()中所描述的、作为处理目标标记的第二Mark()中,指定0xE0作为entry_ES_stream_id。根据上面已经描述的,被设置到0xE0的该entry_ES_stream_id表示其stream_id被设置到0xE0并且被复用到剪切片段流文件“00003.PS”中的视频流stream#0(图26)。因此,播放器控制模块212确定在正在回放的基本流中是否包括该视频流stream#0(步骤S303,S304)。
而且,在正在被回放的基本流中不包括视频流stream#0的情况下,忽略处理目标标记(步骤S304)。
同时,在正在被回放的基本流中包括视频流stream#0的情况下,认为处理目标标记是有效的,因此执行根据处理目标标记的处理(步骤S305到S308)。
也就是,在该情况中,在图28的下面部分的PlayListMark()中所描述的、作为处理目标标记的第二Mark()将其mark_type设置到‘Event’,因此是时间标记。因此,播放器控制模块212将表示时间发生的时间消息,以及处理目标标记的mark_data,发送到脚本控制模块211(步骤S305、S307)。并且,脚本控制模块211使用来自播放器控制模块212的时间消息作为中断请求,并且使用与该时间消息一同提供的mark_data作为自变量,来执行事先在“SCRIPT.DAT”文件中所描述的一系列处理(步骤S308)。
与上面一样,根据标记处理,确定根据包括具有零个或者多个Mark()(每个都包括表示PlayList()的时间轴上的单个回放时间、表示Mark()的类型的mark_type)的PlayListMark()(图7)的PlayList()(图5)作为正在被回放的剪切片段流文件的回放时间的当前时间是否与mark_time_stamp一致,而且在当前时间与mark_time_stamp一致的情况下,将具有与作为已经与其一致的当前时间的标记时间相等的mark_time_stamp的Mark()识别作为处理目标标记。而且,在处理目标标记的mark_type表示用于使得时间发生的类型的情况下,即处理目标标记是事件标记的情况下,发送处理目标标记的mark_data和事件消息,从而执行与mark_data对应的处理。因此,根据剪切片段流文件的回放时间可以执行与mark_data对应的处理。
[输出属性控制处理]
随后将参照图41的流程图,来描述在例如图30的步骤S126中所执行的输出属性控制处理的详情。
如上面参照图30的步骤S126所描述的,播放器控制模块212首先检查表示DynamicInfo()数量的number_of_DynamicInfo(图10),描述其每一个对于一个或多个回放目标基本流(即在图30的步骤S125中确定要进行回放的一个或多个基本流)来说的输出属性。
而且,在对于所有一个或多个回放目标基本流将number_of_DynamicInfo设置到0的情况下,回放控制模块212不特别执行处理。
同时,在对于回放目标基本流将number_of_DynamicInfo不设置到0的情况下,播放器控制模块212根据图41的流程图执行输出属性控制处理。
因此,其将记录在盘101上的三个剪切片段信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”如例如图26所示进行配置的情况下,当要回放与剪切片段信息文件“00001.CLP”对应的剪切片段流文件“00001.PS”(用于回放的第一PlayList#0的第一PlayItem#0)时,不执行输出属性控制处理,这是由于在剪切片段信息文件“00001.CLP”(图26)中,对于被复用到剪切片段流文件“00001.PS”中的所有四个基本流stream#0到stream#3来说将number_of_DynamicInfo设置到0。
类似地,当要回放与剪切片段信息文件“00002.CLP”对应的剪切片段流文件“00002.PS”(用于回放的第一PlayList#0的第一PlayItem#1)时,也不执行输出属性控制处理,这是由于在剪切片段信息文件“00002.CLP”(图26)中,对于被复用到剪切片段流文件“00002.PS”中的所有四个基本流stream#0到stream#3来说将number_of_DynamicInfo设置到0。
同时,当要回放与剪切片段信息文件“00003.CLP”对应的剪切片段流文件“00003.PS”(用于回放的第一PlayList#1的第一PlayItem#0)时,执行输出属性控制处理,这是由于在剪切片段信息文件“00003.CLP”(图26)中,在被复用到剪切片段流文件“00003.PS”中的三个基本流stream#0到stream#2中,对于作为第一基本流的视频流stream#0和作为第三基本流的音频流stream#2来说,将number_of_DynamicInfo设置到2和3而不是0。
也就是,在输出属性控制处理中,首先,在步骤S320中,播放器控制模块212将在与回放目标剪切片段流文件对应的剪切片段信息文件Clip()(图10)中所描述的pts_change_point,与关于它们是其属性为“DynamicInfo()processing”的时间的情形的消息,发送到解码控制模块214,而且解码控制模块214接收作为其属性为“DynamicInfo()processing”的时间的这些pts_change_point,之后过程前进到步骤S321。
在步骤S321中,解码控制模块214确定由时间测量部分214A所正在测量的当前时间是否与作为其属性为“DynamicInfo()processing”的时间的pts_change_point(的任何一个)一致,而且如果确定它们彼此不一致,则过程返回到步骤S321。
而且,在已经在步骤S321中确定了当前时间与其属性为“DynamicInfo()processing”的时间一致的情况下,解码控制模块214将关于当前时间已经到达其属性为“DynamicInfo()processing”的时间的情形的消息、以及时间的属性为“DynamicInfo()processing”并且已经与当前时间一致(下面在任何适当的时候都称为“DynamicInfo时间”),提供到播放器控制模块212,之后过程前进到步骤S322。
在步骤S322中,播放器控制模块212从解码控制模块214接收关于当前时间已经到达其属性为“DynamicInfo()processing”的情形的消息和DynamicInfo时间,并且将与已经与DynamicInfo时间一致的pts_change_point(图10)成对的DynamicInfo()识别作为要被处理的DynamicInfo()的处理目标DynamicInfo(),之后过程前进到步骤S323。
在步骤S323中,播放器控制模块212将作为在被识别为处理目标DynamicInfo()的DynamicInfo()(图13)中所描述的输出属性,提供给图形处理模块219或者音频输出模块221,之后过程前进到步骤S324。
在步骤S324,图形处理模块219或者音频输出模块221根据在之前紧邻的步骤S323中从播放器控制模块212提供分别到其的输出属性,开始控制视频数据和音频数据的输出,之后过程返回到步骤S321。
作为结果,根据例如被描述为输出属性(显示模式)的宽高比来输出视频数据,或者根据被描述为输出属性(输出模式)的‘Stereo’或者‘Dual’(双语)来输出音频数据。
下面参照图42来进一步解释输出属性控制处理的详情。
也就是,图42示出了在图20的剪切片段信息文件“00003.CLP”中所描述的pts_change_point/DynamicInfo()组(图10)。
这里,如上所述,在图26的剪切片段信息文件“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()。
图42的上面部分示出了在剪切片段流文件“00003.PS”的第一视频流stream#0中所描述的两个ptschange_point/DynamicInfo()组,而在图42的下面部分示出了在剪切片段流文件“00003.PS”的第三音频流stream#2中所描述的pts_change_point/DynamicInfo()组。
注意,在图42的上面部分中,处理在第一视频流stream#0中所描述的两个pts_change_point/DynamicInfo()组之外,对于该视频流stream#0来说,还示出了在图26的在剪切片段信息文件“00003.CLP”中所描述的stream_id(=0xE0)、private_stream_id(=0x00)和number_of_DynamicInfo(=2)。类似地,在图42的下面部分中,除了在第三音频流stream#2中所描述的pts_change_point/DynamicInfo()组之外,对于该视频流stream#2来说,还示出了在图26的在剪切片段信息文件“00003.CLP”中所描述的stream_id(=0xBD)、private_stream_id(=0x00)和number_of_DynamicInfo(=3)。
在图42的上面部分中,在视频流stream#0中所描述的两个pts_change_point/DynamicInfo()组的第一个中,将pts_change_point设置到90,000,而将DynamicInfo()的display_aspect_ratio(图13)设置到‘4∶3’。而且,在第二组中,将pts_change_point设置到54,090,000,而将DynamicInfo()的display_aspect_ratio设置到‘16∶9’。
同时,在图42的下面部分中,在视频流stream#2的三个pts_change_point/DynamicInfo()组中的第一个中,将pts_change_point设置到90,000,而将DynamicInfo()的channel_assignment(图13)设置到‘Dual’。而且,在第二组中,将pts_change_point设置到27,090,000,而将DynamicInfo()的channel_assignment设置到‘Stereo’。而且,在第三组中,将pts_change_point设置到32,490,000,而将DynamicInfo()的channel_assignment设置到‘Dual’。
现在假设,例如在已经在图30的步骤S125中已经确定,剪切片段流文件“00003.PS”中由被设置到0xE0的stream_id所指定的第一视频流stream#0和由被设置到0xBD的stream_id以及被设置到0x00的private_stream_id所指定的第三音频流stream#2,为回放目标流。
在这种情况下,播放器控制模块212检查对于由被设置到0xE0的stream_id所指定的视频流stream#0所描述的、在图42中的上面部分中的两个pts_change_point/DynamicInfo()组中的pts_change_point,以及对于由被设置到0xE0的stream_id和被设置到0x00的private_stream_id所指定的音频流stream#2所描述的、在图42的下面部分中的三个pts_change_point/DynamicInfo()组中的pts_change_point,来识别初始值。
也就是,在对于由被设置到0xE0的stream_id所指定的视频流stream#0所描述的、在图42中的上面部分中的两个pts_change_point/DynamicInfo()组中第一个中,pts_change_point被设置到90,000。而且,在与将视频流stream#0复用到其中的剪切片段流文件“00003.PS”对应的图26的在剪切片段信息文件“00003.CLP”中,作为90,000的该时间与表示剪切片段流文件“00003.PS”的开始时间的presentation_start_time一致。
类似地,在对于由被设置到0xE0的stream_id和被设置到0x00的private_stream_id所指定的音频流stream#2所描述的、在图42中的下面部分中的三个pts_change_point/DynamicInfo()组中第一个中,pts_change_point被设置到90,000。而且,在与将音频流stream#2复用到其中的剪切片段流文件“00003.PS”对应的图26的在剪切片段信息文件“00003.CLP”中,作为90,000的该时间与表示剪切片段流文件“00003.PS”的开始时间的presentation_start_time一致。
播放器控制模块212将与在表示剪切片段流文件“00003.PS”的开始时间的presentation_start_time中所描述的时间90,000一致的pts_change_point识别为初始值。因此,将在图42的上面部分中的两个pts_change_point/DynamicInfo()组中的第一个中的pts_change_point,以及在图42的下面部分中的三个pts_change_point/DynamicInfo()组中的第一个中的pts_change_point识别为初始点。
而且,在开始回放剪切片段流文件“00003.PS”之前,播放器控制模块212根据与被识别作为初始值的pts_change_point成对的DynamicInfo(),来指定对应基本流的每一个的输出属性(在图30的步骤S126)。
也就是,对于由设置为0xE0的stream_id所指定的视频流stream#0来说,在与被设置到作为图42的上面部分中的初始值的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来说,在与被设置到作为图42的下面部分中的初始值的90,000的pts_change_point成对的DynamicInfo()中将channel_assignment设置到‘Dual’。在这种情况下,播放器控制模块212将关于channel_assignment是‘Dual’即音频流stream#2是其声道分配为‘Dual’的音频数据的情形的输出属性信息,提供给音频输出模块221。
这里,在图30的步骤S126中,执行诸如上面所述的、用于作为初始值的pts_change_point的输出属性控制处理。
之后,在对于视频流stream#0来说作为图42的上面部分中的两个pts_change_point的时间90,000和54,090,000,对于音频流stream#2来说作为图42的下面部分中的三个pts_change_point的时间90,000、27,090,000和32,490,000中,播放器控制模块212将作为除了初始值90,000之外的时间{27,090,000}、{32,490,000}和{54,090,000},与关于这些是其属性为“DynamicInfo()processing”的时间的情形的消息一起发送给解码控制模块214(步骤S320)。
解码控制模块214从播放器控制模块212接收其属性为“DynamicInfo()processing”的时间{27,090,000}、{32,490,000}和{54,090,000},而且在开始回放视频流stream#0和音频流stream#2(用于回放剪切片段流文件“00003.PS”的第二PlayList#1的PlayItem#0的回放),开始监测由时间测量部分214A正在测量的当前时间。
而且,在当前时间与其属性为“DynamicInfo()processing”的时间{27,090,000}、{32,490,000}和{54,090,000}的任何一个一致的情况下,解码控制模块214将作为其属性是已经与当前时间一致的“DynamicInfo()processing”的时间的DynamicInfo时间,提供给播放器控制模块212(步骤S321)。
也就是,假设例如当前时间已经到达27,090,000。则解码控制模块214将其属性为“DynamicInfo()processing”的时间中与当前时间一致的时间27,090,000提供给播放器控制模块212作为DynamicInfo时间。
播放器控制模块212从解码控制模块214接收作为DynamicInfo时间的时间27,090,000,然后从对于视频流stream#0在图42的上面部分中的两个pts_change_point和对于音频流stream#2在图42的下面部分中的三个pts_change_point中,检查与作为DynamicInfo时间的时间27,090,000一致的pts_change_point,以将与时间27,090,000一致的pts_change_point成对的DynamicInfo()(即对于音频流stream#2来说图42的下面部分中的第二DynamicInfo())识别为处理目标DynamicInfo()(步骤S322)。
在DynamicInfo()是对于视频流的DynamicInfo()的情况下,播放器控制模块212将在处理目标DynamicInfo()中所描述的输出属性提供给图形处理模块219(步骤S323)。而且,在处理目标DynamicInfo()是对于音频流的DynamicInfo()的情况下,播放器控制模块212将在处理目标DynamicInfo()中所描述的输出属性提供给音频输出模块221(步骤S323)。
如果从播放器控制模块212将示出属性提供到图形处理模块219,则图形处理模块219根据该输出属性来控制视频数据的输出(步骤S324)。
也就是,图形处理模块219根据例如由来自播放器控制模块212的输出属性所表示的、用于视频数据的宽高比指定(display_aspect_ratio(图13))、和连接到图1的视频输出终端120的视频输出设备的宽高比,来转换要被输出到视频输出模块220的视频数据的宽高比。
具体地说,例如,在视频输出设备的宽高比为16∶9的情况下,当为视频数据指定为输出属性的宽高比表示4∶3的情况下,图形处理模块219在长度上压缩要被输出到视频输出模块220的视频数据以进行输出,使得左侧和右侧保持黑色。此外,例如在视频输出设备的宽高比为4∶3的情况下,当为视频数据指定为输出属性的宽高比表示16∶9的情况下,图形处理模块219在高度上压缩要被输出到视频输出模块220的视频数据以进行输出,使得上下两侧保持黑色。而且,例如在视频输出设备的宽高比和为视频数据指定为输出属性的宽高比相同为4∶3或者16∶9的情况下,图形处理模块219直接输出要被输出到视频输出模块220的视频数据,而不进行压缩。
这里,根据对于由在图42的上面部分中被设置到0xE0的stream_id所指定的视频流stream#0所描述的两个pts_change_point/DynamicInfo()组,从视频流stream#0中获得从作为视频流stream#0的回放开始时间的90,000到紧邻在时间54,090,000之前的时间的、其宽高比为4∶3的视频数据。而且从时间54,090,000之后起,从视频流stream#0中获得其宽高比为16∶9的视频数据。
因此,如果连接到图1的视频输出终端120的视频输出设备的宽高比为4∶3,则在图形处理模块219中,将从视频流stream#0中获得的从时间90,000到紧邻在时间54,090,000之前的时间的、其宽高比为4∶3的视频数据,直接提供到其宽高比为4∶3的视频输出设备以在其上进行显示。
从时间54,090,000之后起,在高度上压缩从视频流stream#0获得的其宽高比为16∶9的视频数据,而且转换为通过其要将视频数据以4∶3的宽高比而上下两侧为黑色进行显示的视频信号,以提供到并且显示在其宽高比为4∶3的视频输出设备上。
同时,当已经从播放器控制模块212提供来输出属性时,音频输出模块221根据该输出属性来控制音频数据的输出。
也就是,音频输出模块221根据例如由来自控制模块212的输出属性所表示的、用于音频数据的声道分配指定(channel_assignment(图13)、和通过用户控制了遥控器经由输入接口115(图1)从播放器控制模块212提供到其的音频输出模式,来处理来自音频解码器控制模块217的音频数据,以输出到音频输出终端121(图1)。
具体地说,例如在用于输出属性所表示的音频数据的声道分配指定指定表示其中左声道承载“主音频”音频数据而右声道承载“副音频”音频数据的‘Dual’(双语)模式的情况下,音频输出模块221根据从播放器控制模块212提供到其的音频输出模式,来处理来自音频解码器控制模块217的音频数据,以输出到音频输出终端121。
也就是,当例如将“主音频”指定为音频输出模式时,音频输出模块221将来自音频解码器控制模块217的音频数据的左声道音频数据拷贝为右声道音频数据,并且将所产生的左和右声道音频数据(“主音频”音频数据)输出到音频输出终端121。而且,当将“副音频”指定为音频输出模式时,音频输出模块221将来自音频解码器模块217的音频数据的右声道音频数据拷贝为左声道音频数据,并且将所产生的左声道和右声道音频数据(“副音频”音频数据)输出到音频输出终端12。而且,当将“主/副音频”指定为音频输出模式时,音频输出模块221将来自音频解码器控制模块217的音频数据输出到音频输出模块121,而不进行进一步处理。
而且,在由输出属性所表示的音频数据的声道分配指定表示‘Stereo’模式的情况下,音频输出模块221将来自音频解码器控制模块217的音频数据输出到音频输出终端121而不进行进一步处理,并且与从播放器控制模块212提供到其的音频输出模式无关。
这里,根据对于在图42的下面部分中由被设置到0xBD的stream_id和被设置到0x00的private_stream_id所指定的音频流stream#2所描述的三个pts_change_point/DynamicInfo()组,从音频流stream#2中获得从作为音频流stream#2的回放开始时间的时间90,000到时间27,090,000之前紧邻的时间的‘Dual’音频数据。此外,从音频流stream#2中获得从时间27,090,000到时间32,490,000之前紧邻的时间的‘Stereo’音频数据,而且从时间32,490,000之后起,从音频流stream#2获得‘Dual’音频数据。
因此,如果在音频输出模块221中将“主音频”指定为音频输出模式,则从时间90,000到时间27,090,000之前紧邻的时间,将从音频流stream#2获得的‘Dual’音频数据的左声道音频数据拷贝为右声道音频数据,并且将所产生的左声道和右声道音频数据输出到音频输出终端121。
而且,从时间27,090,000到时间32,490,000之前紧邻的时间,将从音频流stream#2获得的‘Stereo’音频数据输出到音频输出终端121而不进行进一步处理。
从时间32,490,000之后起,将从视频流stream#2所获得的双音频数据的左声道音频数据拷贝为右声道音频数据,并且将所产生的左声道和右声道音频数据输出到音频输出终端121。
如上所述,在输出属性控制处理中,对于被复用到剪切片段流文件中的每个基本流,根据包括零个或者多个组(每个包括表示基本流的回放时间的pts_change_point、和包括基本流的输出属性的DynamicInfo())的剪切片段信息文件Clip()(图10)中的描述,来确定正在回放的基本流的回放时间是否与任何pts_change_point一致。而且在正在回放的基本流的回放时间与pts_change_point一致的情况下,识别与pts_change_point成对的DynamicInfo(),并且根据在所识别的DynamicInfo()中所包括的输出属性,来控制正在回放的基本流的输出。因此,可以根据基本流的回放时间和输出属性来控制基本流的输出。
[字幕显示控制处理]
下面参照图43的流程图,来解释用于控制与字幕流对应的字幕数据的显示的字幕显示控制处理。
当开始回放PlayList()(图5)(中的PlayItem())时,播放器控制模块212在步骤S341中对图形处理模块219初始化字幕数据显示模式指令。也就是,播放器控制模块212控制图形处理模块219以将字幕数据显示模式设置到默认显示模式。注意,在步骤S341中所执行的显示模式指令的初始化与上面参照图20的步骤S127所描述的显示模式指令的初始化对应。
在步骤S341的处理之后,过程前进到步骤S342,其中播放器控制模块212确定对于字幕数据的显示来说,是否通过用户控制了遥控器经由输入接口115已经给出了新显示模式指令。
在已经在步骤S342中确定了已经给出了新显示模式指令的情况下,过程前进到步骤S343,其中播放器控制模块212确定当前是否正在回放字幕流(与字幕流对应的字幕数据)。
在已经在步骤S343中确定了没有正在回放字幕流的情况下,过程返回到步骤S342。
此外,在已经在步骤S343中确定了正在回放字幕流的情况下,过程前进到步骤S345,其中播放器控制模块212确定新显示模式指令是否为默认显示模式指令。在已经在步骤S343中确定了新显示模式指令为默认显示模式指令的情况下,过程返回到步骤S341,如上所述,其中播放器控制模块212控制图形处理模块219来将字幕显示模式设置到默认显示模式。
同时,在已经在步骤S345中确定了新显示模式指令不是默认显示模式指令的情况下,即在新显示模式指令为非默认显示模式指令(例如放大或者缩小显示字幕数据、通过改变亮度来提高观看条件等)的情况下,过程前进到步骤S346,其中播放器控制模块212获取在与将当前正在回放的字幕流复用到其中的剪切片段流文件对应的剪切片段信息文件Clip()(图10)中的StaticInfo()(图12)中,关于当前正在回放的字幕流的StaticInfo(),之后,过程前进到步骤S347。
在步骤S347中,播放器控制模块212确定在步骤S346中所获取的StaticInfo()的configurable_flag。
在已经在步骤S347中确定了configurable_flag被设置到0(意味着不允许改变字幕数据显示模式)的情况下,过程前进到步骤S348,其中播放器控制模块212控制图形处理模块219,以将关于不能改变字幕数据显示模式的情形的错误消息重叠在输出视频数据上,之后过程前进到步骤S342。结果,显示错误消息。
同时,在已经在步骤S347中确定了configurable_flag被设置到1(意味着允许改变字幕数据显示模式)的情况下,过程前进到步骤S349,其中播放器控制模块212将通过用户控制了遥控器从输入接口115提供到其的新显示模式指令,提供给图形处理模块219,之后过程前进到步骤S350。
在步骤S350中,图形处理模块219根据在之前紧邻的步骤S349中从播放器控制模块212提供到其的显示模式指令,开始对从字幕解码器控制模块218提供到其的字幕数据,进行诸如放大或者缩小、或者改变其亮度之类的处理,之后过程返回到步骤S342。结果,例如以与通过用户控制了遥控器所指令的显示模式对应的显示大小、位置和颜色来显示字幕数据。
同时,在已经在步骤S342中确定了没有给出新显示模式指令的情况下,过程前进到步骤S351,其中播放器控制模块212确定是否进行了如上面参照图31所描述的对PlayItem()的改变,如果没有,则过程返回到步骤S342。
而且,在已经在步骤S351中确定了作出了PlayItem的改变的情况下,过程前进到步骤S341,如上所述,其中播放器控制模块212控制图形处理模块219以将字幕数据显示模式设置到默认显示模式。也就是,在这种情况下,当已经作出了对PlayItem()的改变,则将字幕数据显示模式置回到默认显示模式。
如上所述,在字幕显示控制处理中,只有在configurable_flag被设置到1(意味着允许改变其显示模式)的情况下,才根据例如通过用户控制了遥控器所输出的显示模式指令来改变与字幕流对应的字幕显示模式。
因此,根据例如图26中所示的在剪切片段信息文件“00001.CLP”,在被复用到对应剪切片段流文件“00001.PS”中的四个基本流中,对于作为第三基本流的字幕流stream#2来说,configurable_flag被设置到0意味着不允许改变显示模式,因此,即使当用户控制遥控器想要改变显示字幕流stream#2的字幕显示时,也不改变该显示。
同时,在被复用到对应剪切片段流文件“00001.PS”中的四个基本流中,对于作为第四基本流的字幕流stream#3来说,configurable_flag被设置到1意味着允许改变显示模式,因此,当用户控制遥控器想要改变显示字幕流stream#3的字幕显示时,响应于该控制来改变字幕的显示大小等。
也就是,现在假设例如根据图25的第一PlayList#0的第一PlayItem#0,正在回放剪切片段流文件“00001.PS”。而且,假设,如上面参照图26的剪切片段信息文件“00001.CLP”所述,当被复用到剪切片段流文件“00001.PS”中的四个基本流中的第三和第四个是字幕流时,例如在第三字幕流stream#2和第四字幕流stream#3中,当前正在回放第三字幕流stream#2。
当用户通过控制遥控器来输入字幕显示模式指令时(步骤S342),将显示模式指令从输入接口115(图1)提供到播放器控制模块212。当已经提供有显示模式指令时,播放器控制模块212搜索剪切片段信息文件以寻找与正在回放的字幕流对应的StaticInfo()(图10)(步骤S346)。
也就是,在目前情况下,现在回放的字幕流是被复用到剪切片段流文件“00001.PS”中的第三字幕流stream#2,因此,播放器控制模块212搜索对应的剪切片段信息文件“00001.CLP”以寻找对于第三字幕流stream#2的StaticInfo()。
而且,播放器控制模块212确定在对于图26中的第三字幕流stream#2的StaticInfo()中所描述的configurable_flag被设置到0(步骤S347),因此识别对于第三字幕流stream#2来说不允许改变显示模式。
在这种情况下,显示控制模块212判断正在回放的字幕流(所对应的字幕数据)没有准备好进行放大/缩小等,并且控制图形处理模块219从而图形处理模块产生关于该情形的消息(步骤S348),而且将该错误消息重叠在用于输出的视频数据上。
同时,在被复用到剪切片段流文件“00001.PS”中的四个基本流中的第三字幕流stream#2和第四字幕流stream#3中,现在正在回放第四字幕流stream#3而不是第三字幕流stream#2的情况下,通过用户控制了遥控器已经提供有显示模式指令的播放器控制模块212搜索对应的剪切片段信息文件“00001.CLP”,以寻找对于字幕流stream#3的StaticInfo()。
而且,播放器控制模块212判断对于图26中第四字幕流stream#3的StaticInfo()所述的configurable_flag被设置为1(步骤S347),从而识别对于第四字幕流stream#3来说允许改变显示模式。
在这种情况下,显示控制模块212判断正在回放的字幕流(所对应的字幕数据)准备好进行放大/缩小等,并且将通过用户控制了遥控器而提供到其的显示模式指令提供给图形处理模块219(步骤S349)。
结果,在此之后,图形处理模块219(例如)根据来自播放器控制模块212的显示模式指令,对来自字幕解码器控制模块218的字幕数据进行放大或者缩小,并且将所产生的字幕数据重叠在来自视频解码器控制模块216的视频数据上,以进行输出。
注意,播放器控制模块212在开始回放PlayList()的第一PlayItem()的时候,对于图形处理模块219初始化字幕数据显示模式指令(步骤S341)。也就是,播放器控制模块212控制图形处理模块219从而将字幕数据显示模式设置到默认显示模式。
而且,播放器控制模块212还在改变PlayItem()的时候,对于图形处理模块219初始化字幕数据显示模式指令(步骤S341、S351)。
然而,在改变PlayItem()时,播放器控制模块212根据之后要被新回放的PlayItem(),检查对于要回放的新字幕流的configurable_flag,并且在configurable_flag为0的情况下,播放器控制模块212可以对于图形处理模块219初始化字幕数据显示模式,而且在configurable_flag为1的情况下,播放器控制模块212可以在改变PlayItem()之前,将对于图形处理模块219的显示模式指令保持原样。
而且,在图43的字幕显示控制处理中,在通过用户已经控制了遥控器已经输入了新显示模式指令的情况下,进行配置以将新显示模式指令提供到图形处理模块219(步骤S349)。但是,还可以进行配置,从而例如将显示模式指令存储在形成存储器113(图1)的非易失存储器中,并且将非易失存储器中所存储的显示模式指令提供到图形处理模块219。
也就是,例如在将用户定义的显示模式指令存储在非易失存储器中作为图1的盘设备的初始设置,并且通过用户控制了遥控器已经输入新显示模式的情况下,进行配置从而一边用新显示模式指令来更新在非易失存储器中所存储的显示模式指令,一边将在非易失存储器中所存储的显示模式指令提供给图形处理模块219。在这种情况下,将最后的回放结束时的显示模式指令保留在非易失存储器中,因此,在回放随后的PlayList()时,用户能够以该显示模式来开始显示字幕数据,而不必通过控制遥控器再次输入在最后的回放结束时的显示模式指令。
注意,在这种情况下,假设在非易失存储器中存储的显示模式指令包括例如用于对字幕数据进行放大或者缩小的放大比例或者缩小比例等。
如上所述,根据字幕显示控制处理,获取对于字幕数据的StaticInfo(),该StaticInfo()是在剪切片段信息文件Clip()(图10)中所包括的每个基本流的StaticInfo()并且在基本流的回放期间不改变,而且根据指示是否允许从默认显示模式改变字幕数据的显示的configurable_flag,来确定是否允许从默认显示模式改变对正在回放的字幕数据的显示。在允许从默认显示模式改变对字幕数据的显示的情况下,根据字幕显示模式改变指令来执行显示字幕数据的处理;即,例如,放大或者缩小显示字幕数据的处理,或者执行其显示颜色的改变。因此,可以控制对字幕数据显示模式的改变。
[捕获控制处理]
下面参照图44的流程图,描述控制捕获与视频流对应的视频数据的捕获控制处理。注意在图44中,沿着用于解释捕获控制处理的流程图,还示出了用于解释背景/屏幕保护程序处理的流程图,它是二次使用由捕获控制处理所捕获的视频数据所执行的处理的例子。
当例如用户控制遥控器以将用于指令捕获视频数据的部分指令,经由输入接口115(图1)提供给播放器控制模块212时,开始捕获控制处理。
也就是,在捕获控制处理中,首先在步骤S127中,确定播放器控制模块212是否正在回放视频流,如果没有,则捕获控制处理结束。
同时,在已经在步骤S371中确定了播放器控制模块212正在回放视频流的情况下,过程前进到步骤S372,其中播放器控制模块212从与正在回放的视频流对应的PlayList()(图5)中获取capture_enable_flag_PlayList,而且还从与正在回放的视频流对应的剪切片段信息文件Clip()(图10)中获取capture_enable_flag_Clip。
这里,在PlayList()中的capture_enable_flag_PlayList指示是否允许如上面参照图5所述的那样,对与要由PlayList()回放的视频流对应视频数据(属于该PlayList()的视频数据)进行二次使用。而且,在剪切片段信息文件Clip()中的capture_enable_flag_Clip指示是否允许如上面参照图10所述的,对与剪切片段信息文件Clip()对应的剪切片段流文件中所存储的视频流对应的视频数据进行二次使用。
在步骤S372的处理之后,过程前进到步骤S373,其中播放器控制模块212根据在之前紧邻的步骤S372中所获取的capture_enable_flag_PlayList和capture_enable_flag_Clip,来确定当已经从输入接口115(图1)中输入了捕获指令时,是否使得能够捕获已经被回放的视频数据的画面。
在已经在步骤S373中确定了当已经从输入接口115(图1)中输入了捕获指令时,禁止捕获已经被回放的视频数据的画面的情况下,即在之前所紧邻的步骤S372中所获取的capture_enable_flag_PlayList和capture_enable_flag_Clip中的至少一个被设置到0(意味着不允许对视频数据进行二次使用)的情况下,过程前进到步骤S374,其中播放器控制模块212控制图形处理模块219以将关于禁止对视频数据进行捕获的情形的错误消息进行重叠,并且结束捕获控制处理。结果,显示错误消息。
同时,在已经在步骤S373中确定了当已经从输入接口115中输入了捕获指令时,允许捕获已经被回放的视频数据的画面的情况下,即在之前所紧邻的步骤S372中所获取的capture_enable_flag_PlayList和capture_enable_flag_Clip都被设置到1(意味着允许对视频数据进行二次使用)的情况下,过程前进到步骤S375,其中播放器控制模块212将用于当已经从输入接口115中输入了捕获指令时捕获已经被回放的视频数据的画面的指令,提供给图形处理模块219,之后过程前进到步骤S376。
在步骤S376中,图形处理模块219根据来自播放器控制模块212的捕获指令,捕获来自解码器控制模块216的视频数据的画面以存储在存储器113(图1)中,之后结束捕获控制处理。注意,在由多个比特形成capture_enable_flag的情况下,在该处理点上适当地处理这种限制。也就是,在对所捕获的画面的大小施加限制的情况下,在该处理点上捕获缩小的画面。
此外在对可使用的应用程序施加显示的情况下,将用于将该情形通知给用户的标号同时进行记录。
如上所述,在捕获控制处理中,只有在当用户已经给出了捕获指令时,才将与正在回放的视频流对应的PlayList()(图5)的capture_enable_flag_PlayList和剪切片段信息文件Clip()(图10)的capture_enable_flag_Clip进行“与”运算并且结果为1的情况下,即只有在将capture_enable_flag_PlayList和capture_enable_flag_Clip都设置到1(意味着允许二次使用)的情况下,才判断允许对视频数据进行二次使用,因此,执行捕获。
因此,例如,在根据图25的第一PlayList#0的第一PlayItem#0正在回放视频流的情况下,即在正在回放被复用到剪切片段流文件“00001.PS”中的视频流的情况下,当用户已经给出了捕获指令时,第一PlayList#0中的capture_enable_flag_PlayList为1,而与要由第一PlayItem#0回放的剪切片段流文件“00001.PS”对应的图26的剪切片段信息文件“00001.CLP”中的capture_enable_flag_Clip为1,因此,判断允许对正在回放的视频数据(与复用到剪切片段流文件“00001.PS”中的视频流对应的视频数据)进行二次使用。因此,执行捕获。
此外,例如在根据图25的第一PlayList#0的第二PlayItem#1正在回放视频流的情况下,即在正在回放复用到剪切片段流文件“00002.PS”中的视频流的情况下,当用户已经给出了捕获指令时,第一PlayList#0中的capture_enable_flag_PlayList为1,而与要由第二PlayItem#1回放的剪切片段流文件“00002.PS”对应的图26的剪切片段信息文件“00002.CLP”中的capture_enable_flag_Clip为0,因此,判断禁止对正在回放的视频数据(与复用到剪切片段流文件“00002.PS”中的视频流对应的视频数据)的二次使用。因此,不执行捕获。
而且,例如在根据图25中的第二PlayList#1的PlayItem#0正在回放视频流的情况下,即正在回放复用到剪切片段流文件“00003.PS”的视频流的情况下,当用户给出了捕获指令时,第二PlayList#0中的capture_enable_flag_PlayList为0,而与要由第二PlayList#1的该PlayItem#0回放的剪切片段流文件“00003.PS”对应的图26的剪切片段信息文件“00003.CLP”中的capture_enable_flag_Clip为1,因此,判断禁止对正在回放的视频数据(与复用到剪切片段流文件“00003.PS”中的视频流对应的视频数据)的二次使用。因此,不执行捕获。
注意,在这种情况下,在确认第二PlayList#1中的capture_enable_flag_PlayList为0时,可以判断禁止二次使用视频数据,因此,可以省略对由第二PlayList#1的PlayItem#0回放的剪切片段流文件“00003.PS”对应的图26的剪切片段信息文件“00003.CLP”中的capture_enable_flag_Clip的确认。
由捕获控制处理所捕获并且存储在存储器113中的画面可以经历在背景/屏幕保护程序处理中的二次使用。
例如当操作播放器控制模块212时即,例如,当没有将盘101插入到盘驱动器102(图1)时。或者已经接收了对基本流的回放时,执行背景/屏幕保护程序处理,但是不是正在回放基本流。
也就是,在背景/屏幕保护程序处理中,在步骤S381中,播放器控制模块212控制图形处理模块219,以通过捕获控制处理来显示在存储器113中所存储的画面。图形处理模块219通过捕获控制处理,根据由播放器控制模块212进行的控制,来显示在存储器113中所存储的画面。
这里,如果图形处理模块219将存储器113中所存储的画面作为静态画面进行显示,则可以实现所谓的壁纸(背景)。而且,如果将画面显示为以预定周期放大、缩小、移动,则实现屏幕保护程序。替代地,可以执行通过捕获控制处理,不是由播放器控制模块212而是由另一个独立应用程序,来显示在存储器113中所存储的画面的背景/屏幕保护程序处理。
而且,在将表示存取限制的标号添加到在存储器113中所存储的画面上时,背景/屏幕保护程序处理遵守该限制。
如上所述,获取用于正在回放的视频数据的capture_enable_flag_PlayList和capture_enable_flag_Clip,它们表示是否允许以比视频存取单元大的单元对视频数据进行二次使用,因此是否允许对与例如PlayList()或者PlayItem()对应的视频数据进行二次使用,并且根据capture_enable_flag_PlayList和capture_enable_flag_Clip确定是否允许二次使用正在回放的视频数据。而且在已经确定了允许二次使用正在回放的视频数据的情况下,捕获正在回放的视频数据,而且执行其中使用所捕获的视频数据的背景/屏幕保护程序处理。因此,控制对视频数据的二次使用变成可能。
注意,在图44的捕获控制处理中,在PlayList()(图5)中提供capture_enable_flag_PlayList,而且在与要由PlayItem()回放的剪切片段流文件对应的剪切片段信息文件Clip()(图10)中提供capture_enable_flag_Clip,从而使用capture_enable_flag_PlayList和capture_enable_flag_Clip两者来确定是否允许二次使用。但是,还可以进行替代地配置,从而在PlayList()(图5)中只提供capture_enable_flag_PlayList,或者在与要由PlayItem()回放的剪切片段流文件对应的剪切片段信息文件Clip()(图10)中只提供capture_enable_flag_Clip,从而使用capture_enable_flag_PlayList或者capture_enable_flag_Clip来确定是否允许二次使用。
此外,在图44的捕获控制处理中,图形处理模块219在步骤S376中,响应于来自播放器控制模块212的捕获指令,从视频解码器控制模块216中捕获视频数据的画面,即仅仅一个画面。此外,还可以捕获多个画面。也就是,可以捕获视频解码器控制模块216在时间上顺序输出的多个画面(作为运动画面的系列多个画面)。在这种情况下,一次所捕获的画面的数量可以例如是事先预定的。替代地,通过正在用于形成capture_enable_flag_PlayList或者capture_enable_flag_Clip的比特数量,可以将表示可以一次捕获的画面数量的信息包括在capture_enable_flag_PlayList或者capture_enable_flag_Clip中。
而且,在上述情况下,在PlayList()或者剪切片段信息文件Clip()中描述关于是否允许二次使用视频数据的存取允许信息(capture_enable_flag_PlayList、capture_enable_flag_Clip),从而使用该存取允许信息来确定对于要由PlayList()回放的整个视频数据、与复用到与剪切片段信息文件Clip()对应的剪切片段流文件中的视频流对应的整个视频数据来说,是否允许二次使用。但是,能够以另一个任意单元对于视频数据来描述存取允许信息,从而可以使用存取允许信息来确定是否能够允许以任意单元来二次使用视频数据。
也就是,图45示出了其中排列存取允许信息的private_stream2_PES_payload()的语法,而且图45示出其中排列存取允许信息的au_information()的语法。
注意,除了将作为存取允许信息的capture_enable_flag_ps2紧邻地排列在video_stream_id之前以外,与图23中的情况类似地对图45的private_stream2_PES_payload()进行配置。除了将作为存取允许信息的capture_enable_flag_AU紧邻地排列在pic_struct_copy之前以外,以与图24类似的情况来配置图46的au_information()。
在图45的private_stream2_PES_payload()中所包括的capture_enable_flag_ps2指示是否允许对与包括该private_stream2_PES_payload()的private_stream_2 PES_packet()和随后的private_stream_2 PES_packet()之前紧邻的位置之间所排列的视频流对应的视频数据进行二次使用。因此,根据在图45的private_stream2_PES_payload()中所包括的capture_enable_flag_ps2,可以确定对于特定解码可开始点和随后解码可开始点之间的视频数据来说,是否允许其二次使用。
此外,在图46的au_information()中所包括的capture_enable_flag_AU指示是否允许二次使用基于视频存取单元的、与该capture_enable_flag_AU对应的视频数据。因此,根据在图46的au_information()中所包括的capture_enable_flag_AU,可以确定对于基于视频存取单元的视频数据来说,是否允许其二次使用。
这里,对于作为PlayList()(图5)中的存取允许信息的capture_enable_flag_PlayList、作为在剪切片段信息文件Clip()(图10)中的存取允许信息capture_enable_flag_Clip、作为private_stream2_PES_payload()(图45)中的存取允许信息的capture_enable_flag_ps2和作为au_information()(图46)中的存取允许信息的capture_enable_flag_AU来说,可以一同使用它们之中的两个或者多个。在这种情况下,可以根据一同采用的存取允许信息的两个或多个的“与”运算等,来确定是否允许二次使用特定视频数据的画面。
而且,如上面参照图36的步骤S211所述,通过缓存器215A中所存储的节目流,由缓存器控制模块215(图3)的视频读取功能部分233搜索包括其中排列图46的au_information()的、图23或者图45的private_stream2_PES_payload()的private_stream_2 PES_packet()。因此,在要采用其中排列了capture_enable_flag_ps2的图45的private_stream2_PES_payload()和其中排列了capture_enable_flag_AU的图46的au_information()的情况下,当确定是否允许二次使用视频数据时,播放器控制模块212对于视频读取功能部分233需要询问capture_enable_flag_ps2和capture_enable_flag_AU。
注意,在本实施方式中,由软件来执行上述的系列处理。但是,还可以由专用硬件来执行上述系列的处理。
而且,在本实施方式中,采用作为视频解码器116(图1)之类的解码器。但是,对于视频解码器116来说,还可以采用软件解码器。对于音频解码器117(图1)来说也类似。
而且,在本实施方式中,采用软件解码器作为字幕解码器。但是,作为字幕解码器,还可以采用硬件解码器。

Claims (2)

1.一种用于处理在数据记录介质上所记录的记录数据的数据处理设备,其中
所述记录数据包括:
将一个片段或者多个片段数据复用到其中的复用数据;和
关于所述复用数据的元数据,而且
所述元数据包括与被复用到所述复用数据中的片段数据的数量相同的组,每组包括:
第一识别信息,以预定标准为所述一个片段或者多个片段数据的每个属性而定义,用于识别所述一个片段或者多个片段数据;和
第二识别信息,用于识别具有不以所述预定标准定义的属性的所述一个片段或者多个片段数据,和
所述数据处理设备的特征在于具有:
读取装置,用于读取所述元数据;
指定装置,用于根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据;和
处理装置,用于处理由所述指定装置所指定的数据。
2.一种用于处理在数据记录介质上所记录的记录数据的数据处理方法,其中
所述记录数据包括:
将一个片段或者多个片段数据复用到其中的复用数据;和
关于所述复用数据的元数据,而且所述元数据包括与被复用到所述复用数据中的片段数据的数量相同的组,每组包括:
第一识别信息,以预定标准为所述一个片段或者多个片段数据的每个属性而定义,用于识别所述一个片段或者多个片段数据;和
第二识别信息,用于识别具有不以所述预定标准定义的属性的所述一个片段或者多个片段数据,和
所述数据处理方法的特征在于具有:
读取步骤,用于读取所述元数据;
指定步骤,用于根据在元数据中所包括的第一和第二识别信息来指定被复用到复用数据中的数据;和
处理步骤,用于处理由所述指定步骤所指定的数据。
CN2005800190363A 2004-06-11 2005-05-24 数据处理设备和数据处理方法 Expired - Fee Related CN1965365B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP174550/2004 2004-06-11
JP2004174550A JP4524582B2 (ja) 2004-06-11 2004-06-11 データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体
PCT/JP2005/009438 WO2005122170A1 (ja) 2004-06-11 2005-05-24 データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、データ記録媒体並びにデータ構造

Publications (2)

Publication Number Publication Date
CN1965365A CN1965365A (zh) 2007-05-16
CN1965365B true CN1965365B (zh) 2010-06-02

Family

ID=35503329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800190363A Expired - Fee Related CN1965365B (zh) 2004-06-11 2005-05-24 数据处理设备和数据处理方法

Country Status (7)

Country Link
US (1) US8154964B2 (zh)
EP (1) EP1755122A4 (zh)
JP (1) JP4524582B2 (zh)
KR (1) KR101104507B1 (zh)
CN (1) CN1965365B (zh)
TW (1) TWI263978B (zh)
WO (1) WO2005122170A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587507B2 (en) * 2005-07-22 2009-09-08 Microsoft Corporation Media recording functions in a streaming media server
US20080120648A1 (en) * 2006-11-21 2008-05-22 Carlson Michael P System and method to change stations and start programming at beginning of segments
US20080279535A1 (en) * 2007-05-10 2008-11-13 Microsoft Corporation Subtitle data customization and exposure
JP5140687B2 (ja) * 2008-02-14 2013-02-06 パナソニック株式会社 再生装置、集積回路、再生方法、プログラム、コンピュータ読取可能な記録媒体
JPWO2009145326A1 (ja) * 2008-05-27 2011-10-20 日本電気株式会社 コグニティブ無線システム、コグニティブ無線機および無線信号検出方法
JP5130313B2 (ja) * 2010-04-02 2013-01-30 株式会社日立製作所 管理システム及び計算機システムの管理方法
CN103109323B (zh) * 2010-06-08 2016-08-03 吉比媒体集团公司 用于多媒体编辑的系统及方法
CN102598686B (zh) * 2010-08-06 2016-08-17 松下知识产权经营株式会社 再现装置、集成电路、再现方法
US11044386B1 (en) 2014-12-18 2021-06-22 The Directv Group, Inc. Method and system for synchronizing playback of independent audio and video streams through a network
US10803083B2 (en) * 2015-08-27 2020-10-13 Infosys Limited System and method of generating platform-agnostic abstract syntax tree
CN106210750B (zh) * 2016-06-27 2019-04-23 杭州当虹科技有限公司 一种Bluray-DVD视频正片内容提取系统
CN106682124A (zh) * 2016-12-09 2017-05-17 百度在线网络技术(北京)有限公司 一种图片识别方法、装置和设备
CN107886527A (zh) * 2017-11-21 2018-04-06 桂林爱家购股份有限公司 一种图像处理系统和方法
CN108174242A (zh) * 2018-01-09 2018-06-15 武汉斗鱼网络科技有限公司 直播数据复用方法、装置、存储介质及设备
CN108521570A (zh) * 2018-03-16 2018-09-11 网宿科技股份有限公司 一种视频播放器的监控系统
WO2020166612A1 (ja) * 2019-02-12 2020-08-20 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ多重化方法、三次元データ逆多重化方法、三次元データ多重化装置、及び三次元データ逆多重化装置
US11790092B1 (en) * 2020-05-26 2023-10-17 Amazon Technologies, Inc. Cryptoprocessor access management

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1271939A (zh) * 1999-04-28 2000-11-01 日本胜利株式会社 数字信息信号的记录方法、记录装置和记录介质
CN1494717A (zh) * 2001-11-30 2004-05-05 ���ṫ˾ 信息记录和再现方法、设备、介质、程序及程序存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3589241B2 (ja) * 1992-09-22 2004-11-17 ソニー株式会社 データ符号化装置および方法、データ復号化装置および方法
JP2000041221A (ja) * 1998-07-23 2000-02-08 Sony Corp 画像データ送信装置および方法、画像データ受信装置および方法、提供媒体、並びにデータ記録媒体
WO2001082611A1 (fr) * 2000-04-21 2001-11-01 Sony Corporation Procede et appareil de traitement d'informations, support enregistre, et programme
JP2003006999A (ja) * 2001-04-19 2003-01-10 Sony Corp データ記録媒体、データ記録方法及び装置、並びに、データ伝送方法及び装置
JP2003007035A (ja) * 2001-06-27 2003-01-10 Hitachi Ltd データ記録方法、及びデータ記録再生装置
JP3862630B2 (ja) * 2001-07-23 2006-12-27 松下電器産業株式会社 情報記録媒体、情報記録媒体に情報を記録する装置及び方法
JP4504601B2 (ja) * 2001-08-24 2010-07-14 財団法人エヌエイチケイエンジニアリングサービス データ受信端末及びデータ受信プログラム
DE10163152A1 (de) 2001-12-20 2003-07-03 Thomson Brandt Gmbh MPEG-Video-Aufzeichnungsträger und Wiedergabegerät
JP4017437B2 (ja) 2002-04-24 2007-12-05 パイオニア株式会社 情報記録媒体、情報記録装置及び方法、情報再生装置及び方法、情報記録再生装置及び方法、記録又は再生制御用のコンピュータプログラム、並びに制御信号を含むデータ構造
JP4228767B2 (ja) * 2003-04-25 2009-02-25 ソニー株式会社 再生装置、再生方法、再生プログラムおよび記録媒体
US7421454B2 (en) * 2004-02-27 2008-09-02 Yahoo! Inc. Method and system for managing digital content including streaming media
US20090300008A1 (en) * 2008-05-31 2009-12-03 Strands, Inc. Adaptive recommender technology

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1271939A (zh) * 1999-04-28 2000-11-01 日本胜利株式会社 数字信息信号的记录方法、记录装置和记录介质
CN1494717A (zh) * 2001-11-30 2004-05-05 ���ṫ˾ 信息记录和再现方法、设备、介质、程序及程序存储介质

Also Published As

Publication number Publication date
JP2005353211A (ja) 2005-12-22
KR101104507B1 (ko) 2012-01-12
US20070223332A1 (en) 2007-09-27
TWI263978B (en) 2006-10-11
WO2005122170A1 (ja) 2005-12-22
EP1755122A4 (en) 2007-12-26
KR20070017550A (ko) 2007-02-12
JP4524582B2 (ja) 2010-08-18
EP1755122A1 (en) 2007-02-21
CN1965365A (zh) 2007-05-16
US8154964B2 (en) 2012-04-10
TW200606828A (en) 2006-02-16

Similar Documents

Publication Publication Date Title
CN1965365B (zh) 数据处理设备和数据处理方法
KR101217351B1 (ko) 데이터 처리 장치 및 데이터 처리 방법과 프로그램 기록 매체
CN101111896B (zh) 数据记录装置、数据记录方法、数据处理装置、数据处理方法
CN100518277C (zh) 数据处理装置及数据处理方法
CN100556116C (zh) 数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质和数据结构
CN101002467B (zh) 数据处理设备和方法
CN101111897B (zh) 数据处理装置和数据处理方法
CN101002268B (zh) 数据处理设备和数据处理方法
CN100563320C (zh) 数据处理设备和数据处理方法
KR20070028410A (ko) 데이터 처리 장치 및 데이터 처리 방법, 프로그램 및프로그램 기록 매체, 데이터 기록 매체 및 데이터 구조
KR101169488B1 (ko) 데이터 처리 장치, 데이터 처리 방법, 프로그램 기록 매체 및 데이터 기록 매체
KR20070020503A (ko) 데이터 처리 장치 및 데이터 처리 방법, 프로그램 및프로그램 기록 매체, 데이터 기록 매체, 및, 데이터 구조

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100602

Termination date: 20130524