CN101111896A - 数据记录装置、数据记录方法、数据处理装置、数据处理方法、程序、程序记录介质、数据记录介质和数据结构 - Google Patents

数据记录装置、数据记录方法、数据处理装置、数据处理方法、程序、程序记录介质、数据记录介质和数据结构 Download PDF

Info

Publication number
CN101111896A
CN101111896A CNA2005800476801A CN200580047680A CN101111896A CN 101111896 A CN101111896 A CN 101111896A CN A2005800476801 A CNA2005800476801 A CN A2005800476801A CN 200580047680 A CN200580047680 A CN 200580047680A CN 101111896 A CN101111896 A CN 101111896A
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.)
Granted
Application number
CNA2005800476801A
Other languages
English (en)
Other versions
CN101111896B (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 Interactive Entertainment Inc
Sony Corp
Original Assignee
Sony Corp
Sony Computer Entertainment Inc
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, Sony Computer Entertainment Inc filed Critical Sony Corp
Publication of CN101111896A publication Critical patent/CN101111896A/zh
Application granted granted Critical
Publication of CN101111896B publication Critical patent/CN101111896B/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
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • 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
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • 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/005Reproducing at a different information rate from the information rate of recording
    • 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
    • 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/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/92Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/775Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/781Television signal recording using magnetic recording on disks or drums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/782Television signal recording using magnetic recording on tape
    • H04N5/783Adaptations for reproducing at a rate different from the recording rate
    • 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/806Transformation 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 with processing of the sound signal
    • H04N9/8063Transformation 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 with processing of the sound signal using time division multiplex of the PCM audio and PCM video signals
    • 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/82Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only
    • H04N9/8205Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal
    • 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/82Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only
    • H04N9/8205Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal
    • H04N9/8227Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal the additional signal being at least another television signal
    • 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/82Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only
    • H04N9/8205Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal
    • H04N9/8233Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal the additional signal being a character code signal

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Studio Circuits (AREA)

Abstract

可以根据再现设备的性能进行有效再现。控制器(446)判断视频入口是否是视频节开头位置或重要场景改变。也就是说,控制器(446)判断正受到评估的入口是否对应于节场景改变信息(447)中一节的时间或场景改变是否重要。例如,如果入口对应于节时间,则控制器(446)设置priority_flag=3,并且将它存储在输出服务器(426)中。例如,本发明可应用于使用DVD的游戏设备。

Description

数据记录装置、数据记录方法、数据处理装置、数据处理方法、程序、程序记录介质、数据记录介质和数据结构
技术领域
本发明涉及数据记录装置、数据记录方法、数据处理装置、数据处理方法、程序、程序记录介质、数据记录介质和数据结构,具体地,涉及允许非常方便地处理数据的数据记录装置、数据记录方法、数据处理装置、数据处理方法、程序、程序记录介质、数据记录介质和数据结构。
背景技术
近年来,作为具有大存储容量和可以随机存取的记录介质,例如,数字多功能盘(DVD)已得到广泛使用。另外,对DVD进行各种处理的DVD设备也已得到普遍使用。
作为DVD设备,存在将电视广播节目等的数据记录在DVD上和从DVD中再现电视广播节目等的数据的DVD记录器,使用记录了地图信息等的DVD、从中再现地图信息、并显示它的汽车导航系统,使用记录了游戏程序等、从中读取程序、并执行它的游戏设备,以及其它设备。
例如,在非专利文件1“DVD Specifications for Read-Only Disc Part3;Version 1.1 December 1997”中描述DVD的细节。
像DVD设备那样可以处理大量数据的装置需要非常方便地处理数据。
发明内容
本发明就是根据前述观点作出的,本发明的目的是非常方便地进行数据处理。
本发明是包含如下的数据记录装置:识别部分,用于识别流数据的入口点;设置部分,用于设置与识别部分的识别结果相对应的每个入口点的优先级;和记录部分,用于与流数据一起将设置部分设置的每个入口点的优先级记录在数据记录介质上。
流数据可以是视频流数据或字幕流数据。
设置部分可以视入口点是否是一节的开头和入口点的场景改变是否重要而定设置每个入口点的优先级。
本发明是包含如下步骤的数据记录方法:识别流数据的入口点;视识别步骤中的识别结果而定,设置每个入口点的优先级;和与流数据一起将在设置步骤中设置的每个入口点的优先级记录在数据记录介质上。
本发明是使计算机执行包含如下步骤的进程的第一程序:识别流数据的入口点;视识别步骤中的识别结果而定,设置每个入口点的优先级;和与流数据一起将在设置步骤中设置的每个入口点的优先级记录在数据记录介质上。
本发明是记录着使计算机执行包含如下步骤的进程的程序的第一程序记录介质:识别流数据的入口点;视识别步骤中的识别结果而定,设置每个入口点的优先级;和与流数据一起将在设置步骤中设置的每个入口点的优先级记录在数据记录介质上。
本发明是包含如下的数据处理装置:读取部分,用于与流数据一起从数据记录介质中读取包含流数据的每个入口点的优先级的数据;和再现部分,用于从读取部分读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
流数据可以是视频流数据或字幕流数据。
设置部分可以视入口点是否是一节的开头和入口点的场景改变是否重要而定设置每个入口点的优先级。
本发明是包含如下步骤的数据处理方法:与流数据一起从数据记录介质中读取包含流数据的每个入口点的优先级的数据;和从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
本发明是使计算机执行包含如下步骤的进程的第二程序:与流数据一起从数据记录介质中读取包含流数据的每个入口点的优先级的数据;和从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
本发明是记录着使计算机执行包含如下步骤的进程的程序的第二程序记录介质:与流数据一起从数据记录介质中读取包含流数据的每个入口点的优先级的数据;和从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
本发明是与流数据一起记录着包含流数据的每个入口点的优先级的数据的数据记录介质。
本发明是与流数据一起包含流数据的每个入口点的优先级的数据结构。
在本发明的数据记录装置、方法、和第一程序中,识别流数据的入口点。视识别结果而定设置每个入口点的优先级。与流数据一起,将设置的每个入口点的优先级记录在数据记录介质上。
在本发明的数据处理装置、方法、和第二程序中,与流数据一起,从数据记录介质中读取流数据的每个入口点的优先级。从读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
在本发明的数据记录介质和数据结构中,与流数据一起,记录着包含流数据的每个入口点的优先级的数据。
根据本发明的数据记录装置和数据处理装置可以是独立装置或进行数据处理的模块。
根据本发明,可以非常方便地处理数据。具体地,即使再现装置是廉价装置,由于可以记录对应于其再现性能的条目,如存储器的容量,也可以高效地完成再现处理。
附图说明
图1是示出根据本发明实施例的盘再现装置的硬件结构例子的框图;
图2A和图2B是示出CPU 112执行的软件模块组的结构例子的框图;
图3是示出真正经过时间与90kHz时钟的定时之间的关系的示意图;
图4是示出真正经过时间与根据视频解码器的视频数据的输出来更新时间的时钟的时间计数之间的关系的示意图;
图5是示出缓冲控制模块215的结构例子的框图;
图6是示出盘101的目录结构例子的示意图;
图7是示出文件“PLAYLIST.DAT”的语法的示意图;
图8是示出PlayItem()的语法的示意图;
图9是示出PlayListMark()的语法的示意图;
图10是示出mark_type的值与Mark()的类型的关系的示意图;
图11是示出存储在剪辑流文件中的PlayList()、PlayItem()、剪辑、和节目流的关系的示意图;
图12是示出剪辑信息文件Clip()的语法的示意图;
图13是示出stream_id、private_stream_id、和通过它们标识的基本流的关系的示意图;
图14是示出StaticInfo()的语法的示意图;
图15是示出DynamicInfo()的语法的示意图;
图16是示出EP_map()的语法的示意图;
图17是示出index_N_minus1的值与如图16所示的1stRef_Picture到4thRef_Picture的关系的示意图;
图18A和图18B是示出MPEG-2系统的节目流、节目流包、和节目流包头的语法的示意图;
图19A和图19B是示出MPEG-2系统的PES分组的语法的示意图;
图20A、图20B和图20C是示出MPEG-2系统的PES分组的语法的示意图;
图21A和图21B是示出MPEG-2系统的PES分组的语法的示意图;
图22A和22B是示出PES_packet()的stream_id的值与MPEG-2系统的基本流的属性的关系的示意图;
图23是示出盘再现装置使用的stream_id的示意图;
图24是示出private_stream1_PES_payload()的语法的示意图;
图25是示出private_stream_id的值与存储在private_payload()中的基本流的属性的关系的示意图;
图26是示出private_stream2_PES_payload()的语法的示意图;
图27是示出au_information()的语法的示意图;
图28是描述pic_struct的示意图;
图29是示出文件“PLAYLIST.DAT”的特例的示意图;
图30A和图30B是示出剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”的特例的示意图;
图31是示出剪辑信息文件“00001.CLP”的EP_map()的特例的示意图;
图32是示出PlayList#0和PlayList#1的PlayListMark()的特例的示意图;
图33是描述再现处理的流程图;
图34是描述再现处理的流程图;
图35是描述解码顺序和输出顺序之间的关系的流程图;
图36是描述视频解码器的结构的示意图;
图37是描述图36所示的DPB的结构的示意图;
图38是描述时间更新处理的流程图;
图39是描述与pic_struct的值相对应的时间更新处理的流程图;
图40是描述PlayItem改变处理的流程图;
图41是描述时间码显示处理的流程图;
图42是描述流改变处理的流程图;
图43是描述缓冲控制模块215的处理的流程图;
图44是描述缓冲控制模块215的处理的流程图;
图45是描述视频流读取处理的流程图;
图46是描述音频流读取处理的流程图;
图47是描述字幕流读取处理的流程图;
图48是描述重新同步处理的流程图;
图49是描述标记处理的流程图;
图50是描述标记处理中的匹配确定的示意图;
图51是描述PlayListEnd定时的示意图;
图52是描述PlayListEnd定时的示意图;
图53是描述事件间隔的示意图;
图54是描述输出属性控制处理的流程图;
图55是示出在剪辑信息文件“00003.CLP”中描述的一组pts_change_point和DynamicInfo()的特例的示意图;
图56是描述字幕显示控制处理的流程图;
图57是描述捕获控制处理和背景/屏幕保护处理的流程图;
图58是示出private_stream2_PES_payload()的其它语法的示意图;
图59是示出au_information()的其它语法的示意图;
图60是示出盘记录装置的硬件结构例子的框图;
图61是描述由图60所示的盘记录装置实现的功能的框图;
图62是描述Ep_map创建处理的流程图;
图63是描述快进再现处理的流程图;
图64是描述入口点选择处理的流程图;
图65是描述由图60所示的盘记录装置实现的另一功能的框图;
图66是示出Ep_map()的其它语法的示意图;
图67是描述如图65所示的priority_flag的示意图;以及
图68是描述优先级设置处理的流程图。
具体实施方式
接着描述本发明的实施例。权利要求书的单元与实施例的单元之间的关系如下。该关系表示在实施例中描述了支持在权利要求书中阐明的发明的特例。因此,即使一些特例未描述在权利要求书的单元中,也不意味着这些特例不对应于权利要求书的单元。相反,即使一些特例在这个部分中被描述成权利要求书的单元的相似物,也不意味着这些特例不对应于除权利要求书的单元之外的其它单元。
在这个部分中,并不意味着在权利要求书中阐明了与描述在本发明的实施例中的特例相对应的本发明的所有方面。换句话说,这个部分中的描述对应于描述在本发明的实施例中的特例。因此,这个部分中的描述不否认存在在本专利申请的权利要求书中未阐明的本发明的方面,和可以构成分专利申请和/或可以将本发明的附加方面作为修改部分加入。
换句话说,本发明的数据记录装置包含识别流数据的入口点(entrypoint)的识别部分(例如,识别部分是图65所示的控制器446,其执行图68所示的流程图中的步骤S441、S443、S445、S449、S451和S453)、设置与识别部分的识别结果相对应的每个入口点的优先级的设置部分(例如,设置部分是图65所示的控制器446,其执行图68所示的流程图中的步骤S442、S444、S446、S447、S450、S452、S454和S455)、以及与流数据一起将设置部分设置的每个入口点的优先级记录到数据记录介质的记录部分(例如,记录部分是图60所示的盘驱动器409)。
本发明的数据记录方法包含如下步骤:识别流数据的入口点(例如,图68所示的流程图中的步骤S441、S443、S445、S449、S451和S453)、根据识别步骤中的识别结果而设置每个入口点的优先级(例如,图68所示的流程图中的步骤S442、S444、S446、S447、S450、S452、S454和S455)、以及与流数据一起将在设置步骤中设置的每个入口点的优先级记录到数据记录介质。
本发明的数据处理装置包括:与流数据一起从数据记录介质中读取包含流数据的每个入口点的优先级的数据的读取部分(例如,读取部分是图2A和2B所示的播放器控制模块212)、和从读取部分读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据的再现部分(例如,再现部分是图1所示的盘驱动器102)。
本发明的数据处理方法包含如下步骤:与流数据一起从数据记录介质中读取包含流数据的每个入口点的优先级的数据(例如,如图33所示的步骤S106)、和从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据(例如,如图34所示的步骤)。
由于本发明的程序记录介质和程序与数据记录方法类似,所以省略对它们的描述。
接着,参照附图描述本发明的实施例。
[硬件结构]
图1是示出根据本发明实施例的盘再现装置的硬件结构的例子的框图。
例如,图1所示的盘再现装置可以应用于盘播放器、游戏设备、汽车导航系统等。
在图1所示的盘再现装置中,盘101是诸如DVD的光盘、磁光盘、磁盘等。盘101上记录着诸如视频数据、音频数据和字幕数据的内容数据、以及再现那些数据所需的附加数据。
必要时,记录在盘101上的数据包括可以由计算机执行的程序。根据本发明的此实施例,将盘状记录介质的盘101用作记录介质。可替代地,例如,记录介质可以是半导体存储器或带状记录介质。可以将从处在遥远地方的盘中读取的数据发送和输入到图1所示的盘再现装置。换句话说,与盘再现装置连接的另一个设备可以从盘101中读取数据。其它设备读取的数据可以由盘再现装置接收和处理。另外,盘再现装置可以通过诸如因特网的网络从存储与记录在盘101上的数据类似的数据的服务器等接收数据,并且处理所接收的数据。另外,盘再现装置还可以从诸如服务器等的另一个设备接收数据,将接收数据记录在盘101上,然后处理记录在盘101上的数据。
可以将盘101加载到盘驱动器102和从盘驱动器102上卸下盘101。盘驱动器102具有内置接口(未示出)。盘驱动器102通过内置接口与驱动器接口114连接。盘驱动器102驱动盘101,根据(例如)读取命令而从盘101中读取数据,并且将数据提供给驱动器接口114。
与总线111连接的有CPU(中央处理单元)112、存储器113、驱动器接口114、输入接口115、视频解码器116、音频解码器117、视频输出接口118和音频输出接口119。
CPU 112和存储器113构成计算机系统。换句话说,CPU 112执行作为存储在存储器113中的程序的软件模块组,以便控制整个盘再现装置并进行如后所述的各种处理。存储器113还存储CPU 112执行的软件模块组。另外,存储器113临时存储操作CPU 112所需的数据。存储器113可以只由非易失性存储器构成,或由非易失性存储器和易失性存储器的组合构成。当图1所示的盘再现装置具有记录(安装)了CPU 112执行的软件模块组的硬盘时,存储器113可以只由非易失性存储器构成。
CPU 112执行的程序(软件模块组)可以预存在作为在盘再现装置中内置的记录介质的存储器113中。
可替代地,程序可以临时或永久存储在盘101或诸如软盘、CD-ROM(紧致盘只读存储器)、MO(磁光)盘、磁盘、或存储卡的可拆卸记录介质中。可拆卸记录介质可以作为所谓的封装软件提供。
程序可以预存在存储器113中或从上述可拆卸记录介质安装到盘再现装置。可替代地,程序可以通过用于数字卫星广播的卫星从下载站无线传送到盘再现装置,或通过局域网(LAN)或像因特网那样的网络经电缆传送到盘再现装置。盘再现装置通过输入接口115接收程序,并且将程序安装到内置存储器113。
程序可以由一个CPU执行或由多个CPU分布式地执行。
驱动器接口114在CPU112的控制下控制盘驱动器102。盘驱动器102通过总线111,将从盘101中读取的数据提供给CPU 112、存储器113、视频解码器116和音频解码器117等。
输入接口115根据用户的键(按钮)和遥控命令器(未示出)的操作而接收信号,并且通过总线111将信号提供给CPU 112。输入接口115还作用为用于调制解调器(包括ADSL(非对称数字用户线)调制解调器)、NIC(网络接口卡)等的通信接口。
视频解码器116对盘驱动器102从盘101中读取和通过驱动器接口114和总线111提供给视频解码器116的编码视频数据进行解码,并且通过总线111将解码视频数据提供给CPU 112和视频输出接口118。
音频解码器117对盘驱动器102从盘101中读取和通过驱动器接口114和总线111提供给音频解码器117的编码音频数据进行解码,并且通过总线111将解码音频数据提供给CPU 112和音频输出接口119。
视频输出接口118对通过总线111提供的视频数据进行预定处理,并且从视频输出端120输出经过处理的视频数据。音频输出接口119对通过总线111提供的音频数据进行预定处理,并且从音频输出端121输出经过处理的音频数据。
视频输出端120与像CRT(阴极射线管)或液晶面板(未示出)那样的视频输出设备连接。因此,从视频输出端120输出的视频数据被提供给视频输出设备,从而被显示。音频输出端121与像扬声器和放大器(未示出)那样的音频输出设备连接。因此,从音频输出端121输出的音频数据被提供给音频输出设备,从而被输出。
视频数据和音频数据可以无线地或经电缆从盘再现装置提供到视频输出设备和音频输出设备。
[软件模块组的结构]
图2A和图2B示出了图1所示的CPU 112执行的软件模块组的结构的例子的框图。
CPU 112执行的软件模块组主要分类成操作系统(OS)201和作为应用程序的视频内容再现程序210。
[操作系统201]
当开启盘再现装置时,操作系统201开始运行,进行诸如初始设置之类的预定处理,并调用作为应用程序的视频内容再现程序210。
操作系统201将诸如文件读取服务之类的基础服务提供给视频内容再现程序210。换句话说,操作系统201对于从视频内容再现程序210接收的文件读取请求,通过驱动器接口114提供操作盘驱动器102的服务,从盘101中读取数据,并且将数据提供给视频内容再现程序210。另外,操作系统201还解释(interpret)文件系统。
操作系统201具有多任务处理的功能。换句话说,操作系统201可以在时间共享的基础上同时操作多个软件模块。换句话说,尽管视频内容再现程序210由几个软件模块构成,但可以并行地操作它们。
[视频内容再现程序210]
视频内容再现程序210由脚本控制模块211、播放器控制模块212、内容数据提供模块213、解码控制模块214、缓冲器控制模块215、视频解码器控制模块216、音频解码器控制模块217、字幕解码器控制模块218、图形处理模块219、视频输出模块220、以及音频输出模块221构成。
视频内容再现程序210是扮演从盘101中再现数据的关键角色的软件。当将盘101装载到(插入)盘驱动器102中时,视频内容再现程序210检查盘101是否是已经以预定格式(如后所述)记录内容的盘。视频内容再现程序210从盘101中读取脚本文件(如后所述),执行脚本,从盘101中读取再现内容所需的元数据文件,并根据元数据控制内容的再现。
接着,描述图2A和2B所示的构成视频内容再现程序210的软件模块。在图2A和2B中,总体上,实线箭头标记代表内容数据,而虚线箭头标记代表控制数据。
[脚本控制模块211]
脚本控制模块211解释和执行在盘101上记录的脚本程序(脚本)。脚本程序可以描述像“操作图形处理模块219以创建诸如菜单的图像并显示它”、“根据诸如遥控器的用户接口(UI)提供的信号改变菜单显示(例如,移动菜单上的光标)”、和“控制播放器控制模块212”那样的操作。
[播放器控制模块212]
播放器控制模块212参考在盘101上记录的元数据等,以便控制在盘101上记录的内容的再现。换句话说,播放器控制模块212分析在盘101上记录的PlayList()和Clip(),并且根据分析结果而控制内容数据提供模块213、解码控制模块214和缓冲器控制模块215。另外,播放器控制模块212根据从脚本控制模块211和输入接口115(如后所述)接收的命令,进行改变待再现的流的流改变控制。另外,播放器控制模块212从解码控制模块214获取时间,显示该时间,和对标记(Mark())(如后所述)进行处理。
[内容数据提供模块213]
内容数据提供模块213在播放器控制模块212的控制下或根据存储在缓冲器控制模块215中的数据量,请求操作系统201从盘101中读取内容数据、元数据等。
将操作系统201已根据从内容数据提供模块213接收的请求而从盘101中读取的元数据等提供给预定模块。另一方面,将操作系统201已根据从内容数据提供模块213接收的请求从盘101中读取的内容数据等提供给缓冲器控制模块215。
[解码控制模块214]
解码控制模块214在播放器控制模块212的控制下,控制视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218的操作。解码控制模块214具有对时间计数的时间计数部分214A。解码控制模块214管理在视频解码器控制模块216的控制下输出的视频数据的输出和与该视频数据同步的输出的同步。在这种情况下,要与视频数据的输出同步的数据的输出是在音频解码器控制模块217的控制下输出的音频数据。
时间计数部分214A可以通过对从外部提供的参考时钟或与解码器等同步的内部时钟进行计数,来自主地对时间计数。
但是,在通过控制图2A和2B所示的各种类型的模块而实现的基于软件解码器中,如果除了这些处理之外,还由软件执行时间计数处理,则CPU112的处理负担将加重。因此,时间计数部分214A需要根据来自解码器的视频数据的输出来更新时间。
图3示出了时间计数部分214A的独立时钟的时间与真正经过时间之间的关系。在图3中,由于时间计数部分2124A利用90kHz时钟向上计数,所以时间从时间0开始向右线性增加。在时间33.3ms,时钟计数时间是3003。
图4示出了时间计数部分214A根据视频解码器的视频数据输出而更新的时间的例子。在图4所示的情况中,当经过了33ms时,时钟的输出时间被更新成3003。当经过了83.3ms时,输出时间被更新成7507。当经过了116ms时,输出时间被更新成10510。在本例中,一帧的输出时间是16.66ms。
在图3中,尽管时间以分辨率为1/90kHz的阶跃形状流逝,但时间的流逝也可以用与图4比较的直线表示。在如下的描述中,假设时间计数部分214A根据如参照图4所述的视频数据输出而更新时间。
[缓冲器控制模块215]
缓冲器控制模块215具有作为如图1所示的存储器113的存储区的一部分的缓冲器215A。内容数据提供模块213根据从操作系统201接收的请求,将从盘101中读取的内容数据临时存储到缓冲器215A。
另外,缓冲器控制模块215分别根据从视频解码器控制模块216、音频解码器控制模块217、或字幕解码器控制模块218接收的请求,将存储在缓冲器215A中的数据提供给视频解码器控制模块216、音频解码器控制模块217、或字幕解码器控制模块218。
换句话说,缓冲器控制模块215具有后面在图5中描述的视频读取功能部分233、音频读取功能部分234和字幕读取功能部分235。缓冲器控制模块215的视频读取功能部分233处理从视频解码器控制模块216接收的数据请求,以便将在缓冲器215A中存储的数据提供给视频解码器控制模块216。类似地,缓冲器控制模块215中的音频读取功能部分234处理从音频解码器控制模块217接收的请求,以便将在缓冲器215A中存储的数据提供给音频解码器控制模块217。缓冲器控制模块215中的字幕读取功能部分235处理从字幕解码器控制模块218接收的请求,以便将在缓冲器215A中存储的数据提供给字幕解码器控制模块218。
[视频解码器控制模块216]
视频解码器控制模块216操作缓冲器控制模块215的视频读取功能部分233(图5),以便每次从缓冲器控制模块215的缓冲器215A中读取一个视频存取单元的编码视频数据,并且将视频数据提供给如图1所示的视频解码器116。另外,视频解码器控制模块216控制视频解码器116每次解码一个视频存取单元的数据。另外,视频解码器控制模块216将视频解码器116解码的视频数据提供给图形处理模块219。
例如,一个视频存取单元是视频数据的一个画面(一帧或一场)。
[音频解码器控制模块217]
音频解码器控制模块217操作缓冲器控制模块215的音频读取功能部分234(图5),以便每次从缓冲器控制模块215的缓冲器215A中读取一个音频存取单元的编码音频数据,并且将编码音频数据提供给如图1所示的音频解码器117。音频解码器控制模块217控制音频解码器117每次解码一个音频存取单元的编码音频数据。另外,音频解码器控制模块217将音频解码器117解码的音频数据提供给音频输出模块221。
一个音频存取单元是预定音频数据量(例如,与一个画面同步输出的数据量)。根据此实施例,假设一个音频存取单元是预定固定长度。
[字幕解码器控制模块218]
字幕解码器控制模块218操作缓冲器控制模块215的字幕读取功能部分235(图5),以便每次从缓冲器控制模块215的缓冲器215A中读取一个字幕存取单元的编码字幕数据。另外,字幕解码器控制模块218具有字幕解码软件(未示出)。字幕解码软件对从缓冲器215A读取的数据进行解码。字幕解码器控制模块218将解码的字幕数据(字幕的图像数据)提供给图形处理模块219。
一个字幕存取单元是预定字幕数据量(例如,与一个画面同步输出的数据量)。根据此实施例,假设一个字幕存取单元的大小在它的开头描述。
[图形处理模块219]
图形处理模块219根据播放器控制模块212的命令,放大或缩小从字幕解码器控制模块218接收的字幕数据,并且将放大或缩小的字幕数据与从视频解码器控制模块216接收的视频数据叠加。图形处理模块219放大或缩小已经与字幕数据叠加的视频数据的图像帧,以便使相加的视频数据的帧大小与连接到图1所示的视频输出端120的视频输出设备的屏幕匹配。将相加的视频数据输出到视频输出模块220。
另外,图形处理模块219根据脚本控制模块211和播放器控制模块212的命令而生成菜单、消息等,并且将菜单、消息等与输出视频数据叠加。
另外,图形处理模块219根据与如图1所示的视频输出端120连接的视频输出设备的宽高比和代表在盘101上记录的视频数据的宽高比的信息,转换输出到视频输出模块220的视频数据的宽高比。
换句话说,当视频输出设备的宽高比是16∶9时,如果代表视频数据的宽高比的信息是4∶3,则图形处理模块219进行沿着横向(水平方向)缩小输出到视频输出模块220的视频数据的压缩(squeeze)处理,使视频数据的左右端变成黑色,并且输出所得视频数据。当视频输出设备的宽高比是4∶3时,如果代表视频数据的宽高比的信息是16∶9,则图形处理模块219沿着纵向(垂直方向)对输出到视频输出模块220的视频数据进行压缩处理,使视频数据的上下端变成黑色,并且输出所得视频数据。
当视频输出设备的宽高比和代表视频数据的宽高比的信息相同,例如4∶3或16∶9时,图形处理模块219将非压缩视频数据输出到视频输出模块220。
另外,图形处理模块219根据从(例如)播放器控制模块212接收的请求而捕获正被处理的视频数据。此外,图形处理模块219存储所捕获的视频数据或将视频数据提供给播放器控制模块212。
[视频输出模块220]
视频输出模块220排它地占据如图1所示的存储器113的一部分作为FIFO(先进先出)缓冲器220A,并且临时存储从图形处理模块219接收的视频数据。另外,视频输出模块220频繁地从FIFO缓冲器220A中读取视频数据,并且将视频数据输出到视频输出端120(图1)。
[音频输出模块221]
音频输出模块221排它地占据如图1所示的存储器113的一部分作为FIFO缓冲器221A,并且临时存储从音频解码器控制模块217(音频解码器117)接收的音频数据。另外,音频输出模块221频繁地从缓冲器221A中读取音频数据,并且将视频数据输出到音频输出端121(图1)。
另外,当从音频解码器控制模块217接收的音频数据是具有“主音频”数据和“次音频”数据的左右声道的双声道(双语)模式音频数据时,音频输出模块221根据预先指定的音频输出模式,将从音频解码器控制模块217接收的音频数据输出到音频输出端121。
换句话说,如果将“主音频”指定成音频输出模式,音频输出模块221将从音频解码器控制模块217接收的音频数据的左声道复制成音频数据的右声道,并且将音频数据(“主音频”数据)的左右声道输出到音频输出端121。如果将“次音频”指定成音频输出模式,音频输出模块221将从音频解码器控制模块217接收的音频数据的右声道复制成左声道,并且将左右声道(“次音频”数据)输出到音频输出端12。如果将“主和次音频”两者指定成音频输出模式,音频输出模块221直接将从音频解码器控制模块217接收的音频数据输出到音频输出端121。
如果从音频解码器控制模块217接收的音频数据是立体模式音频数据,音频输出模块221将从音频解码器控制模块217接收的音频数据直接输出到音频输出端121,而不管指定了什么音频输出模式。
用户可以利用遥控器交互式地在视频内容再现程序210生成的菜单的屏幕上指定音频输出模式。
[缓冲器控制模块215的结构]
图5示出了如图2A和图2B所示的缓冲控制模块215的结构的例子。
缓冲器控制模块215排它地使用如图1所示的存储器113的一部分作为缓冲器215A,并且将从盘101中读取的数据临时存储在缓冲器215A上。另外,缓冲器控制模块215从缓冲器215A中读取数据,并且将数据提供给图2A和图2B所示的视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218。
除了缓冲器215A之外,缓冲器控制模块215还具有作为存储器113的一部分的数据开始指针存储部分231和数据写入指针存储部分232。另外,缓冲器控制模块215还具有作为内部模块的视频读取功能部分233、音频读取功能部分234和字幕读取功能部分235。
例如,缓冲器215A是连续存储从盘101中读取的数据的环形缓冲器。在缓冲器215A读取其存储量的数据之后,缓冲器215A将数据存储在所谓的无端环中,以便缓冲器215A将最新数据覆盖在最旧数据上。
数据开始指针存储部分231存储代表在缓冲器215A中存储的数据中未从缓冲器215A读取的最旧数据的位置(地址)的数据开始指针。
数据写入指针存储部分232存储代表在缓冲器215A中从盘101读取的最新数据的位置(地址)的指针。
每当将从盘101读取的数据存储到缓冲器215A中时,都沿着如图5所示的顺时针方向更新数据写入指针所代表的位置。每当从缓冲器215A中读取数据时,都沿着如图5所示的顺时针方向更新数据开始指针所代表的位置。因此,在缓冲器215A中存储的有效数据是沿着如图5所示的顺时针方向、从数据开始指针所代表的位置到数据写入指针所代表的位置。
视频读取功能部分233根据从如图2A和图2B所示的视频解码器控制模块216接收的请求,从缓冲器215A中读取视频流(视频数据的基本流),并且将视频流提供给视频解码器控制模块216。音频读取功能部分234根据从如图2A和图2B所示的音频解码器控制模块217接收的请求,从缓冲器215A中读取音频流(音频数据的基本流),并且将音频流提供给音频解码器控制模块217。类似地,字幕读取功能部分235根据从如图2A和图2B所示的字幕解码器控制模块218接收的请求,从缓冲器215A中读取字幕流(字幕数据的基本流),并且将字幕流提供给字幕解码器控制模块218。
换句话说,例如,已将根据MPEG(运动图像专家组)2标准的节目流记录在盘101上,该节目流被称为MPEG2-System节目流。在该节目流中,在时分基础上多路复用了视频流、音频流和字幕流中的至少一个基本流。视频读取功能部分233具有节目流的多路分解功能。视频读取功能部分233从存储在缓冲器215A中的节目流中多路分解视频流,并且读取视频流。
类似地,音频读取功能部分234具有节目流的多路分解功能。音频读取功能部分234从存储在缓冲器215A中的节目流中多路分解音频流,并且读取音频流。类似地,字幕读取功能部分235具有节目流的多路分解功能。字幕读取功能部分235从存储在缓冲器215A中的节目流中多路分解字幕流,并且读取字幕流。
视频读取功能部分233具有作为如图1所示的存储器113的一部分的视频读取指针存储部分241、stream_id寄存器242、和au_information()寄存器243。
视频读取指针存储部分241存储代表缓冲器215A中的视频流的位置(地址)的视频读取指针。视频读取功能部分233从缓冲器215A中视频读取指针的位置读取作为视频流的数据。stream_id寄存器242存储用于分析在缓冲器215A中存储的节目流和标识从节目流中读取的视频流的stream_id。au_information()寄存器243存储作为从缓冲器215A中读取视频流所需的数据的au_information()。
音频读取功能部分234具有作为如图1所示的存储器113的一部分的音频读取指针存储部分251、stream_id寄存器252和private_stream_id寄存器253。
音频读取指针存储部分251存储代表存储在缓冲器215A中的音频流的位置(地址)的音频读取指针。音频读取功能部分234从缓冲器215A中音频读取指针的位置读取作为音频流的数据。stream_id寄存器252和private_stream_id寄存器253分别存储用于分析在缓冲器215A中存储的节目流和标识从节目流中读取的音频流的stream_id和private_stream_id(如后所述)。
字幕读取功能部分235具有作为如图1所示的存储器113的一部分的字幕读取功能标志存储部分261、字幕读取指针存储部分262、stream_id寄存器263和private_stream_id寄存器264。
字幕读取功能标志存储部分261存储字幕读取功能标志。当存储在字幕读取功能标志存储部分261中的字幕读取功能标志例如是“0”时,字幕读取功能部分235不进行操作。当存储在字幕读取功能标志存储部分261中的字幕读取功能标志例如是“1”时,字幕读取功能部分235进行操作
字幕读取指针存储部分262存储代表存储在缓冲器215A中的字幕流的位置(地址)的字幕读取指针。字幕读取功能部分235从缓冲器215A中字幕读取指针的位置读取作为字幕流的数据。stream_id寄存器263和private_stream_id寄存器264分别存储用于分析在缓冲器215A中存储的节目流和标识从节目流中读取的字幕流的stream_id和private_stream_id(如后所述)。
[在盘101上记录的数据的数据格式的描述]
接着将描述在盘101上记录的数据的数据格式。
图6示意性地示出了盘101的目录的结构。
例如,用于盘101的文件系统是按ISO(国际标准化组织)-9660和UDF(通用盘格式)(http:/www.osta.org/specs/)定义的文件系统之一。在盘101上记录的数据的文件按目录结构来分层管理。可以用于盘101的文件系统不局限于这些文件系统。
在图6中,在代表文件系统基础的根目录下存在“VIDEO”目录。在“VIDEO”目录下存在两个目录,即,“CLIP”目录和“STREAM”目录。
除了两个目录,即“CLIP”目录和“STREAM”目录之外,在“VIDEO”目录下还存在两个数据文件,即“SCRIPT.DAT”文件和“PLAYLIST.DAT”文件。
“SCRIPT.DAT”文件是描述脚本程序的脚本文件。换句话说,“SCRIPT.DAT”文件描述允许交互式地再现盘101上的数据的脚本程序。存储在“SCRIPT.DAT”文件中的脚本程序由如图2A和图2B所示的脚本控制模块211解释和执行。
“PLAYLIST.DAT”文件存储至少一个播放列表(后面参照图7所述的Play_List())。播放列表描述诸如视频数据之类的、记录在盘101上的内容的播放处理。
在“CLIP”目录下至少存在一个剪辑信息文件。在“STREAM”目录下至少存在一个剪辑流文件。换句话说,在图6中,在“CLIP”目录下存在三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”。在“STREAM”目录下存在三个剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”。
剪辑流文件存储在时分基础上多路复用的、已经过压缩和编码的视频数据、音频数据和字幕数据的至少一个流的节目流。
剪辑信息文件存储有关剪辑流的元数据,例如,它的特性。
换句话说,剪辑流文件和剪辑信息文件以一对一的关系相关联。在图6中,根据五位数字+黑点+“PS”的命名规则来命名剪辑流文件,而根据与相应剪辑流相同的五位数字+黑点+“CPS”的命名规则来命名剪辑信息文件。
因此,剪辑流文件和剪辑信息文件可以通过文件名的扩展名(黑点的右侧)来识别。另外,可以通过除了其扩展名之外的文件名(黑点的左侧)来确定剪辑流文件和剪辑信息文件是否相关联。
接着详细描述在盘101上记录的文件。
[PLAYLIST.DAT]
图7示出了如图6所示的“VIDEO”目录下文件“PLAYLIST.DAT”文件的内部结构。
在图7中,“PLAYLIST.DAT”文件具有:描述“PLAYLIST.DAT”文件的数据结构的“语法”字段;描述“语法”字段中每个数据条目的位长的“位数”;以及“助记符”字段,其中“bslbf(bit string leftbit first)”和“uimsbf(unsigned integer most significant bit first)”代表“语法”字段中的数据条目从左边位开始移动和“语法”字段中的数据条目是无符号整数并从最高有效位开始移动的。这些条件可应用于与图7相似的其它列表。
“PLAYLIST.DAT”文件从描述例如名称(文件名)的信息的name_length(8个位)和name_string(255字节)开始。
换句话说,name_length代表用字节表示的紧接在其后面的name_string的大小。name_string代表“PLAYLIST.DAT”文件的名称(文件名)。
从name_string的开头开始的name_length个字节用作有效名。当name_length的值是10时,从name_string的开头开始的10个字节被解释为有效名。
name_string的后面接着number_of_PlayLists(16个位)。number_of_PlayLists代表接在name_string后面的PlayList()的数量。number_of_PlayLists的后面接着number_of_PlayLists代表的PlayList()。
PlayList()是描述在盘101上记录的剪辑流文件的再现处理的播放列表。PlayList()具有如下内部结构。
PlayList()从PlayList_data_length(32个位)开始。PlayList_data_length代表PlayList()的大小。
PlayList_data_length的后面相继接着reserved_for_word_alignment(15个位)和capture_enable_flag_PlayList(1个位)。15个位的reserved_for_word_alignment的后面接着1个位的capture_enable_flag_PlayList,为了capture_enable_flag_PlayList位置上的16位位置对齐,将它放在16个位的位置上。capture_enable_flag_PlayList是表示是否允许在从盘101中再现数据的盘再现装置中二次使用与根据PlayList()再现的视频流相对应的视频数据(属于PlayList()的视频数据)的1位标志。当capture_enable_flag_PlayList的值是例如1(0或1)时,表示允许二次使用属于PlayList()的视频数据。当capture_enable_flag_PlayList的值是例如0(0或1)时,表示不允许二次使用属于PlayList()的视频数据。
在图7中,capture_enable_flag_PlayList由一个位构成。可替代地,capture_enable_flag_PlayList也可以由多个位构成。在这种情况下,可以逐步允许二次使用属于PlayList()的视频数据。换句话说,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(图2A和图2B)二次使用视频数据。当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、允许在盘再现装置的外部二次使用视频数据的情况下,例如,视频数据被记录在可以装载到盘再现装置中或可以与盘再现装置连接的记录介质中,或通过诸如因特网之类的网络发送到另一个设备。在这种情况下,可以将代表可以将视频数据记录在记录介质上的次数或可以发送视频数据的次数的信息添加到视频数据。
capture_enable_flag_PlayList的后面相继接着PlayList_name_length(8个位)和PlayList_name_string(255个字节)。PlayList_name_length代表用字节表示的PlayList_name_string的大小。PlayList_name_string代表PlayList()的名称。
PlayList_name_string的后面接着number_of_PlayItems(16个位)。number_of_PlayItems表示PlayItem()的数目。
number_of_PlayItems后面是number_of_PlayItems代表的PlayItem()。
一个PlayList()可以以PlayItem()为单位描述内容的再现处理。
将在PlayList()中唯一的标识(ID)码添加到由number_of_PlayItems代表的PlayItem()。换句话说,PlayList()的第1个PlayItem()用编号0标识。其它的PlayItem()相继用编号1、2、...等标识。
number_of_PlayItems代表的PlayItem()后面是一个PlayListMark()。PlayListMark()是作为根据PlayList()的再现的时间轴上的标记的一组Mark()。后面将参照图9详细描述PlayListMark()。
[PlayItem()的描述]
图8示出了包含在图7所示的PlayList()中的PlayItem()的内部结构。
PlayItem()从length(16个位)开始。length代表包括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()再现的剪辑流文件(具有如图6所示的扩展名PS的文件)相对应的剪辑信息文件(具有如图6所示的扩展名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()的描述]
图9示出了在图7中所示的PlayList()中包含的PlayListMark()的内部结构。
如上所述,PlayListMark()是作为根据PlayList()的再现的时间轴上的标记的一组Mark()。Mark()的数目是0或更大。一个Mark()至少具有代表根据PlayList()进行再现的时间轴上的一个时间的时间信息、代表Mark()的类型的类型信息、和当类型信息代表发生的事件的类型时的事件的变元的变元信息。
换句话说,PlayListMark()从length(32个位)开始。length代表包括length大小的PlayListMark()大小。
length的后面接着number_of_PlayList_marks(16个位)。number_of_PlayList_marks代表接在number_of_PlayList_marks后面的Mark()的数目。number_of_PlayList_marks的后面接着由number_of_PlayList_marks代表的Mark()。
Mark()从mark_type(8个位)开始。mark_type是前述类型信息,并代表mark_type所属的Mark()的类型。
根据本实施例,Mark()具有例如节、索引和事件的三种类型。
当Mark()的类型是节(有时称为节标记)时,它是作为如PlayList()的划分那样的搜索单元的节的开始位置的标记。当Mark()的类型是索引(有时称为索引标记)时,它是作为节的细分单元的索引的开始位置的标记。当Mark()的类型是事件(有时称为事件标记)时,Mark()是根据PlayList()再现内容的同时发生事件的位置的标记。通知脚本控制模块211:已发生了基于事件标记的事件。
图10示出了mark_type的值与Mark()的类型的关系。在图10中,节标记的mark_type是1;索引标记的mark_type是2;和事件标记的mark_type是3。在图10中,8位mark_type代表的其它值,即,0和4到255是为将来的扩展而保留的。
返回到图9,mark_type的后面接着mark_name_length(8个位)。Mark()以mark_name_string结束。mark_name_length和mark_name_string用于描述Mark()的名称。mark_name_length代表mark_name_string的有效大小。mark_name_string代表Mark()的名称。因此,从mark_name_string的开头开始的mark_name_length个字节代表Mark()的有效名称。
mark_name_length的后面接着将在PlayList()中定义的Mark()与剪辑流文件相关联的四个元素ref_to_PlayItem_id(16个位)、mark_time_stamp(32个位)、entry_ES_stream_id(8个位)、和entry_ES_private_stream_id(8个位)。
ref_to_PlayItem_id将ID描述成设置给Mark()所属的PlayItem()的序号。ref_to_PlayItem_id标识Mark()所属的PlayItem()(图8)。因此,如在图8中所述,标识剪辑信息文件和剪辑流文件。
mark_time_stamp代表在由ref_to_PlayItem_id标识的剪辑流文件中Mark()所代表的位置。
图11示出了在剪辑流文件中存储的PlayList()、PlayItem()、剪辑、和节目流的关系。
在图11中,PlayList()由依次编号成ID#0、ID#1和ID#2的三个PlayItem()构成。在以下的描述中,编码成ID#1的PlayItem()用PlayItem#1表示。
在图11中,作为根据PlayItem#0、PlayItem#1和PlayItem#2再现的内容的剪辑分别用剪辑A、剪辑B和剪辑C表示。
剪辑的实体从存储在如图8所示的PlayItem()的Clip_Information_file_name标识的剪辑流文件中的节目流的IN_time到OUT_time。在图11中,作为剪辑A、剪辑B和剪辑C的实体的节目流分别用节目A、节目B和节目C表示。
在图11中,在作为根据PlayList()的再现的时间轴上的时间t0的标记的Mark()中,ref_to_PlayItem_id和mark_time_stamp描述如下。
在图11中,由于时间t0是再现PlayItem#1的时间,ref_to_PlayItem_id将1描述成PlayItem#1的ID。由于在时间t0上再现作为剪辑B的实体的节目B,mark_time_stamp描述存储与时间t0相对应的节目B的剪辑流文件的时间。
再次返回到图9,当Mark()与特定基本流相关联时,entry_ES_stream_id和entry_ES_private_stream_id用于标识基本流。换句话说,entry_ES_stream_id描述与Mark()相关联的基本流的stream_id。另一方面,当必要时,entry_ES_private_stream_id描述与Mark()相关联的基本流的private_stream_id。
当再现已多路复用了视频流#1和视频流#2的剪辑的视频流#1时,和当正在再现视频流#2的同时需要改变节时间时,在再现视频流#2的同时在节标记时间上的Mark()的entry_ES_stream_id和entry_ES_private_stream_id中描述视频流#1的stream_id和private_stream_id。另外,在再现视频流#2的同时在节标记时间上的Mark()的entry_ES_stream_id和entry_ES_private_stream_id中描述视频流#2的stream_id和private_stream_id。
不与特定基本流相关联的Mark()的entry_ES_stream_id和entry_ES_private_stream_id是例如0。
entry_ES_private_stream_id的后面接着mark_data(32个位)。当Mark()是事件标记时,mark_data是作为随事件标记发生的事件的变元的变元信息。当Mark()是节标记或索引标记时,mark_data可以用作节标记或索引标记代表的节号或索引号。
[Clip()的描述]
接着将描述具有CLP扩展名并被存储在图6所示的“CLIP”目录中的剪辑信息文件的内部结构。
在图6中,在“CLIP”目录下存在三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”。这些剪辑信息文件包含代表存储在“STREAM”目录中的剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”的特性的元数据。
图12示出了剪辑信息文件Clip()的内部结构。
剪辑信息文件Clip()从presentation_start_time和presentation_end_time(每个32个位)开始。presentation_start_time和presentation_end_time代表与剪辑信息文件Clip()相对应的剪辑信息文件的开始时间和结束时间。剪辑流文件的时间被描述成用作MPEG2-System的时间的90kHz的倍数。
presentation_end_time的后面接着reserved_for_word_alignment(7个位)和capture_enable_flag_Clip(1个位)。7个位的reserved_for_word_alignment用于字对齐。capture_enable_flag_Clip是表示像如图7所示的capture_enable_flag_PlayList那样的、是否允许二次使用视频数据的标志。
但是,图7所示的capture_enable_flag_PlayList表示是否允许二次使用属于与根据PlayList()再现的视频流相对应的PlayList()的视频数据。相反,如图1 2所示的capture_enable_flag_Clip表示是否允许二次使用与存储在与剪辑信息文件Clip()相对应的剪辑流文件中的视频基本流相对应的视频数据。因此,如图7所示的capture_enable_flag_PlayList与如图12所示的capture_enable_flag_Clip的不同之处在于允许二次使用的视频数据的单位。
与如图7所示的capture_enable_flag_PlayList一样,如图12所示的capture_enable_flag_Clip可以由多个位构成,而不是一个位。
capture_enable_flag_Clip的后面接着number_of_streams(8个位)。number_of_streams描述StreamInfo()的数目。因此,number_of_streams的后面接着number_of_streams代表的StreamInfo()。
StreamInfo()从length(16个位)开始。length代表包括length大小的StreamInfo()大小。length的后面接着stream_id(8个位)和private_stream_id(8个位)。stream_id和private_stream_id标识与StreamInfo()相关联的基本流。
图13示出了stream_id、private_stream_id和由它们标识的基本流的关系。
stream_id与在MPEG2-System标准中定义的那个相同。MPEG2-System标准为基本流的每个属性定义stream_id的值。因此,在MPEG2-System标准中定义的基本流的属性可以只通过stream_id标识。
此实施例可以处理未在MPEG2-System标准中定义的基本流的属性。private_stream_id是标识未在MPEG2-System标准中定义的基本流的属性的信息。
图13示出了具有四种属性的基本流的stream_id和private_stream_id的关系,这些基本流是:根据在MPEG中定义的编码系统而编码的视频基本流、根据ATRAC(自适应变换声音编码)系统而编码的音频基本流(下文有时称为ATRAC音频流)、根据LPCM(线性脉冲码调制)系统而编码的音频基本流(下文有时称为LPCM音频流)、以及字幕基本流(下文有时称为字幕流)。
MPEG2-System标准定义将根据在MPEG中定义的编码系统而编码的视频基本流与从0xE0到0xEF(其中,0x表示用十六进制表示法表示其后的字符串)范围内的值多路复用。因此,可以将根据在MPEG中定义的编码系统而编码并通过从0xE0到0xEF范围内的stream_id标识的16个视频基本流与节目流多路复用。
由于根据在MPEG中定义的编码系统而编码的视频基本流可以通过从0xE0到0xEF范围内的stream_id标识,所以不需要private_stream_id。
另一方面,在MPEG2-System中,未为ATRAC音频流、LPCM音频流和字节流定义stream_id。
因此,根据本实施例,对于其stream_id未在MPEG2-System中定义的基本流,使用在MPEG2-System中作为代表属性private_stream_1的值的0xBD。另外,如图13所示,这些基本流通过private_stream_id标识。
换句话说,ATRAC音频流通过从0x00到0x0F范围内的private_stream_id标识。因此,可以将16个ATRAC音频流与节目流多路复用。LPCM音频流通过从0x10到0x1F范围内的private_stream_id标识。因此,可以将16个LPCM音频流与节目流多路复用。字幕流通过从0x80到0x9F范围内的private_stream_id标识。因此,可以将32个字母流与节目流多路复用。
后面将详细描述stream_id和private_stream_id。
返回到图12,private_stream_id的后面相继接着StaticInfo()和reserved_for_word_alignment(8个位)。StaticInfo()描述在正在再现通过描述在包括StaticInfo()的StreamInfo()中的stream_id和private_stream_id标识的基本流的同时不变化的信息。StreamInfo()将在后面参照图14加以描述。
reserved_for_word_alignment用于字对齐。
reserved_for_word_alignment的后面接着number_of_DynamicInfo(8个位)。number_of_DynamicInfo代表接在number_of_DynamicInfo后面的pts_change_point(每个32个位)和DynamicInfo()的组数。
因此,number_of_DynamicInfo的后面接着number_of_DynamicInfo代表的pts_change_point和DynamicInfo()的组。
pts_change_point代表与pts_change_point配对的DynamicInfo()的信息变得有效的时间。代表基本流的开始时间的pts_change_point等于在与存储基本流的剪辑流文件相对应的剪辑信息文件Clip()的开头处描述的presentation_start_time。
DynamicInfo()描述正在再现由stream_id和private_stream_id标识的基本流的同时发生变化的所谓动态信息。在DynamicInfo()中描述的信息在由与DynamicInfo()配对的pts_change_point代表的再现时间变得有效。下面将参照图15描述DynamicInfo()。
number_of_DynamicInfo代表pts_change_point和DynamicInfo()的组的后面接着EP_map()。EP_map()将在后面参照图16加以描述。
[StaticInfo()的描述]
接着参照图14详细描述如图12所示的StaticInfo()。
图14示出了StaticInfo()的语法。
StaticInfo()的内容随相应基本流的属性而改变。与StaticInfo()相对应的基本流的属性由在包括StaticInfo()的如图12所示的StreamInfo()中包含的stream_id和private_stream_id决定。
当与StaticInfo()相对应的基本流是视频流(stream==VIDEO)时,StaticInfo()由picture_size(4个位)、frame_rate(4个位)、cc_flag(1个位)、和用于字对齐的reserved_for_word_aligment构成。
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_aligment构成。
audio_language_code描述代表在音频流中包含的音频数据的语言的代码。channel_configuration代表包含在音频流中的音频数据的属性,如单声道(mono)、立体声和多声道等。lfe_existence表示音频流是否包含低频效声道。当音频流包含低频效声道时,lfe_existence是1。当音频流不包含低频效声道时,lfe_existence是0。sampling_frequency是代表在音频流中包含的音频数据的采样频率的信息。
当与StaticInfo()相对应的基本流是字幕流(stream==SUBTITLE)时,StaticInfo()由subtitle_language_code(16个位)、configurable_flag(1个位)、和用于字对齐的reserved_for_word_aligment构成。
subtitle_language_code描述代表在字幕流中包含的字幕数据的语言的代码。configurable_flag是表示是否允许从默认显示模式改变字幕数据显示模式的信息。当允许改变显示模式时,configurable_flag是1。当不允许改变显示模式时,configurable_flag是0。字幕数据的显示模式包括字幕数据的显示尺寸、显示位置、显示颜色、显示式样(例如,闪烁)、显示方向(垂直或水平)等。
[DynamicInfo()的描述]
接着参照图15详细描述如图15所示的DynamicInfo()。
图15示出了DynamicInfo()的语法。
DynamicInfo()从用于字对齐的reserved_for_word_aligment(8个位)开始。接在reserved_for_word_aligment后面的元素取决于与DynamicInfo()相对应的基本流的属性。与参照图14所述的StaticInfo()一样,与DynamicInfo()相对应的基本流的属性由在包括DynamicInfo()的如图12所示的StreamInfo()中包含的stream_ID和private_stream_id决定。
如图12所述,DynamicInfo()描述在再现基本流的同时发生变化的动态信息。动态信息不是特定的。但是,在图15所示的实施例中,在DynamicInfo()中描述了与DynamicInfo()相对应的基本流的数据,即,作为基本流的处理输出的数据的输出属性。
具体地说,当与DynamicInfo()相对应的基本流是视频流(stream==VIDEO)时,DynamicInfo()由display_aspect_ratio(4个位)和用于字对齐的reserved_for_word_aligment构成。display_aspect_ratio描述视频流的视频数据的输出模式,例如,视频数据的宽高比。换句话说,display_aspect_ratio描述代表作为宽高比的16∶9或4∶3的信息。除了宽高比之外,视频流的DynamicInfo()还可以描述,譬如,视频数据的图像的尺寸(X个像素×Y个像素)。
当与DynamicInfo()相对应的基本流是音频流(stream==AUDIO)时,DynamicInfo()由channel_assignment(4个位)和用于字对齐的reserved_for_word_aligment构成。当音频流包含两个声道的音频数据时,channel_assignment描述两个声道的输出模式。换句话说,channel_assignment描述代表立体声或双声道(双语)的声道指定的信息。
当与DynamicInfo()相对应的基本流是字幕流(stream==SUBTITLE)时,DynamicInfo()由用于字对齐的reserved_for_word_aligment构成。换句话说,根据如图15所示的实施例,不为字幕流定义作为动态信息的输出属性。
[EP_map()的描述]
接着参照图16详细描述如图12所示的EP_map()。
图16示出了EP_map()的语法。
EP_map()描述可开始解码点(入口点)的信息,从该可开始解码点开始,可以对与在对应于包括EP_map()的剪辑信息文件Clip()(图1 2所示)的剪辑流文件中存储的节目流多路复用的每个基本流进行解码。
具有固定速率的流的可开始解码点可以通过计算获得。但是,对于像根据MPEG标准编码的视频流那样的、大小随每个视频存取单元而变的流,可开始解码点不能通过计算获得。除非对流加以分析,否则不能获得可开始解码点。为了随机存取数据,必须迅速识别可开始解码点。借助于EP_map()可以迅速地识别可开始解码点。
在MPEG2-Video中,包括Sequence_header()等的内画面(intra-picture)的开头是可开始解码点。
EP_map()从用于字对齐的reserved_for_word_aligment(8个位)开始。reserved_for_word_aligment的后面接着number_of_stream_id_entries(8个位)。number_of_stream_id_entries代表EP_map()中描述可开始解码点的信息的基本流的数目。
number_of_stream_id_entries的后面接着数组标识基本流的信息和基本流的可开始解码点的信息。它们被重复了number_of_stream_id_entries所代表的次数。
换句话说,number_of_stream_id_entries的后面接着作为标识基本流的信息的stream_id(8个位)和private_stream_id(8个位)。private_stream_id的后面接着number_of_EP_entries(32个位)。number_of_EP_entries代表接在number_of_EP_entries前面的stream_id和private_stream_id所标识的可开始解码点的数目。
number_of_EP_entries的后面是由stream_id和private_stream_id标识的基本流的可开始解码点的信息。该信息被重复了number_of_EP_entries所代表的次数。
换句话说,当当前基本流是视频流时,放置index_N_minus1和N-th_Ref_picture_copy。此后,放置PTS_EP_start(32个位)和RPN_EP_start(32个位)作为可开始解码点的信息。重复此序列。index_N_minus1和N-th_Ref_picture_copy将在后面描述。
当当前基本流不是视频流时,16个位的reserved_for_future_use的后面是作为解码开始使能点的信息的PTS_EP_start(32个位)和RPN_EP_start(32个位)。重复这个序列。
将如后所述的记录在RPN_EP_start所代表的private_stream_2中的1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture之一复制到N-th_Ref_picture_copy中。另外,将表示已经复制了字段的信息与如图17所示的值一起记录到index_N_minus1中。换句话说,如图17所示,当复制1stRef_picture时,将0记录到index_N_minus1中。当复制2ndRef_picture时,将1记录到index_N_minus1中。当复制3rdRef_picture时,将2记录到index_N_minus1中。当复制4thRef_picture时,将3记录到index_N_minus1中。
作为可开始解码点的信息的一个元素的PTS_EP_start代表剪辑流文件中的可开始解码点的时间(再现时间),该剪辑流文件存储与由stream_id和private_stream_id标识的基本流多路复用的节目流。
作为可开始解码点的信息的另一个元素的RPN_EP_start描述剪辑流文件中的可开始解码点的位置,作为节目流的pack()的数目的值,其中该剪辑流文件存储与由stream_id和private_stream_id标识的基本流多路复用的节目流。根据本实施例,pack()的大小是2048个字节,是固定的。另外,根据本实施例,盘101(图1)的一个扇区是2048个字节。
视频流的可开始解码点(入口点)紧接在private_stream_2分组(PES_packet()作为private_stream_2的属性)的后面。private_stream_2分组存储用于对在两个相邻private_stream_2分组之间存储的视频流进行解码的信息。因此,对于视频流,作为可开始解码点的信息的RPN_EP_start描述了紧接在真正可开始解码点之前的private_stream_2分组的开始位置。
对于通过EP_map()中的stream_id和private_stream_id标识的每个基本流,按升序预存作为可开始解码点的信息的PTS_EP_start和RPN_EP_start的组。因此,可以二进制搜索作为可开始解码点的信息的PTS_EP_start和RPN_EP_start的组。
例如,在日本专利公布第2000-341640号(日本专利申请HEI11-317738号)中描述可变速率流和大小随视频存取单元而不同的流的随机存取方法。
[剪辑流文件的描述]
接着将描述具有PS扩展名并在图6所示的“STREAM”目录中存储的剪辑流文件(图6中的“00001.PS”、“00002.PS”和“00003.PS”)的内部结构。
剪辑流文件基于在MPEG2-System(ISO/IEC13818-1)中定义的MPEG2_Program_Stream()而构成。
图18A和图18B示出了在MPEG2-System(ISO/IEC13818-1:20000)标准下描述的表2-31、表2-32和表2-33。
在剪辑流文件中存储的节目流是在MPEG2-System标准的表2-31中定义的MPEG2_Program_Stream()。节目流由至少一个pack()和一个MPEG_program_end_code构成。在日本专利第2785220号中描述了MPEG2_Program_Stream()。
一个pack()由如在MPEG2-System标准的表2-32中定义的一个Pack_header()和任何数目的PES_packet()构成。在MPEG2-System标准的表2-33中详细描述了Pack_header()。
在MPEG2-System标准中,pack()具有可变长度的大小。但是,如图16所述,假设pack()的大小是固定的2048个字节。在本例中,一个pack()的PES_packet()的数目是1、2或3。当pack()从private-stream_2分组开始时,通常后面直接接着相应视频流的PES_packet()。另外,作为第三PES_packet(),可以存在padding_packet(填充分组)。private-stream_2分组通常出现在pack()的开头。
当pack()未从private-stream_2分组开始时,pack()从包含视频数据、音频数据、字节数据等的内容数据的PES_packet()开始。第二PES_packet()可以是padding_packet(填充分组)。
图19A和图19B到图21A到图21B示出了在MPEG-2系统标准的表2-17中定义的PES_packet()。
PES_packet()主要由packet_start_code_prefix、stream_id、PES_packet_length(它们显示在图19A和图1 9B中)、随stream_id等而变的头部分(包括stuffing_byte)(这些部分显示在图19A和图19B到图21A和图21B中)、和PES_packet_data_byte(显示在图21A和图21B中)构成。当PES_packet()是padding_packet(stream_id==padding_stream)时,取代PES_packet_data_byte,将所需数目的padding_byte(0xFF)(图21A和图21B)重复所需的次数。
如图19A和图19B到图20A、图20B和图20C所示,PES_packet()的头部分可以描述代表被称为PTS(演播时戳)的显示定时的信息、和代表被称为DTS(解码时戳)的解码定时的信息。根据本实施例,将PTS添加到所有存取单元(构成在MPEG2-System中定义的基本流的解码单元)的每一个。当在MPEG2-System中有规定时,添加DTS。
与节目流多路复用的基本流被存储在PES_packet()的PES_packet_data_byte(图21A和图21B)中。PES_packet()的stream_id描述根据基本流的属性的值,以标识在PES_packet_data_byte中存储的基本流。
在MPEG2-System标准的表2-18中定义了在PES_packet()的stream_id中描述的值与基本流的属性(类型)的关系。图22A和图22B示出了MPEG2-System标准的表2-18。
根据本发明的实施例,例如,图23所示的值被用作如图22A和图22B所示的、在MPEG2-System标准中定义的stream_id。
换句话说,根据本实施例,五种式样10111101B、10111110B、10111111B、110xxxxxB、和1110xxxxB用作stream_id的值,其中,“x”代表0和1中的任一个。
根据图23所示的表格,具有private_stream_1的属性的基本流的PES_packet()的stream_id是10111101B。根据图23所示的表格,padding_packet的PES_packet()的stream_id是10111110B。根据图23所示的表格,具有private_stream_2的属性的基本流的PES_packet()的stream_id是10111111B。
在MPEG中定义的音频流(音频基本流)的PES_packet()的stream_id是110xxxxxB。110xxxxxB的低序五个位xxxxx是标识音频流的音频流号。可以将可通过音频流号标识的32(=25)个音频流(在MPEG中定义的音频流)与节目流多路复用。
在MPEG中定义的视频流(视频基本流)的PES_packet()的stream_id是1110xxxxB。1110xxxxB的低序四个位xxxx是标识视频流的视频流号。可以将16(=24)个视频流(在MPEG中定义的视频流)与节目流多路复用。
其stream_id是1110xxxxB的PES_packet()用于存储在MPEG中定义的视频流。其stream_id是110xxxxxB的PES_packet()用于存储在MPEG中定义的音频流。另一方面,在MPEG中未定义根据编码系统(例如,ATRAC系统)的基本流的PES_packet()的stream_id。因此,不能与在MPEG中定义的视频流和音频流一样,将根据未在MPEG中定义的编码系统的基本流与stream_id一起存储在PES_packet()中。
因此,根据本实施例,将private_stream_1的PES_packet()的PES_packet_data_byte扩展到存储根据未在MPEG中定义的编码系统的基本流。
将扩展的private_stream_1的PES_packet()的PES_packet_data_byte描述成private_stream1_PES_payload()。
[private_stream1_PES_payload()的描述]
图24示出了private_stream1_PES_payload()的语法。
private_stream1_PES_payload()由private_header()和private_payload()构成。private_payload()存储根据未在MPEG系统中定义的编码系统编码的基本流,如ATRAC音频流、LPCM音频流和字幕流。
private_header()从private_stream_id(8个位)开始。private_stream_id是标识存储在private_payload()中的基本流的标识信息。private_stream_id具有基于基本流的属性的以下值。
图25示出了private_stream_id的值与在private_payload()中存储的基本流的属性的关系。
图25示出了作为private_stream_id的值的三种式样0000xxxxB、0001xxxxB、和100xxxxxB,其中,与图23所示的情况一样,“x”是0和1中的任何一个值。
根据如图25所示的表格,ATRAC音频流的private_payload()的private_stream1_PES_payload()的private_stream_id是0000xxxxB。0000xxxxB的低序四个位xxxx是标识ATRAC音频流的音频流号。可以将可通过音频流号标识的16(=24)个ATRAC音频流与节目流(MPEG2_Program_Stream())多路复用。
根据图25所示的表格,LPCM音频流的private_payload()的private_stream1_PES_payload()的private_stream_id是0001xxxxB。0001xxxxB的低序四个位xxxx是标识LPCM音频流的音频流号。可以将可通过音频流号标识的16(=24)个LPCM音频流与节目流多路复用。
根据图25所示的表格,字幕流的private_payload()的private_stream1_PES_payload()的private_stream_id是100xxxxxB。100xxxxxB的低序五个位xxxxx是标识字幕流的字幕流号。可以将32(=25)个字幕流与节目流多路复用。
图13示出了图23和图25的关系。
返回到图24,在private_stream1_PES_payload()的private_stream_id后面的元素随着在private_payload()中存储的基本流的属性而变。在private_payload()中存储的基本流的属性由处于private_header()开头的private_stream_id决定。
当在private_payload()中存储的基本流是ATRAC音频流(private_stream_id==ATRAC)时,reserved_for_future_use(8个位)被描述为用于将来扩展。reserved_for_future_use的后面接着AU_locator(16个位)。AU_locator代表在紧接着AU_locator后面的位置的基础上、在private_payload()中存储的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音频流的采样频率。当LPCM音频流的采样频率是48kHz时,fs_flag是0。当LPCM音频流的采样频率是44.1kHz时,fs_flag是1。
ch_flag代表在private_payload()中存储的LPCM音频流的声道数。当LPCM音频流是单声道时,ch_flag是1。当LPCM音频流是立体声时,ch_flag是2。
AU_locator代表在紧接在AU_locator后面的位置的基础上、在private_payload()中存储的LPCM音频流的音频存取单元的开始位置。当private_payload()未存储音频存取单元时,例如,在AU_locator中描述0xFFFF。
当在private_payload()中存储的基本流是字幕流(private_stream_id==SUBTITLE)时,reserved_for_future_use(8个位)被描述成用于将来扩展。reserved_for_future_use的后面接着AU_locator(16个位)。AU_locator代表在紧接在AU_locator后面的位置的基础上、在private_payload()中存储的字幕流的字幕存取单元的开始位置。当private_payload()未存储字幕存取单元时,例如,在AU_locator中描述0xFFFF。
[private_stream2_PES_payload()的描述]
图26示出了private_stream2_PES_payload()的语法。
private_stream2_PES_payload()是private_stream_2的private_payload()的PES_packet_data_byte(图21A和图21B)的扩展,即,private_stream_2的PES_packet()的PES_packet_data_byte的扩展。private_stream2_PES_payload()描述用于对视频流解码的信息。
根据本实施例,private_stream_2的PES_packet()紧接在视频流的可开始解码点的后面。因此,根据本实施例,当从节目流中检测到private_stream_2的PES_packet()时,可以解码紧接在PES_packet()后面的视频流。
如图16所示的EP_map()的RPN_EP_start代表视频流的private_stream_2的PES_packet()的开始位置。
private_stream2_PES_payload()从用于将来扩展的reserved_for_future_use(8个位)开始。reserved_for_future_use的后面相继接着video_stream_id(8个位)、1stRef_picture(16个位)、2ndRef_picture(16个位)、3rdRef_picture(16个位)、4thRef_picture(16个位)、au_informa-tion()、以及VBI()。
video_stream_id描述与紧接在private_stream_2的PES_packet()后面的视频流的PES_packet()的stream_id相同的值。video_stream_id标识PES_packet(),PES_packet()存储利用在private_stream_2的PES_packet()的private_stream2_PES_payload()中存储的信息来解码的视频。
1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture分别代表包括第一、第二、第三和第四参考画面的最后pack()中的位置从由video_stream_id标识的视频流的private_stream_2的PES_packet()到下一个private_stream_2的PES_packet()的相对值。1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture的细节作为bytes_to_first_P_pic和bytes_to_second_P_pic而被公开在日本专利公布第HEI09-46712号(日本专利申请第HEI07-211420号)中。
au_information()描述有关从private_stream_2的PES_packet()到private_stream_2的PES_packet()的视频流的视频存取单元的信息。下面将参照图27详细描述au_information()。
VBI()用于描述有关封闭标题的信息。
具有private_stream2_PES_payload()的private_stream_2的PES_packet()被描述成用于每个视频流的可开始解码点。
图27示出了如图26所示的au_information()的语法。
au_information()从length(16个位)开始。length代表包括length大小的au_information()的大小。length后面相继接着reserved_for_word_alignment(8个位)和number_of_access_unit(8个位)。reserved_for_word_alignment用于字对齐。
number_of_access_unit代表从private_stream_2的PES_packet()到下一个private_stream_2的PES_packet()所存储的视频存取单元的数目。
换句话说,number_of_access_unit代表在图26所示的其private_stream2_PES_payload()中的video_stream_id相同的private_stream_2的PES_packet()中,从au_information()到下一个au_information(),即,当au_information()是它的最后一个au_information()时到剪辑流文件的结尾,在由video_stream_id表示的视频流中包含的存取单元(画面)的数目。
number_of_access_unit的后面接着根据number_of_access_unit的条件循环(for loop)的内容。换句话说,描述了有关从包括number_of_access_unit的private_stream_2的PES_packet()到下一个private_stream_2的PES_packet()的至少一个视频存取单元的信息。
在条件循环中的描述信息(有关视频存取单元的信息)如下。
条件循环包含pic_struct_copy(4个位)、au-ref_flag(1个位)、AU_length(21个位)和保留字段。
对于与MPEG4-AVC(ISO/IEC 14496-10)相对应的视频存取单元,pic_struct_copy描述在ISO/IEC 14496-10,D.2.2.中定义的pic_struct的副本。例如,pic_struct是表示将画面显示成一帧或在显示了画面的前场之后显示其后场的信息。
图28示出了pic_struct的表格。
pic_struct用作指示如何显示画面的显示模式指定信息。
在如图28所示的pic_struct的表格中,当画面指示显示一帧时,如列在图28所示的最左边值字段中那样,为画面的pic_struct设置0。类似地,当画面指示显示前场或后场时,分别为画面的pic_struct设置1或2。当画面指示相继显示前场和后场时,为画面的pic_struct设置3。当画面指示相继显示后场和前场时,为画面的pic_struct设置4。当画面指示相继显示前场、后场和前场时,为画面的pic_struct设置5。当画面指示相继显示后场、前场和后场时,为画面的pic_struct设置6。当画面指示重复显示一帧两次或三次时,分别为画面的pic_struct设置7或8。
au_ref_flag表示相应存取单元是否是解码另一个存取单元时参考的参考画面。当相应存取单元是参考画面时,au_ref_flag是1。当相应存取单元不是参考画面时,au_ref_flag是0。
AU_length代表用字节表示的相应存取单元的大小。
[在盘101上记录的数据的特例]
图29到图32示出了具有前述格式并已经被记录在图1所示的盘101上的数据的特例。
在图29到图32中,使用了根据MPEG2-Video的视频流和根据ATRAC的音频流。但是,用在本发明中的视频流和音频流不局限于这些流。换句话说,也可以使用根据MPEG2-Visual的视频流和根据MPEG2-AVC的视频流等。另一方面,也可以使用根据MPEG1/2/4音频的视频流和根据LPCM音频的视频流等。
与视频流和音频流不同,不可以连续解码并按相同间隔来显示字幕流。换句话说,将字幕流断断续续地从图2A和图2B所示的缓冲器控制模块215提供到字幕解码器控制模块218。字幕解码器控制模块218对字幕流解码。
图29到图32示出了在如图6所示的盘101上,在“CLIP”目录中存储三个剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”,并在“STREAM”目录中存储与三个剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”相对应的三个剪辑流文件“00001.PS”、“00002.PS”和“00003.PS”的情况下,“PLAYLIST.DAT”文件、三个剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”等的特例。但是,在图29到图32中,省略了诸如“PLAYLIST.DAT”文件等的一部分数据。
换句话说,图29示出了如图7所示的“PLAYLIST.DAT”文件的特例。
在图29中,number_of_PlayLists是2。因此,在“PLAYLIST.DAT”文件中存储的PlayList()的数目是2。在图29中,第一和第二PlayList()分别是PlayList#0和PlayList#1。
第一PlayList(),即,PlayList#0的capture_enable_flag_PlayList是1。因此,允许二次使用根据PlayList#0再现的视频数据。另一方面,PlayList#0的number_of_PlayItems是2。因此,在PlayList#0中包含的PlayItem()的数目是2。在图29中,在“PlayList#0”字段的下面描述了作为两个PlayItem()的PlayItem#0和PlayItem#1的特例。
在包含在PlayList#0中作为第一PlayItem()的PlayItem#0中,在图8中描述的Clip_Information_file_name是“00001.CLP”,IN_time是180090,OUT_time是27180090。因此,根据PlayList#0的PlayItem#0再现的剪辑是从与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”的时间180090到时间27180090。
在包含在PlayList#0中作为第二PlayItem()的PlayItem#1中,在图8中描述的Clip_Information_file_name是“00002.CLP”,IN_time是90000,OUT_time是27090000。因此,根据PlayList#0的PlayItem#1再现的剪辑是从与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”的时间90000到时间27090000。
在图29中,在作为第二PlayList()的PlayList#1中,capture_enable_flag_PlayList是0。因此,不允许二次使用根据PlayList#1再现的视频数据。在PlayList#1中,number_of_PlayItems是1。因此,在PlayList#1中包含的PlayItem()的数目是1。在图29中,在“PlayList#1”字段的下面描述了作为一个PlayItem()的PlayItem#0的特例。
在包含在PlayList#1中作为一个PlayItem()的PlayItem#0中,在图8中描述的Clip_Information_file_name是“00003.CLP”,IN_time是90000,OUT_time是81090000。因此,根据PlayList#1的PlayItem#0再现的剪辑是从与剪辑信息文件“00003.CLP”相对应的剪辑流文件“00003.PS”的时间90000到时间81090000。
接着,图30A和图30B示出了在图12中描述的剪辑信息文件Clip()的特例。换句话说,图30A和图30B示出了图6中所示的剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”的特例。
在剪辑信息文件“00001.CLP”中,presentation_start_time是90000,presentation_end_time是27990000。因此,在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”中存储的节目流可以使用310秒(27990000-90000/90kHz)的内容。
在剪辑信息文件“00001.CLP”中,capture_enable_flag_Clip是1。因此,允许二次使用与在对应于剪辑信息文件“00001.CLP”的剪辑流文件“00001.PS”中存储的节目流多路复用的视频流。
此外,在图30A和图30B中,在剪辑信息文件“00001.CLP”中,number_of_streams是4。因此,将四个基本流与在剪辑流文件“00001.PS”中存储的节目流多路复用。
假设四个基本流用stream#0、stream#1、stream#2和stream#3表示,在图30A和图30B中,在“00001.CLP”字段的下面描述了作为stream#0、stream#1、stream#2和stream#3的四个基本流的StreamInfo()(图12)的特例。
在剪辑流文件“00001.PS”的第一基本流stream#0中,stream_id是0xE0。因此,如图23和图25(或图13)所述,基本流stream#0是视频流。根据本实施例,private_stream_id不与视频流相关联。在图30A和图30B中,private_stream_id是0x00。
在作为剪辑流文件“00001.PS”的第一基本流的视频流stream#0中,在StreamInfo()中包含的StaticInfo()(图14)的picture_size是“720×480”,frame_rate是“29.97Hz”,而cc_flag是“Yes”。因此,视频流stream#0是具有720×480个像素和具有29.97Hz的帧周期的视频数据。另外,视频流stream#0包含封闭标题数据。
在作为剪辑流文件“00001.PS”的第一基本流的视频流stream#0中,StreamInfo()(图12)的number_of_DynamicInfo是0。不存在pts_change_point和DynamicInfo()的对。
在剪辑流文件“00001.PS”的第二基本流stream#1中,stream_id是0xBD,private_stream_id是0x00。因此,如图23和图25所述,基本流stream#1是ATRAC音频流。
在作为剪辑流文件“00001.PS”的第二基本流的ATRAC音频流stream#1中,在StreamInfo()中包含的StaticInfo()(图14)的audio_language_code是“Japanese”,channel_configuration是“STEREO”,lfe_existence是“NO”,sampling_frequency是“48kHz”。因此,ATRAC音频流stream#1是日语和立体声音频数据。另外,ATRAC音频流stream#1不包含低频效声道且采样频率是48kHz。
另外,在作为剪辑流文件“00001.PS”的第二基本流的ATRAC音频流stream#1中,由于StreamInfo()(图12)的number_of_DynamicInfo是0,所以不存在pts_change_point和DynamicInfo()对。
在剪辑流文件“00001.PS”的第三基本流stream#2中,stream_id是0xBD,private_stream_id是0x80。因此,如图23和图25所述,基本流stream#2是字幕流。
在作为剪辑流文件“00001.PS”的第三基本流的字幕流stream#2中,在StreamInfo()中包含的StaticInfo()(图14)的subtitle_language_code是“Japanese”,configurable_flag是1。因此,字幕流stream#2是日语字幕数据。另外,不允许改变这种显示模式。
在作为剪辑流文件“00001.PS”的第三基本流的字幕流stream#2中,由于StreamInfo()(图1 2)的number_of_DynamicInfo是0,所以不存在pts_change_point和DynamicInfo()的对。
在剪辑流文件“00001.PS”的第四基本流stream#3中,stream_id是0xBD,private_stream_id是0x81。因此,如图23和图25所述,基本流stream#3是字幕流。
为了将作为剪辑流文件“00001.PS”的第三基本流的字幕流stream#2与作为第四基本流的字幕流stream#3区分开,它们的private_stream_id分别是0x80和0x81。
在作为剪辑流文件“00001.PS”的第四基本流的字幕流stream#3中,包含在StreamInfo()中的StaticInfo()(图14)的subtitle_language_code是“Japanese”,configurable_flag是1。因此,字幕流stream#3是日语字幕数据。另外,允许改变字幕流stream#3的显示模式。
在作为剪辑流文件“00001.PS”的第四基本流的字幕流stream#3中,由于StreamInfo()(图12)的number_of_DynamicInfo是0,所以不存在pts_change_point和DynamicInfo()的对。
在图30A和图30B中,在剪辑信息文件“00002.CLP”中,presenta-tion_start_time是90000,而presentation_end_time是27090000。因此,在与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”中存储的节目流可以使用300秒(27090000-90000/90 kHz)的内容。
在剪辑信息文件“00002.CLP”中,capture_enable_flag_Clip是0。因此,不允许二次使用与在对应于剪辑信息文件“00002.CLP”的剪辑流文件“00002.PS”中存储的节目流多路复用的视频流。
在图30A和图30B中,在剪辑信息文件“00002.CLP”中,number_of_streams是4。因此,与前述剪辑信息文件“00001.CLP”一样,将四个基本流与存储在剪辑流文件“00002.PS”中的节目流多路复用。
假设四个基本流用stream#0、stream#1、stream#2和stream#3表示,在图30A和图30B中,在“00002.CLP”字段的下面描述了作为stream#0、stream#1、stream#2和stream#3的四个基本流的StreamInfo()(图12)的特例。
在图30A和图30B中,剪辑信息文件“00002.CLP”的第一到第四基本流,即,stream#0到#3的StreamInfo()的内容与剪辑信息文件“00001.CLP”的第一到第四基本流,即,stream#0到#3的那些相同。因此省略对它们的描述。
如上所述,剪辑流文件“00002.PS”的第一到第四基本流,即,stream#0到#3的StreamInfo()的内容与剪辑流文件“00001.PS”的第一到第四基本流,即,stream#0到#3的那些相同。因此,剪辑流文件“00002.PS”的第一基本流stream#0是视频流。第二基本流stream#1是ATRAC音频流。第三和第四基本流stream#2和stream#3是字幕流。
接着,在图30A和图30B中,在剪辑信息文件“00003.CLP”中,presenta-tion_start_time是90000,而presentation_end_time是81090000。因此,在与剪辑信息文件“00003.CLP”相对应的剪辑流文件“00003.PS”中存储的节目流可以使用900秒(81090000-90000/90kHz)的内容。
在剪辑信息文件“00003.CLP”中,capture_enable_flag_Clip是1。因此,允许二次使用与存储在对应于剪辑信息文件“00003.CLP”的剪辑流文件“00003.PS”中的节目流多路复用的视频流。
此外,在图30A和图30B中,在剪辑信息文件“00003.CLP”中,number_of_streams是3。因此,将三个基本流与存储在剪辑流文件“00003.PS”中的节目流多路复用。
假设三个基本流用stream#0、stream#1和stream#2表示,在图30A和图30B中,在“00003.CLP”字段的下面描述了作为stream#0、stream#1和stream#2的三个基本流的StreamInfo()(图12)的特例。
在剪辑流文件“00003.PS”的第一基本流stream#0中,stream_id是0xE0。因此,如图23和图25(或图1 3)所述,基本流stream#0是视频流。与剪辑流文件“00001.PS”的第一基本流stream#0一样,private_stream_id是0x00。
在作为剪辑流文件“00003.PS”的第一基本流的视频流stream#0中,在StreamInfo()中包含的StaticInfo()(图14)的picture_size是“720×480”,frame_rate是“29.97Hz”,cc_flag是“No”。因此,视频流stream#0是具有720×480个像素和29.97Hz的帧周期的视频数据。另外,视频流stream#0不包含封闭标题数据。
在作为剪辑流文件“00003.PS”的第一基本流的视频流stream#0中,StreamInfo()(图12)的number_of_DynamicInfo是2。因此,在StreamInfo()中描述了两组pts_change_point和DynamicInfo()。
在剪辑流文件“00003.PS”的第二基本流stream#1中,stream_id是0xE1。因此,如图23和图25(或图13)所述,因此,基本流stream#1是视频流。为了将作为剪辑流文件“00003.PS”的第一基本流的视频流stream#0与作为第二基本流的视频流stream#1区分开,它们的stream_id分别是0xE0和0xE1。与剪辑流文件“00001.PS”的第一基本流stream#0一样,private_stream_id是0x00。
在作为剪辑流文件“00003.PS”的第二基本流的视频流stream#1中,在StreamInfo()中包含的StaticInfo()(图14)的picture_size、frame_rate、和cc_flag与作为第一基本流的视频流stream#0的那些相同。因此,作为剪辑流文件“00003.PS”的第二基本流的视频流stream#1是具有“720×480”个像素和29.97Hz的帧周期的视频数据。视频流stream#1不包含封闭标题数据。
在作为剪辑流文件“00003.PS”的第二基本流的视频流stream#1中,由于StreamInfo()(图12)的number_of_DynamicInfo是0,所以不存在pts_change_point和DynamicInfo()的对。
在剪辑流文件“00003.PS”的第三基本流stream#2中,stream_id是0xBD,private_stream_id是0x00。因此,如图23和图25所述,基本流stream#2是ATRAC音频流。
在作为剪辑流文件“00003.PS”的第三基本流的ATRAC音频流stream#2中,在StreamInfo()中包含的StaticInfo()(图1 4)的audio_language_code、channel_configuration、lfe_existence和sampling_frequency与作为剪辑流文件“00001.PS”的第二基本流的ATRAC音频流stream#1的那些相同。因此,作为剪辑流文件“00003.PS”的第三基本流的ATRAC音频流stream#2是日语立体声音频数据。另外,ATRAC音频流stream#2不包含低频效声道。ATRAC音频流stream#2具有48kHz的采样频率。
在作为剪辑流文件“00003.PS”的第三基本流的ATRAC音频流stream#2中,StreamInfo()(图1 2)的number_of_DynamicInfo是3。因此,Stream-Info()描述三组pts_change_point和DynamicInfo()。
图31示出了在图12中描述的剪辑信息文件Clip()的EP_map()的特例。换句话说,图31示出了如图6所示的剪辑信息文件“00001.CLP”的、如图16所示的EP_map()的特例。
在图31中,在EP_map()中,number_of_stream_id_entries是1。因此,EP_map()描述一个基本流的可开始解码点的信息。
在如图31所示的EP_map()中,stream_id是0xE0。因此,如图23和图25所述,EP_map()描述作为RAPI(随机存取点信息),即,由等于0xE0的stream_id标识的视频流的可开始解码点的信息的PTS_EP_start和RPN_EP_start(图16)。换句话说,在图31中,EP_map()是剪辑信息文件“00001.CLP”。如图30A和图30B所述,在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”中,其stream_id是0xE0的基本流是剪辑流文件“00001.PS”的第一视频流stream#0。因此,在图31所示的EP_map()中描述的信息是视频流stream#0的可开始解码点的PTS_EP_start和RPN_EP_start。
在图31中,描述了剪辑信息文件“00001.CLP”的第一视频流stream#0的可开始解码点的前五个PTS_EP_start和RPN_EP_start,而第六和后面的PTS_EP_start和RPN_EP_start都省略了。
RPN_EP_start、PTS_EP_start、1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture代表与多路复用流多路复用的所有RAPI的开始位置和紧接在每个RAPI后面的内画面、以及接在内画面后面的第二、第三和第四参考画面的结束位置。
顶端RAPI的位置是0(扇区)。紧接在顶端RAPI后面的内画面的PTS是90,000。内画面、第二、第三、和第四参考画面的结束位置分别是作为相对于RAPI开头的扇区计数的28、37、48和58。
第二RAPI的位置是244(扇区)。紧接在第二RAPI后面的内画面的PTS是135,045。内画面、第二、第三、和第四参考画面的结束位置分别是作为相对于RAPI开头的扇区计数的10、18、25和31。
第三RAPI的位置是305(扇区)。紧接在第三RAPI后面的内画面的PTS是180,090。内画面、第二、第三、和第四参考画面的结束位置分别是作为相对于RAPI开头的扇区计数的25、44、50和54。
第四RAPI的位置是427(扇区)。紧接在第四RAPI后面的内画面的PTS是225,135。内画面、第二、第三、和第四参考画面的结束位置分别是作为相对于RAPI开头的扇区计数的8、15、22和29。
第五RAPI的位置是701(扇区)。紧接在第五RAPI后面的内画面的PTS是270,180。内画面、第二、第三、和第四参考画面的结束位置分别是作为相对于RAPI开头的扇区计数的26、32、41和4 8。
将与四个参考画面(1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture)的结束位置的预定扇区计数(可以在编码处理中集体读取的扇区计数)接近的值存储到N-th_Ref_picture_copy中。在图31中,选择与扇区计数“30”最接近的值。
例如,对于顶端入口(entry),PTS_EP_start=90000,RPN_EP_start=0。对于N-th_Ref_picture_copy,从28、37、48和58中选择与“30”最接近的28。因此,将代表1stRef_picture的“0”存储到index_N_minus1中。
接着,对于第二入口,PTS_EP_start=135,045,和RPN_EP_start=244。对于N-th_Ref_picture_copy,从10、18、25和31中选择与“30”最接近的31。因此,将代表4thRef_picture的“3”存储到index_N_minus1中。
因此,将(0,28)、(3,31)、(0,25)、(3,29)和(1,32)存储到在图31中示范的五个点入口的index_N_minus1和N-th_Ref_picture_copy中。
通过考虑再现装置的再现质量来总体决定这种选择算法。因此,在本实施例中,选择与相对小的扇区计数“30”最接近的值。取而代之,可以选择另一个扇区计数。当index_N_minus1的值小时,如果针对N-th_Ref_picture_copy的大小从RAPI的位置中读取数据,所包含的参考画面的数目也小。相反,当index_N_minus1的值大时,所包含的参考画面的数目也大。
在本例中,尽管用五个点的数据描述四个参考画面的结束位置,但根据视频编码方法或内画面的间隔,存在参考画面的数目变为四个或更少的可能性。在这样的情况下,可以描述最多四个参考画面的最大数目的参考画面的结束位置。
在如图31所示的EP_map()中,private_stream_id是0x00。当stream_id如上所述代表视频流时,不涉及private_stream_id。
图32示出了如图29所示的PlayList#0和PlayList#1(如图7所示的PlayList())的PlayListMark()的特例。
图32所示的上表代表PlayList#0(图9)的PlayListMark()。
在图32所示的上表中,PlayList#0的PlayListMark()的number_of_PlayList_marks是7。因此,在PlayList#0的PlayListMark()中包含的Mark()的数目是7。
在如图32所示的上表中,作为在PlayList#0中包含的七个Mark()中的第一Mark()的Mark#0的mark_type(图9)是“节”(Chapter)。因此,Mark#0是节标记。另外,由于ref_to_PlayItem_id(图9)是0,Mark#0属于如图29所示的两个PlayItem#0和PlayItem#1中的PlayItem#0。另外,Mark#0的mark_time_stamp是180,090。因此,Mark#0是根据在PlayList#0中包含的PlayItem#0再现的剪辑流文件的时间(再现时间)180,090的标记。Mark#0的entry_ES_stream_id和entry_ES_private_stream_id两者都是0。因此,Mark#0与任何基本流无关。另外,Mark#0的mark_data是1。因此,Mark#0代表编号是1的节。
根据在PlayList#0中包含的PlayItem#0再现的剪辑流文件是通过在PlayItem#0(图29)的Clip_Information_file_name中描述的“00001.CLP”来标识的剪辑流文件“00001.PS”。因此,Mark#0的mark_time_stamp所代表的时间180,090是剪辑流文件“00001.PS”的时间。
在如图32所示的上表中,作为在PlayList#0中包含的七个Mark()中的第五Mark()的Mark#4是与第一Mark#0相同的节标记。
换句话说,作为第五Mark()的Mark#4的mark_type(图9)是“节”。因此,Mark#4是节标记。另外,Mark#4的ref_to_PlayItem_id(图9)是1。因此,Mark#4属于在PlayList#0中包含的如图29所示的两个PlayItem#0和PlayItem#1中的PlayItem#1。Mark#4的mark_time_stamp是90,000。因此,Mark#4是根据在PlayList#0中包含的PlayItem#1再现的剪辑流文件的时间90,000的标记。另外,Mark#4的entry_ES_stream_id和entry_ES_private_stream_id两者都是0。因此,Mark#4与任何基本流无关。另外,Mark#4的mark_data是2。因此,Mark#4代表编号是2的节。
在本例中,根据在PlayList#0中包含的PlayItem#1再现的剪辑流文件是通过在如图29所述的PlayItem#1的Clip_Information_file_name中描述的“00002.CLP”标识的剪辑流文件“00002.PS”。因此,Mark#4的mark_time_stamp所代表的时间90,000是剪辑流文件“00002.PS”的时间。
在如图32所示的上表中,作为在PlayList#0中包含的七个Mark()中的第二Mark()的Mark#1的mark_type(图9)是“索引”(Index)。因此,Mark#1是索引标记。另外,mark#1的ref_to_PlayItem_id(图9)是0。因此,Mark#1属于在PlayList#0中包含的如图29所示的两个PlayItem#0和PlayItem#1中的PlayItem#0。另外,Mark#1的mark_time_stamp是5,580,090。因此,Mark#1是根据在PlayList#0中包含的PlayItem#0再现的剪辑流文件的时间5,580,090的标记。另外,Mark#1的entry_ES_stream_id和entry_ES_private_stream_id两者都是0。因此,Mark#1与任何基本流无关。另外,Mark#1的mark_data是1。因此,Mark#1代表编号是1的索引。
在本例中,根据在PlayList#0中包含的PlayItem#0再现的剪辑流文件是如上所述的剪辑流文件“00001.PS”。因此,Mark#1的mark_time_stamp所代表的时间5,580,090是剪辑流文件“00001.PS”的时间。
在如图32所示的上表中,作为在PlayList#0中包含的七个Mark()中的第三、第六、第七Mark()的Mark#2、Mark#5、和Mark#6是与第二Mark#1一样的索引标记。
在如图32所示的上表中,作为在PlayList#0中包含的七个Mark()中的第四Mark()的Mark#3的mark_type(图9)是“事件”(Event)。因此,Mark#3是事件标记。另外,mark#3的ref_to_PlayItem_id(图9)是0。因此,Mark#3属于在PlayList#0中包含的如图29所示的两个PlayItem#0和PlayItem#1中的PlayItem#0。另外,Mark#3的mark_time_stamp是16,380,090。因此,Mark#3是根据在PlayList#0中包含的PlayItem#0再现的剪辑流文件的时间16,380,090的标记。Mark#3的entry_ES_stream_id和entry_ES_private_stream_id都是0。因此,Mark#3与任何基本流无关。另外,Mark#3的mark_data是0。因此,Mark#3使得变元是0的事件发生。
如上所述,根据在PlayList#0中包含的PlayItem#0再现的剪辑流文件是剪辑流文件“00001.PS”。Mark#3的mark_time_stamp所代表的时间16,380,090是剪辑流文件“00001.PS”的时间。
在如图32所示的上表中,在Play-List#0的PlayListMark#0的表格的右侧的左边字段中描述Mark()所属的PlayItem()的时间。PlayItem()的时间也在表格的右侧的右边字段中描述。
图32所示的下表代表PlayList#1(图9)的PlayListMark()。
在图32所示的下表中,PlayList#1的PlayListMark()的number_of_PlayList_marks是3。因此,在PlayList#1的PlayListMark()中包含的Mark()的数目是3。
在如图32所示的下表中,作为在PlayList#1中包含的三个Mark()中的第一Mark()的Mark#0的mark_type(图9)是“节”。因此,Mark#0是节标记。另外,Mark()的ref_to_PlayItem_id(图9)是0,因此,Mark#0属于在PlayList#1中包含的如图29所示的一个PlayItem#0的PlayItem#0。Mark#0的mark_time_stamp是90,000。因此,Mark#0是根据在PlayList#1中包含的PlayItem#0再现的剪辑流文件的时间90,000的标记。Mark#0的entry_ES_stream_id和entry_ES_private_stream_id两者都是0。因此,Mark#0与任何基本流无关。另外,Mark#0的mark_data是0。因此,Mark#0代表编号是0的节。
根据在PlayList#1中包含的PlayItem#0再现的剪辑流文件是通过描述在如图29所示的PlayItem#0的Clip_Information_file_name中的“00003.CLP”标识的剪辑流文件“00003.PS”。因此,Mark#0的mark_time_stamp所代表的时间90,000是剪辑流文件“00003.PS”的时间。
在如图32所示的下表中,作为在PlayList#1中包含的三个Mark()中的第二Mark()的Mark#1的mark_type(图9)是“事件”。因此,Mark#1是事件标记。另外,mark#1的ref_to_PlayItem_id(图9)是0。因此,Mark#1属于在PlayList#0中包含的如图29所示的PlayItem#0。另外,Mark#1的mark_time_stamp是27,090,000。因此,Mark#1是根据在PlayList#1中包含的PlayItem#0再现的剪辑流文件的时间27,090,000的标记。另外,在Mark#1中,entry_ES_stream_id是0xE0,而entry_ES_private_stream_id是0。因此,Mark#1与其stream_id是0xE0的基本流相关联,即,Mark#1与如图23和图25所述的视频流相关联。另外,Mark#1的mark_data是1。因此,Mark#1使得属性是1的事件发生。
如上所述,根据在PlayList#1中包含的PlayItem#0再现的剪辑流文件是“00003.PS”。因此,Mark#1的mark_time_stamp所代表的时间27,090,000是剪辑流文件“00003.PS”的时间。
与Mark#1相关联的、其stream_id是0xE0的视频流是在Mark#1所属的PlayList#1(图29)中包含的PlayItem#0的Clip_Information_file_name中描述的“00003.CLP”所述的、其stream_id是0xE0的视频流,即,与图30A和30B所示的剪辑信息文件“00003.CLP”所标识的剪辑流文件“00003.PS”多路复用的三个基本流stream#0到#2中的第一基本流(视频流)stream#0。
在如图32所示的下表中,作为在PlayList#1中包含的三个Mark()中的第三Mark()的Mark#2的mark_type(图9)是“事件”。因此,Mark#2是事件标记。另外,mark#2的ref_to_PlayItem_id(图9)是0。因此,Mark#2属于在PlayList#1中包含的如图29所示的PlayItem之一的PlayItem#0。另外,Mark#2的mark_time_stamp是27,540,000。因此,Mark#2是根据在PlayList#1中包含的PlayItem#0再现的剪辑流文件的时间27,540,000的标记。另外,在Mark#2中,entry_ES_stream_id是0xE1,而entry_ES_private_stream_id是0。因此,Mark#2是stream_id是0xE1,即,与如图23和图25所述的视频流相关联的基本流。另外,Mark#2的mark_data是2。因此,Mark#2使得变元是2的事件发生。
在本例中,如上所述,根据在PlayList#1中包含的PlayItem#0再现的剪辑流文件是剪辑流文件“00003.PS”。因此,Mark#2的mark_time_stamp所代表的时间27,540,000是剪辑流文件“00003.PS”的时间。
与Mark#2相关联的、其stream_id是0xE1的视频流是在如图29所示的PlayList#1中包含的PlayItem#0的Clip_Information_file_name中描述的“00003.CLP”所述的、其stream_id是0xE1的视频流,即,与从图30A和30B所示的剪辑信息文件“00003.CLP”中识别的剪辑流文件“00003.PS”多路复用的三个基本流stream#0到#2中的第二基本流(视频流)stream#1。
在如图32所示的下表中,Mark()所属的PlayItem()的时间在PlayList#1的PlayListMark#0的表格的右侧上描述。
在图32中,尽管mark_data描述了节标记和索引标记所代表的节号和索引号,但无需用mark_data描述它们。取而代之,通过计数PlayListMark()的节标记和索引标记,可以识别节号和索引号。
[盘再现装置的操作的描述]
接着,在假设如图29到图32所述的数据已经被记录在如图1所示的盘101上的情况下描述如图1所示的盘再现装置的操作。
根据用于多路复用系统的MPEG2_System的定义,不必将时戳添加到所有存取单元。取而代之,这个定义表明:可以以0.7秒或更短的间隔添加时戳。换句话说,存在具有时戳的存取单元和不具有时戳的存取单元。
在本例中,假设在视频流的解码开始位置上的存取单元通常具有时戳。换句话说,如在“再现准备处理”中所述,通过二进制搜索方法检索满足条件(PTS_EP_start≤带有EP_map()的IN_time)的最大PTS_EP_start,作为解码开始位置。紧接在EP_map()中寄存的视频的再现开始位置之后的存取单元通常具有时戳。
另外,该定义表明存在非配对字段。换句话说,紧接在pic_struct=1的存取单元之后,放置pic_struct=2的存取单元。另外,紧接在pic_struct=2的存取单元之后,放置pic_struct=1的存取单元。
在本例中,假设不会出现pic_struct=7和8的存取单元。
当将盘101装入盘驱动器102中时,将相应消息通过驱动器接口114和如图2A和2B所示的操作系统201而发送到视频内容再现程序210。当视频内容再现程序210从操作系统201接收到表示盘101已被装入盘驱动器102中的消息时,视频内容再现程序210开始如图33所示的预再现处理。
[预再现处理]
图33是描述视频内容再现程序210执行的预再现处理的流程图。
应该注意到,盘再现装置无需按流程图的时间顺序执行操作或处理。可替代地,盘再现装置可以并行地或分立地执行操作或处理。但是,在本说明书中,为了方便起见,根据该流程图描述盘再现装置的操作或处理。
在预再现处理中,在步骤S101,视频内容再现程序210利用操作系统201的文件系统功能来检查盘101,并且确定盘101是否是用于视频内容再现程序210的正常盘。
如上所述,尽管利用操作系统201的文件系统功能来存取盘101(从中读取文件),但省略对它的描述。
当步骤S101中的确定结果表示盘101不是正常盘,即,用在盘101中的文件系统与操作系统201不相符或盘101的根目录不包含“VIDEO”目录时,视频内容再现程序210确定视频内容再现程序210与盘101不相符,流程转到步骤S102。在步骤S102中,图形处理模块219执行错误处理并结束预再现处理。
换句话说,作为错误处理,图形处理模块219生成表示盘101不正常的错误消息,并且使视频输出模块220输出错误消息,以便显示错误消息。例如,错误处理可以通过从音频输出模块221输出警告声或从盘驱动器102中卸下盘101来完成。
当步骤S101中的确定结果表示盘101是正常盘时,流程转到步骤S103。在步骤S103中,视频内容再现程序210使得内容数据提供模块213请求操作系统201读取在盘101(图6)的“VIDEO”目录中存储的两个数据文件,即,“SCRIPT.DAT”和“PLAYLIST.DAT”。此后,流程转到步骤S104。在步骤S104中,将“SCRIPT.DAT”提供给脚本控制模块211。另外,将“PLAYLIST.DAT”文件提供给播放器控制模块212。
此后,流程从步骤S104转到步骤S105到S107。在步骤S105到S107中,播放器控制模块212执行初始化处理。脚本控制模块211一直等待,直到播放器控制模块212已完成初始化处理。
[播放器控制模块212的初始化处理]
在初始化处理中,在步骤S105中,播放器控制模块212分析“PLAYLIST.DAT”文件,并且检查在“PLAYLIST.DAT文件中描述的剪辑信息文件的数目和它们的文件名。
换句话说,由于“PLAYLIST.DAT”文件如图29所示,并且图29所示的“PLAYLIST.DAT”文件的number_of_PlayLists是2,所以播放器控制模块212识别出存在两个PlayList(),即PlayList#0和PlayList#1。另外,由于图29所示的“PLAYLIST.DAT”文件的第一PlayList#0的number_of_PlayItems是2,所以播放器控制模块212识别出PlayList#0包含两个PlayItem(),即PlayItem#0和PlayItem#1。此后,播放器控制模块212参考图29所示的“PLAYLIST.DAT”文件的PlayList#0中包含的第一PlayItem#0和第二PlayItem#1的Clip_Information_file_name,并且识别出在PlayList#0中包含的第一PlayItem#0的剪辑信息文件是“00001.CLP”,并且第二PlayItem#1的剪辑信息文件是“00002.CLP”。
类似地,因为number_of_PlayItems是1,所以播放器控制模块212识别出第二PlayList#1包含一个PlayItem()(PlayItem#0),并且,由于PlayItem#0的Clip_Information_file_name,播放器控制模块212识别出PlayItem#0的剪辑信息文件是“00003.CLP”。
此后,流程从步骤S105转到步骤S106。在步骤S106中,播放器控制模块212从盘101的“VIDEO”目录下的“CLIP”目录中读取在步骤S105中识别出的剪辑信息文件,即,三个剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”。
在步骤S106中,只需读取首先再现的PlayList()的PlayItem的剪辑信息文件。但是,根据本实施例,如上所述,预先读取PlayList()的PlayItem()的所有剪辑信息文件。
在步骤S106之后,流程转到步骤S107。在步骤S107中,播放器控制模块212确定是否已成功读取在步骤S105中识别的剪辑信息文件。另外,播放器控制模块212确定在盘101上是否存在与剪辑信息文件相对应的剪辑流文件。换句话说,在步骤S107中,播放器控制模块212确定是否已成功读取剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”,以及在盘101的“VIDEO”目录下的“STREAM”目录中是否存在与剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”相对应的剪辑流文件“00001.PS”、“00002.PS”和“00003.PS”。
当步骤S107中的确定结果表示未成功读取在步骤S105中识别的剪辑信息文件或在盘101上不存在与剪辑信息文件相对应的剪辑流文件,即,根据“PLAYLIST.DAT”的剪辑信息文件和剪辑流文件未被记录在盘101上时,确定视频内容再现程序210与盘101不相符。此后,流程转到步骤S102。在步骤S102中,执行前述错误处理,然后结束预再现处理。
相反,当步骤S107中的确定结果表示已成功读取在步骤S105中识别的剪辑信息文件并且盘101上存在与剪辑信息文件相对应的剪辑流文件时,播放器控制模块212完成初始化处理。此后,流程转到步骤S108。
在步骤S108中,脚本控制模块211解析和执行“SCRIPT.DAT”文件。
当脚本控制模块211执行“SCRIPT.DAT”文件时,假设使得播放器控制模块212再现第一PlayList()(PlayList#0)。此时,执行如图34所示的再现处理。
[再现处理]
图34是视频内容再现程序210执行的再现处理的流程图。
[再现准备处理]
在步骤S121和S122中,播放器控制模块212为脚本控制模块211已使得再现的PlayList(),即第一PlayList()(PlayList#0)执行再现准备处理。
换句话说,在步骤S121中,播放器控制模块212检查在第一PlayList#0中包含的第一PlayItem#0的IN_time(图8)。此后,流程转到步骤S122。在步骤S122中,播放器控制模块212检查与通过在第一PlayList#0中包含的第一PlayItem#0再现的剪辑流文件“00001.PS”的PlayItem#0的IN_time相对应的再现开始位置。
当PlayItem()的IN_time(图8)代表剪辑流文件的开头时,从剪辑流文件的开头开始读取节目流。但是,当IN_time不代表剪辑流文件的开头时,播放器控制模块212需要检测与IN_time相对应的位置,并从该位置读取剪辑流文件。
具体地说,在图29中,在第一PlayList#0中包含的第一PlayItem#0的IN_time是180,090,播放器控制模块212从通过在第一PlayList#0中包含的第一PlayItem#0再现的剪辑流文件“00001.PS”的、如图31所示的EP_map()中搜索其中PlayItem#0的IN_time是180,090的再现开始位置。
换句话说,播放器控制模块212通过二进制搜索方法等搜索满足PTS_EP_start=IN_time的最大PTS_EP_start,其中,PTS_EP_start代表在EP_map()中描述的可开始解码点。这是因为IN_time所代表的位置通常不是可开始解码点。
在这种情况下,如上所述,IN_time是180,090。另外,在通过在第一PlayList#0中包含的第一PlayItem#0再现的剪辑流文件“00001.PS”的、如图31所示的EP_map()中,满足PTS_EP_start=IN_time的PTS_EP_start的最大值是180,090。因此,播放器控制模块212从如图31所示的EP_map()中搜索等于180,090的PTS_EP_start。
另外,播放器控制模块212读取为PTS_EP_start搜索的305(扇区),并且决定剪辑流文件“00001.PS”中PTS_EP_start所代表的位置作为再现开始位置。
在播放器控制模块212决定了再现开始位置之后,流程从步骤S122转到步骤S123。在步骤S123中,播放器控制模块212控制图形处理模块219显示时间码。图形处理模块219在播放器控制模块212的控制下生成时间码,并且将时间码输出到视频输出模块220。由此,显示时间码。
例如,在步骤S123中显示的时间码是将PlayList()的开头转换成00:00:00(时:分:秒)的值。除了时间码之外,或取代时间码,可以显示节号和索引号。
[PlayListMark()的分析处理]
在步骤S123中显示出时间码之后,流程转到步骤S124。在步骤S124中,播放器控制模块212执行分析处理,其分析脚本控制模块211已使得再现的PlayList(),即,在第一PlayList()(PlayList#0)中描述的PlayListMark()(图9)。
具体地说,在图32所示的上表中,已预先读取的“PLAYLIST.DAT”文件的第一PlayList#0的PlayListMark()的number_of_PlayList_marks是7。因此,播放器控制模块212识别出在PlayList#0中包含的Mark()的数目是7。
另外,播放器控制模块212分析如图32所示的上表的7个Mark(),并且识别出7个Mark()中的第一到第四Mark()这四个Mark()属于PlayList#0的第一PlayItem()(PlayItem#0)。
此后,播放器控制模块212获取属于PlayList#0的第一PlayItem#0的4个Mark()的mark_time_stamp,并且将它们作为四元矩阵而提供给解码控制模块214。因此,将作为图32所示的上表中的7个Mark()中的第一到第四Mark()这四个Mark()的mark_time_stamp的四个时间{180090}、{5580090}、{10980090}和{16380090}从播放器控制模块212提供到解码控制模块214。此时,还将这些时间的“标记处理”属性从播放器控制模块212提供到解码控制模块214。当由时间计数部分214A计数的时间与具有“标记处理”属性的时间匹配时,解码控制模块214将表示此状况的消息、与具有“标记处理”属性的时间匹配的时间、以及“标记处理”属性提供给播放器控制模块212。
[要再现的基本流的决定处理]
此后,流程从步骤S124转到步骤S125。在步骤S125中,播放器控制模块212决定要再现的基本流。
换句话说,在如图30A和30B所示的、其文件名被描述在作为脚本控制模块211已使得再现的PlayList()的第一PlayList#0的第一PlayItem#0(图29)的Clip_Information_file_name中的剪辑信息文件“00001.CLP”中,number_of_streams是4。因此,播放器控制模块212识别出四个基本流已与相应剪辑流文件“00001.PS”多路复用。另外,播放器控制模块检查四个基本流的、如图30A和30B所示的剪辑流文件“00001.PS”的StaticInfo()的stream_id和private_stream_id,并且识别出四个基本流是一个视频流、一个ATRAC音频流、以及两个字幕流。换句话说,播放器控制模块212识别出与剪辑流文件“00001.PS”多路复用的、具有各自属性的基本流的数目。
有关与剪辑流文件多路复用的、具有各自属性的基本流的数目的信息被用于将一个基本流改变为要再现的另一个基本流(从一种音频模式到另一种音频模式或从一种字幕模式到另一种字幕模式)。当剪辑流文件不包含字幕流文件(即,内容不包括字幕数据)时,利用与具有“字幕流”属性的基本流的数目有关的信息来确定是否存在字幕流。
播放器控制模块212根据StaticInfo()的检查结果选择和决定要再现的基本流。在这种情况下,与剪辑流文件“00001.PS”多路复用的四个基本流包含具有“视频流”属性的一个基本流和具有“音频流”属性的一个基本流。因此,无条件地将具有“视频流”属性的基本流和具有“音频流”属性的基本流确定为要再现的基本流。
另一方面,与剪辑流文件“00001.PS”多路复用的四个基本流包含具有“字幕流”属性的两个基本流。因此,将这两个字幕流之一选择和决定为要再现的基本流。在本例中,选择两个字幕流当中首先出现在剪辑流文件“00001.PS”中的字幕流。
当识别出与剪辑流文件“00001.PS”多路复用的基本流的属性和数目时,需要标识四个基本流。播放器控制模块212利用stream_id和private_stream_id标识与剪辑流文件“00001.PS”多路复用的四个基本流。
换句话说,播放器控制模块212利用如在图30A和图30B所示的剪辑流文件“00001.PS”中描述的等于0xE0的stream_id,从与剪辑流文件“00001.PS”多路复用的四个基本流中标识具有“视频流”属性的基本流。
另外,播放器控制模块212利用如在图30A和图30B所示的剪辑流文件“00001.PS”中描述的等于0xE0的stream_id和等于0x00的private_stream_id,从与剪辑流文件“00001.PS”多路复用的四个基本流中标识作为具有“音频流”属性的基本流的ATRAC音频流。
另外,播放器控制模块212分别利用如在图30A和图30B所示的剪辑流文件“00001.PS”中描述的等于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_System的多路复用的机制。当将stream_id和private_stream_id的组合用作元数据时,可以安全地标识基本流。另外,当为了相应基本流的数量增加和属性而扩展private_stream_id时,可以不作任何改变地使用当前机制。因此,stream_id和private_stream_id的组合具有高可扩充性。
换句话说,例如,蓝光盘(BD)标准使用MPEG2标准的传输流的PID(分组ID)来标识数据。因此,BD标准受MPEG2标准限制。另一方面,DVD-Video标准定义了类似private_stream_id的sub_stream_id。但是,不能在数据库中描述sub_stream_id以标识流。仅仅在8到32流(参见VI4-49,表4.2.1-2(VTS_AST_ATRT)和VI4-52,表4.2.1-3(VTS_SPST_ATRT))的信息的固定区域中描述sub_stream_id。因此,sub_stream_id不具有高可扩充性。
另一方面,可以利用元数据描述stream_id和private_stream_id的组合。例如,在如图12所示的剪辑信息文件Clip()中,stream_id和private_stream_id的组合可以被描述为由number_of_streams所代表的次数。因此,可以通过作为在剪辑信息文件Clip()中描述的元数据的stream_id和private_stream_id的组合来标识与剪辑流文件多路复用的基本流,而与基本流的数目(在number_of_streams所代表的范围中)无关。
根据本实施例,stream_id和private_stream_id的组合用于标识与对应于图12所示的剪辑信息文件的剪辑流文件多路复用的基本流。另外,这个组合可以用于标识与作为如图9所示的PlayListMark()的entry_ES_stream_id和entry_ES_private_stream_id的组合的Mark()相关联的基本流。另外,stream_id和private_stream_id的组合用于标识描述图16所示的EP_map()中的可开始解码点的信息的基本流。
[输出属性控制处理]
此后,流程从步骤S125转到步骤S126。在步骤S126中,播放器控制模块212对在步骤S125中决定再现的基本流执行输出属性控制处理。
具体地说,播放器控制模块212检查number_of_DynamicInfo(图12),其代表描述在步骤S125中决定再现的视频流、ATRAC音频流和字幕流的输出属性的DynamicInfo()的数目。
在这种情况下,要再现的视频流、ATRAC音频流和字幕流是与剪辑流文件“00001.PS”多路复用的基本流。在如图30A和图30B所示的剪辑信息文件“00001.CLP”中,它们的number_of_DynamicInfo都是0。当number_of_DynamicInfo都是0时,播放器控制模块212不对要再现的基本流的输出属性执行输出属性控制处理。
当要再现的基本流的number_of_DynamicInfo不是0时,执行基本流的输出属性控制处理。后面将描述输出属性控制处理。
[再现开始准备处理]
在步骤S126之后,流程转到步骤S127。在步骤S127中,播放器控制模块212对要再现的基本流执行再现开始准备处理。
换句话说,播放器控制模块212将要再现的基本流已与之多路复用的剪辑流文件“00001.PS”的文件名和作为在步骤S122中决定的再现开始位置而在EP_map()中描述的RPN_EP_start(=305)提供给内容数据提供模块213。
另外,播放器控制模块212在向缓冲器控制模块215提供在要再现的基本流已与之多路复用的剪辑流文件“00001.PS”中存储的节目流之前初始化缓冲器控制模块215。
具体地说,缓冲器控制模块215(图5)将相同的值设置到在数据开始指针存储部分231中存储的数据开始指针、在数据写入指针存储部分232中存储的数据写入指针、在视频读取指针存储部分241中存储的视频读取指针、在音频读取指针存储部分251中存储的音频读取指针、和在字幕读取指针存储部分262中存储的字幕读取指针。
因此,在数据开始指针存储部分231中存储的数据开始指针和在数据写入指针存储部分232中存储的数据写入指针拥有缓冲器控制模块215的缓冲器215A的相同位置。这表示在缓冲器215A中没有存储有效数据。
另外,播放器控制模块212向缓冲器控制模块215提供stream_id和(必要时)private_stream_id,作为要再现的基本流的标识信息。
换句话说,如上所述,由等于0xE0的stream_id来标识要再现的基本流中具有“视频流”属性的视频流。由等于0xBD的stream_id和等于0x00的private_stream_id来标识具有“音频流”属性的ATRAC音频流。由等于0xBD的stream_id和等于0x80的pri-vate_stream_id来标识具有“字幕流”属性的字幕流。播放器控制模块213将这些stream_id和private_stream_id提供给缓冲器控制模块215。
在缓冲器控制模块215(图5)中,视频读取功能部分233将从播放器控制模块212接收的、视频流的等于0xE0的stream_id存储到stream_id寄存器242中。另外,音频读取功能部分234将从播放器控制模块212接收的、等于0xBD的stream_id和等于0x00的private_stream_id分别存储到stream_id寄存器252和private_stream_id寄存器253中。另外,字幕读取功能部分235将从播放器控制模块212接收的、等于0xBD的stream_id和等于0x80的private_stream_id分别存储到stream_id寄存器263和pri-vate_stream_id寄存器264中。
播放器控制模块212存储用于要再现的基本流的、被提供给缓冲器控制模块215的stream_id和private_stream_id,供以后处理用。当出现流改变请求消息或标识正在标记处理(后面将描述)中再现的流时,播放器控制模块212使用stream_id和private_stream_id。
为了初始化缓冲器控制模块215(图5),播放器控制模块212将具有基于与要再现的基本流多路复用的剪辑流文件的值的字幕读取功能标志设置到字幕读取功能标志存储部分261。
换句话说,在这种情况下,由于要再现的基本流已与之多路复用的剪辑流文件“00001.PS”包含字幕流,将其值是1的字幕读取功能标志设置到字幕读取功能标志存储部分261,以便激活字幕读取功能部分235。当要再现的基本流已与之多路复用的剪辑流文件不包含字幕流时,将其值是0的字幕读取功能标志设置到字幕读取功能标志存储部分261。在这种情况下,字幕读取功能部分235不进行任何处理。
另外,播放器控制模块212将在脚本控制模块211已使得播放器控制模块212再现的第一PlayList#0中所包含的第一PlayItem#0(图29)的、等于180,090的IN_time和等于27,180,090的OUT_time提供给解码控制模块214。解码控制模块214使用IN_time来开始对根据PlayItem()再现的剪辑进行解码,并使用OUT_time来停止对剪辑解码并控制如后所述的PlayItem改变处理。
播放器控制模块212初始化图形处理模块219显示字幕流的字幕流显示模式。换句话说,播放器控制模块212控制图形处理模块219以默认显示模式来显示字幕流。
[读取数据的开始]
此后,流程从步骤S127转到步骤S128。播放器控制模块212利用操作系统201的功能,控制内容数据提供模块213读取包含要再现的基本流已与之多路复用的节目流的剪辑流文件。换句话说,内容数据提供模块213指定盘101(图6)的“VIDEO”目录下的“STREAM”目录的剪辑流文件“00001.PS”,指定已在步骤S122中决定的作为再现开始位置的扇区305,并使操作系统201读取文件。内容数据提供模块213使操作系统201将从盘101中读取的数据提供给缓冲器控制模块215。
因此,从盘101中读取剪辑流文件“00001.PS”的节目流。将节目流提供给缓冲器控制模块215。
缓冲器控制模块215(图5)将从盘101中读取的节目流写入缓冲器215A的数据写入由指针存储部分232的数据写入指针所代表的位置中,并且将数据写入指针增加写入数据的大小。
除非另有说明,当缓冲器控制模块215的缓冲器215A具有空闲空间时,内容数据提供模块213从盘101中读取数据,将数据提供和存储到缓冲器控制模块215的缓冲器215A中。因此,缓冲器215A通常存储足够数量的数据。
[控制解码器的开始]
当从盘101中读取数据和将数据存储到缓冲器控制模块215的缓冲器215A中时,流程从步骤S128转到步骤S129。在步骤S129中,解码控制模块214控制视频解码器控制模块216、音频解码器控制模块217、和字幕解码器控制模块218,以开始从缓冲器215A中读取数据,作为预解码操作。
因此,视频解码器控制模块216向缓冲器控制模块215(图5)的视频读取功能部分233请求数据。视频解码器控制模块216根据请求,从缓冲器控制模块215中获取在缓冲器215A中存储的一个视频存取单元、被添加到视频存取单元的PTS和DTS(有时称为时戳)、以及作为在紧接在可开始解码点后面的private_stream_2的PES_packet()中描述的信息(有时称为附加信息)的pic_struct_copy、au_ref_flag和AU_length等。每当视频解码器控制模块216获取视频存取单元时,就将时戳从视频解码器控制模块216提供到解码控制模块214。
用于更新时间的pic_struct_copy是从视频读取功能部分233发送的。取而代之,可以使用在作为解析结果而获得的位流中包含的pic_struct。
另一方面,音频解码器控制模块217向缓冲器控制模块215(图5)的音频读取功能部分234请求数据。音频解码器控制模块217根据请求,从缓冲器控制模块215中获取在缓冲器215A中存储的一个(ATRAC)音频存取单元、和被添加到音频存取单元中的时戳(PTS,DTS)。每当音频解码器控制模块217获取音频存取单元时,就将时戳从音频解码器控制模块217提供到解码控制模块214。
另外,字幕解码器控制模块218向缓冲器控制模块215(图5)的字幕读取功能部分235请求数据。字幕解码器控制模块218根据请求,从缓冲器控制模块215中获取在缓冲器215A中存储的一个字幕存取单元、和被添加到字幕存取单元中的时戳。每当字幕解码器控制模块218获取字幕存取单元时,就将时戳从字幕解码器控制模块218提供到解码控制模块214。当要再现的基本流不包含字幕流或缓冲器215A未存储字幕存取单元时,不将数据从缓冲器控制模块215提供到字幕解码器控制模块218。
每当视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218向缓冲器控制模块215请求数据时,它们将基于它们的数据请求的结果发送到解码控制模块214。
当缓冲器控制模块215将数据发送到视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218时从缓冲器215A中读取的数据的细节将在后面描述。
[解码数据的开始]
当视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218开始从缓冲器控制模块215的缓冲器215A中读取数据时,流程从步骤S129转到步骤S130。在步骤S130,这些模块开始解码已经读取的数据。
换句话说,解码控制模块214根据在步骤S129中视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218提供的时戳,并且在必要时,在用来保证同步的改变定时处,使视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218开始与在步骤S127中从播放器控制模块212提供的、在PlayList#0中包含的第一PlayItem#0的、等于180090的IN_time相对应的解码。
例如,在日本专利第3496725号中描述在保证同步的改变定时处开始解码数据的方法。简而言之,将视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218提供的时戳的最小值设置成时间计数部分214A计数的时间的初始值。时间计数部分214A从这个设置时间开始计数时间。当时间计数部分214A计数的时间与时戳匹配时,解码控制模块214使这些模块开始解码数据。
视频解码器控制模块216接收来自解码控制模块214的解码开始命令,将从缓冲器控制模块215(图5)的视频读取功能部分233中获得的一个视频存取单元提供给视频解码器116(图1),并且使视频解码器116解码该视频存取单元。另外,视频解码器控制模块216将由视频解码器116解码的视频数据提供给图形处理模块219。
此后,视频解码器控制模块216使视频解码器116每次一个地依次解码从缓冲器控制模块215的视频读取功能部分233中获得的视频存取单元,并且将解码的视频存取单元作为视频数据提供给图形处理模块219。
此时,在视频解码器116中,对解码的视频数据和输出的视频数据重新排序。例如,如图35所示,按I1、B0、P3、B2、P5和B4的顺序解码视频数据,而可以按B0、I1、B2、P3、B4和P5的顺序输出视频数据。因此,视频解码器116配有存储解码画面的解码画面缓冲器。在图35中,In代表第n个I画面,Bn代表第n个B画面,而Pn代表第n个P画面。
音频解码器控制模块217接收来自解码控制模块214的解码开始命令,将从缓冲器控制模块215(图5)的音频读取功能部分234中获得的一个音频存取单元提供给音频解码器117(图1),并且使音频解码器117解码该音频存取单元。音频解码器控制模块217将由音频解码器117解码的音频数据提供给音频输出模块221。
此后,音频解码器控制模块217使音频解码器116每次一个地依次解码从缓冲器控制模块215的音频读取功能部分234中获得的音频存取单元,并且将解码的音频存取单元作为音频数据提供给音频输出模块221。
另外,字幕解码器控制模块218接收来自解码控制模块214的解码开始命令,根据命令使内部字幕解码软件解码从缓冲器控制模块215(图5)的字幕读取功能部分235中获得的一个字幕存取单元,并且将解码的字幕存取单元作为字幕数据(字幕的图像数据)提供给图形处理模块219。
此后,字幕解码器控制模块218使内部字幕解码软件每次一个地依次解码从缓冲器控制模块215的字幕读取功能部分235中获得的字幕存取单元,并且将解码的字幕存取单元作为字幕数据而提供给图形处理模块219。
[图形处理]
此后,流程从步骤S130转到步骤S131。在步骤S131中,图形处理模块219对从视频解码器控制模块216提供的视频数据,并(在必要时)对从字幕解码器控制模块218提供的字幕数据进行图形处理。
换句话说,例如,图形处理模块219根据从播放器控制模块212接收的显示模式命令,进行放大或缩小从字幕解码器控制模块218提供的字幕数据的字幕处理。当图形处理模块219未从播放器控制模块212接收到显示模式命令或从其接收到默认显示模式命令时,图形处理模块219存储从字幕解码器控制模块218接收的字幕数据。
另外,图形处理模块219将从视频解码器控制模块216接收的视频数据和从字幕解码器控制模块218接收的字幕数据或已经过处理的字幕数据相加,获取已经叠加了字幕数据的输出视频数据,并且将叠加视频数据提供给视频输出模块220。
当图形处理模块219从脚本控制模块211或播放器控制模块212接收到菜单、消息、时间码、节号、或索引号的信息显示命令时,图形处理模块219生成信息,将它与输出的视频数据叠加,并且将叠加数据提供给视频输出模块220。
[输出处理]
在步骤S131之后,流程转到步骤S132。在步骤S132之后,视频输出模块220将图形处理模块219提供的输出视频数据依次存储到FIFO 220A中,并且以预定输出速率依次输出在FIFO220A中存储的视频数据。
只要FIFO220A具有足够的存储容量(空闲空间),视频输出模块220就从图形处理模块219接收输出视频数据。当FIFO220A没有足够的存储容量时,视频输出模块220使图形处理模块219停止接收输出视频数据。因此,图形处理模块219停止接收输出数据。另外,图形处理模块219使视频解码器控制模块216和字幕解码器控制模块218停止它们的处理。因此,视频解码器控制模块216和字幕解码器控制模块218停止它们的处理。
在视频输出模块220已使图形处理模块219停止接收输出视频数据并且FIFO220A具有输出视频数据之后,当FIFO220A具有足够的存储容量时,视频输出模块220使图形处理模块220接收输出视频数据。与输出视频数据接收停止请求一样,图形处理模块219将这个请求通知给视频解码器控制模块216和字幕解码器控制模块218。因此,图形处理模块219、视频解码器控制模块216和字幕解码器控制模块218恢复停止的处理。
另一方面,音频输出模块221也使FIFO221A依次存储在步骤S130中描述的、从音频解码器控制模块217提供的音频数据,并且以预定输出速率(采样频率)依次输出音频数据。
只要FIFO220A具有足够的存储容量(空闲空间),音频输出模块221就从音频解码器控制模块217接收音频数据。但是,当FIFO220A没有足够的存储容量时,音频输出模块221使音频解码器控制模块217停止接收音频数据。因此,音频解码器控制模块217停止它的处理。
在音频输出模块221已使音频解码器控制模块217停止接收音频数据并且FIFO220A具有输出音频数据之后,当FIFO220A具有足够的存储容量时,音频输出模块221使音频解码器控制模块217接收音频数据。因此,音频解码器控制模块217恢复停止的处理。
以前述的方式,随着视频输出模块220和音频输出模块221输出数据,基本流被解码。
图36示出了视频解码器116的内部结构。在本例中,视频解码器116由视频解码引擎116A和DPB(解码画面缓冲器)116B构成。DPB116B还由DPB116B-1到DPB116B-2(在下文中,除非另有说明,将它们统称为DPB116B)构成。另外,如图37所示,DPB116B由视频缓冲器301和附加信息缓冲器302构成。
视频解码引擎116A使用DPB116B的视频缓冲器301来临时存储解码的视频数据和存储作为将来的参考画面的视频数据。此时,将从视频读取功能部分233中获得的附加信息和通过解析存取单元而获得的参数(例如,pic_struct)与在视频缓冲器301中存储的视频数据相对应地记录在附加信息缓冲器302中。
尽管在图33和图34中示出了如图1所示的盘再现装置从盘101中再现数据的所有处理和它们的流程,但这里将描述盘再现装置在从盘101中再现数据的同时执行的其它处理或操作。
[将时间信息发送到解码控制模块214]
接着,描述时钟(时间计数部分214A)的更新。视频解码器控制模块216使视频解码器116解码输入的视频存取单元。在视频解码器116已执行了解码和重新排序处理之后,将一个帧(两个场)的视频数据输出到图形处理模块219。另外,将视频数据的时戳(PTS/DTS)和pic_struct信息从视频解码器控制模块216发送到解码控制模块214。
如果存取单元的pic_struct是1或2,则存取单元是一个场。因此,当输出两个存取单元时,将前场的pic_struct和时戳(如果前场的存取单元具有时戳)从视频解码器控制模块216发送到解码控制模块214,以便将两个存取单元当作一个来管理。如果前场没有时戳,则将表示前场没有时戳的信息发送到解码控制模块214。由于不允许分离场,紧接在pic_struct是1或2的场之后,分别放置pic_struct是2或1的场。当将两个存取单元当作一个来管理时,将前场的时戳用作代表值。
如果存取单元的pic_struct是0、3、4、5或6,那么,当输出一个存取单元时,将pic_struct和时戳(如果存取单元具有时戳)从视频解码器控制模块216发送到解码控制模块214。如果存取单元没有时戳,则将表示存取单元没有时戳的信息发送到解码控制模块214。
解码控制模块214利用接收的时戳和pic_struct的信息来更新时间计数部分214A。
接着参照如图38所示的流程图,描述更新时间计数部分214A的方法。
解码控制模块214确定所接收的存取单元是否具有时戳(在步骤S141)。如果存取单元具有时戳,则解码控制模块214为时间计数部分214A设置时戳(PTS)的值(在步骤S142中)。如上所述,紧接在对存取单元的解码处理开始之后,由于通常具有时戳,所以在初始状态下不会出现任何异常。如果存取单元没有时戳,则将基于前一个pic_struct的值加到当前时间上(在步骤S144)。此后,为后续处理存储当前pic_struct,然后完成当前处理(在步骤S143)。
如图39所示,如果基于存储pic_struct的值是0、3或4,则时间计数部分214A相加两个场的时间。如果pic_struct是5或6,则时间计数部分214A相加三个场的时间。如果存储pic_struct是1或2,则时间计数部分214A相加两个场的时间。
当完成此时间改变处理时,时间计数部分214A的时间值代表已经从视频解码器控制模块216输出到图形处理模块219的存取单元(一帧)的显示开始时间。换句话说,如果视频数据具有时戳,则将PTS代入时间计数部分214A。如果视频数据没有时戳,则加上按显示顺序紧前一个视频数据的显示间隔。
在本例中,将AVC用作视频编码系统。例如,在带有repeat_first_field的MPEG-2视频系统中,可以获得存取单元的显示持续时间。
如上所述,在这种情况下,如果FIFO220A的存储容量不够,则停止从视频解码器控制模块216输出数据。在这种情况下,自动停止时间计数部分214A的更新。当恢复对FIFO220A更新视频数据时,自动恢复时间计数部分214A的更新。
换句话说,当根据用户发出的命令将再现模式改变成暂停模式时,由于视频输出模块220的更新停止了,所以停止视频解码器控制模块216,从而停止时钟(时间计数部分214A)。当从暂停状态恢复到正常再现状态时,允许更新视频输出模块。结果,视频解码器控制模块216的操作和视频数据的输出得到恢复。另外,时钟(时间计数部分214A)的更新也得到恢复。
预期这种操作用于慢再现。换句话说,慢再现是暂停状态和规则再现状态交替进行的状态。此时,与视频输出同步地更新时钟(时间计数部分214A)。
在本例中,与视频解码器控制模块216的视频数据输出同步地更新时间计数部分214A。但是,如果在视频解码器控制模块216之中和之后出现延迟,则在此情况下,在图形处理模块219和视频输出模块220中的延迟较大,存在被提供给用户的视频数据与时钟(时间计数部分214A)之间的关系相偏离的可能性。在这种情况下,当与来自视频输出模块220的视频数据输出同步地进行时钟(时间计数部分214A)的更新时,可以防止该关系发生偏离。
具体地说,将参照图37所述的附加信息缓冲器302加入图形处理模块219中的视频数据处理部分、视频输出模块220和FIFO220A中,以便成对地管理视频数据和附加信息,直到输出视频数据。另外,当从视频输出模块220输出视频数据时,将相应附加信息发送到解码控制模块214。解码控制模块214通过前述算法更新时钟(时间计数部分214A)。
在这种方法中,不管出现在视频解码器控制模块216之中和下游的延迟的大小如何,都可以使显示的视频数据和时钟(时间计数部分214A)同步。
其结果是,即使再现流数据的装置未配有独立计数时钟,也可以精确地地再现流数据。因此,可以减轻施加到进行处理的CPU 112上的负担。
[改变PlayItem]
如图33和图34所述,再现如图29所示的第一PlayList#0的第一PlayItem#0。根据PlayList#0,在再现第一PlayItem#0之后,再现第二PlayItem#1。换句话说,执行将PlayItem从PlayItem#0改变到PlayItem#1的PlayItem改变处理。
接着,参照如图40所示的流程图,描述PlayItem改变处理。
如图33和图34所述,在再现了如图29所示的PlayList#0的第一PlayItem#0的剪辑之后,在正在再现第一PlayItem#0的同时,解码控制模块214(图2A和图2B)检查时间计数部分214A正在计数的时间。
[结束PlayItem#0的再现]
当时间计数部分214A计数的时间变成27,180,090(图29),即,图34所示的步骤S127中播放器控制模块212提供的第一PlayItem#0的OUT_time时,解码控制模块214在步骤S151中进行解码取消控制,以完成PlayItem#0的再现。
如果时间计数部分214A未以90kHz频率工作,即,根据视频数据的输出来更新时间,则时间计数部分214A计数的时间不可能精确地与PlayItem#0的OUT_time匹配。在这样的情况下,在PlayItem#0的OUT_time的时间变得与时间计数部分214A计数的时间接近的时刻,取消解码处理,从而完成PlayItem#0的再现。这个处理将在后面参照图51和图52加以描述。
换句话说,解码控制模块214操作视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218,以便停止它们的解码操作。另外,解码控制模块214控制视频输出模块220依次输出视频数据。
另外,解码控制模块214将表示已经再现了第一PlayItem#0的消息发送到播放器控制模块212。
[再现PlayItem#1的开始]
如上所述,播放器控制模块212在如图33所示的步骤S105中已识别出第一PlayList#0包含第一PlayItem#0和第二PlayItem#1。当解码控制模块214从播放器控制模块212接收到表示已经再现了第一PlayItem#0的消息时,流程从步骤S151转到步骤S152。在步骤S152中,播放器控制模块212再现第二PlayItem#1。
与如图34所示的步骤S122中的情况一样,作为第二PlayItem#1的再现处理,播放器控制模块212决定作为第二PlayItem#1的再现开始位置而在EP_map()中描述的RPN_EP_start之一。
另外,播放器控制模块212识别在如图34所示的步骤S124中描述的属于第二PlayItem#1的Mark()、和在如图34所示的步骤S125中描述的具有与根据PlayItem#1再现的剪辑信息文件“00002.PS”多路复用的属性的基本流的数目,并且决定要再现的基本流。
播放器控制模块212执行与图34所示的步骤S127中的处理相同的处理。
换句话说,播放器控制模块212向内容数据提供模块213提供被决定为再现开始位置的EP_map()的RPN_EP_start和与要再现的基本流多路复用的剪辑流文件的文件名,即,与在第二PlayItem#1(图29)的Clip_Information_file_name中描述的“00002.CLP”相对应的“00002.PS”的文件名。
另外,在将在与要再现的基本流多路复用的剪辑流文件“00002.PS”中存储的节目流提供给缓冲器控制模块215之前,播放器控制模块212初始化缓冲器控制模块215。
换句话说,缓冲器控制模块215(图5)将相同的值设置到在数据开始指针存储部分231中存储的数据开始指针、在数据写入指针存储部分232中存储的数据写入指针、在视频读取指针存储部分241中存储的视频读取指针、在音频读取指针存储部分251中存储的音频读取指针、以及在字幕读取指针存储部分262中存储的字幕读取指针。
另外,播放器控制模块212将stream_id和(必要时)private_stream_id作为标识要再现的基本流的标识信息而提供给缓冲器控制模块215。
缓冲器控制模块215(图5)的视频读取功能部分233从播放器控制模块212接收要再现的基本流的视频流的stream_id,并且将它存储在stream_id寄存器242中。另外,音频读取功能部分234从播放器控制模块212接收要再现的基本流的音频流的stream_id和private_stream_id,并且将它们分别存储在stream_id寄存器252和private_stream_id寄存器253中。
由于与要再现的基本流多路复用的剪辑流文件“00002.PS”包含字幕流,所以将要再现的基本流的字幕流的stream_id和private_stream_id从播放器控制模块212提供到字幕读取功能部分235。字幕读取功能部分235将stream_id和private_stream_id分别存储在stream_id寄存器263和private_stream_id寄存器264中。
播放器控制模块212将具有基于与要再现的基本流多路复用的剪辑流文件的值的字幕读取功能标志设置到字幕读取功能标志存储部分261中,以便初始化缓冲器控制模块215(图5)。
在这种情况下,由于与要再现的基本流多路复用的剪辑流文件“00002.PS”包含字幕流,所以将其值是1的字幕读取功能标志设置到字幕读取功能标志存储部分261中,以便激活字幕读取功能部分235。
播放器控制模块212将要再现的第二PlayItem#1(图29)的、作为IN_time的90,000和作为OUT_time的27,090,000提供给解码控制模块214。
另外,播放器控制模块212初始化图形处理模块219的字幕流显示模式命令。换句话说,播放器控制模块212控制图形处理模块219以默认显示模式来显示字幕流。
当要再现的字幕流的configurable_flag(图14)是1,即,表示允许改变显示模式时,可以使播放器控制模块212发送到图形处理模块219的字幕流显示模式命令与当前显示模式命令保持一致。
以与第一PlayItem#0相同的方式再现第二PlayItem#1。在正在再现第二PlayItem#1的同时,解码控制模块214检查时间计数部分214A正在计数的时间。当时间计数部分214A计数的时间变成27,090,000(图2 9),即,在步骤S152(图40)中从播放器控制模块212提供的第二PlayItem#1的OUT_time时,解码控制模块214进行与步骤S151中相同的解码取消控制,以便完成PlayItem#1的再现。如上所述,时间计数部分214A计数的时间不可能精确地与PlayItem#1的OUT_time匹配。在这样的情况下,在PlayItem#1的OUT_time的时间变得与时间计数部分214A计数的时间接近的时刻,取消解码处理,从而完成PlayItem#1的再现。这个处理将在后面参照图51和图52加以描述。
[时间码的显示]
接着,如上所述,在如图34所示的步骤S123中,显示时间码。时间码的显示被依次更新。
接着,参照如图41所示的流程图描述时间码显示处理。
当在解码控制模块214(图2A和图2B)中内置的时间计数部分214A计数了一秒时,流程转到步骤S171。在步骤S171中,解码控制模块214将表示已经经过了一秒的消息和时间计数部分214A已计数的当前时间提供给播放器控制模块212。此后,流程转到步骤S172。在步骤S172中,播放器控制模块212接收来自解码控制模块214的消息和当前时间,并且将当前时间转换成时间码。此后,流程转到步骤S173。
在步骤S173中,播放器控制模块212控制图形处理模块219显示在步骤S172中获得的时间码。此后,流程返回到步骤S171。
因此,每隔一秒更新一次时间码。时间码的更新间隔不局限于一秒。
[改变流]
将通过构成图29所述的第一PlayList#0的第一PlayItem#0再现的剪辑流文件“00001.PS”、和通过第二PlayItem#1再现的剪辑流文件“00002.PS”与如图30A和30B所述的两个字幕流多路复用。
当将具有相同属性的多个基本流与剪辑流文件多路复用时,可以将基本流从一个基本流改变成另一个基本流。
接着,参照如图42所示的流程图,描述流改变处理。
例如,当将流改变命令描述成“SCRIPT.DAT”文件(图6)中的脚本程序,并且脚本控制模块211执行脚本程序、或用户操作遥控器来改变流时,将流改变命令提供给播放器控制模块212。
当脚本控制模块211执行描述流改变请求的脚本程序时,脚本控制模块211将流改变请求消息提供给播放器控制模块212。当用户利用遥控器输入流改变命令时,输入接口115接收来自遥控器的流改变命令,并且将流改变请求消息提供给播放器控制模块212。
当将使播放器控制模块212改变字幕流的字幕流改变请求消息提供给播放器控制模块212时,它检查已在如图34所示的步骤S125中识别的、要再现的基本流的字幕流的数目。
当播放器控制模块212检查的字幕流的数目是1或更少时,播放器控制模块212忽略字幕流改变请求消息。因此,播放器控制模块212不执行从步骤S192到步骤S194的处理。
相反,当字幕流的数目是2或更多时,流程转到步骤S192到S194。在这些步骤中,播放器控制模块212将正在再现的字幕流改变成另一个字幕流。
换句话说,在步骤S192中,播放器控制模块212标识剪辑信息文件中正在再现的字幕流。具体地说,假设正在根据构成图29所述的第一PlayList#0的第二PlayItem#1再现与剪辑流文件“00002.PS”多路复用的、其stream_id是0xBD并且其privatestream_id是0x80的字幕流,播放器控制模块212在步骤S192中将正在再现的字幕流标识为与剪辑流文件“00002.PS”多路复用的两个字幕流当中的、如图30A和30B所示的作为剪辑信息文件“00002.CLP”中的第三字幕流的stream#2。
此后,流程转到步骤S193。在步骤S193中,播放器控制模块212将在步骤S192中标识的剪辑信息文件的下一个字幕流标识为要下一个再现的字幕流。在图30A和图30B中,第三字幕流stream#2的下一个字幕流是剪辑信息文件“00002.CLP”中的第四字幕流stream#3。因此,在步骤S193中,播放器控制模块212将第四字幕流stream#3识别成要下一个再现的字幕流。
当正在再现的字幕流被标识成与剪辑流文件“00002.PS”多路复用的两个字幕流当中的、如图30A和30B所示的作为剪辑信息文件“00002.CLP”中的第四字幕流的stream#3时,例如,播放器控制模块212将第三字幕流stream#2识别成下一个要再现的字幕流。
此后,流程转到步骤S194。在步骤S194中,播放器控制模块212将在步骤S193中识别成要下一个再现的字幕流的字幕的stream_id和private_stream_id提供给缓冲器控制模块215(图5)的字幕读取功能部分235,以便字幕读取功能部分235利用stream_id和private_stream_id来从缓冲器215A中读取下一个字幕存取单元。
缓冲器控制模块215(图5)的字幕读取功能部分235将在步骤S194中从播放器控制模块212提供的stream_id和private_stream_id分别重新设置到stream_id寄存器263和private_stream_id寄存器264。字幕读取功能部分235读取由被分别重新设置到stream_id寄存器263和private_stream_id寄存器264中的stream_id和private_stream_id标识的下一个字幕存取单元。
以前述的方式,将正在再现的字幕流改变成下一个再现的另一个字幕流。
[缓冲器控制模块215的处理]
接着,参照图43到图47,描述缓冲器控制模块215(图5)的处理,即,将数据写入缓冲器215A中的处理和从缓冲器215A中读取数据的处理。
如图5所述,缓冲器控制模块215具有用于从缓冲器215A中读取数据和将数据写入缓冲器215A中的五个指针。
换句话说,如图43和图44所示,缓冲器控制模块215具有在数据开始指针存储部分231中存储的数据开始指针、在数据写入指针存储部分232中存储的数据写入指针、在视频读取指针存储部分241中存储的视频读取指针、在音频读取指针存储部分251中存储的音频读取指针、以及在字幕读取指针存储部分262中存储的字幕读取指针。
在图43和图44中,省略了图5所示的视频读取功能部分233的stream_id寄存器242和au_information()寄存器243、音频读取功能部分234的stream_id寄存器252和private_stream_id寄存器253、以及字幕读取指针存储部分235的字幕读取功能标记存储部分261、stream_id寄存器263和private_stream_id寄存器264。
在数据开始指针存储部分231中存储的数据开始指针代表在缓冲器215A中存储的最旧数据(需要读取而未读取)的位置。在数据写入指针存储部分232中存储的数据写入指针代表缓冲器215A中数据的写入位置。这个位置是写入最新数据的位置。
在视频读取指针存储部分241中存储的视频读取指针代表从缓冲器215A中读取的视频流的位置。在音频读取指针存储部分251中存储的音频读取指针代表从缓冲器215A中读取的音频流的位置。在字幕读取指针存储部分262中存储的字幕读取指针代表从缓冲器215A中读取的字幕流的位置。
如图5所述,数据开始指针、数据写入指针、视频读取指针、音频读取指针和字幕读取指针在缓冲器215A中沿着顺时针方向移动。
如图44所示,根据本实施例,通常更新数据开始指针,使得它代表与视频读取指针、音频读取指针和字幕读取指针的最旧数据位置相同的位置。在图44中,音频读取指针代表视频读取指针、音频读取指针、或字幕读取指针中最旧数据的位置。数据开始指针与音频读取指针匹配。
在具有数据开始指针、数据写入指针、视频读取指针、音频读取指针和字幕读取指针的缓冲器控制模块215中,当从盘101中读取新数据和将其写入缓冲器215A中时,沿着顺时针方向更新数据写入指针,使得数据写入指针代表紧接在新写入的数据之后的位置。
当从缓冲器215A中读取视频流、音频流、或字幕流时,沿着顺时针方向将视频读取指针、音频读取指针、或字幕读取指针更新所读取的数据量。所读取的数据量是实际读取的视频数据、音频数据、或字幕数据和在所读取的并在读取时被省略的数据中插入的另一个流的数据部分之和。
当更新视频读取指针、音频读取指针、或字幕读取指针时,更新数据开始指针,使得它代表视频读取指针、音频读取指针、或字幕读取指针所代表的最旧数据的位置。
缓冲器控制模块215控制缓冲器215A的数据写入操作,使得数据写入指针不会超过数据开始指针。
除非数据写入指针超过数据开始指针,否则缓冲器控制模块215将从盘101中读取的数据写入到由数据写入指针所代表的缓冲器215A的位置中,并且更新数据写入指针。另一方面,如果数据写入指针即将超过数据开始指针,则缓冲器控制模块215使内容数据提供模块213停止从盘101中读取数据并停止将数据写入缓冲器215A中。因此,可以防止缓冲器215A溢出。
如上所述,根据两个指针,即,数据开始指针和数据写入指针的位置关系,来将从盘101中读取的数据写入缓冲器215A中。
另一方面,缓冲器控制模块215控制缓冲器215A的数据读取操作,使得视频读取指针、音频读取指针、字幕读取指针和数据开始指针不会超过数据写入指针。
换句话说,除非视频读取指针、音频读取指针、或字幕读取指针超过数据写入指针,否则缓冲器控制模块215根据从视频解码器控制模块216、音频解码器控制模块217、或字幕解码器控制模块217接收的请求,从视频读取指针、音频读取指针、或字幕读取指针所代表的缓冲器21A的位置中读取数据,并且,更新视频读取指针、音频读取指针、或字幕读取指针,并在必要时更新数据开始指针。如果视频读取指针、音频读取指针、或字幕读取指针即将超过数据写入指针,则缓冲器控制模块215控制视频解码器控制模块216、音频解码器控制模块217、或字幕解码器控制模块217停止发送请求,直到缓冲器215A存储足够的数据。结果,可以防止缓冲器215A下溢。
因此,缓冲器215A将要提供给视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块217的数据存储在沿着顺时针方向从数据开始指针所代表的位置到数据写入指针所代表的位置的区域(图43和图44的阴影区域)。另外,在该区域中存在视频读取指针、音频读取指针和字幕读取指针。
在前述情况中,更新数据开始指针,使得它表示由视频读取指针、音频读取指针、或字幕读取指针所代表的最旧数据的位置。可替代地,可以更新数据开始指针,使得它代表比最旧数据的位置早了预定时间(例如,一秒)的数据的位置。
预期视频读取指针、音频读取指针和字幕读取指针中的视频读取指针和音频读取指针代表最旧数据的位置。
因此,如图43所示,当更新数据开始指针以使得它代表比视频读取指针或音频读取指针代表的最旧数据的位置早(例如)一秒的数据的位置时,可以将比视频读取指针或音频读取指针代表的最旧数据的位置早一秒的数据存储在缓冲器215A中。在图43中,音频读取指针代表最旧数据的位置,而数据开始指针代表比最旧数据早一秒的数据的位置。
当更新数据开始指针、以使得它代表比最旧数据的位置早一秒的数据的位置时,可以改善盘再现装置的响应。
换句话说,如图44所示,当更新数据开始指针、以使得它代表由音频读取指针代表的最旧数据的位置时,如果发出特殊再现命令(例如,反向再现命令),则需要从盘101中重新读取已经从缓冲器215A中读取的数据。因此,在发出特殊再现命令之后,直到执行特殊再现操作之前,需要花费一点时间。
相反,如图43所示,当更新数据开始指针、以使得它代表比音频读取指针代表的最旧数据的位置早一秒的数据的位置时,如果发出特殊再现命令(例如,反向再现命令)并且开始特殊再现操作所需的数据是比最旧数据早一秒的并被存储在缓冲器215A中的数据,则可以迅速地开始特殊再现操作,无需从盘101中重新读取数据。
当更新数据开始指针、以使得它代表比音频读取指针代表的最旧数据的位置早一秒的数据的位置时,开始特殊再现操作所需的数据可能未被存储在缓冲器215A中。在这种情况下,从盘101中重新读取开始特殊再现操作所需的数据。
接着,详细描述从缓冲器215A中读取视频流、音频流和字幕流的操作。
正如在图34所示的步骤S127中所述的那样,当开始剪辑流文件的再现操作时,缓冲器控制模块215初始化数据开始指针、数据写入指针、视频读取指针、音频读取指针和字幕读取指针,使得它们代表缓冲器215A中的相同位置。
当从盘101中读取存储在剪辑流文件中的节目流(MPEG2-System节目流)和将其提供给缓冲器控制模块215时,将节目流存储在缓冲器215A的数据写入指针所代表的位置上。另外,沿着顺时针方向更新数据写入指针。
另外,缓冲器控制模块215(图5)的视频读取功能部分233解析在缓冲器215A中存储的节目流,根据从视频解码器控制模块216接收的请求而从缓冲器215A中存储的节目流中提取视频存取单元,并且将所提取的视频存取单元提供给视频解码器控制模块216。
类似地,音频读取功能部分234解析在缓冲器215A中存储的节目流,根据从音频解码器控制模块217接收的请求而从缓冲器215A中存储的节目流中提取音频存取单元,并且将音频存取单元提供给音频解码器控制模块217。字幕读取功能部分235解析在缓冲器215A中存储的节目流,根据从字幕解码器控制模块218接收的请求而从缓冲器215A中存储的节目流中提取字幕存取单元,并且将字幕存取单元提供给字幕解码器控制模块218。
[读取视频流]
接着,参照如图45所示的流程图,详细描述视频读取功能部分233(图5)从缓冲器215A中读取视频流的处理。
在步骤S211中,视频读取功能部分233从存储在缓冲器215A中的节目流中搜索private_stream_2的PES_packet()。换句话说,如图23所述,在private_stream_2的PES_packet()中,stream_id是1011111B(=0xBF)。视频读取功能部分233搜索其stream_id是10111111B的PES_packet()。
假设与在剪辑流文件“00001.PS”中存储的节目流多路复用的基本流是要再现的基本流,当从盘101中读取节目流并将其存储在缓冲器215A中时,在图34所示的步骤S122中,利用有关在剪辑流文件“00001.PS”的EP_map()(图31)中描述的可开始解码点的信息来将扇区305决定为再现开始位置。在图34所示的步骤S128中,指定作为再现开始点的扇区305。视频读取功能部分233使操作系统201从剪辑流文件“00001.PS”中读取基本流。
有关在视频流的EP_map()中描述的可开始解码点的信息代表紧接在真正可开始解码点前面的private_stream_2的PES_packet()的位置。
因此,在紧接着从盘101中读取在剪辑流文件“00001.PS”中存储的节目流并将其存储在缓冲器215A中之后,将private_stream_2的PES_packet()存储在缓冲器215A中由数据开始指针和视频读取指针所代表的位置上。
当视频读取功能部分233已在步骤S211中找到private_stream_2的PES_packet()时,流程转到步骤S212。在步骤S212,视频读取功能部分233从private_stream2_PES_payload()(图2 6),即,private_stream_2的PES_packet()的PES_packet_data_byte中提取video_stream_id。在图34所示的步骤S127中,视频读取功能部分233确定video_stream_id是否与被存储在stream_id寄存器242(图5)中的、要再现的视频流的stream_id匹配。
当步骤S212中的确定结果表示在private_stream2_PES_payload()中描述的video_stream_id与在stream_id寄存器242中存储的stream_id不匹配,即,在步骤S211中找到的private_stream_2的PES_packet()不在要再现的视频流的可开始解码点上时,流程返回到步骤S211。在步骤S211中,视频读取功能部分233从存储在缓冲器215A中的节目流中搜索另一个private_stream_2的PES_packet(),并且重复相同的处理。
相反,当步骤S212中的确定结果表示在private_stream2_PES_payload()中描述的video_stream_id与在stream_id寄存器242中存储的stream_id匹配,即,在步骤S211中找到的private_stream_2的PES_packet()在要再现的视频流的可开始解码点上时,流程转到步骤S213。在步骤S213,视频读取功能部分233从缓冲器215A中读取在private_stream_2的PES_packet()的private_stream2_PES_payload()中描述的au_information(),并且将au_information()存储到au_information()寄存器243(图5)。此后,流程转到步骤S214。
在步骤S214,视频读取功能部分233针对在步骤S211中找到的private_stream_2的PES_packet()(其video_stream_id(图26)与在stream_id寄存器242(图5)中存储的stream_id匹配的private_stream_2的PES_packet())的大小来更新在视频读取指针存储部分241中存储的视频读取指针。
换句话说,在剪辑流文件中,使得private_stream_2的PES_packet()的后面紧接着其stream_id匹配video_stream_id的视频流(PES_packet())。因此,在步骤S214中,视频读取功能部分233更新视频读取指针,以使得它代表视频流的真正可开始解码点的位置。
此后,流程从步骤S214转到步骤S215。视频读取功能部分233确定视频解码器控制模块216是否已发出数据请求。当步骤S215中的确定结果表示视频解码器控制模块216未发出数据请求时,流程返回到步骤S215。在步骤S215中,视频读取功能部分233重复相同的处理。
相反,当步骤S215中的确定结果表示视频解码器控制模块216已发出数据请求时,流程转到步骤S216。在步骤S216,视频读取功能部分233解析来自由缓冲器215A中视频读取指针所代表的位置的节目流,从缓冲器215A中读取在au_information()寄存器243中存储的au_information()中描述的字节的数据(即,一个视频存取单元),将该数据提供给视频解码器控制模块216,并且针对已经从缓冲器215A中读取的一个视频存取单元来更新视频读取指针。
换句话说,如图27所述,au_information()描述了number_of_access_unit,number_of_access_unit代表从private_stream_2的PES_packet()(包含au_information())到下一个private_stream_2的PES_packet()所包含的视频存取单元(画面)的数目。
另外,如图27所述,au_information()描述了pic_struct_copy、au_ref_flag和AU_length,作为有关由number_of_access_unit代表的每个视频存取单元的信息。
如图27所述,由于根据number_of_access_unit在au_information()中描述的每个AU_length代表由从private_stream_2的PES_packet()(包含au_information)到下一个private_stream_2的PES_packet()的number_of_access_unit代表的每个视频存取单元的大小,视频读取功能部分233可以利用AU_length来提取存取单元,而无需分析视频流。
换句话说,当提取MPEG2-Video或MPEG2-AVC存取单元时,必须知道视频流的结构,然后解析它。但是,在盘101上记录的剪辑流文件中存储的节目流包含private_stream_2的PES_packet(),其描述代表视频存取单元的大小的AU_length,并且后面紧接着视频流的至少一个可开始解码点。因此,视频读取功能部分233可以根据在private_stream_2的PES_packet()中描述的AU_length,从缓冲器215A中读取视频存取单元(作为视频存取单元的视频流),并且将视频存取单元提供给视频解码器控制模块216,而无需解析视频流。
在步骤S216中,当视频读取功能部分233将视频存取单元提供给视频解码器控制模块216时,视频读取功能部分还将在au_information()中描述的pic_struct_copy、au_ref_flag和AU_length以及被添加到每个视频存取单元中的时戳(PTS,DTS)作为有关视频存取单元的信息而提供给视频解码器控制模块216。
在视频读取功能部分233在步骤S216中从缓冲器215A中读取了一个视频存取单元并将它提供给视频解码器控制模块216之后,流程转到步骤S217。在步骤S217中,视频读取功能部分233确定它是否已处理了由在au_information()寄存器243中存储的au_information()(图27)的number_of_access_unit所代表的存取单元。
当步骤S217中的确定结果表示视频读取功能部分233还没有处理由number_of_access_unit代表的存取单元,即,视频读取功能部分233还没有从缓冲器215A中读取number_of_access_unit代表的存取单元并将它们提供给视频解码器控制模块216时,流程返回到步骤S215。在步骤S215中,视频读取功能部分233重复相同的处理。
相反,当步骤S217中的确定结果表示视频读取功能部分233已处理了number_of_access_unit代表的存取单元,即,视频读取功能部分233已从缓冲器215A中读取了number_of_access_unit代表的存取单元和将它们提供给视频解码器控制模块216时,流程返回到步骤S211。在步骤S211中,视频读取功能部分233搜索下一个private_stream_2的PES_packet(),并且重复相同的处理。
[读取音频流]
接着,参照如图46所示的流程图,描述音频读取功能部分234(图5)从缓冲器215A中读取音频流的处理。
在步骤S230中,音频读取功能部分234确定已经在如图34所示的步骤S127中存储在stream_id寄存器252(图5)中的、要再现的音频流的stream_id是否代表private_stream_1的PES_packet()。
当步骤S230中的确定结果表示在stream_id寄存器252中存储的stream_id不代表private_stream_1的PES_packet(),即,如图2 3所述,在stream_id寄存器252中存储的stream_id是对根据MPEG标准编码的音频流设置的110xxxxxB时,流程转到步骤S231。在步骤S231中,音频读取功能部分234从存储在缓冲器215A中的节目流中搜索代表在MPEG Audio中定义的音频帧的开头的同步码。由于同步码的位置是处在音频帧的开头,所以音频读取功能部分234更新音频读取指针,使得它代表音频帧的开头位置。此后,流程从步骤S231转到步骤S232。在步骤S232中,音频读取功能部分234从存储在缓冲器215A中的节目流中搜索与对应于由音频读取指针所代表的位置的stream_id寄存器252中存储的stream_id匹配的PES_packet(),并且获取PES_packet()。此后,流程转到步骤S233。
在步骤S233中,音频文件处理部分234更新在音频读取指针存储部分251中存储的音频读取指针,使得音频读取指针代表已经在步骤S231中找到的PES_packet()(图19A和图19B到图21A和图21B)的PES_packet_data_byte的开头。此后,流程转到步骤S237。
在步骤S237中,音频文件处理部分234确定音频解码器控制模块217是否已发出数据请求。当步骤S237中的确定结果表示音频解码器控制模块217未发出数据请求时,流程返回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。
相反,当步骤S237中的确定结果表示音频解码器控制模块217已发出数据请求时,流程转到步骤S238。在步骤S238中,音频读取功能部分234解析来自缓冲器215A中由音频读取指针所代表的位置的节目流,从缓冲器215A中读取具有预定固定长度的一个音频存取单元,并且将音频存取单元与被添加到音频存取单元中的时戳(PTS,DTS)一起提供给音频解码器控制模块217。
音频读取功能部分234针对从缓冲器215A中读取的一个音频存取单元的大小更新音频读取指针。此后,流程返回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。
相反,当步骤S230中的确定结果表示在stream_id寄存器252中存储的stream_id代表private_stream_1的PES_packet(),即,如图2 3所述,在stream_id寄存器252中存储的stream_id是10111101B(=0xBD)和代表private_stream_1的PES_packet()时,流程转到步骤S234。在步骤S234中,音频读取功能部分234从存储在缓冲器215A中的节目流中搜索private_stream_1的PES_packet(),并且获取PES_packet()。换句话说,音频读取功能部分234搜索其stream_id是10111101B的PES_packet(),并且获取PES_packet()。
当音频读取功能部分234在步骤S234中找到private_stream_1的PES_packet()时,流程转到步骤S235。在步骤S235中,音频读取功能部分234从private_stream1_PES_payload()(图24),即private_stream_1的PES_packet()的PES_packet_data_byte中提取private_stream_id,并且确定这个private_stream_id是否与在如图34所示的步骤S127中存储在private_stream_id寄存器253(图5)中的、要再现的音频流的private_stream_id匹配。
当步骤S235中的确定结果表示在private_stream1_PES_payload()中描述的private_stream_id与在private_stream_id寄存器253中存储的private_stream_id不匹配,即,在步骤S234中找到的private_stream_1的PES_packet()不是要再现的音频流时,流程返回到步骤S234。在步骤S234中,音频读取功能部分234从存储在缓冲器215A中的节目流中搜索另一个private_stream_1的PES_packet()。此后,音频读取功能部分234重复相同的处理。
相反,当步骤S235中的确定结果表示在private_stream1_PES_payload()中描述的private_stream_id与在private_stream_id寄存器253中存储的private_stream_id匹配,即,在步骤S234中找到的private_stream_1的PES_packet()是要再现的音频流时,流程转到步骤S236。在步骤S236中,音频读取功能部分234从缓冲器215A中读取在private_stream_1的PES_packet()的private_stream1_PES_payload()(图24)中描述的AU_locator(),将紧接在AU_locator之后的位置和AU_locator代表的值相加,并且获取音频存取单元的开始位置。
换句话说,如图24所述,AU_locator代表基于紧接在AU_locator之后的位置而存储在private_stream1_PES_payload()的private_payload()中的音频存取单元或字幕存取单元的开始位置。因此,通过相加AU_locator代表的值和紧接在AU_locator之后的位置,可获取音频存取单元的开始位置。
在步骤S236中,音频读取功能部分234更新在音频读取指针存储部分251中存储的音频读取指针,使得音频读取指针代表已经获得的音频存取单元的开始位置。此后,流程转到步骤S237。
在步骤S237中,音频读取功能部分234确定音频解码器控制模块217是否已发出数据请求。当步骤S237中的确定结果表示音频解码器控制模块217未发出数据请求时,流程返回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。
相反,当步骤S237中的确定结果表示音频解码器控制模块217已发出数据请求时,流程转到步骤S238。在步骤S238中,音频读取功能部分234解析来自缓冲器215A中由音频读取指针所代表的位置的节目流,从缓冲器215A中读取具有预定固定长度的一个音频存取单元,并且将音频存取单元与被添加到音频存取单元的时戳一起提供给音频解码器控制模块217。
音频读取功能部分234针对从缓冲器215A中读取的一个音频存取单元的大小来更新音频读取指针。此后,流程返回到步骤S237。在步骤S237中,音频读取功能部分234重复相同的处理。
[读取字幕流]
接着,参照如图47所示的流程图,将描述字幕读取功能部分235(图5)从缓冲器215A中读取字幕流的处理。
在步骤S251中,字幕读取功能部分235确定已经在图34所示的步骤S127中存储在视频解码器控制模块216中的字幕读取功能标志。当步骤S251中的确定结果表示字幕读取功能标志是0,即,与要再现的基本流多路复用的剪辑流文件不包含字幕流并且在图34所示的步骤S127中已将0设置到字幕读取功能标记存储部分261时,字幕读取功能部分235不进行任何处理。
相反,当步骤S251中的确定结果表示字幕读取功能标志是1,即,与要再现的基本流多路复用的剪辑流文件包含字幕流并且在图34所示的步骤S127中已将1设置到字幕读取功能标记存储部分261时,流程转到步骤S252。在步骤S252中,字幕读取功能部分235从在缓冲器215A中存储的节目流中搜索与在stream_id寄存器263(图5)中存储的、要再现的字幕流的stream_id匹配的PES_packet()。
如在图34所示的步骤S127中所述,要再现的字幕流的stream_id存储在stream_id寄存器263(图5)中。另一方面,如图23所述,字幕流的stream_id是代表private_stream_1的PES_packet()的10111101B(=0xBD)。
因此,在步骤S252中,字幕读取功能部分235从存储在缓冲器215A中的节目流中搜索private_stream_1的PES_packet()。
当字幕读取功能部分235搜索到private_stream_1的PES_packet()并获得它时,流程转到步骤S253。在步骤S253中,字幕读取功能部分235从private_stream1_PES_payload()(图24),即private_stream_1的PES_packet()的PES_packet_data_byte中提取private_stream_id,并且确定private_stream_id是否与已经在如图34所示的步骤S127中存储在private_stream_id寄存器264(图5)中的、要再现的字幕流的private_stream_id匹配。
当步骤S253中的确定结果表示在private_stream1_PES_payload()中描述的private_stream_id与在private_stream_id寄存器264中存储的private_stream_id不匹配,即,在步骤S252中找到的private_stream_1的PES_packet()不是要再现的字幕流时,流程返回到步骤S252。在步骤S252中,字幕读取功能部分235从存储在缓冲器215A中的节目流中搜索另一个private_stream_1的PES_packet()。此后,字幕读取功能部分235重复相同的处理。
相反,当步骤S253中的确定结果表示在private_stream1_PES_payload()中描述的private_stream_id与在private_stream_id寄存器264中存储的private_stream_id匹配,即,在步骤S252中找到的private_stream_1的PES_packet()是要再现的字幕流时,流程转到步骤S254。在步骤S254中,字幕读取功能部分235从缓冲器215A中读取在private_stream_1的PES_packet()的private_stream1_PES_payload()(图24)中描述的AU_locator(),将紧接在AU_locator之后的位置和AU_locator代表的值相加,并且获取字幕存取单元的开始位置。
如图24所述,AU_locator代表基于紧接在AU_locator之后的位置而存储在private_stream1_PES_payload()的private_payload()中的字幕存取单元(或音频存取单元)的开始位置。因此,通过相加AU_locator代表的值和紧接在AU_locator之后的位置,可以获取字幕存取单元的开始位置。
另外,在步骤S254中,字幕读取功能部分235更新在字幕读取指针存储部分262中存储的字幕读取指针,使得字幕读取指针代表所获字幕存取单元的开始位置。此后,流程转到步骤S255。
在步骤S255中,字幕读取功能部分235确定字幕解码器控制模块218是否已发出数据请求。当步骤S255中的确定结果表示字幕解码器控制模块218未发出数据请求时,流程返回到步骤S255。在步骤S255中,字幕读取功能部分235重复相同的处理。
相反,当步骤S255中的确定结果表示字幕解码器控制模块218已发出数据请求时,流程转到步骤S256。在步骤S256中,字幕读取功能部分235解析来自缓冲器215A中由字幕读取指针所代表的位置的节目流,从缓冲器215A中读取在字幕存取单元开头描述的大小的一个字幕存取单元,并且将字幕存取单元与被添加到字幕存取单元的时戳一起提供给字幕解码器控制模块218。如图2A和2B所述,字幕存取单元的大小在它的开头处描述。字幕读取功能部分235从缓冲器215A中、从由字幕读取指针所代表的位置中读取具有该大小的数据,并且将字幕存取单元与被添加到字幕存取单元的时戳一起提供给字幕解码器控制模块218。
字幕读取功能部分235针对从缓冲器215A中读取的一个字幕存取单元的大小来更新字幕读取指针。此后,流程返回到步骤S255。在步骤S255中,字幕读取功能部分235重复相同的处理。
[重新同步处理]
接着,将描述如图2A和图2B所示的解码控制模块214对视频数据和音频数据的同步控制。
正如在图34所示的步骤S130中所述的那样,解码控制模块214使视频解码器控制模块216、音频解码器控制模块217和字幕解码器控制模块218开始解码它们的数据。在必要时,解码控制模块214使这些模块在不同定时开始解码它们的数据,以使得它们同步。例如,当视频解码器116和音频解码器117执行它们的解码处理时,根据它们的进行状态,它们可以在不同定时输出视频数据和音频数据。
因此,解码控制模块214执行补偿视频数据和音频数据的输出定时差异的重新同步处理,并且使视频解码器116和音频解码器117同步输出视频数据和音频数据。
接着,将参照如图48所示的流程图,描述重新同步处理。
在重新同步处理中,在步骤S271中,解码控制模块214确定从视频解码器控制模块216输出的视频存取单元的时戳与从音频解码器控制模块217输出的音频存取单元的时戳之间的差异是否较大。
换句话说,如在图34所示的步骤S129中所述,每当视频解码器控制模块216从缓冲器控制模块215接收到视频存取单元时,视频解码器控制模块216就将视频存取单元的时戳提供给解码控制模块214。类似地,每当音频解码器控制模块217从缓冲器控制模块215接收到音频存取单元时,音频解码器控制模块217就将音频存取单元的时戳提供给解码控制模块214。
在步骤S271中,解码控制模块214比较在被认为是相同定时的预定时间段中从视频解码器控制模块216和视频解码器控制模块217接收的时戳,并且确定这些时戳的差异是否较大。
当步骤S271中的确定结果表示从视频解码器控制模块216接收的视频存取单元的时戳与从音频解码器控制模块217接收的音频存取单元的时戳之间的差异不大,即,视频存取单元的时戳与音频存取单元的时戳之间的差异在可以认为存取单元同步的预定范围,例如,两个视频帧(大约66毫秒)内时,流程返回到步骤S271。在步骤S271中,解码控制模块214确定时戳的差异。
相反,当步骤S271中的确定结果表示从视频解码器控制模块216接收的视频存取单元的时戳与从音频解码器控制模块217接收的音频存取单元的时戳之间的差异较大,即,该差异不在可以认为存取单元同步的预定范围内时,流程转到步骤S272。在步骤S272中,解码控制模块214比较从视频解码器控制模块216接收的视频存取单元的时戳和从音频解码器控制模块217接收的音频存取单元的时戳,以便确定视频数据的输出和音频数据的输出中哪一个比另一个更晚。
当步骤S272中的确定视频数据的输出比音频数据的输出晚时,流程转到步骤S273。在步骤S273中,解码控制模块214使视频解码器控制模块216停止解码并显示视频存取单元,即,跳过对视频存取单元的处理,提前对一个视频存取单元的处理。此后,流程转到步骤S274。
在步骤S274中,视频解码器控制模块216从解码控制模块214接收跳过请求,并且检查与视频存取单元一起从缓冲器控制模块215提供的au_ref_flag(图27)。
换句话说,在private_stream_2的PES_packet()的private_stream2_PES_payload()(图2 6)中存储的au_information()(图27)包含作为有关存取单元的信息的au_ref_flag。正如在图34所示的步骤S129和图45所示的步骤S216中所述的那样,与视频存取单元一起,缓冲器控制模块215将其au_ref_flag提供给视频解码器控制模块216。
在步骤S274中,视频解码器控制模块216检查与存取单元一起提供的存取单元的au_ref_flag。
此后,流程从步骤S274转到步骤S275。在步骤S275中,视频解码器控制模块216根据已经从缓冲器控制模块215提供的、视频存取单元的au_ref_flag的检查结果,确定视频存取单元是否是当解码另一个画面时不参考的非参考画面。
如图27所述,视频存取单元的au_ref_flag表示存取单元是否是参考画面。当存取单元是参考画面时,au_ref_flag是1。相反,当存取单元不是参考画面时,au_ref_flag是0。
当步骤S275中的确定结果表示缓冲器控制模块215提供的视频存取单元不是非参考画面的视频存取单元,即,缓冲器控制模块215提供的视频存取单元是参考画面时,流程转到步骤S276。在步骤S276中,视频解码器控制模块216使视频解码器116正常处理视频存取单元。在视频解码器控制模块216从缓冲器控制模块215接收到下一个视频存取单元之后,流程返回到步骤S274。
相反,当步骤S275中的确定结果表示缓冲器控制模块215提供的视频存取单元是非参考画面的视频存取单元时,流程转到步骤S277。在步骤S277中,视频解码器控制模块216使视频解码器116跳过对视频存取单元的处理。在缓冲器控制模块215提供了下一个视频存取单元之后,流程返回到步骤S271。
由于跳过了对视频存取单元的处理,所以提前了对几乎一个视频存取单元的处理。结果,比音频数据的输出晚的视频数据的输出被提前。
相反,当步骤S272中的确定结果表示视频数据的输出不比音频数据的输出晚,即,音频数据的输出比视频数据的输出晚时,流程转到步骤S278。在步骤S278中,解码控制模块214将连续输出命令输出到视频解码器控制模块216,以便连续输出与正在解码的视频存取单元相对应的视频数据,使视频解码器控制模块216继续等待对下一个视频存取单元的处理。此后,流程转到步骤S279。
在步骤S279中,视频解码器控制模块216从解码控制模块214接收连续输出请求,并且根据该连续输出请求,将视频解码器116正在解码的视频存取单元的视频数据连续输出到图形处理模块219。在缓冲器控制模块215提供了下一个视频存取单元之后,流程转到步骤S271。
如上所述,解码控制模块214确定视频数据的输出是否比音频数据的输出晚。当视频数据的输出比音频数据的输出晚时,解码控制模块214使视频解码器控制模块216跳过对一个存取单元的处理。视频解码器控制模块216根据存取单元的au_ref_flag确定要跳过的存取单元是参考画面还是非参考画面。当存取单元是非参考画面时,解码控制模块214使视频解码器116跳过对该存取单元的处理。因此,可以容易地使视频数据的输出和音频数据的输出同步。
换句话说,当要跳过的存取单元是参考画面时,需要解码存取单元的视频数据,以便当解码另一个存取单元时参考该视频数据。因此,在使视频数据的输出和音频数据的输出同步的同步控制中,如果跳过对参考画面的存取单元的处理,则不能对参考该参考画面的另一个存取单元进行解码。结果,当显示与音频数据同步的视频数据时,会出现噪声。
因此,最好跳过不是参考画面,即,非参考画面的存取单元。
另一方面,为了从传统基本流中搜索非参考画面的存取单元,需要解析基本流。根据,例如,MPEG4-AVC系统编码的基本流非常复杂。因此,当解析这个基本流时,成本很高。
相反,在盘101上记录的剪辑流文件中存储的节目流与private_stream_2的PES_packet()多路复用,除了具有包含视频存取单元的PES_packet_data_byte的PES_packet()(图19A和图19B到图21A和图21B)之外,private_stream_2还包含作为PES_packet_data_byte的扩展的pri-vate_stream2_PES_payload()(图26)。private_stream2_PES_payload()的au_information()(图27)描述了表示视频存取单元是参考画面还是非参考画面的au_ref_flag。将au_ref_flag与相应视频存取单元一起从缓冲器控制模块215提供到视频解码器控制模块216。因此,视频解码器控制模块216通过检查视频存取单元的au_ref_flag,可以确定视频存取单元是参考画面还是非参考画面,而几乎没有额外成本。
[标记处理]
接着,将参照如图49所示的流程图,描述基于在PlayListMark()(图9)中描述的Mark()的标记处理。
解码控制模块214通常检查内置时间计数部分214A计数的当前时间。在步骤S301中,解码控制模块214确定当前时间是否与在PlayListMark()(图9)中描述的任何Mark()的mark_time_stamp匹配。
正如在如图34所示的步骤S124中所述的那样,当播放器控制模块212再现如图29所示的第一PlayList#0的第一PlayItem#0时,播放器控制模块212识别属于PlayList#0的第一PlayItem#0的、在如图32所示的上表中包含的PlayListMark()中的七个Mark()中的四个Mark(),即,第一到第四Mark()的,并且将{180,090}、{5,580,090}、{10,980,090}和{16,380,090},即,四个Mark()的mark_time_stamp与表示mark_time_stamp所代表的时间的属性是“标记处理”的信息一起提供给解码控制模块214。
在步骤S301中,解码控制模块214确定播放器控制模块212提供的具有“标记处理”属性的四个时间(mark_time_stamp)的哪一个与当前时间匹配。
当步骤S301中的确定结果表示当前时间与具有“标记处理”属性的任何一个时间都不匹配时,流程返回到步骤S301。在步骤S301中,解码控制模块214重复相同的处理。
[标记处理中的匹配确定]
在标记处理中,在步骤S301中,解码控制模块214确定当前时间是否与mark_time_stamp之一匹配。但是,在本实施例中,由于时间计数部分214A指示离散值,所以如果简单地确定它们的匹配,可能会出现问题。
参照图50,借助于简单的例子描述这样的问题。在图50的上部,I0、P1、P2和P3代表视频存取单元。假设这些视频存取单元每一个的pic_struct都是3,即,显示持续时间是一帧(在90kHz下,3003)。在本例中,假设它们的解码顺序与它们的显示顺序相同,即,不会进行重新排序。I0是如在“再现准备处理”中描述的EP_map()中登记的存取单元。I0的存取单元具有时戳,PTS=180090。相反,P1、P2和P3的存取单元没有时戳。
当处理这样的视频数据时,如图50的下部所示的那样更新时间计数部分214A的时钟。当输出I0时,提供I0的PTS和pic_struct。由于I0具有PTS,所以将它代入时间计数部分214A中。结果,时间计数部分214A的PTS变成180090。当输出P1时,由于它没有PTS,所以只提供P1的pic_struct。由于I0的pic_struct是3,将一个帧的时间(在90kHz下,3003)添加到时间计数部分214A中。因此,时间计数部分214A的值变成183,093。类似地,当输出P2时,由于P1的pic_struct是3,所以将3003添加到时间计数部分214A的时间中。结果,时间计数部分214A的值变成186096。当输出P3时,类似地将3003添加到时间计数部分214A的时间中。结果,时间计数部分214A的值变成189099。
现在,将考虑在PlayListMark()(图9和图32)中登记的标记之一的mark_time_stamp是186000时进行的处理。如上所述,时钟(时间计数部分214A)输出的值是180090、183093、186096和189099,与标记的时间匹配的值186000不输出。因此,当简单比较mark_time_stamp和时间,即,确定差异是否是0时,将会出现问题。
因此,将预定规则应用于时间匹配确定。换句话说,在本例中,当特定事件的mark_time_stamp包含在特定画面的显示持续时间中时,定义特定事件出现在相关画面的显示开始时间上。在前述的例子中,mark_time_stamp=186000被包含在画面P1的显示持续时间中。因此,定义这个事件出现在P1的显示开始时间,即,183093上。
接着,描述在前述定义下进行匹配确定的解码控制模块214的确定算法。
在本例中,只有当更新视频数据时才更新时间(时间计数部分214A)。换句话说,只有当更新时间时才进行图49所示的步骤S301中的处理。因此,在由软件组成的再现装置中,由于处理步骤数可以显著减少,这种结构是有利的。
当更新时间时,调用图49所示的处理。在步骤S301,解码控制模块214检查是否存在被确定为与当前时间匹配的事件。换句话说,解码控制模块214基于当前时间和正在显示的画面的显示持续时间,检查是否存在被包含在正在显示的画面的显示持续时间中的事件。当不存在被确定为与当前时间匹配的事件时,流程返回到步骤S301。当存在被确定为与当前时间匹配的事件时,流程转到步骤S302。当不存在被确定为与当前时间匹配的事件时,可以结束处理。
具体地说,例如,当正在显示I0时,由于时间是180090且I0的pic_struct是3,显然,I0的显示持续时间是3003。因此,检索满足180090≤mark_time_stamp<180090+3003的mark_time_stamp。此时,由于此时举例的事件时间186000不满足这个表达式,所以确定时间不匹配。
在正在显示P1的时候,由于时间是183093且P1的pic_struct是3,显然,P1的显示间隔是3003。因此,检索满足183093≤mark_time_stamp<183093+3003的mark_time_stamp。由于此时举例的事件的时间186000满足这个表达式,所以确定时间匹配。此后,进行步骤S302之后的处理。
在前文中,示范了一种时间匹配确定。取而代之,可以应用其它定义。例如,当特定事件的mark_time_stamp大于或等于“特定画面的显示开始时间-α”和小于“下一个显示画面的显示开始时间-α”时,可以定义事件出现在相关画面的显示开始时间上。取而代之,对于相同的确定准则,例如,可以定义事件出现的时间是“相关画面的显示开始时间-α”。
当引入这样的定义时,在设置标记的时间,即mark_time_stamp时不必知道视频流的时间。因此,当进行创作(authoring)操作时,由于视频编码处理几乎与数据库的创建无关,所以它们可以分开完成。
相反,当步骤S301中的确定结果表示当前时间与具有“标记处理”属性的四个时间之一匹配时,解码控制模块214将表示当前时间变成具有“标记处理”属性的时间的消息与具有“标记处理”属性的匹配时间一起提供给播放器控制模块212。此后,流程转到步骤S302。
在步骤S302,播放器控制模块212从解码控制模块214接收表示当前时间变成具有“标记处理”属性的时间的消息、以及具有“标记处理”属性的匹配时间,并且将其mark_time_stamp与当前时间匹配的Mark()识别成要处理的Mark(),供标记处理用(在下文中,有时将此Mark()称为目标标记)。
换句话说,播放器控制模块212识别出正在再现的PlayList#0的PlayItem#0。通过利用PlayList()、PlayItem()和具有“标记处理”属性的、与当前时间匹配的、并从解码控制模块214提供的时间(mark_time_stamp)(下文有时将这个时间称为标记时间),参考“PLAYLIST.DAT”文件的PlayListMark(),播放器控制模块212识别出目标标记。
具体地,假设正在再现图2 9所示的第一PlayList#0的第一PlayItem#0。播放器控制模块212识别出标记时间是包含在如图32所示的上表中的PlayListMark()中的七个Mark()中的四个Mark(),即第一到第四Mark()的任一个的mark_time_stamp。
例如,当从解码控制模块214提供到播放器控制模块212的标记时间是16380090时,播放器控制模块212将在图32所示的上表中的PlayListMark()中的第一到第四Mark()这四个Mark()中包含的、其mark_time_stamp与作为标记时间的16380090匹配的第四Mark()识别成目标标记。
当播放器控制模块212识别出目标标记时,流程从步骤S302转到步骤S303。在步骤S303中,播放器控制模块212确定目标标记是否描述了标识基本流的entry_ES_stream_id和entry_ES_private_stream_id(图9)。
当步骤S303中的确定结果表示目标标记未描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id,即entry_ES_stream_id和entry_ES_private_stream_id两者都是0x00时,流程转到步骤S305,跳过步骤S304。在步骤S305中,解码控制模块214对目标标记进行处理。
相反,当步骤S303中的确定结果表示目标标记描述了标识基本流的entry_ES_stream_id和entry_ES_private_stream_id(图9)时,流程转到步骤S304。在步骤S304中,播放器控制模块212确定正在再现的基本流是否包含由entry_ES_stream_id和(必要时)entry_ES_private_stream_id标识的基本流。
当步骤S304中的确定结果表示正在再现的基本流不包含由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流时,流程返回到步骤S301。换句话说,当未正在再现由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流时,忽略目标标记。
相反,当步骤S304中的确定结果表示正在再现的基本流包含由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流,即,正在再现由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流时,确定目标标记是有效的。此后,流程转到步骤S305。在步骤S305中,播放器控制模块212对目标标记进行处理。
换句话说,在步骤S305中,通过参考目标标记(图9)的mark_type,播放器控制模块212可以确定目标标记。
当步骤S305中的确定结果表示目标标记是节标记或索引标记,即,目标标记的mark_type是“节”或“索引”时,流程转到步骤S306。在步骤S306中,播放器控制模块212使得图形处理模块219利用目标标记的节号或索引号来更新节号或索引号。此后,流程返回到步骤S301。
当步骤S305中的确定结果表示目标标记是事件标记,即,目标标记的mark_type是“事件”时,流程转到步骤S307。在步骤S307中,播放器控制模块212将表示已发生事件的事件消息和目标标记的mark_data这两者提供给脚本控制模块211。此后,流程转到步骤S308。
在步骤S308中,脚本控制模块211从播放器控制模块212接收事件消息和mark_data,并且根据作为中断请求的事件消息,利用mark_data的变元执行在“SCRIPT.DAT”文件中描述的一系列处理。此后,流程返回到步骤S301。
换句话说,脚本控制模块211进行与mark_data相对应的处理。
具体地说,在如图32所示的下表中的PlayList#1的PlayLisMark()中,第二Mark()(Mark#1)和第三Mark()(Mark#2)的每一个的mark_type是“事件”。但是,Mark#1的mark_data是1,而Mark#2的mark_data是2。
当脚本控制模块211接收到与第二Mark()相对应的事件消息和与第三Mark()相对应的事件消息时,脚本控制模块211利用相同的事件管理器(中断处理例程),根据接收的事件消息进行处理。脚本控制模块211检查与事件消息一起提供的mark_data,并利用事件管理器进行基于mark_data的处理。
具体地说,例如,当mark_data是1时,脚本控制模块211控制图形处理模块219显示第一类型图标。例如,当mark_data是2时,脚本控制模块211控制图形处理模块219显示第二类型图标。
mark_data不局限于1和2。另外,与mark_data相对应的处理不局限于显示简单图标。
换句话说,当mark_data处于从3到18的范围内时,脚本控制模块211控制图形处理模块219利用与从mark_data减去2的值(1到16范围内的数值)相对应的强度显示第一类型图标。另一方面,当mark_data处于从19到34的范围内时,脚本控制模块211控制图形处理模块219利用与从mark_data减去18的值(1到16范围内的数值)相对应的强度显示第二类型图标。
当用户操作的控制器与输入接口115(图1)连接,并且控制器具有振动电机时,其中该振动电机是将偏心重物安装在电机转轴上的直流(DC)电机且在驱动电机时会振动,如果mark_data的值在从35到42的范围之中,则可以在与从mark_data减去34的值(1到8范围内的数值)相对应的操作时间段内驱动振动电机。
mark_data是数值。mark_data的使用和算法可以借助于脚本控制模块211执行的脚本程序来描述。因此,可根据盘101的制造者或提供在盘101上记录的数据的内容提供者指定的预定规则或原始规则来使用mark_data。
当当前时间与具有“标记处理”属性的时间匹配时,从作为具有“标记处理”属性的时间的标记时间中识别目标标记。当目标标记未描述标识基本流的entry_ES_stream_id和entry_ES_private_stream_id时,进行基于目标标记的mark_type的处理。即使目标标记描述了标识基本流的entry_ES_stream_id和entry_ES_private_stream_id,在正在再现通过entry_ES_stream_id和entry_ES_private_stream_id标识的基本流的同时,也可以进行基于目标标记的mark_type的处理。
在正在再现如图29所示的第二PlayList#1的时候,进行如下标记处理。
换句话说,如在图32所示的下表中所示,第二PlayList#1的PlayListMark()描述了其mark_time_stamp分别是90,000、27,090,000和27,540,000的第一Mark()(Mark#0)、第二Mark()(Mark#1)和第三Mark()(Mark#2)。
另外,由于如图32所示的下表中的PlayListMark()的第二Mark()和第三Mark()的entry_ES_stream_id描述了0xE0和0xE1,所以第二Mark()和第三Mark()与由分别等于0xE0和0xE1的stream_id标识的基本流相关联。
如图29所述,第二PlayList#1只描述了一个PlayItem()(PlayItem#0)。根据PlayItem#0,再现剪辑流文件“00003.PS”。如图30A和图30B所示的、在与剪辑流文件“00003.PS”相对应的剪辑信息文件“00003.CLP”中所述的那样,剪辑流文件“00003.PS”与三个基本流,即,通过等于0xE0的stream_id标识的视频流stream#0、通过等于0xE1的stream_id标识的视频流stream#1、以及通过等于0x00的private_stream_id标识的音频流stream#2多路复用。
因此,如图32所示的下表中的PlayListMark()的第二Mark()与其stream_id是0xE0的、与剪辑流文件“00003.PS”多路复用的视频流stream#0相关联。第三Mark()与其stream_id是0xE1的、与剪辑流文件“00003.PS”多路复用的视频流stream#1相关联。
当再现图29所示的第二PlayList#1的PlayItem#0时,如在图34所示的步骤S124中所述,播放器控制模块212识别在图32所示的下表中的PlayListMark()中包含的三个Mark()属于PlayList#1的PlayItem#0,并且将作为三个Mark()的mark_time_stamp的{90,000}、{27,090,000}和{27,540,000}与表示具有“标记处理”属性的时间的信息提供给解码控制模块214。
在标记处理中,当正在再现PlayList#1的PlayItem#0时,解码控制模块214通常确定时间{90,000}、{27,090,000}和{27,540,000}中的哪一个与时间计数部分214A计数的当前时间匹配(在步骤S301)。当当前时间与具有“标记处理”属性的时间匹配时,解码控制模块214将作为具有“标记处理”属性的时间的标记时间与表示当前时间变成具有“标记处理”属性的时间的消息一起提供给播放器控制模块212。
当当前时间与具有“标记处理”属性的时间{90,000}、{27,090,000}和{27,540,000}中的27,090,000匹配时,解码控制模块2 14将具有“标记处理”属性的时间,即,27,090,000与表示当前时间变成具有“标记处理”属性的时间的消息一起提供给播放器控制模块212。
播放器控制模块212已识别出正在再现PlayList#1的PlayItem#0。播放器控制模块212将90,000、27,090,000和27,540,000,即属于在图32所示的下表中的PlayListMark()中描述的Mark()的PlayItem#0的三个Mark()的mark_time_stamp与27,090,000(即解码控制模块214提供的标记时间)相比较,并且将作为标记时间的27,090,000,即在如图32所示的下表中的PlayListMark()中描述的第二Mark()(Mark#1)识别成目标标记(在步骤S302)。
在图32所示的下表中的PlayListMark()中描述的、作为目标标记的第二Mark()中,entry_ES_stream_id是0xE0。如前所述,等于0xE0的entry_ES_stream_id代表与剪辑流文件“00003.PS”多路复用的、其stream_id是0xE0的视频流stream#0(图30A和图30B)。播放器控制模块212确定正在再现的基本流是否包含视频流stream#0(在步骤S303和S304)。
当正在再现的基本流不包含视频流stream#0时,播放器控制模块212忽略目标标记(在步骤S304)
相反,当正在再现的基本流包含视频流stream#0时,播放器控制模块212认为目标标记是有效的,并且进行基于目标标记的处理(在步骤S305到S308)。
在这种情况下,在图32所示的下表中的PlayListMark()中描述的、作为目标标记的第二Mark()的mark_type是“事件”。因此,第二Mark()是事件标记。播放器控制模块212将表示已发生事件的事件消息和目标标记的mark_data提供给脚本控制模块211(在步骤S305和S307)。脚本控制模块211根据从播放器控制模块212接收的、作为中断请求的事件消息,利用mark_data的变元执行在“SCRIPT.DAT”中描述的一系列处理(在步骤S308)。
如上所述,在标记处理中,播放器控制模块确定当前时间是否与mark_time_stamp匹配,当前时间是根据代表PlayList()的时间轴上的一个再现时间的mark_time_stamp、代表Mark()的类型的mark_type、和包含PlayListMark()(图9)的PlayList()(图7)再现的的剪辑流文件的再现时间,其中PlayListMark()(图9)没有Mark()或具有包含mark_data作为事件标记的变元的超过一个的Mark()。当当前时间与mark_time_stamp匹配时,播放器控制模块212将具有等于标记时间(即当前时间)的mark_time_stamp的Mark()识别成目标标记。当目标标记的mark_type代表发生事件的类型,即目标标记是事件标记时,提供目标标记的mark_type和事件消息。播放器控制模块212执行基于mark_data的处理。因此,可以根据剪辑流文件的再现时间执行基于mark_data的处理。
[out_time处理中的匹配确定]
如前所述,当时间计数部分214A计数的时间变成等于由播放器控制模块212提供的PlayItem的OUT_time时,解码控制模块214取消解码处理并完成PlayItem的再现。在本例中,在如图40所示的流程图的步骤S151中描述了PlayItem#0的完成。
在此情况下,当在匹配确定中简单地比较时间和OUT_time时,存在出现问题的可能性。因此,当比较时间和OUT_time时,使用前述匹配确定的定义。
换句话说,如图51所示,在与PlayListEnd相对应的PlayItem的OUT_time小于在PlayList末端显示的FoCFP(当前正在再现的视频流中的帧或互补场对)的PET的情况下,当PlayListEnd事件出现在其显示持续时间包含与PlayListEnd的时间相对应的OUT_time的FoCFP的显示开始时间(PTS)上,即,PTSFOCFP[3]≤OUT_time<PETFOCFP[3]时,PlayListEnd事件出现在FoCFP[3]的显示开始时间PTSFOCFP[3]上。在本例中,PETFOCFP[k]代表“将基于pic_struct的显示持续时间加上PTSFOCFP[k]的时间”。
因此,由于只有当输出视频流时才进行匹配确定,所以使处理负担变轻了。另外,如上所述,视频流的准备几乎与数据库的准备无关。
另外,解码控制模块214向播放器控制模块212通知PlayItem的再现的完成。当播放器控制模块212确定PlayItem是PlayList的最后PlayItem时,播放器控制模块212使得脚本控制模块211生成PlayListEnd事件。
当脚本控制模块211接收到PlayListEnd事件时,脚本控制模块211知道所命令的PlayList的再现已完成了,并且继续进行已编程的操作。换句话说,例如,脚本控制模块再现另一个PlayList、显示菜单、或完成操作等。
在图52所示的情况中,当OUT_time等于PlayItem中的最后画面的显示结束时间时,在前述匹配确定中可能不能管理这种情况。在图52中,例如,当显示和暂停FoCFP[2]时,如果调用playStop(),则显示和暂停FoCFP[3]。此后,如果再次调用playStop(),则不改变显示的画面,但出现PlayListEnd。
换句话说,由于最后画面的显示开始时间+基于pict_struct的持续时间=OUT_time,所以最后画面的显示开始时间+基于pict_struct的持续时间<OUT_time的关系得不到满足。
在这种情况下,在视频解码器控制模块216输出最后画面、然后经过了画面的显示持续时间之后,视频解码器控制模块216将代表显示结束的信息发送到解码控制模块214。因此,时钟被向前设置成“最后画面的显示开始时间+基于pict_struct的持续时间”。因此,可以满足匹配条件。
[字幕解码]
每当字幕解码器控制模块218从缓冲器控制模块215(图5)的字幕读取功能部分235获取在缓冲器214A中存储的一个字幕存取单元以及向其添加的时戳时,字幕解码器控制模块218都使得内部字幕解码软件解码该字幕存取单元。另外,字幕解码器控制模块218将时戳和持续时间发送到解码控制模块214。
当解码控制模块214利用字幕解码器控制模块216提供的信息来改变时钟(时间计数部分214A)的时间时,解码控制模块214检查从视频解码器控制模块216提供的字幕存取单元的PTS。换句话说,当解码控制模块214根据匹配确定准则确定字幕存取单元的PTS与时间匹配时,解码控制模块214使得图形处理模块219输入字幕,并使得字幕解码器控制模块218输出字幕。
当解码控制模块214使得字幕解码器控制模块218输出字幕时,字幕解码器控制模块218将解码的字幕画面数据提供给图形处理模块219。图形处理模块219存储输入的字幕数据,并且将它们与以后输入的视频数据组合。
解码控制模块214还检查字幕的显示持续时间。换句话说,当根据匹配确定准则确定“字幕的显示开始时间+显示持续时间”与当前时间匹配时,解码控制模块214使得图形处理模块219擦除字幕。结果,图形处理模块219擦除已存储和输入的字幕数据,并停止组合字幕数据与以后输入的视频数据。
[标记间隔的必要性]
在前述匹配确定准则中,将处在预定范围内的时间舍入成单个时间。换句话说,将满足关系“特定视频数据的显示开始时间≤t<显示结束时间”的时间t舍入成视频数据的显示开始时间。
因此,可将两个相邻事件的时间输入成根据事件位置关系的一个时间。例如,在图50所示的例子中,如果紧接在其时间是186,000的事件之后的事件的mark_time_stamp是184,000,则定义为这两个事件发生在P1的显示开始时间上。
为了防止这样的状况,必须保证只能为单个视频指定单个事件。因此,当相邻事件的间隔是三个场或更多(多于用pic_struct指定的最大显示时间)时,可以保证前述条件。
图53示出了前述条件的例子。换句话说,在图53中,情况A表示帧速率是5005/240000(逐行,在23.976kHz下)且最小事件间隔是7507,而情况B表示帧速率是4004/240000(隔行,在59.94kHz下)且在90kHz下的最小事件间隔是6006。
在诸如AVC和MPEG2 Video的视频编码系统中,在三个场的时间内显示一帧的信号,以有效地编码2-3下拉画面。因此,一帧的信号的最大持续时间是三个场。换句话说,当相邻事件的间隔只相隔三个场的时间或更多时,可防止将这两个相邻事件确定为它们在单个视频数据的显示开始时间上发生。
另外,可以利用多于三个的场来定义相邻事件的间隔。例如,可以利用两个帧或更多个帧来定义相邻事件的间隔。
取而代之,通过检查所有事件的视频数据和确定它们不重叠,可以保证前述条件。
[输出属性控制处理]
接着,将参照如图54所示的流程图,详细描述在图34等所示的步骤S126中执行的输出属性控制处理。
如在图34所示的步骤S126所述,播放器控制模块212检查要再现的至少一个基本流,即,代表DynamicInfo()的数目的number_of_DynamicInfo(图12),DynamicInfo()描述已经在图24所示的步骤S125中决定再现的至少一个基本流的输出属性。
当要再现的至少一个基本流的每一个的number_of_DynamicInfo都是0时,播放器控制模块212不进行任何处理。
相反,当要再现的基本流的number_of_DynamicInfo不是0时,播放器控制模块212根据如图54所示的流程图执行输出属性控制处理。
因此,当在盘101上记录的三个剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”如图30A和图30B所示,并且再现用于再现与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”的第一PlayList#0的第一PlayItem#0时,由于在剪辑信息文件“00001.CLP”(图30A和图30B)中,与剪辑流文件“00001.PS”多路复用的所有四个基本流stream#0到stream#3的number_of_DynamicInfo都是0,所以播放器控制模块212不执行输出属性控制处理。
类似地,当再现用于再现与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”的第一PlayList#0的第二PlayItem#1时,由于剪辑信息文件“00002.CLP”(图30A和图30B)中,与剪辑流文件“00002.PS”多路复用的所有四个基本流stream#0到stream#3的number_of_DynamicInfo都是0,所以播放器控制模块212不执行输出属性控制处理。
相反,当再现用于再现与剪辑信息文件“00003.CLP”相对应的剪辑流文件“ 00003.PS”的第二PlayList#1的第一PlayItem#0时,由于剪辑信息文件“00003.CLP”(图30A和图30B)中,与剪辑流文件“00003.PS”多路复用的三个基本流stream#0到stream#2中作为第一基本流的视频流stream#0和作为第三基本流的音频流stream#2的number_of_DynamicInfo分别是2和3,所以播放器控制模块212执行输出属性控制处理。
换句话说,在输出属性控制处理中,在步骤S320中,播放器控制模块212将在与要再现的剪辑流文件相对应的剪辑信息文件Clip()(图12)中描述的pts_change_point与代表具有“DynamicInfo()进程”属性的时间的信息一起提供给解码控制模块214。解码控制模块214从播放器控制模块212接收作为具有“DynamicInfo()进程”属性的时间的pts_change_point。此后,流程转到步骤S321。
在步骤S321中,解码控制模块214确定时间计数部分214A计数的当前时间是否与作为具有“DynamicInfo()进程”属性的时间的pts_change_point匹配。当步骤S321中的确定结果表示当前时间与pts_change_point不匹配时,流程返回到步骤S321。
相反,当步骤S321中的确定结果表示当前时间与具有“DynamicInfo()进程”属性的时间中的任一个匹配时,解码控制模块214将表示当前时间变成具有“DynamicInfo()进程”属性的时间的消息和具有“DynamicInfo()进程”属性的时间(下文有时称为DynamicInfo时间)提供给播放器控制模块212。此后,流程转到步骤S322。
在步骤S322中,播放器控制模块212从解码控制模块214接收表示当前时间变成具有“DynamicInfo()进程”属性的时间的消息和DynamicInfo时间,并且将与匹配DynamicInfo时间的pts_change_point(图12)配对的DynamicInfo()识别成目标DynamicInfo()。此后,流程转到步骤S323。
在步骤S323中,播放器控制模块212将在作为目标DynamicInfo()的DynamicInfo()(图15)中描述的输出属性提供给图形处理模块219或音频输出模块221。此后,流程转到步骤S324。
在步骤S324中,图形处理模块219或音频输出模块221根据在步骤S323中从播放器控制模块212提供的输出属性,开始控制视频数据或音频数据的输出。此后,流程返回到步骤S321。
因此,例如,根据被描述成输出模式的宽高比来输出视频数据。可替代地,例如,根据被描述成输出模式的立体声模式或双声道(双语)模式来输出音频数据。
接着,将参照图55,详细描述输出属性控制处理。
即,图55示出了在图30A和图30B所示的剪辑信息文件“00003.CLP”中描述的一对pts_change_point和DynamicInfo()(图12)。
如上所述,在如图30A和图30B所示的剪辑信息文件“00003.CLP”中,与剪辑流文件“00003.PS”多路复用的三个基本流stream#0到stream#2中作为第一基本流和第三基本流的视频流stream#0和音频流stream#2的number_of_DynamicInfo分别是2和3。因此,在剪辑信息文件“00003.CLP”中,为剪辑信息文件“00003.CLP”的第一视频流stream#0描述了两组pts_change_point和DynamicInfo(),和为为剪辑信息文件“00003.CLP”的第三音频流stream#2描述了三组pts_change_point和DynamicInfo()。
在如图55所示的上表中,描述了剪辑信息文件“00003.CLP”的第一视频流stream#0的两组pts_change_point和DynamicInfo()。在如图55所示的下表中,描述了剪辑信息文件“00003.CLP”的第三音频流stream#2的三组pts_change_point和DynamicInfo()。
在如图55所示的上表中,除了第一视频流stream#0的两组pts_change_point和DynamicInfo()之外,还描述了如图30A和30B所示的剪辑信息文件“00003.CLP”的第一视频流stream#0的stream_id(=0xE0)、private_stream_id(=0x00)、和number_of_DynamicInfo(=2)。类似地,在如图55所示的下表中,除了第三音频流stream#2的三组pts_change_point和DynamicInfo()之外,还描述了如图30A和30B所示的剪辑信息文件“00003.CLP”的音频流stream#2的stream_id(=0xBD)、private_stream_id(=0x00)、和number_of_DynamicInfo(=3)。
在如图5 5所示的上表中,视频流stream#0的两组pts_change_point和DynamicInfo()的第一组的pts_change_point是90,000且它的DynamicInfo()的display_aspect_ratio(图15)是“4∶3”。第二组的pts_change_point是54,090,000且它的DynamicInfo()的display_aspect_ratio是“16∶9”。
在如图55所示的下表中,音频流stream#2的三组pts_change_point和DynamicInfo()中的第一组的pts_change_point是90,000且它的DynamicInfo()的channel_assignment(图15)是“双声道”。第二组的pts_change_point是27,090,000且它的DynamicInfo()的channel_assignment是“立体声”。第三组的pts_change_point是32,490,000且它的DynamicInfo()的channel_assignment是“双声道”。
现在,假设在如图34所示的步骤S125中,通过等于0xE0的stream_id标识的第一视频流stream#0、以及通过等于0xBD的stream_id和等于0x00的private_stream_id标识的第三音频流stream#2被决定为要从剪辑流文件“00003.PS”再现的流。
在这种情况下,播放器控制模块212在如图55所示的上表中的两组pts_change_point和DynamicInfo()中检查通过等于0xE0的stream_id标识的视频流stream#0,并在如图55所示的下表中的三组pts_change_point和DynamicInfo()中检查通过等于0xBD的stream_id和等于0x00的private_stream_id标识的音频流stream#2,并且识别初始值。
换句话说,通过等于0xE0的stream_id标识的视频流stream#0的、如图55所示的上表中的两组pts_change_point和DynamicInfo()中第一组的pts_change_point是90,000。时间90,000与在presentation_start_time中描述的时间90,000匹配,presentation_start_time代表对应于已与视频流stream#0多路复用的剪辑流文件“00003.PS”的、图30A和图30B所示的剪辑信息文件“00003.CLP”中的剪辑流文件“00003.PS”的开始时间。
类似地,通过等于0xBD的stream_id和等于0x00的private_stream_id标识的音频流stream#2的、如图55所示的下表中的三组pts_change_point和DynamicInfo()中第一组的pts_change_point是90,000。时间90,000与描述在presentation_start_time中的时间90,000匹配,presentation_start_time代表对应于已与音频流stream#2多路复用的剪辑流文件“00003.PS”的、如图30A和图30B所示的剪辑信息文件“00003.CLP”中的剪辑流文件“00003.PS”的开始时间。
播放器控制模块212将与在代表剪辑流文件“00003.PS”的开始时间的presentation_start_time中描述的时间90,000匹配的pts_change_point识别成初始值。因此,播放器控制模块212将如图55所示的上表中的两组pts_change_point和DynamicInfo()中第一组的pts_change_point和如图55所示的下表中的三组pts_change_point和DynamicInfo()中第一组的pts_change_point识别成初始值。
播放器控制模块212在再现剪辑流文件“00003.PS”之前,根据与在图34所示的步骤S126中被识别成初始值的pts_change_point配对的DynamicInfo()来指定基本流的输出属性。
对于如图55所示的上表中的通过等于0xE0的stream_id标识的视频流stream#0,与等于作为初始值的90,000的pts_change_point配对的DynamicInfo()的display_aspect_ratio是“4∶3”。在这种情况下,播放器控制模块212利用表示display_aspect_ratio是“4∶3”的信息,即,有关表示视频流stream#0是宽高比为4∶3的视频数据的输出属性的信息,控制图形处理模块219。
对于如图55所示的下表中的通过等于0xBD的stream_id和等于0x00的private_stream_id标识的音频流stream#2,与等于作为初始值的90,000的pts_change_point配对的DynamicInfo()的channel_assignment是“双声道”。在这种情况下,播放器控制模块212将表示channel_assignment是“双声道”的信息,即,有关表示音频流stream#2是双声道音频数据的输出属性的信道提供给音频输出模块221。
在如图34所示的步骤S126中,播放器控制模块212为作为初始值的pts_change_point执行输出属性控制处理。
此后,播放器控制模块212将图55所示的上表中的视频流stream#0的两个pts_change_point,即,90,000和54,090,000和图55所示的下表中的音频流stream#2除了作为初始值的90,000之外的三个pts_change_point的时间,即,90,000、27,090,000和32,490,000的{27,090,000}、{32,490,000}和{54,090,000}与表示这些时间具有“DynamicInfo()进程”属性的信息一起提供给解码控制模块214(在步骤S320中)。
解码控制模块214从播放器控制模块212接收具有“DynamicInfo()进程”属性的时间{27,090,000}、{32,490,000}和{54,090,000}。在开始再现视频流stream#0和音频流stream#2之后,解码控制模块开始检查由时间计数部分214A计数的当前时间。
当当前时间与具有“DynamicInfo()进程”属性的时间{27,090,000}、{32,490,000}和{54,090,000}之一匹配时,解码控制模块214将作为具有“DynamicInfo()进程”属性的、且与当前时间匹配的时间的DynamicInfo时间提供给播放器控制模块212(在步骤S321中)。
当当前时间变成(例如)27,090,000时,解码控制模块214将与当前时间匹配的、且是具有“DynamicInfo()进程”属性的时间之一的27,090,000作为DynamicInfo时间而提供给播放器控制模块212。
播放器控制模块212从解码控制模块214接收作为DynamicInfo时间的27,090,000,从图55所示的上表中的视频流stream#0的两个pts_change_point和图55所示的下表中的音频流stream#2的三个pts_change_point中检查与作为DynamicInfo时间的27,090,000匹配的pts_change_point,并且将与匹配27,090,000的pts_change_point配对的DynamicInfo(),即图55所示的下表中的音频流stream#2的第二DynamicInfo()识别成目标DynamicInfo()(在步骤S322中)。
当目标DynamicInfo()是视频流的DynamicInfo()时,播放器控制模块212将在目标DynamicInfo()中描述的输出属性提供给图形处理模块219(在步骤S323中)。当目标DynamicInfo()是音频流的DynamicInfo()时,播放器控制模块212将在目标DynamicInfo()中描述的输出属性提供给音频输出模块221(在步骤S323中)。
当图形处理模块219从播放器控制模块212接收到输出属性时,图形处理模块219根据该输出属性而开始控制视频数据的输出(在步骤S324中)。
换句话说,图形处理模块219根据从(例如)播放器控制模块212接收的输出属性所代表的视频数据的宽高比(display_aspect_ratio(图15))和与如图1所示的视频输出端120连接的视频输出设备的宽高比,转换输出到(例如)视频输出模块220的视频数据的宽高比。
具体地说,例如,当视频输出设备的宽高比是16∶9而输出属性所代表的视频数据的宽高比是4∶3时,图形处理模块219沿着水平方向对输出到视频输出模块220的视频数据进行压缩处理,将使得视频数据的左右端变成黑色的数据放入视频数据中,并且输出所得视频数据。例如,当视频输出设备的视频数据的宽高比是4∶3而输出属性所代表的视频数据的宽高比是16∶9时,图形处理模块219沿着垂直方向对输出到视频输出模块220的视频数据进行压缩处理,将使得视频数据的上下端变成黑色的数据放入视频数据中,并且输出所得视频数据。当视频输出设备的宽高比和作为输出属性的视频数据的宽高比相同,即,4∶3或16∶9时,图形处理模块219将视频数据输出到视频输出模块220,而不对视频数据进行压缩处理。
借助于如图55所示的上表中的、通过等于0xE0的stream_id标识的视频流stream#0的两组pts_change_point和DynamicInfo(),在作为视频流stream#0的再现开始时间的时间90,000之后且在时间54,090,000之前,从视频流#0中获得具有4∶3宽高比的视频数据。在时间54,090,000之后,从视频流#0中获得具有16∶9宽高比的视频数据。
因此,假设与如图1所示的视频输出端120连接的视频输出设备的宽高比是(例如)4∶3,图形处理模块219在时间90,000之后且在时间54,090,000之前,将从视频流stream#0中获得的具有4∶3宽高比的视频数据提供给宽高比是4∶3的视频输出设备。
在时间54,090,000之后,图形处理模块219沿着垂直方向对具有16∶9宽高比的视频数据进行压缩处理,利用使得视频数据的上下端变成黑色的数据来将具有16∶9宽高比的视频数据转换成具有4∶3宽高比的视频数据。将转换的视频数据提供给视频输出设备。视频输出设备显示转换的视频数据。
当音频输出模块221从播放器控制模块212接收到输出属性时,音频输出模块221根据输出属性而开始控制音频数据的输出(在步骤S324中)。
换句话说,音频输出模块221根据由从播放器控制模块212接收的输出属性所代表的音频数据的声道指定(channel_assignment(图15)),并根据通过用户利用遥控器操作的输入接口115(图1)而从播放器控制模块212提供的音频输出模式,处理从音频解码器控制模块217接收的音频数据,并且将经过处理的音频数据输出到音频输出端121(图1)。
具体地,当输出属性所代表的音频数据的声道指定是左声道是“主音频”数据而右声道是“次音频”数据的双声道(双语)模式时,音频输出模块221根据从播放器控制模块212提供的音频输出模式来处理从音频解码器控制模块217提供的音频数据,并且将经过处理的音频数据输出到音频输出端121。
换句话说,如果将“主音频”指定成音频输出模式,则音频输出模块221将从音频解码器控制模块217接收的音频数据的左声道复制成音频数据的右声道,并且将音频数据(“主音频”数据)的左右声道输出到音频输出端121。如果将“次音频”指定成音频输出模式,则音频输出模块221将从音频解码器控制模块217接收的音频数据的右声道复制成左声道,并且将左右声道(“次音频”数据)输出到音频输出端12。如果将“主次音频”两者指定成音频输出模式,则音频输出模块221直接将从音频解码器控制模块217接收的音频数据输出到音频输出端121。
例如,如果输出属性所代表的音频数据的声道指定是立体声,则音频输出模块221将从音频解码器控制模块217接收的音频数据直接输出到音频输出端121,而不管指定了什么音频输出模式。
借助于如图55所示的下表中的通过等于0xE0的stream_id和等于0x00的private_stream_id标识的音频流stream#2的三组pts_change_point和DynamicInfo(),在作为再现开始时间的时间90000之后并在时间27,090,000之前,从音频流stream#2中获得双声道音频数据。另外,在时间27,090,000之后并在时间32,490,000之前,从音频流stream#2中获得立体声音频数据。另外,在时间32,490,000之后,从音频流stream#2中获得双声道音频数据。
因此,当将“主音频”指定成音频输出模式时,音频输出模块221将在时间90,000之后并在时间27,090,000之前从音频解码器控制模块217获得的双声道音频数据的左声道的音频数据复制成音频数据的右声道。将音频数据的左声道和右声道输出到音频输出端121。
将在时间27,090,000之后并在时间32,490,000之前从音频流stream#2中获得的立体声音频数据输出到音频输出端121。
将在时间32,490,000之后从音频流stream#2中获得的双声道音频数据的左声道复制成音频数据的右声道。将音频数据的左声道和右声道输出到音频输出端121。
如上所述,在输出属性控制处理中,根据包含n组pts_change_point和DynamicInfo()的剪辑信息文件Clip()(图12)确定正在再现的基本流的再现时间是否与pts_change_point匹配(其中n是0或更大的任何整数),其中,pts_change_point代表与剪辑流文件多路复用的每个基本流的再现时间,而DynamicInfo()代表每个基本流的输出属性。当正在再现的基本流的再现时间与pts_change_point匹配时,识别与pts_change_point配对的DynamicInfo()。根据在DynamicInfo()中描述的输出属性来控制正在再现的基本流的输出。因此,可以根据基本流的再现时间和输出属性来控制基本流的输出。
[字幕显示控制处理]
接着,将参照如图56所示的流程图,描述控制与字幕流相对应的字幕数据的显示的字幕显示控制处理。
当开始再现PlayList()时,播放器控制模块212在步骤S341中初始化图形处理模块219的字幕数据显示模式。换句话说,播放器控制模块212控制图形处理模块219将字幕数据显示模式改变成默认显示模式。在步骤S341中执行的显示模式初始化对应于在如图34所示的步骤S127中执行的显示模式初始化。
在步骤S341之后,流程转到步骤S342。在步骤S342,播放器控制模块212确定用户是否通过遥控器将新字幕数据显示模式命令输入到输入接口115。
当步骤S342中的确定结果表示已经输入新显示模式命令时,流程转到步骤S343。在步骤S343中,播放器控制模块212确定是否正在再现字幕流。
当步骤S343中的确定结果表示未正在再现字幕流时,流程返回到步骤S342。
相反,当步骤S343中的确定结果表示正在再现字幕流时,流程转到步骤S345。在步骤S345中,播放器控制模块212确定新显示模式命令是否是默认显示模式命令。当步骤S345中的确定结果表示新显示模式命令是默认显示模式命令时,流程返回到步骤S341。在步骤S341中,如上所述,播放器控制模块212控制图形处理模块219将字幕数据显示模式改变成默认显示模式。
相反,当步骤S345中的确定结果表示新显示模式命令不是默认显示模式命令,即,新显示模式命令是非默认显示模式命令,例如,字幕数据放大命令、字幕数据缩小命令、或亮度增强命令时,流程转到步骤S346。在步骤S346中,播放器控制模块212获取与多路复用了正在再现的的字幕流的剪辑流文件相对应的剪辑信息文件Clip()(图12)的StaticInfo()(图14)当中正在再现的字幕流的StaticInfo()。此后,流程转到步骤S347。
在步骤S347中,播放器控制模块212确定在步骤S346中获得的StaticInfo()的configurable_flag。
当步骤S347中的确定结果表示configurable_flag是0,即表示不允许改变字幕数据显示模式时,流程转到步骤S348。在步骤S348中,播放器控制模块212控制图形处理模块219向输出视频数据叠加表示不能改变字幕数据显示模式的消息。此后,流程返回到步骤S342。在步骤S342中,显示错误消息。
相反,当步骤S347中的确定结果表示configurable_flag是1,即表示允许改变字幕数据显示模式时,流程转到步骤S349。在步骤S349中,播放器控制模块212将用户已通过输入接口115从遥控器输入的新显示模式命令提供给图形处理模块219。此后,流程转到步骤S350。
在步骤S350中,图形处理模块219根据已在步骤S349中从播放器控制模块212提供的显示模式命令,开始对字幕解码器控制模块218提供的字幕数据进行放大处理、缩小处理或亮度改变处理。此后,流程返回到步骤S342。因此,根据用户通过遥控器输入的显示模式命令,以一定显示大小、在一定显示位置上、或以一定显示颜色显示字幕数据。
相反,当步骤S342中的确定结果表示未输入新显示模式命令时,流程转到步骤S351。在步骤S351中,播放器控制模块212确定是否已经如图40所述的那样改变PlayItem()。当步骤S351中的确定结果表示PlayItem()未改变时,流程返回到步骤S342。
相反,当步骤S351中的确定结果表示PlayItem()已改变时,流程返回到步骤S341。在步骤S341中,如上所述,播放器控制模块212控制图形处理模块219将字幕数据显示模式改变成默认显示模式。换句话说,当PlayItem()已改变时,使字幕数据显示模式恢复成默认显示模式。
如上所述,只有当字幕流的configurable_flag是1,即表示允许改变显示模式时,才可以与用户通过遥控器输入的显示模式命令相对应地改变字幕流的字幕数据显示模式。
因此,例如,在如图30A和图30B所示的剪辑信息文件“00001.CLP”中,由于作为与剪辑流文件“00001.PS”多路复用的四个基本流中的第三基本流的字幕流stream#2的configurable_flag是0,即表示不允许改变显示模式,所以在正在显示字幕流stream#2的时候,即使用户操作遥控器改变字幕显示模式,也不能改变显示模式。
相反,由于作为与剪辑流文件“00001.PS”多路复用的四个基本流中的第四基本流的字幕流stream#3的configurable_flag是1,即表示允许改变显示模式,所以在正在显示字幕流stream#3的时候,当用户操作遥控器改变字幕显示模式时,可以改变字幕的显示大小。
现在,假设正在根据如图29所示的第一PlayList#1的第一PlayItem#1再现剪辑流文件“00001.PS”。另外,在如图39A和图30B所示的剪辑流文件“ 00001.PS”中,假设与剪辑流文件“00001.PS”多路复用的四个基本流中的第三和第四基本流是字幕流,并且正在再现第三和第四字幕流stream#2和stream#3的第三字幕流stream#2。
当用户操作遥控器输入字幕显示模式命令时(在步骤S342中),将显示模式命令从输入接口115(图1)提供到播放器控制模块212。当播放器控制模块212接收到显示模式命令时,播放器控制模块212从剪辑信息文件中搜索与正在再现的字幕流相对应的StaticInfo()(图12)(在步骤S346中)。
换句话说,正在再现的字幕流是与剪辑流文件“00001.PS”多路复用的第三字幕流stream#2。播放器控制模块212从相应剪辑信息文件“00001.CLP”中搜索第三字幕流stream#2的StaticInfo()。
另外,播放器控制模块212确定在如图30A和30B所示的第三字幕流stream#2的StaticInfo()中描述的、等于0的configurable_flag(在步骤S347中)。因此,播放器控制模块212识别出不允许改变第三字幕流stream#2的显示模式。
在这种情况下,播放器控制模块212确定正在再现的字幕流不对应于放大和缩小模式,并且控制图形处理模块219生成相应错误消息(在步骤S348中),向视频数据叠加错误消息,并输出叠加的视频数据。
在正在再现与剪辑流文件“00001.PS”多路复用的四个基本流的第三和第四字幕流stream#2和stream#3中的第四字幕流stream#3的时候,当播放器控制模块212接收到用户通过遥控器输入的显示模式命令时,播放器控制模块212从相应剪辑信息文件“00001.CLP”中搜索第四字幕流stream#3的StaticInfo()。
播放器控制模块212确定在如图30A和30B所示的第四字幕流stream#3的StaticInfo()中描述的、等于1的configurable_flag(在步骤S347)。因此,播放器控制模块212识别出允许改变第四字幕流stream#3的显示模式。
在这种情况下,播放器控制模块212确定正在再现的字幕流对应于放大和缩小模式,并且将用户通过遥控器输入的显示模式命令提供给图形处理模块219(在步骤S349中)。
因此,例如,图形处理模块219根据从播放器控制模块212接收的显示模式命令放大或缩小从字幕解码器控制模块218接收的字幕数据,将视频解码器控制模块212提供的视频数据与所得字幕数据叠加,并且输出叠加视频数据。
当播放器控制模块212开始再现PlayList()的第一PlayItem()时,播放器控制模块212初始化图形处理模块219的字幕数据显示模式(在步骤S341中)。换句话说,播放器控制模块212控制图形处理模块219将字幕数据显示模式改变成默认显示模式。
当改变PlayItem()时,播放器控制模块212初始化图形处理模块219的字幕数据显示模式(在步骤S341和S351中)。
当改变PlayItem()时,播放器控制模块212根据新再现的PlayItem()从configurable_flag中检查新字幕流。当configurable_flag是0时,播放器控制模块212初始化图形处理模块219的字幕数据显示模式。当configurable_flag是1时,播放器控制模块212使图形处理模块219保持PlayItem#0的未改变的显示模式。
在图56所示的字幕显示控制处理中,当用户通过遥控器输入新显示模式命令时,将新显示模式命令提供给图形处理模块219(在步骤S349)。例如,可以将显示模式命令存储在构成存储器113的非易失性存储器中(图1)。可以将存储在非易失性存储器中的显示模式命令提供给图形处理模块219。
在将用户已设置的显示模式命令存储在非易失性存储器中作为如图1所示的盘再现装置的初始设置的情况下,当他或她利用遥控器输入新显示模式命令时,可以用新显示模式命令取代在非易失性存储器中存储的显示模式命令,并且可以将存储在非易失性存储器中的新显示模式命令提供给图形处理模块219。在这种情况下,由于非易失性存储器存储已在完成最后再现时设置的显示模式命令,所以当再现下一个PlayList()时,无需通过遥控器输入显示命令,可以利用该显示模式命令显示字幕数据。
在这种情况下,例如,假设在非易失性存储器中存储的显示模式命令包括放大或缩小字幕流的放大率或缩小比。
如上所述,在字幕显示控制处理中,根据表示是否允许从默认显示模式改变显示模式的configurable_flag来确定是否允许从默认显示模式改变字幕数据显示模式,configurable_flag被包含在正在再现包含在剪辑信息文件Clip()(图12)中的基本流的时候不改变的字幕数据的StaticInfo()中。当允许改变正在再现的字幕数据的字幕数据的默认显示模式时,进行字幕数据的显示处理,例如,放大处理、缩小处理、或颜色改变处理。因此,可以控制字幕数据显示模式。
[捕获控制处理]
接着,将参照如图57所示的流程图,描述控制与视频流相对应的视频数据的捕获的捕获控制处理。图57还示出了二次使用在捕获控制处理中捕获的视频数据的背景/屏幕保护处理的流程图。
当用户通过输入接口115(图1)从遥控器向播放器控制模块212输入视频数据捕获命令时,开始执行捕获控制处理。
换句话说,在捕获控制处理中,在步骤S371,播放器控制模块212确定是否正在再现视频流。当步骤S371中的确定结果表示未正在再现视频流时,播放器控制模块212结束捕获控制处理。
相反,当步骤S371中的确定结果表示正在再现视频流时,流程转到步骤S372。播放器控制模块212从与正在再现的视频流相对应的PlayList()(图7)中获取capture_enable_flag_PlayList,并从与正在再现的视频流相对应的剪辑信息文件Clip()(图12)中获取capture_enable_flag_Clip。
如图7所示,PlayList()的capture_enable_flag_PlayList表示是否允许二次使用与根据PlayList()再现的视频流相对应的视频数据。另一方面,如图12所述,剪辑信息文件Clip()的capture_enable_flag_Clip表示是否允许二次使用与在对应于剪辑信息文件Clip()的剪辑流文件中存储的视频流相对应的视频数据。
在步骤S372之后,流程转到步骤S373。在步骤S373中,播放器控制模块212根据在步骤S373中获得的capture_enable_flag_PlayList和capture_enable_flag_Clip,确定是否允许捕获当从输入接口115(图1)输入捕获命令时正在再现的视频数据的画面。
当步骤S373中的确定结果表示不允许捕获从输入接口115输入捕获命令时正在再现的视频数据的画面,即在步骤S373中获得的capture_enable_flag_PlayList和capture_enable_flag_Clip的至少一个是0,表示不允许二次使用视频数据时,流程转到步骤S374。在步骤S374中,播放器控制模块212控制图形处理模块219将视频数据与表示不允许捕获视频数据的错误消息叠加,并且结束捕获控制处理。结果,显示错误消息。
相反,当步骤S373中的确定结果表示允许捕获当从输入接口115输入捕获命令时正在再现的视频数据的画面,即在步骤S373中获得的capture_enable_flag_PlayList和capture_enable_flag_Clip两者都是1,表示允许二次使用视频数据时,流程转到步骤S375。在步骤S375中,播放器控制模块212将当从输入接口115输入捕获命令时正在再现的视频数据的捕获命令提供给图形处理模块219。此后,流程转到步骤S376。
在步骤S376中,图形处理模块219根据从播放器控制模块212接收的捕获命令,从视频解码器控制模块216捕获视频数据的画面,将画面存储在存储器113(图1)中,并且完成捕获控制处理。当capture_enable_flag由数个位组成和它们的使用条件受到限制时,此时进行相应操作。换句话说,当捕获画面的大小受到限制时,捕获大小缩小了的画面。当使用的应用程序受到限制时,也记录代表限制的标志。
如上所述,在捕获控制处理中,对与用户输入捕获命令时正在再现的视频流相对应的PlayList()(图7)和剪辑信息文件Clip()(图12)的capture_enable_flag_PlayList和capture_enable_flag_Clip进行“与”操作。当“与”操作结果是1,即所有capture_enable_flag_PlayList和capture_enable_flag_Clip都是1,即表示允许二次使用视频数据时,确定可以二次使用视频数据。结果,捕获视频数据。
当与如图29所示的第一PlayList#0的第一PlayItem#0相对应地再现视频流,即正在再现与剪辑流文件“00001.PS”多路复用的视频流时,如果用户输入捕获命令,则由于第一PlayList#0的capture_enable_flag_PlayList是1,且与通过第一PlayItem#0再现的剪辑流文件“00001.PS”相对应的、如图30A和图30B所示的剪辑信息文件“00001.CLP”的capture_enable_flag_Clip是1,确定能够二次使用正在再现的视频数据(与多路复用了剪辑流文件“00001.PS”的视频流相对应的视频数据),并且捕获视频数据。
在正在根据如图29所示的第一PlayList#0的第二PlayItem#1再现视频流,即正在再现与剪辑流文件“00002.PS”多路复用的视频流的时候,当用户输入捕获命令时,由于第一PlayList#0的capture_enable_flag_PlayList是1,且与根据第二PlayItem#1再现的剪辑流文件“00002.PS”相对应的、如图30A和图30B所示的剪辑信息文件“00002.CLP”的capture_enable_flag_Clip是0,确定不能二次使用正在再现的视频数据(与多路复用了剪辑流文件“00002.PS”的视频流相对应的视频数据),并且不捕获视频数据。
在正在根据如图2 9所示的第二PlayList#1的PlayItem#0再现视频流,即正在再现与剪辑流文件“00003.PS”多路复用的视频流的时候,当用户输入捕获命令时,由于第二PlayList#1的capture_enable_flag_PlayList是0,且对应于与第二PlayList#1的PlayItem#0相对应再现的剪辑流文件“00003.PS”的、如图30A和图30B所示的剪辑信息文件“00003.CLP”的capture_enable_flag_Clip是1,确定不允许二次使用正在再现的视频数据(与与剪辑流文件“00003.PS”多路复用的视频流相对应的视频数据),并且不捕获视频数据。
在这种情况下,当检查出第二PlayList#1的capture_enable_flag_PlayList是0时,可以确定不允许二次使用视频数据。因此,可以省略对对应于与第二PlayList#1的PlayItem#0相对应再现的剪辑流文件“00003.PS”的、如图30A和图30B所示的剪辑信息文件“00003.CLP”的capture_enable_flag_Clip的检查。
在捕获控制处理中捕获和存储在存储器113中的画面可以二次用在背景/屏幕保护处理中。
例如,背景/屏幕保护处理可以在播放器控制模块212正在工作、但未正在再现基本流、即盘101未插入盘驱动器102(图1)中或已经再现了基本流的时候执行。
在背景/屏幕保护处理中,在步骤S380中,播放器控制模块212控制图形处理模块219显示在捕获控制处理中存储在存储器113中的画面。图形处理模块219在播放器控制模块212的控制下显示在捕获控制处理中存储在存储器113中的画面。
当图形处理模块219将存储在存储器113中的画面显示成静止画面时,实现所谓的壁纸。当显示画面的同时以预定间隔放大、缩小和移动它时,实现屏幕保护。显示在捕获控制处理中存储在存储器113中的画面的背景/屏幕保护处理可以由除了播放器控制模块212之外的另一独立应用程序执行。
当将代表限制的标志加入在存储器113中存储的画面中时,根据该标志限制所显示的画面。
如上所述,例如,与比视频存取单元大的PlayList()或PlayItem()相对应地获取表示是否允许二次使用正在再现的视频数据的capture_enable_flag_PlayList和capture_enable_flag_Clip。根据capture_enable_flag_PlayList和capture_enable_flag_Clip,确定是否允许二次使用再现的视频数据。当确定的结果表示允许二次使用再现的视频数据时,捕获再现的视频数据和执行利用捕获视频数据的背景/屏幕保护处理。
在如图57所示的捕获控制处理中,PlayList()(图7)包含capture_enable_flag_PlayList,并且,与根据PlayItem()再现的剪辑流文件相对应的剪辑信息文件Clip()(图12)包含capture_enable_flag_Clip。借助于capture_enable_flag_PlayList和capture_enable_flag_Clip两者,确定是否允许二次使用视频数据。可替代地,当PlayList()(图7)包含capture_enable_flag_PlayList,或与根据PlayItem()再现的剪辑流文件相对应的剪辑信息文件Clip()(图12)包含capture_enable_flag_Clip,即借助于capture_enable_flag_PlayList或capture_enable_flag_Clip时,可以确定是否允许二次使用视频数据。
在如图57所示的捕获控制处理中,在步骤S376中,图形处理模块219根据从播放器控制模块212接收的捕获命令,从视频解码器控制模块216中捕获视频数据,即只有一个画面。可替代地,图形处理模块219可以捕获多个画面。换句话说,可以捕获视频解码器控制模块216按时间顺序输出的多个画面。在这种情况下,可以预先指定每次捕获的画面数量。可替代地,可以扩展capture_enable_flag_PlayList和capture_enable_flag_Clip的位,用于代表每次可以捕获的画面数量的信息。
在前述的情况中,在PlayList()和剪辑信息文件Clip()中描述表示是否允许二次使用的使用许可信息,即capture_enable_flag_PlayList和capture_enable_flag_Clip。借助于使用许可信息,确定是否允许二次使用根据PlayList()再现的整个视频数据、以及与对应于剪辑信息文件Clip()的剪辑流文件多路复用的视频流所对应的整个视频数据。使用许可信息可以描述任何单元的视频数据。借助于使用许可信息,可以确定是否允许二次使用任何单元中的视频数据。
换句话说,图58示出了包含使用许可信息的private_stream2_PES_payload()的语法。图59示出了包含使用许可信息的au_information()的语法。
除了video_stream_id紧接在作为使用许可信息的capture_enable_flag_ps2之后以外,如图58所示的private_stream2_PES_payload()与如图26所示的那个相同。类似地,除了pic_struct_copy紧接在作为使用许可信息的capture_enable_flag_AU之后以外,如图59所示的au_information()与如图27所示的那个相同。
在如图58所示的private_stream2_PES_payload()中包含的capture_enable_flag_ps2表示是否允许二次再现包含private_stream2_PES_pay-load()的private_stream_2的PES_packet()之后且在下一个private_stream_2的PES_packet()之前的视频流的视频数据。因此,借助于在如图58所示的private_stream2_PES_payload()中包含的capture_enable_flag_ps2,可以确定是否允许二次使用特定可开始解码点之后且在下一个可开始解码点之前的视频数据。
另外,在如图59所示的au_information()中包含的capture_enable_flag_AU表示是否允许二次使用与capture_enable_flag_AU相对应的视频存取单元的视频数据。因此,借助于在如图59所示的au_information()中包含的capture_enable_flag_AU,可以确定是否允许二次使用每个视频存取单元,即每个画面的视频数据。
可以冗余地使用作为PlayList()(图7)的使用许可信息的capture_enable_flag_PlayList、作为剪辑信息文件Clip()(图12)的使用许可信息的capture_enable_flag_Clip、作为private_stream2_PES_payload()(图58)的使用许可信息的capture_enable_flag_ps2、和作为au_information()(图59)的使用许可信息的capture_enable_flag_AU中的至少两个。在这种情况下,借助于对冗余使用的至少两个使用许可信息进行“与”操作的结果,可以确定是否允许二次使用视频数据的画面。
如在图45所示的步骤S211中所述,缓冲器控制模块215(图5)的视频读取功能部分233从存储在缓冲器215A中的节目流中搜索包含如图26或图58所示的、包含图59所示的au_information()的private_stream2_PES_payload()的private_stream_2的PES_Packet()。因此,当使用图58所示的包含capture_enable_flag_ps2的private_stream2_PES_payload()、和如图59所示的包含capture_enable_flag_AU的au_information()时,播放器控制模块212需要向视频读取功能部分233询问capture_enable_flag_ps2和capture_enable_flag_AU,以确定是否允许二次使用视频数据。
接着,将参照图60描述盘记录装置的硬件结构。
例如,如图60所示的盘记录装置可以应用于盘播放器、游戏设备、汽车导航系统等。
在如图60所示的盘记录装置中,例如,盘410是诸如DVD之类的光盘、磁光盘、或磁盘。盘410可以记录诸如视频数据、音频数据和字幕数据之类的内容数据。另外,盘410可以记录附加数据。当将各种数据记录在盘410上时,它可以用作如图1所示的盘101。
视频输入端400A与诸如图像捕获设备(未示出)之类的视频输入单元连接。视频输入端400A将从视频输入单元提供的视频数据提供给视频输入接口401。音频输入端400B与诸如麦克风和放大器(未示出)之类的音频输入单元连接。音频输入端400B将输入的音频数据提供给音频输入接口402。
视频输入接口401对输入视频数据执行期望的处理,并且通过总线411将所得视频数据提供给视频编码器403。音频输入接口402对输入音频数据执行期望的处理,并且通过总线411将所得音频数据提供给音频编码器404。
视频编码器403对从CPU405和视频输入接口401提供的视频数据进行编码,并且使盘驱动器409通过总线411将所得压缩编码数据(编码视频数据,例如,MPEG2视频流)记录在盘410上。
音频编码器404对从CPU 405和音频输入接口402提供的音频数据进行编码,并且使盘驱动器409通过总线411将所得压缩编码数据(编码音频数据,例如,MPEG2音频流)记录在盘410上。
CPU 405和存储器406构成计算机系统。换句话说,CPU 405执行在存储器406中存储的程序,控制整个盘记录装置,并执行如后所述的各种处理。存储器406存储CPU 405执行的程序。另外,存储器406临时存储CPU 405需要用来操作的数据。存储器406可以只由非易失性存储器构成,或由非易失性存储器和易失性存储器的组合构成。当如图60所示的盘记录装置配有记录CPU 405执行的程序的硬盘并将程序记录在硬盘上时,存储器406可以只由易失性存储器构成。
CPU 405执行的程序可以预存在作为内置在盘记录装置中的记录介质的存储器406中。
然而,程序可以临时或永久记录在盘驱动器409、除了盘驱动器409之外的软件、或像CD-ROM(只读光盘存储器)、MO(磁光)盘、磁盘、或存储卡那样的可拆卸记录介质上。这样的可拆卸记录介质可以作为所谓的封装软件提供。
另外,程序可以预存在存储器113中。然而,程序可以从可拆卸记录介质安装到盘记录装置中。然而,程序可以通过用于数字卫星广播的卫星从下载站无线传送到盘记录装置。然而,程序可以通过像局域网(LAN)或因特网那样的网络经电缆传送到盘记录装置。盘记录装置通过输入接口408接收程序,并且将程序安装在内置存储器406中。
另外,程序可以由一个CPU处理。然而,程序可以由数个CPU分布式地处理。
驱动器接口407在CPU 405的控制下控制盘驱动器409。因此,驱动器接口407通过总线411将CPU 405、存储器406、视频编码器403和音频编码器404提供的数据提供给盘驱动器409,并且使盘驱动器409将数据记录在盘410上。然而,驱动器接口407可以从盘410中读取数据,并且通过总线411将数据提供给CPU 405和存储器406。
输入接口408根据用户对键(按钮)和远程命令器(遥控命令器)的操作接收信号,并且通过总线411将信号提供给CPU 405。另外,输入接口408还作用为通信接口,例如,调制解调器(包括ADSL(非对称数字用户线)调制解调器)或NIC(网络接口卡)。
可以通过电缆或无线地分别从视频输入单元和音频输入单元提供视频数据和音频数据。
可以将盘410装入盘驱动器409中,并可以从盘409中卸下盘410。盘驱动器409具有内置接口(未示出)。盘驱动器409通过接口与驱动器接口407连接。盘驱动器409驱动装入盘410,并且根据,例如,从驱动器接口407接收的记录命令,执行,例如,将数据记录在盘410上的处理。
必要时,记录在盘410上的数据(记录数据)包括计算机可以执行的程序。在本优选实施例中,作为记录介质,可以使用作为盘状记录介质的盘410。然而,作为记录介质,也可以使用半导体存储器或带状记录介质。
与总线411连接的有CPU(中央处理单元)405、存储器406、驱动器接口407、输入接口408、视频编码器403、音频编码器404、视频输入接口401、和音频输入接口402。
接着,参照图61描述具体化根据本发明的数据编码方法的盘记录装置所完成的功能。在如图所示的盘记录装置完成的功能中,音频编码器404对通过音频输入端400B和音频输入接口402输入的音频信号进行压缩编码,并且将所得信号输出到多路复用单元421。
视频编码器403对通过视频输入端400A和视频输入接口401输入的视频信号进行压缩编码,并且将所得信号输出到多路复用单元421。
如参照图18A和图18B到图27所述,多路复用单元421对输入的MPEG2视频流和输入的MPEG2音频流进行分组,并且在时分的基础上多路复用它们。多路复用单元421从流中选择内画面,并且以大约每秒两次的频率,将图26所示的private_stream_2的PES_packet()插入内画面中。
多路复用单元421通过FIFO 422将多路复用流输出到RAPI重写单元424,并且还输出到RAPI信息提取单元423。RAPI信息提取单元423从多路复用流的视频流中检测private_stream_2的PES_packet()的开始位置、紧接在private_stream_2的PES_packet()后面的内画面的时戳(PTS)的值、以及内画面、紧接在内画面后面的第二、第三、第四参考画面的结束位置,并且存储它们。
在这种情况下,RAPI代表private_stream_2的PES_packet()。
RAPI信息提取单元423将检测到的内画面以及接在内画面后面的第二、第三、第四参考画面的结束位置输出到RAPI重写单元424。RAPI重写单元424覆盖作为RAPI信息的如图26所示的1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture的字段,以扇区为单位用数值记录顶端、第二、第三、第四参考画面的结束位置,并将它们存储在输出服务器426中。
在对所有多路复用流的处理都完成之后,控制器425获取已经由RAPI信息提取单元423提取和存储的、并已经被多路复用为多路复用流的所有RAPI的开始位置、和紧接在每个RAPI后面的内画面的结束位置、和紧接在内画面后面的第二、第三、第四参考画面的结束位置。
控制器425利用输入信息创建参照图16所述的EP_map()。
控制器425利用每个RAPI的地址、紧接在每个RAPI后面的内画面的PTS、以及内画面和接在内画面后面的第二、第三、第四画面的结束位置之一,来创建剪辑信息文件的EP_map(),并且将EP_map()存储到输出服务器403。
接着,参照如图62所示的流程图,描述Ep_map()创建处理。
在步骤S381中,视频编码器403对通过视频输入端400A和视频输入接口401输入的视频信号进行压缩编码,并且将所得信号输出到多路复用单元421。音频编码器404对通过音频输入端400B和音频输入接口402输入的音频信号进行压缩编码,并且将所得信号输出到多路复用单元421。在这种情况下,从音频编码器404输出的流是MPEG2音频流。类似地,从视频编码器403输出的流是MPEG2视频流。
在步骤S382中,,多路复用单元421如参照图18A和图18B到图27所述地对输入的MPEG2视频流和MPEG2音频流进行分组并在时分的基础上多路复用它们,从流中选择内画面,并且以大约每秒两次的频率将如图26所示的private_stream_2的PES_packet()插入其中。在本例中,private_stream_2的PES_packet()表示它的后面紧接着可以无需参考另一个画面解码的视频的内画面。此时,内画面通常具有时戳(PTS/DTS)。
此时,未将数据记录在参照图26所述的1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture的字段中。另外,可以将字幕流(未示出)输入多路复用单元421,以便将它与视频流和音频流多路复用。
在步骤S383中,多路复用单元421通过FIFO422将多路复用流输出到RAPI重写单元424,并且还输出到RAPI信息提取单元423。RAPI信息提取单元423从多路复用流的视频流中检测private_stream_2的PES_packet()的开始位置、紧接在private_stream_2的PES_packet()后面的内画面的时戳(PTS)的值、以及内画面和紧接在内画面后面的第二、第三、第四参考画面的结束位置,并且存储它们。
另外,RAPI信息提取单元423将检测到的内画面、和接在内画面后面的第二、第三、第四参考画面的结束位置输出到RAPI重写单元424。RAPI重写单元424覆盖作为RAPI信息的如图26所示的1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture的字段,以扇区为单位用数值记录顶端、第二、第三、第四参考画面的结束位置,并且将它们存储到输出服务器426。
在步骤S385中,将已经由RAPI信息提取单元423提取和存储的、并已经被多路复用为多路复用流的RAPI的开始位置、和紧接在每个RAPI后面的内画面的结束位置、以及紧接在内画面后面的第二、第三、第四参考画面的结束位置输入控制器425中。
控制器425利用输入信息创建参照图16所述的EP_map()。在本例中,假设EP_map()只包含视频流的信息。视频的EP_map()代表流中所有RAPI的位置,即private_stream_2的所有PES_packet的位置。利用从RAPI信息提取单元423输入到控制器425的信息而创建此信息。
更具体地,控制器425利用每个RAPI的地址、紧接在每个RAPI后面的内画面的PTS、以及内画面和接在内画面后面的第二、第三、第四画面的结束位置之一,来创建剪辑信息文件的EP_map(),并且将EP_map()存储到输出服务器403。换句话说,控制器425将与四个参考画面(1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture)的结束位置的预定扇区计数(在编码处理中每次可以读取的扇区数)接近的数值复制到N-th_Ref_picture_copy。
在步骤S386中,控制器425根据N-th_Ref_picture_copy决定index_minus1,并且将它记录在盘410上。在本例中,通过驱动器接口407将存储在输出服务器426中的流数据和数据库文件提供给盘驱动器409,并且将它们记录在盘410上。
在前述处理中,创建了如图31所示的EP_map()。
[利用1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture]
接着,将参照如图6 3所示的流程图,描述利用如图31所示的EP_map()的快进再现处理。
假设用户(未示出)向视频内容再现程序210发出快进命令。播放器控制模块212从正在再现的流的剪辑信息文件中选择在EP_map()中登记的可开始再现位置之一(在步骤S391),并且决定从在EP_map中描述的RPN_EP_start开始的N-th_Ref_picture_copy大小的要读取的数据(在步骤S393)。播放器控制模块212将此信息通知给内容数据提供模块213,并且命令解码控制模块214进行快进再现。
利用操作系统201的功能,内容数据提供模块213读取包含已多路复用了要再现的基本流的节目流的剪辑流文件,并且将剪辑流文件提供给缓冲器控制模块215(在步骤S393)。由于已经指定了文件名等,所以不再指定它们。与开始再现的情况不同,发出带有要传送的数据的开始读取地址和大小的读取命令。
视频读取功能部分233多路分解已经输入到缓冲器控制模块215中的多路复用数据(在步骤S394),并且只将视频流提供给视频解码器控制模块216。在此情况下,由于执行快进再现处理,音频解码器控制模块217、字幕解码器控制模块218、音频读取功能部分234和字幕读取功能部分233不工作。
输入数据包含一个参考画面、或四个或更少参考画面。在快进再现处理中,只根据在参照如图64所示的流程图所述的入口点选择处理(在步骤S395)中选择的入口点来选择和显示参考画面。但是,已经将index_N_minus1发送到解码控制模块214。因此,解码控制模块214解码指定数量的参考画面,将解码图像发送到下游部分,并且使得它显示参考画面(在步骤S396中)。
在已经显示了参考画面之后,播放器控制模块212选择下一次要显示的EP_map()的入口点,重复前述处理,并且输出要以快进再现模式再现的画面(在步骤S397)。
当选择了要显示的EP_map()中作为跳转目的地的入口点时,使用index_N_minus1。接着,将描述在这样的情况下使用index_N_minus1的方法。如前所述,在读取N-th_Ref_picture_copy之后,index_N_minus1代表数据中包含的参考画面的数目。在如图31所示的数据的例子中,由于第一和第三入口点的每一个的index_N_minus1都是0,内画面的数目是1。由于第二和第四入口点每一个的index_N_minus1都是3,包含四个参考画面。
当输出两个或更多个参考画面时,以快进再现模式再现的画面的主观质量往往会提高。但是,为了输出许多参考画面,必须增加要读取的数据量。因此,更新频率变低。换句话说,在它们之间存在折衷关系。因此,当播放器控制模块212选择下一个要再现的EP_map()中的入口点时,播放器控制模块212评估index_N_minus1的值。
换句话说,当快进再现速度高时,尽管EP_map()中的入口点的稀化(thin-out)间隔变大,但最好选择index_N_minus1大(即,高主观画面质量)的入口点。相反,当快进再现速度低时,选择index_N_minus1小的入口点。
在上述index_N_minus1决定算法中,选择N-th_Ref_picture_copy接近“30”的入口点。换句话说,在这样的算法下创建的EP_map()中,当根据N-th_Ref_picture_copy读取数据时,数据读取量变成大约“30”个扇区。当数据读取速度起支配作用时,重要的是读取时间不变。因此,使用这样的入口点选择方法是有效的。
接着,将参照如图64所示的流程图,描述快进再现模式下的入口点选择处理。
在步骤S401中,播放器控制模块212确定快进再现模式是高速模式还是低速模式。当确定结果表示快进再现模式是低速模式时,流程转到步骤S402。相反,当确定结果表示快进再现模式是高速模式时,流程转到步骤S411。
<低速快进再现的选择的描述>
在步骤S402中,由于快进再现模式是低速模式,播放器控制模块212从最后入口开始将要选择的入口点号(当前入口(N))加2(入口号+=2)。在步骤S403中,播放器控制模块212从当前入口N、前一点入口(N-1)、和后一点入口(N+1)中读取index_N_minus1。
在步骤S404中,播放器控制模块212确定index_N_minus(N)的值,即,第N入口点的index_N_minus1的值是否是0或1。当步骤S404中index_N_minus1的值是0或1时,流程转到步骤S405。在步骤S405中,播放器控制模块212选择第N入口点,并且完成处理。相反,当步骤S404中index_N_minus1的值既非0也非1时,流程转到步骤S406。
在步骤S406中,播放器控制模块212确定index_N_minus(N+1)的值,即,第(N+1)入口点的index_N_minus1的值是否是0或1。在步骤S406中,当index_N_minus1的值是0或1时,流程转到步骤S407。在步骤S407中,播放器控制模块212选择第(N+1)入口点,并且完成处理。相反,当步骤S406中index_N_minus1的值既非0也非1时,流程转到步骤S408。
在步骤S408中,播放器控制模块212确定index_N_minus(N-1)的值,即,第(N-1)入口点的index_N_minus1的值是否是0或1。当步骤S408中index_N_minus1的值是0或1时,流程转到步骤S409。在步骤S409中,播放器控制模块212选择第(N-1)入口点,并且完成处理。相反,当步骤S408中index_N_minus1的值既非0也非1时,流程转到步骤S410。
由于显而易见,所有入口点N、(N+1)、和(N-1)的index_N_minus1的值都既非0也非1,在步骤S410中,播放器控制模块212选择第N入口点,并且完成处理。
<高速快进再现的选择的描述>
由于快进再现模式是高速模式,在步骤S411中,播放器控制模块212从最后入口点开始将要选择的入口点号(当前入口(N))加5(相关入口号+=5)。在步骤S412中,播放器控制模块212从当前入口N、前一点入口(N-1)、和后一点入口(N+1)中读取index_N_minus1。
在步骤S413中,播放器控制模块212确定index_N_minus(N)的值,即,第N入口点的index_N_minus1的值是否是3或2。当步骤S413中第N入口点的index_N_minus1的值是3或2时,流程转到步骤S414。在步骤S414中,播放器控制模块212选择第N入口点,并且完成处理。相反,当步骤S413中第N入口点的index_N_minus1的值既非3也非2时,流程转到步骤S415。
在步骤S415中,播放器控制模块212确定index_N_minus(N+1)的值,即,第(N+1)入口点的index_N_minus1的值是否是3或2。当步骤S415中第(N+1)入口点的index_N_minus1的值是3或2时,流程转到步骤S416。在步骤S416中,播放器控制模块212选择第(N+1)入口点,并且完成处理。相反,当步骤S415中第(N+1)入口点的index_N_minus1的值既非3也非2时,流程转到步骤S417。
在步骤S417中,播放器控制模块212确定index_N_minus(N-1)的值,即,第(N-1)入口点的index_N_minus1的值是否是3或2。当步骤S417中第(N-1)入口点的index_N_minus1的值是3或2时,流程转到步骤S418。在步骤S418中,播放器控制模块212选择第(N-1)入口点,并且完成处理。相反,当步骤S417中第(N-1)入口点的index_N_minus1的值既非3也非2时,流程转到步骤S419。
由于显而易见,所有入口N、(N+1)、和(N-1)的index_N_minus1的值都既非3也非2,在步骤S419中,播放器控制模块212选择第N入口点,并且完成处理。
换句话说,当快进再现速度高时,尽管EP_map()中的入口点的稀化间隔变大,但最好选择index_N_minus1大(即,高主观画面质量)的入口点。相反,当快进再现速度低时,选择index_N_minus1小的入口点。
在前述处理中,可以高速执行快进再现而不降低主观画面质量。当低速进行快速再现时,由于利用比高速时更多的参考画面执行快进再现,可以防止再现画面的画面质量下降。
在前述例子中,假设读取的入口点信息在再现处理中通常不变。在这种情况下,在具有高处理性能的盘再现装置中,由于读取许多入口点,所以提高了再现画面的画面质量。但是,如果不具有高处理性能的盘再现装置读取大量入口点信息,则处理速度可能降低。因此,对要读取的入口点信息设置优先级。具有高处理性能的盘再现装置可以使用所有入口点的信息,而具有低处理性能的盘再现装置只可以读取具有高优先级的入口点。
图65是描述对入口点设置优先级的盘记录装置的功能的功能框图。在如图65所示的盘记录装置中,与如图61所示的盘记录装置的那些相似的功能用相似的附图标记表示,因此省略对它们的描述。
字幕编码器443从字幕材料服务器442中读取字幕材料,压缩编码该材料,并且将所得数据写入到字幕数据服务器444。与视频数据和音频数据不同,字幕数据在时间基础上断断续续地存在。因此,字幕材料服务器442中记录的字幕材料的显示开始时间和显示持续时间和字幕数据服务器444中记录的字幕数据的显示开始时间和显示持续时间被提供为字幕定时信息445。
尽管多路复用单元441具有与如图61所示的多路复用单元421基本相同的功能,但前者还将字幕数据和字幕定时信息与视频数据和音频数据多路复用。换句话说,如参照图18A和图18B到图27所述,多路复用单元441不仅读取输入的MPEG2视频流和MPEG2音频流,而且读取从字幕数据服务器444提供的字幕数据和字幕定时信息,并且在时分的基础上多路复用它们。
多路复用单元441从流中选择内画面,并且以大约每秒两次的频率将图23所示的private_stream_2的PES_packet()插入其中。在本例中,private_stream_2的PES_packet()表示它的后面紧接着可以无需参考另一个画面解码的视频的内画面。此时,内画面通常具有时戳(PTS/DTS)。
字幕数据的所有存取单元通常都具有时戳。
此时,未将数据记录在参照图26所述的1stRef_picture、2ndRef_picture、3rdRef_picture和4thRef_picture的字段中。另外,可以将字幕流(未示出)输入到多路复用单元441,以便将它与视频流和音频流多路复用。
多路复用单元441通过FIFO 422将多路复用流输出到RAPI重写单元424,并且还输出到RAPI信息提取单元423。RAPI信息提取单元423从多路复用流中提取视频流的信息和字幕流的信息。换句话说,RAPI信息提取单元423从视频流中检测private_stream_2的PES_packet()的开始位置、紧接在private_stream_2的PES_packet()后面的内画面的时戳(PTS)的值、以及内画面和接在内画面后面的第二、第三、第四参考画面的结束位置,并且存储它们。另外,RAPI信息提取单元423从字幕流中检测所有字幕存取单元的开始位置和时戳。
控制器446利用输入信息创建如图66所示的EP_map()。假设EP_map()包含有关视频流和字幕流的信息。EP_map()中有关视频的主要信息是所有RAPI(即private_stream_2的PES_packet())的位置、以及紧接在private_stream_2的PES_packet()后面的内画面的时戳。可以利用从RAPI信息提取单元423输入到控制器446中的信息来创建这些信息。EP_map()中有关字幕的主要信息是字幕存取单元的位置和时戳。也可以利用从RAPI信息提取单元423输入到控制器446中的信息来创建这些信息。
控制器446利用从RAPI信息提取单元423输入的数据来创建EP_map()的信息中还未决定的priority_flag。换句话说,控制器446评估视频流的所有入口点(RAPI的入口点)和字幕存取单元的时戳,并且为它们的每一个设置priority_flag(如后所述)。为了设置priority_flag,已经将节场景改变信息447输入到控制器446。
[EP_map的描述]
接着,参照图66描述用于对文件设置优先级的EP_map()。如图66所示,number_of_EP_entries的后面接着priority_flag(2个位)、reserved_for_future_use(14个位)、PTS_EP_start(32个位)和RPN_EP_start(32个位),priority_flag作为由紧接在number_of_EP_entries前面的stream_id和private_stream_id标识的基本流的可开始解码点的信息。priority_flag、reserved_for_future_use、PTS_EP_start(32个位)和RPN_EP_start(32个位)重复由number_of_EP_entries代表的次数。
priority_flag具有如图67所示的含义。换句话说,对于视频流的入口,当priority_flag的值是3时,表示入口对应于一节的开头。当priority_flag的值是2时,表示这个入口对应于非上述入口的每隔一分钟的重要场景改变。当priority_flag的值是1时,表示这个入口对应于非上述入口的每隔三分钟的场景改变。假设其它入口的priority_flag的值是0。
对于字幕流的入口,当priority_flag的值是3时,表示入口对应于一节的开头。当priority_flag的值是2时,表示入口对应于非上述入口的重要场景改变。当priority_flag的值是1时,表示这个入口对应于非上述入口的场景改变。假设其它入口的priority_flag的值是0。
当此剪辑是两小时电影和每秒包含两个随机存取点时,总入口数等于14400(=2小时×3600秒×2次)。当节数约为几十,priority_flag=3的入口数变成与节数相同的几十。由于重要场景改变(priority_flag=2)的次数和其它场景改变(priority_flag=1)的次数取决于内容,尽管不是普遍的,但假设priority_flag=3或2的入口数是大约200,priority_flag=3、2或1的入口数是大约2400,总入口数是14400。在此情况下,还假设priority_flag=2和1的总入口数是1000。在此情况下,假设当只读取priority_flag=3、2和1的入口数时,存储量变成大约1000/14400,这是读取所有入口情况下的1/14。另外,在此情况下,由于一个入口是10字节,一个视频流可使存储器的容量减少10字节×(14400-1000)=120134千字节。
另外,认为两个小时电影包含1000到2000个字幕句子。相反,存在几十个节。因此,当假设只读取priority_flag=3的入口时,存储器容量可以减少1000分之几十或2000分之几十。由于字幕流的数量大于视频流的数量,所以减少存储器容量的效果是足够的。
在本例中,用值3、2、1和0表示标志。然而,可以想到,可以用各个位表示它们,并且可以将相应位设置成1。换句话说,这个字段可以由3个位构成。当最高有效位是1时,可以表示这个入口是一节的顶端。当下一个位是1时,可以表示这个入口是间隔一分钟的入口。当最低有效位是1时,可以表示这个入口是间隔三分钟的入口。当所有位都是0时,可以定义为这个入口不包括在这三种类别内。
对于字幕流,当入口的priority_flag的值是1时,表示入口对应于一节的顶端。在这种情况下,假设其它入口的priority_flag的值是0。
接着,参照如图68所示的流程图,描述priority_flag设置处理。
在步骤S441中,控制器446确定视频流的当前入口是否是一节的开头,即正受到评估的入口是否对应于节场景改变信息447的一节的时间。当当前入口对应于一节的时间时,定义差异是0。当当前入口对应于一节的时间时,流程转到步骤S442。在步骤S442中,控制器446为入口设置priority_flag=3,并且将它存储到输出服务器426。
当步骤S441中的确定结果表示当前入口不是视频的一节的开头时,流程转到步骤S443。在步骤S443,控制器446确定当前入口是否处在视频的重要场景改变的位置上,即下一个要评估的入口是否处在节场景改变信息447中从“重要场景改变”的开头开始每隔一分钟的位置上。当步骤S443中的确定结果表示下一个要评估的入口处在从“重要场景改变”的开头开始每隔一分钟的位置上时,流程转到步骤S444。在步骤S444中,控制器446为当前入口设置priority_flag=2。
当步骤S443中的确定结果表示当前入口不是重要场景改变时,流程转到步骤S445。在步骤S445,控制器446确定当前入口是否是视频的常规场景改变,即下一个要评估的入口是否处在节场景改变信息447中从“场景改变”的开头开始每隔三分钟的位置上。当步骤S445中的确定结果表示下一个要评估的入口处在从“场景改变”的开头开始每隔三分钟的位置上时,流程转到步骤S446。在步骤S446,控制器446为当前入口设置priority_flag=1。
当步骤S445中的确定结果表示当前入口不是常规场景改变,即当前入口不对应于任何场景改变时,流程转到步骤S447。在步骤S447,控制器446为当前入口设置priority_flag=0。
在步骤S448中,控制器446确定是否处理了视频的所有入口。当确定结果表示还未处理所有入口时,流程返回到步骤S441。在步骤S441,重复处理。换句话说,重复从步骤S441到步骤S448的处理,直到已为视频的所有入口设置了priority_flag。
当步骤s448中的确定结果表示为所有入口完成了整个处理时,流程转到步骤S449。
在步骤S449中,控制器446确定字幕的当前入口是否处在一节的开头,即正受到评估的入口是否对应于节场景改变信息447中一节的时间。当步骤S449中的确定结果表示当前入口对应于一节的时间时,流程转到步骤S450。在步骤S450中,控制器446为当前入口设置priority_flag=3。
相反,当步骤S449中的确定结果表示当前入口未处在字幕的一节的开头时,流程转到步骤S451。在步骤S451中,控制器446确定当前入口是否处在字幕的重要场景改变的位置上,即下一个要评估的入口是否处在节场景改变信息447中从“重要场景改变”的开头开始每隔一分钟的位置上。当步骤S451中的确定结果表示下一个要评估的入口处在从“重要场景改变”的开头开始每隔一分钟的位置上时,流程转到步骤S452。在步骤S452中,控制器446为当前入口设置priority_flag=2。
当步骤S451中的确定结果表示当前入口不是重要场景改变时,流程转到步骤S453。在步骤S453中,控制器446确定当前入口是否是字幕的常规场景改变,即下一个要评估的入口是否处在节场景改变信息447中从“场景改变”的开头开始每隔三分钟的位置上。当下一个要评估的入口处在从“场景改变”的开头开始每隔三分钟的位置上时,流程转到步骤S454。在步骤S454中,控制器446为当前入口设置priority_flag=1。
当步骤S453中的确定结果表示当前入口不是常规场景改变,即下一个要评估的入口不是任何场景改变时,流程转到步骤S455。在步骤S455中,控制器446为当前入口设置priority_flag=0。
在步骤S456中,控制器446确定是否已处理了字幕的所有入口。当步骤S456中的确定结果表示还未处理所有入口时,流程返回到步骤S449。在步骤S449中,重复处理。换句话说,重复从步骤S449到步骤S456的处理,直到为字幕的所有入口设置了priority_flag。当步骤S456中的确定结果表示已处理了字幕的所有入口时,控制器446将根据如图66所示的语法的EP_map()的数据输出到输出服务器426。
[对再现方的操作:EP_map()的稀化]
盘再现装置根据像上述那样设置的priority_flag和存储器(例如,如图1所示的存储器)的存储容量来稀化EP_map()。换句话说,在因成本降低而具有有限功能的盘再现装置中,只将priority_flag值大的入口存储在存储器中。当然,在具有可以存储所有EP_map()的存储器的装置中,不必进行这样的操作。
在如图33所示的流程图的整个处理的步骤S106中,对于视频,将priority_flag=1或更高的入口存储在存储器中。类似地,对于字幕,将priority_flag=2或更高的入口存储在存储器中。在这种情况下,当读取EP_map()时,对于视频流,播放器控制模块212根据stream_id和private_stream_id的值,将priority_flag=3、2或1的入口读入存储器中,而不将priority_flag=0的入口读入存储器中。对于字幕流,播放器控制模块212根据stream_id和private_stream_id的值,将priority_flag=3和2的入口读入存储器中,而不将priority_flag=1或0的入口读入存储器中。
当执行前述处理时,一个视频流的EP_map()所需的存储器的存储容量变成大约1/6到1/10,小于不执行这种处理的情况下的存储容量。另外,一个字幕流的EP_map()所需的存储量可以减少到大约几十分之一。结果,在低成本盘再现装置中,可以根据存储器的容量来存储入口。因此,可以有效地执行再现处理。
在前述例子中,为处在一节开头的事件设置priority_flag=3。然而,除了一节开头之外,也可以为诸如重要场景改变之类的任何含义设置priority_flag=3。
在前述实施例中,一系列处理由软件执行。然而,它们也可以由专用硬件执行。
在前述实施例中,作为视频解码器116(图1)和视频编码器403(图60),可以使用硬件解码器。取而代之,作为视频解码器116(图1)和视频编码器403(图60),也可以使用软件解码器。这同样适用于音频解码器117(图1)和音频编码器404(图60)。
在前述实施例中,作为字幕解码器,可以使用软件解码器。然而,作为字幕解码器,也可以使用硬件解码器。

Claims (14)

1.一种数据记录装置,包括:
识别部分,其识别流数据的入口点;
设置部分,其与识别部分的识别结果相对应地设置每个入口点的优先级;以及
记录部分,其将由所述设置部分设置的每个入口点的优先级与所述流数据一起记录在数据记录介质上。
2.根据权利要求1所述的数据记录装置,
其中,所述流数据是视频流数据或字幕流数据。
3.根据权利要求1所述的数据记录装置,
其中,所述设置部分根据入口点是否是一节的开头和入口点的场景改变是否重要,而设置每个入口点的优先级。
4.一种数据记录方法,包括如下步骤:
识别流数据的入口点;
根据识别步骤中的识别结果,设置每个入口点的优先级;以及
将在设置步骤中设置的每个入口点的优先级与所述流数据一起记录在数据记录介质上。
5.一种使计算机执行包括如下步骤的进程的程序:
识别流数据的入口点;
根据识别步骤中的识别结果,设置每个入口点的优先级;以及
将在设置步骤中设置的每个入口点的优先级与所述流数据一起记录在数据记录介质上。
6.一种记录着使计算机执行包括如下步骤的进程的程序的程序记录介质:
识别流数据的入口点;
根据识别步骤中的识别结果,设置每个入口点的优先级;以及
将在设置步骤中设置的每个入口点的优先级与所述流数据一起记录在数据记录介质上。
7.一种数据处理装置,包括:
读取部分,其从数据记录介质中读取流数据和包含所述流数据的每个入口点的优先级的数据;以及
再现部分,其从由所述读取部分读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
8.根据权利要求7所述的数据处理装置,
其中,所述流数据是视频流数据或字幕流数据。
9.根据权利要求7所述的数据处理装置,
其中,所述设置部分根据入口点是否是一节的开头和入口点的场景改变是否重要,而设置每个入口点的优先级。
10.一种数据处理方法,包含:
从数据记录介质中读取流数据和包含所述流数据的每个入口点的优先级的数据;以及
从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
11.一种使计算机执行包括如下步骤的进程的程序:
从数据记录介质中读取流数据和包含所述流数据的每个入口点的优先级的数据;以及
从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
12.一种记录着使计算机执行包含如下步骤的进程的程序的程序记录介质:
从数据记录介质中读取流数据和包含所述流数据的每个入口点的优先级的数据;以及
从在读取步骤中读取的流数据中只再现与等于或高于预定优先级的入口点相对应的流数据。
13.一种数据记录介质,在其之上,与流数据一起记录着包含所述流数据的每个入口点的优先级的数据。
14.一种数据结构,其包含与流数据一起的、流数据的每个入口点的优先级。
CN2005800476801A 2004-12-02 2005-11-17 数据记录装置、数据记录方法、数据处理装置、数据处理方法 Expired - Fee Related CN101111896B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP350488/2004 2004-12-02
JP2004350488A JP2006164337A (ja) 2004-12-02 2004-12-02 データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体
PCT/JP2005/021499 WO2006059519A1 (ja) 2004-12-02 2005-11-17 データ記録装置およびデータ記録方法、データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、データ記録媒体、並びにデータ構造

Publications (2)

Publication Number Publication Date
CN101111896A true CN101111896A (zh) 2008-01-23
CN101111896B CN101111896B (zh) 2010-12-01

Family

ID=36564953

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800476801A Expired - Fee Related CN101111896B (zh) 2004-12-02 2005-11-17 数据记录装置、数据记录方法、数据处理装置、数据处理方法

Country Status (13)

Country Link
US (1) US8160422B2 (zh)
EP (1) EP1818933B1 (zh)
JP (1) JP2006164337A (zh)
KR (1) KR20070086808A (zh)
CN (1) CN101111896B (zh)
AT (1) ATE521066T1 (zh)
BR (1) BRPI0518766A2 (zh)
CA (1) CA2589396C (zh)
HK (1) HK1106608A1 (zh)
MX (1) MX2007006314A (zh)
RU (1) RU2367037C2 (zh)
TW (1) TW200638352A (zh)
WO (1) WO2006059519A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103227951A (zh) * 2012-01-31 2013-07-31 索尼公司 信息处理装置、信息处理方法及程序
CN107329156A (zh) * 2017-06-05 2017-11-07 千寻位置网络有限公司 一种卫星数据的处理方法及系统、定位终端、存储器

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935316B2 (en) * 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US20060159432A1 (en) 2005-01-14 2006-07-20 Citrix Systems, Inc. System and methods for automatic time-warped playback in rendering a recorded computer session
JP4162691B2 (ja) * 2006-09-27 2008-10-08 株式会社東芝 番組構造化装置、番組構造化方法およびプログラム
JP4690281B2 (ja) * 2006-09-29 2011-06-01 Necパーソナルプロダクツ株式会社 情報処理装置
KR101336243B1 (ko) * 2007-05-10 2013-12-03 삼성전자주식회사 부가 정보가 삽입된 영상 데이터의 전송 스트림 구조,송수신 방법 및 장치
US8117546B2 (en) * 2007-08-26 2012-02-14 Cyberlink Corp. Method and related display device for displaying pictures in digital picture slide show
JP2011223326A (ja) * 2010-04-09 2011-11-04 Sony Corp コンテンツ処理装置および方法、並びにプログラム
DE102010029030A1 (de) * 2010-05-17 2012-03-01 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zur Verarbeitung von Daten in einem Fahrzeug
EP3441971A1 (en) * 2010-08-04 2019-02-13 Nero Ag Multi-language buffering during media playback
US8615159B2 (en) * 2011-09-20 2013-12-24 Citrix Systems, Inc. Methods and systems for cataloging text in a recorded session
EP2803186A1 (en) * 2012-01-09 2014-11-19 Thomson Licensing Creating and managing sub-recordings
CN109144444B (zh) * 2018-07-24 2021-11-05 深圳微盐传媒科技有限公司 一种人物信息展示方法和装置
EP3918801A4 (en) * 2019-01-28 2022-06-15 OP Solutions, LLC ONLINE AND OFFLINE CHOICE OF EXTENDED LONG-TERM REFERENCE IMAGE STORAGE
US20220272284A1 (en) * 2021-02-25 2022-08-25 Rovi Guides, Inc. Systems and methods for improved video captions
CN117037433B (zh) * 2023-09-06 2024-03-05 北京诺成新科技有限公司 一种基于云平台的燃气监测控制系统及方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3230858B2 (ja) 1992-11-26 2001-11-19 松下電器産業株式会社 動画像の優先度自動選択方法および動画像ダイジェスト自動表示装置
JPH097350A (ja) 1995-06-20 1997-01-10 Matsushita Electric Ind Co Ltd 再生プレーヤー
US5859821A (en) * 1995-11-02 1999-01-12 Sony Corporation Record medium with managed digest portions of programs, reproducing apparatus thereof, and reproducing method thereof
JP3787912B2 (ja) * 1996-08-26 2006-06-21 ソニー株式会社 再生装置、再生方法および記録方法
JP3585400B2 (ja) * 1999-08-05 2004-11-04 シャープ株式会社 動画像編集拾い見装置
JP4682434B2 (ja) 2000-04-21 2011-05-11 ソニー株式会社 情報処理装置および方法、記録媒体、並びにプログラム
JP4015815B2 (ja) 2001-03-19 2007-11-28 株式会社東芝 プレイリスト編集機能付き情報記録再生方法及び装置
JP2003123445A (ja) 2001-10-05 2003-04-25 Sony Corp 信号処理装置および方法、記録媒体、並びにプログラム
JP3619249B2 (ja) 2004-03-24 2005-02-09 株式会社東芝 デジタル情報媒体、デジタル情報記録方法、デジタル情報再生方法、およびデジタル情報再生装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103227951A (zh) * 2012-01-31 2013-07-31 索尼公司 信息处理装置、信息处理方法及程序
CN107329156A (zh) * 2017-06-05 2017-11-07 千寻位置网络有限公司 一种卫星数据的处理方法及系统、定位终端、存储器

Also Published As

Publication number Publication date
EP1818933A1 (en) 2007-08-15
JP2006164337A (ja) 2006-06-22
HK1106608A1 (en) 2008-03-14
CA2589396C (en) 2013-01-08
RU2007120507A (ru) 2008-12-10
CA2589396A1 (en) 2006-06-08
RU2367037C2 (ru) 2009-09-10
MX2007006314A (es) 2007-07-18
BRPI0518766A2 (pt) 2008-12-09
ATE521066T1 (de) 2011-09-15
US8160422B2 (en) 2012-04-17
WO2006059519A1 (ja) 2006-06-08
KR20070086808A (ko) 2007-08-27
TW200638352A (en) 2006-11-01
CN101111896B (zh) 2010-12-01
TWI364753B (zh) 2012-05-21
US20090169183A1 (en) 2009-07-02
EP1818933B1 (en) 2011-08-17
EP1818933A4 (en) 2009-07-29

Similar Documents

Publication Publication Date Title
CN101111896B (zh) 数据记录装置、数据记录方法、数据处理装置、数据处理方法
CN101112086B (zh) 数据记录设备、数据记录方法、数据处理设备和数据处理方法
CN1965365B (zh) 数据处理设备和数据处理方法
CN100518277C (zh) 数据处理装置及数据处理方法
CN100556116C (zh) 数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质和数据结构
CN101111897B (zh) 数据处理装置和数据处理方法
CN101002268B (zh) 数据处理设备和数据处理方法
CN101002467B (zh) 数据处理设备和方法
CN100563320C (zh) 数据处理设备和数据处理方法
KR20070028410A (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: 20101201

Termination date: 20131117