CN100563320C - 数据处理设备和数据处理方法 - Google Patents
数据处理设备和数据处理方法 Download PDFInfo
- Publication number
- CN100563320C CN100563320C CNB2005800272575A CN200580027257A CN100563320C CN 100563320 C CN100563320 C CN 100563320C CN B2005800272575 A CNB2005800272575 A CN B2005800272575A CN 200580027257 A CN200580027257 A CN 200580027257A CN 100563320 C CN100563320 C CN 100563320C
- Authority
- CN
- China
- Prior art keywords
- stream
- data
- video
- control module
- video data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/91—Television signal processing therefor
- H04N5/92—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/65—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
- H04N19/68—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2368—Multiplexing of audio and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
- H04N21/43074—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of additional data with content streams on the same device, e.g. of EPG data or interactive icon with a TV program
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4341—Demultiplexing of audio and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/482—End-user interface for program selection
- H04N21/4825—End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/84—Television signal recording using optical recording
- H04N5/85—Television signal recording using optical recording on discs or drums
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/24—Systems for the transmission of television signals using pulse code modulation
- H04N7/52—Systems for transmission of a pulse code modulated video signal with one or more other pulse code modulated signals, e.g. an audio signal or a synchronizing signal
- H04N7/54—Systems for transmission of a pulse code modulated video signal with one or more other pulse code modulated signals, e.g. an audio signal or a synchronizing signal the signals being synchronous
- H04N7/56—Synchronising systems therefor
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Television Signal Processing For Recording (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
视频数据与要与该视频数据同步输出的输出数据同步。当视频数据输出比要与该数据同步输出的输出数据的输出延迟时,在步骤S273中指示跳过一个存取单元的处理。此外,在步骤S275中,根据用于已指示跳过其处理的存取单元的视频数据的au_ref_flag,而确定在其它视频数据的解码中是否参考该视频数据。当在其它视频数据的解码中没有参考指示跳过其处理的存取单元的该视频数据时,在步骤S277中,跳过已指示跳过其处理的存取单元的处理。本发明例如可以用于使用DVD的游戏。
Description
技术领域
本发明涉及数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质和数据结构。本发明尤其涉及允许非常便利地处理数据的上述领域。
背景技术
近年来,具有大存储容量并可以随机存取的记录介质如数字通用盘(DVD)已传播开来。此外,用DVD执行各种处理的DVD设备也已传播开来。
作为DVD设备,存在有向/从DVD记录/再现电视广播节目等的数据的DVD记录机、使用其上记录有地图信息等的DVD并从DVD再现地图信息和进行显示的车载导航系统、使用其上记录有游戏程序等的DVD并从DVD读出程序和执行程序的游戏设备、以及其它设备。
DVD的细节例如在非专利文献1“DVD Specifications for Read-Only DiscPart 3;Version 1.1December 1997”中有所描述。
如DVD这样的其上记录大量数据的记录介质以及使用DVD的DVD设备需要允许非常便利地处理如此大量的数据。
发明内容
本发明从以上观点出发,并且本发明要解决的技术问题在于高度便利地处理数据。
本发明是一种数据处理设备,用于处理编码数据,所述编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该编码后的视频数据相对应的视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,该数据处理设备包括:第一确定装置,用于确定该编码后的视频数据相对应的视频数据的输出是否晚于该输出数据的输出;命令装置,用于当该第一确定装置的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对编码后的视频数据的一个存取单元的处理;第二确定装置,用于与已由该命令装置促使跳过其处理的存取单元的编码后的视频数据的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该编码后的视频数据相对应的视频数据;以及跳跃控制装置,用于当该第二确定装置已确定在对其它编码后的数据进行解码时、不参考与已由该命令装置促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已由该命令装置促使跳过其处理的存取单元的编码后的视频数据的处理。
本发明是一种数据处理方法,用于处理编码数据,所述编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该编码后的视频数据相对应的视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,该数据处理方法包括:第一确定步骤,确定该编码后的视频数据相对应的视频数据的输出是否晚于该输出数据的输出;命令步骤,当该第一确定步骤的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理;第二确定步骤,与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该编码后的视频数据相对应的视频数据;以及当该第二确定步骤已确定在对其它编码后的数据进行解码时、不参考与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的处理。
本发明是一种程序,促使计算机执行处理编码数据的数据处理,所述编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,该程序包括步骤:确定该视频数据的输出是否晚于该输出数据的输出;当该第一确定步骤的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理;与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该视频数据;以及当该第二确定步骤已确定在对所述其它编码后的数据进行解码时、不参考与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的处理。
本发明是一种程序记录介质,其上已记录有程序,该程序促使计算机执行对处理编码数据的数据处理,所述编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,该程序包括步骤:确定该视频数据的输出是否晚于该输出数据的输出;当该第一确定步骤的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理;与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该视频数据;以及当该第二确定步骤已确定在对所述其它编码后的数据进行解码时、不参考与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的处理。
本发明是一种数据记录介质,其上已记录有编码数据,所述编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据。
本发明是一种编码数据的数据结构,所述编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据。
在本发明的数据处理设备、数据处理方法、程序、和其上记录有程序的程序记录介质中,在使用信息后紧跟编码后的视频数据的至少一个可解码开始点,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据。确定该视频数据的输出是否晚于该输出数据的输出。当该确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理。与已促使跳过其处理的存取单元的编码后的视频的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该视频数据。当已确定在对所述其它编码后的数据进行解码时、不参考与已促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已促使跳过其处理的存取单元的编码后的视频数据的处理。
在本发明的数据记录介质和数据结构中,编码数据包括:编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得;输出数据,与该视频数据同步输出;以及使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据。
根据本发明,可以高度便利地处理数据。特别是,可以容易地同步需要彼此同步输出的视频数据和输出数据。
附图说明
图1是示出根据本发明的盘设备的硬件结构示例的方框图;
图2A和图2B是示出CPU 112执行的软件模块组的结构示例的方框图;
图3是示出缓冲器控制模块215的结构示例的框图;
图4是示出盘101中的目录的结构示例示意图;
图5是示出文件“PLAYLIST.DAT”的语法的示意图;
图6是示出PlayItem()的语法的示意图;
图7是示出PlayListMark()的语法的示意图;
图8是示出mark_type的值和Mark()的类型之间的关系的示意图;
图9是示出PlayList()、PlayItem()、剪辑、以及存储在剪辑流文件中的节目流之间的关系的示意图;
图10是示出剪辑信息文件Clip()的语法的示意图;
图11是示出stream_id、private_stream_id、和由此识别的基本流之间的关系的示意图;
图12是示出StaticInfo()的语法的示意图;
图13是示出DynamicInfo()的语法的示意图;
图14是示出EP_map()的语法的示意图;
图15A和图15B是示出MPEG-2系统中的节目流、节目流包(pack)、和节目流包头的语法的示意图;
图16A和图16B是示出MPEG-2系统中的PES分组的语法的示意图;
图17A、图17B和图17C是示出MPEG-2系统中的PES分组的语法的示意图;
图18A和图18B是示出MPEG-2系统中的PES分组的语法的示意图;
图19A和图19B是示出MPEG-2系统中的PES_packet()中的stream_id值和基本流的属性(类型)的关系的示意图;
图20是示出盘设备使用的stream_id的示意图;
图21是示出private_stream1_PES_payload()的语法的示意图;
图22是示出private_stream_id值和存储在private_payload()中的基本流的属性的关系的示意图;
图23是示出private_stream2_PES_payload()的语法的示意图;
图24是示出au_information()的语法的示意图;
图25是示出文件“PLAYLIST.DAT”的特定示例的示意图;
图26A和图26B是示出剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”的特定示例的示意图;
图27是示出剪辑信息文件“00001.CLP”中的EP_map()的特定示例的示意图;
图28是示出PlayList#0和PlayList#1中的PlayListMark()的特定示例的示意图;
图29是描述预再现处理的流程图;
图30是描述再现处理的流程图;
图31是描述PlayItem改变处理的流程图;
图32是描述时间码显示处理的流程图;
图33描述流改变处理的流程图;
图34是描述缓冲器控制模块215的处理的流程图;
图35是描述缓冲器控制模块215的处理的流程图;
图36是描述视频流读取处理的流程图;
图37是描述音频流读取处理的流程图;
图38是描述子标题流读取处理的流程图;
图39是描述再同步处理的流程图;
图40是描述标记处理的流程图;
图41是描述输出属性控制处理的流程图;
图42是示出在剪辑信息文件“00003.CLP”中描述的一组pts_change_point和DynamicInfo()的特定示例的示意图;
图43是描述子标题显示控制处理的流程图;
图44是描述获取控制处理和背景/屏幕保护处理的流程图;
图45是示出private_stream2_PES_payload()的其它语法的示意图;以及
图46是示出au_information()的其它语法的示意图。
具体实施方式
以下将描述本发明的实施方式。在权利要求中的元素和实施例之间的关系如下。该关系表示在实施例中描述了支持在权利要求中阐述的本发明的特定示例。因此,即使未在权利要求的元素中描述一些特定示例,也不意味着这些特定示例不对应于权利要求中的元素。相反,即使在这个部分中将特定示例描述为权利要求中的元素的相应物,这也不意味着这些特定示例不对应于除了权利要求中的元素之外的其它元素。
在这个部分中,不意指在权利要求中阐述了与在本发明的实施例中描述的特定示例相对应的本发明的全部方面。换句话说,在这个部分中的描述对应于在本发明实施例中描述的特定示例。因此,在这个部分中的描述没有否认存在未在当前专利申请的权利要求中阐述的本发明的方面,而且可以提出分案专利申请和/或可以作为修改而添加本发明的另外方面。
如权利要求1所述的数据处理设备是一种用于处理编码数据的数据处理装置(例如,图1所示的盘设备),
所述编码数据包括:
编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得,
输出数据,与该视频数据同步输出,以及
使用信息(如图23所示的private_stream2_PES_payload()),其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,
该使用信息包含参考信息(如图24所示的au_ref_flag),该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,
该数据处理设备包括:
第一确定装置(例如,执行图39中示出的步骤S272的处理的图2A和图2B中示出的解码控制模块214),用于确定该视频数据的输出是否晚于该输出数据的输出;
命令装置(例如,执行图39中示出的步骤S273的处理的图2A和图2B中示出的解码控制模块214),用于当该第一确定装置的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对编码后的视频数据的一个存取单元的处理;
第二确定装置(例如,执行图39中示出的步骤S275的处理的图2A和图2B中示出的解码控制模块214),用于与已由该命令装置促使跳过其处理的存取单元的编码后的视频的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该视频数据;以及
跳跃控制装置(例如,执行图39中示出的步骤S277的处理的图2A和图2B中示出的视频解码器控制模块216),用于当该第二确定装置已确定在对所述其它编码后的数据进行解码时、不参考与已由该命令装置促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已由该命令装置促使跳过其处理的存取单元的编码后的视频数据的处理。
如权利要求2所述的数据处理设备,还包括:
输出控制装置(例如,执行图39中示出的步骤S279的处理的图2A和图2B中示出的视频解码器控制模块216),用于当所述第一确定装置已确定该输出数据的输出晚于该视频数据的输出时,连续输出该视频数据。
如权利要求3所述的数据处理方法是一种用于处理编码数据的数据处理方法,
所述编码数据包括:
编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得,
输出数据,与该视频数据同步输出,以及
使用信息(如图23所示的private_stream2_PES_payload()),其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,
该使用信息包含参考信息(如图24所示的au_ref_flag),该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,
该数据处理方法包括以下步骤:
确定该视频数据的输出是否晚于该输出数据的输出(例如,图39中示出的步骤S272);
当该第一确定步骤的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理(例如,图39中示出的步骤S273);
与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该视频数据(例如,图39中示出的步骤S275);以及
当该第二确定步骤已确定在对所述其它编码后的数据进行解码时、不参考与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的处理(例如,图39中示出的步骤S277)。
如权利要求4所述的程序和记录在如权利要求5所述的程序记录介质上的程序是一种使计算机执行处理编码数据的数据处理的程序,
所述编码数据包括:
编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得,
输出数据,与该视频数据同步输出,以及
使用信息(如图23所示的private_stream2_PES_payload()),其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,
该使用信息包含参考信息(如图24所示的au_ref_flag),该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,
该数据处理方法包括以下步骤:
确定该视频数据的输出是否晚于该输出数据的输出(例如,图39中示出的步骤S272);
当该第一确定步骤的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理(例如,图39中示出的步骤S273);
与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该视频数据(例如,图39中示出的步骤S275);以及
当该第二确定步骤已确定在对所述其它编码后的数据进行解码时、不参考与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的处理(例如,图39中示出的步骤S277)。
如权利要求6所述的数据记录介质是一种其上记录有编码数据的数据记录介质,所述编码数据包括:
编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得,
输出数据,与该视频数据同步输出,以及
使用信息(如图23所示的private_stream2_PES_payload()),其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,
该使用信息包含参考信息(如图24所示的au_ref_flag),该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据。
以下,将参考附图对本发明的实施例进行描述。
【硬件结构】
图1示出根据本发明实施例的盘设备的硬件结构的方框图。
图1所示的盘设备可以应用于例如盘播放器、游戏设备、汽车导航系统,等等。
在图1所示的盘设备101中,盘101是诸如DVD的光盘、磁光盘、磁盘等。诸如视频数据、音频数据以及子标题数据的内容数据以及再现这些数据所需的附加数据记录在盘101上。
需要时,记录在盘101上的数据(称为记录数据)包括可以由计算机执行的程序。根据本发明的实施例,作为记录介质,而使用作为盘形记录介质的盘101。作为替换,该记录介质还可以是半导体存储器或带状记录介质。可以将从在远程位置处的盘101读取的数据传输和输入到图1所示的盘设备。换言之,可以由连接到盘设备的另一设备从盘101读取数据。盘设备可以接收并处理由所述另一设备读取的数据。此外,盘设备还可以通过如因特网的网络从存储类似于记录在盘101上的那些数据的数据的服务器等接收数据,并对接收的数据进行处理。此外,盘设备还可以从如服务器等的另一设备接收数据,将所接收的数据记录到盘101中,并然后对记录到盘101的数据进行处理。
可以向和从盘驱动器102加载和卸载盘101。盘驱动器102具有内置接口(未示出)。盘驱动器102通过该内置接口连接到驱动器接口114。盘驱动器102驱动盘101,按照例如读命令从盘101读数据,和向驱动器接口114提供数据。
中央处理单元(CPU)112、存储器113、驱动器接口114、输入接口115、视频解码器116、音频解码器117、视频输出接口118、以及音频输出接口119连接到总线111。
CPU 112和存储器113构成计算机系统。换言之,CPU 112执行软件模块组,该软件模块组是存储在存储器113中用于控制整个盘设备并执行以下将描述的各种处理的程序。存储器113还存储CPU 112执行的软件模块组。此外,存储器113暂时存储操作CPU 112所需的数据。存储器113可以仅由非易失性存储器构成,或者可以由易失性存储器和非易失性存储器组合而成。当图1所示的盘设备具有其上记录(安装)有CPU 112执行的软件模块组的硬盘时,存储器113可以仅由非易失性存储器构成。
CPU 112执行的程序(软件模块组)可以预先记录(存储)在作为内置于盘设备中的记录介质的存储器113中。
可替换地,还可以将程序暂时地或永久地存储(记录)到盘101或可移动记录介质(如软盘、紧密盘只读存储器(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启动(CPU 112执行操作系统201),执行如初始设置的预定处理,并调用作为应用程序的视频内容再现程序210。
操作系统201向视频内容再现程序210提供诸如文件读取服务之类的基础服务。换句话说,操作系统201提供了这样的服务,其相对于从视频内容再现程序210接收的文件读取请求、通过驱动器接口114操作盘驱动器102,从盘101中读出数据,并且将数据提供给视频内容再现程序210。此外,操作系统201还解释该文件系统。
操作系统201具有多任务处理功能。换言之,操作系统201可以在分时的基础上同时(表面上(apparently))操作多个软件模块。换言之,尽管视频内容再现程序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控制下输出的音频数据。
【缓冲器控制模块215】
缓冲器控制模块215具有作为图1所示的存储器113的存储区域一部分的缓冲器215A。内容数据提供模块213根据从操作系统201接收的请求,将从盘101读取的内容数据暂时存储在缓冲器215A中。
此外,缓冲器控制模块215还分别根据从视频解码器控制模块216、音频解码器控制模块217、或子标题解码器控制模块218接收的请求,将存储在缓冲器215A中的数据提供给视频解码器控制模块216、音频解码器控制模块217、或子标题解码器控制模块218。
换言之,缓冲器控制模块215具有视频读取功能部分233、音频读取功能部分234、和子标题读取功能部分235,这些将在以下在图3中描述。缓冲器控制模块215中的视频读取功能部分233处理从视频解码器控制模块216接收到的数据请求,以将存储在缓冲器215A中的数据提供给视频解码器控制模块216。同样地,缓冲器控制模块215中的音频读取功能部分234处理从音频解码器控制模块217接收到的请求,以将存储在缓冲器215A中的数据提供给音频解码器控制模块217。缓冲器控制模块215中的视频读取功能部分233处理从子标题解码器控制模块218接收的请求,并将存储在缓冲器215A中的数据提供给子标题解码器控制模块218。
【视频解码器控制模块216】
视频解码器控制模块216对缓冲器控制模块215中的视频读取功能部分233(图3)进行操作,以一次一个视频存取单位地从缓冲器控制模块215的缓冲器215A中读取编码的视频数据,并且将该视频数据提供给图1所示的视频解码器116。此外,视频解码器控制模块216控制该视频解码器116,以便一次一个视频存取单位地解码数据。此外,视频解码器控制模块216将由视频解码器116解码的视频数据提供给图形处理模块219。
一个视频存取单位例如是视频数据中的一个画面(一帧或者一场)。
【音频解码器控制模块217】
音频解码器控制模块217对缓冲器控制模块215中的音频读取功能部分234(图3)进行操作,以一次一个音频存取单位地从缓冲器控制模块215的缓冲器215A中读取编码的音频数据,并且将编码的音频数据提供给图1所示的音频解码器117。音频解码器控制模块217控制该音频解码器117,以便一次一个音频存取单位地对编码的音频数据进行解码。此外,音频解码器控制模块217将由音频解码器117解码的音频数据提供给音频输出模块221。
一个音频存取单位是预定量的音频数据(例如,与一个画面同步地输出的数据量)。根据这个实施例,假定一个音频存取单位是预定的固定长度。
【子标题解码器控制模块218】
子标题解码器控制模块218操作缓冲器控制模块215中的子标题读取功能部分235(图3),以便一次一个子标题存取单位地从缓冲器控制模块215的缓冲器215A中读取编码的子标题数据。此外,子标题解码器控制模块218具有子标题解码软件(未示出)。子标题解码软件解码从缓冲器215A读取的数据。子标题解码器控制模块218将解码的子标题数据(子标题的图像数据)提供给图形处理模块219。
一个子标题存取单位是预定量的子标题数据(例如,与一个画面同步地输出的数据量)。根据这个实施例,假定在其开始处描述了一个子标题存取单位的大小。
【图形处理模块219】
图形处理模块219在播放器控制模块212的控制下(根据命令)放大或缩小从子标题解码器控制模块218接收的子标题数据,并将放大或缩小的子标题数据添加(重叠)到从视频解码器控制模块216接收的视频数据上。图形处理模块219放大或缩小已添加了子标题数据的视频数据的大小(图像帧),使得添加(重叠)的视频数据的帧的大小与图1所示的、连接到视频输出端120的视频输出设备的屏幕相匹配。添加(重叠)的视频数据输出到视频输出模块220。
此外,图形处理模块219根据脚本控制模块211和播放器控制模块212的命令(在其控制下)产生菜单、消息等,并将菜单、消息等与输出视频数据相重叠。
此外,图形处理模块219根据图1所示的连接到视频输出端120的视频输出设备的纵横比和表示记录在盘101上的视频数据的纵横比的信息来转换输出到视频输出模块220的视频数据的纵横比。
换言之,当视频输出设备的纵横比为16∶9时,如果表示视频数据纵横比的信息为4∶3,则图形处理模块219在横向(水平方向)上对输出到视频输出模块220的视频数据执行挤压(缩小)处理,使得视频数据的左端和右端为黑,并输出得到的视频数据。当视频输出设备的纵横比为4∶3时,如果表示视频数据纵横比的信息为16∶9,则图形处理模块219在纵向(垂直方向)上对输出到视频输出模块220的视频数据执行挤压(缩小)处理,使得视频数据的上端和下端为黑,并输出得到的视频数据。
当视频输出设备的纵横比与表示视频数据纵横比的信息相同时,如为4∶3或16∶9,则图形处理模块219向视频输出模块220输出未经挤压的视频数据。
此外,图形处理模块219根据从例如播放器控制模块212接收的请求而捕获正被处理的视频数据。此外,图形处理模块219存储捕获的视频数据或将该视频数据提供给播放器控制模块212。
【视频输出模块220】
视频输出模块220排他地占据图1所示存储器113的一部分,作为先进先出(FIFO)220A(缓冲器),并暂时存储从图形处理模块219接收的视频数据。此外,视频输出模块220频繁地从FIFO 220A读取视频数据,并将视频数据输出到视频输出端120(图1)。
【音频输出模块221】
音频输出模块221排他地占据图1所示存储器113的一部分,作为FIFO221A(缓冲器),并暂时存储从音频解码器控制模块217(音频解码器117)接收的音频数据。此外,音频输出模块221频繁地从FIFO 221A读取音频数据,并将音频数据输出到音频输出端121(图1)。
此外,当从音频解码器控制模块217接收的音频数据是具有“主音频”数据和“子音频”数据的左、右声道的双(双语)模式音频数据时,音频输出模块221根据预先指定的音频输出模式,而将从音频解码器控制模块217接收的音频数据输出到音频输出端121。
换言之,如果已经将“主声音”指定为音频输出模式,音频输出模块221就将从音频解码器控制模块217接收的音频数据的左声道复制为音频数据的右声道,并将音频数据(“主音频”数据)的左和右声道输出到音频输出端121。如果已经将“子音频”指定为音频输出模式,音频输出模块221就将从音频解码器控制模块217接收的音频数据的右声道复制为左声道,并将左和右声道(“子音频”数据)输出到音频输出端121。如果已经将“主和子音频”二者指定为音频输出模式,则音频输出模块221就将从音频解码器控制模块217接收的音频数据直接输出到音频输出端121。
如果从音频解码器控制模块217接收的音频数据为立体声模式音频数据,则音频输出模块221将从音频解码器控制模块217接收的音频数据直接输出到音频输出端121,而不考虑已经指定了什么音频输出模式。
用户可以利用遥控器在用于由视频内容再现程序210生成的菜单的屏幕上交互地指定音频输出模式。
【缓冲器控制模块215的结构】
图3示出了图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中,就沿图3所示的顺时针方向来更新数据写指针所代表的位置。只要从缓冲器215A读取数据,就沿图3所示的顺时针方向来更新数据开始指针所代表的位置。因此,存储在缓冲器215A中的有效数据沿图3所示的顺时针方向、从数据开始指针所代表的位置到数据写指针所代表的位置。
视频读取功能部分233对应于从图2A和2B示出的视频解码器控制模块216接收的请求,而从缓冲器215A读取视频流(视频数据的基本流),并将该视频流提供给视频解码器控制模块216。音频读取功能部分234对应于从音频解码器控制模块217接收的请求,而从缓冲器215A读取音频流(音频数据的基本流),并将该音频流提供给音频解码器控制模块217。类似地,子标题读取功能部分235对应于从子标题解码器控制模块218接收的请求,而从缓冲器215A读取子标题(子标题数据的基本流),并将该子标题流提供给子标题解码器控制模块218。
换言之,已经在盘101上记录了与例如活动图像专家组(MPEG)2标准相对应的节目流,该节目流被称为MPEG2-系统节目流。在该节目流中,已经在时分基础上多路复用了视频流、音频流、和子标题流中的至少一个基本流。视频读取功能部分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存储stream_id,该stream_id用于分析存储在缓冲器215A中的节目流并用于标识从节目流读取的视频流。au_information()寄存器243存储au_information(),其中au_information()是从缓冲器215A中读取视频流所必需的数据(也就是说用于读取该视频流的数据)。
音频读取功能部分234具有作为图1所示存储器113一部分的音频读指针存储部分251、stream_id寄存器252、和private_stream_id寄存器253。
音频读指针存储部分251存储代表存储在缓冲器215A中的音频流的位置(地址)的音频读指针。音频读取功能部分234从缓冲器215A中的音频读指针的位置读取作为音频流的数据。stream_id寄存器252和private_stream_id寄存器253分别存储stream_id和private_stream_id(将在稍后描述),其中stream_id和private_stream_id用于分析存储在缓冲器215A中的节目流以及标识从节目流中读取的音频流。
子标题读取功能部分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分别存储stream_id和private_stream_id(将在稍后描述),其中stream_id和private_stream_id用于分析存储在缓冲器215A中的节目流以及标识从节目流中读取的子标题流。
【对记录在盘101上的数据的数据格式的描述】
接下来,将描述记录在盘101上的数据的数据格式。
图4示意性地示出了盘101的目录结构。
用于盘101的文件系统例如是国际标准化组织(ISO)-9660和通用盘格式(UDF)(http://www.osta.org/specs/)定义的文件系统中的一种。以目录结构分级地管理记录在盘101上的数据文件。可用于盘101的文件系统不限于这些文件系统。
在图4中,在代表文件系统的基础的根目录下有一个“视频”目录。在该“视频”目录下,有“剪辑”目录和“流”目录两个目录。
除“剪辑”目录和“流”目录这两个目录之外,在“视频”目录下还有两个数据文件,即文件“SCRIPT.DAT”和文件“PLAYLIST.DAT”。
“SCRIPT.DAT”文件是描述脚本程序的脚本文件。换言之,“SCRIPT.DAT”文件描述允许交互地再现盘101上的数据的脚本程序。存储在“SCRIPT.DAT”文件中的脚本程序由图2A和2B所示的脚本控制模块211解释和执行。
“PLAYLIST.DAT”文件存储至少一个播放列表(将在以下参考图5描述的PlayList())。播放列表描述了诸如视频数据之类、记录在盘101上的内容的再现过程。
在“剪辑”目录下至少有一个剪辑信息文件。在“流”目录下至少有一个剪辑流文件。换言之,在“剪辑”目录下有三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”。在“流”目录下有三个剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”。
剪辑流文件存储节目流,在该节目流中,视频数据、音频数据以及子标题数据中的至少一个被压缩并编码,并在时分的基础上被多路复用。
剪辑信息文件存储例如剪辑流的特征之类的、有关剪辑流的(文件)元数据。
换言之,剪辑流文件和剪辑信息文件以一一对应的关系相关。在图4中,与五个数字+句点+″PS″的命名规则相对应地命名剪辑流文件,而与和对应的剪辑流相同的五个数字+句点+“CLP”的命名规则相对应地来命名剪辑信息文件。
因此,可以通过文件名的扩展名(句点右侧)标识出剪辑流文件和剪辑信息文件。此外,可以利用除了扩展名之外的文件名(句点的左侧部分)确定剪辑流文件和剪辑信息文件是否相关。
以下将详细描述记录在盘101上的文件。
【PLAYLIST.DAT】
图5示出图4中“视频”目录下的“PLAYLIST.DAT”文件的内部结构(语法)。
在图5中,“PLAYLIST.DAT”文件具有“语法”字段,用于描述PLAYLIST.DAT文件的数据结构;“位数”字段,用于描述“语法”字段中每个数据项的位长度;“助记符”字段,其中“bslbf”(左边位开头的位串)和“uimsbf”(最高有效位开头的无符号整数)代表在“语法”字段中的数据项从左边的位开始移位、以及字段“语法”中的数据项是无符号整数并且从最高有效位开始移位。这些条件适用于与图5类似的其它列表。
文件“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_forword_alignment之后跟随1位的capture_enable_flag_PlayList,以用于在capture_enable_flag_PlayList的位置处的字定位,以便将其置于16位的位置处。capture_enable_flag_PlayList是1位的标志,代表是否允许与PlayList()相对应地再现的视频流的视频数据(属于PlayList()的视频数据)在从盘101中再现数据的盘设备中被二次使用。当capture_enable_flag_PlayList的值例如为1(0或1)时,这代表允许属于PlayList()的视频数据被二次使用。当capture_enable_flag_PlayList的值例如为0(0或1)时,这代表不允许属于PlayList()的视频数据被二次使用(即禁止被二次使用)。
在图5中,capture_enable_flag_PlayList由1位构成。作为选择,capture_enable_flag_PlayList还可以由多位构成。在这种情况下,可以逐渐地允许二次使用属于PlayList()的视频数据。换言之,capture_enable_flag_PlayList可以由2位组成。当capture_enable_flag_PlayList的值为00B(其中B代表前面的数字为二进制数)时,禁止二次使用视频数据。当capture_enable_flag_PlayList的值为01B时,允许二次使用缩小为64×64像素大小或者更小的视频数据。当capture_enable_flag_PlayList的值是10B时,允许二次使用视频数据而没有任何尺寸缩小。
可以相对于应用而不是大小来限制对视频数据的二次使用。换言之,当capture_enable_flag_PlayList的值为01B时,仅仅可以允许视频内容再现程序210(图2A和图2B)二次使用该视频数据。当capture_enable_flag_PlayList的值是10B时,可以允许图1所示的盘设备中的包括视频内容再现程序210在内的任何应用二次使用该视频数据。在这个示例中,在图1所示的盘设备中的除了视频内容再现程序210之外的应用显示壁纸(背景)或者屏幕保护程序。
当capture_enable_flag_PlayList由2位组成时,跟随其后的reserved_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()的第一个PlayItem()由数字0标识。其它PlayItem()顺序地由数字1、2、…等标识。
在由number_of_PlayItems表示的数量的PlayItem()后面跟随一个PlayListMark()。PlayListMark()是作为与PlayList()对应的再现时间轴上的标记的一组Mark()。以下将参考图7对PlayListMark()进行详细描述。
【对PlayItem()的描述】
图6示出了包含在图5所示的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()再现的剪辑流文件(图4所示的具有扩展名PS的文件)相对应的剪辑信息文件(图4所示的具有扩展名CLP的文件)的文件名。与上述剪辑流文件和剪辑信息文件的命名规则相对应,可以利用Clip_Information_file_name识别出由PlayItem()再现的剪辑信息文件的文件名,并且可以标识出剪辑流文件。
在Clip_Information_file_name后依次跟随有IN_time(32位)和OUT_time(32位)。
IN_time和OUT_time是表示由Clip_Information_file_name标识的剪辑流文件的再现开始位置和再现结束位置的时间信息。
IN_time可以指定剪辑流文件的中间位置(包括开头)作为再现开始位置。OUT_time可以指定剪辑流文件的中间位置(包括结尾)作为再现结束位置。
PlayItem()再现由Clip_Information_file_name标识的剪辑流文件的从IN_time到OUT_time的内容。由PlayItem()再现的内容有时被称为剪辑。
【对PlayListMark()的描述】
图7示出了包含在图5所示的PlayList()中的PlayListMark()的内部结构。
如上所述,PlayListMark()是一组Mark(),这些Mark()是在与图5所示的PlayList()相对应的再现的时间轴上的标记。Mark()的数目为0或者更大。一个Mark()至少具有:时间信息,其表示在与PlayList()相对应地执行的再现的时间轴上的一个时间(位置);类型信息,表示Mark()的类型;以及当类型信息表示发生的事件类型时、该事件的参数(argument)的参数信息。
换言之,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()例如具有章节(chapter)、索引和事件三种类型。
当Mark()的类型为章节(有时称为章节标记)时,其是作为划分(division)PlayList()的一部分的搜索单位的章节的开始位置的标记。当Mark()的类型为索引(有时称为索引标记)时,则其是作为章节的子划分单位的索引的开始位置的标记。当Mark()的类型为事件(有时称为事件标记)时,Mark()是在与PlayList()相对应地再现内容时、发生该事件的位置的标记。向脚本控制模块211通知已经发生了与事件标记相对应的事件。
图8示出mark_type的值和Mark()类型之间的关系。图8中,章节标记的mark_type为1;索引标记的mark_type为2;而事件标记的mark_type为3。图8中,由8位mark_type表示的其它值(即0和4~255)被保留以用于将来扩展。
在图7中,mark_type后跟随mark_name_length(8位)。Mark()以mark_name_string(24字节)结束。mark_name_length和mark_name_string用于描述Mark()的名称。mark_name_length表示mark_name_string的有效大小。mark_name_string表示Mark()的名称。因此,从mark_name_string的开头开始的mark_name_length的字节表示Mark()的有效名称。
mark_name_length后面跟随有四个元素ref_to_PlayItem_id(16位)、mark_time_stamp(32位)、entry_ES_stream_id(8位)、以及entry_ES_private_stream_id(8位),这些元素将在PlayList()中定义的Mark()和剪辑流文件相关联。
ref_to_PlayItem_id描述作为分配给Mark()所属的PlayItem()的顺序号的ID。ref_to_PlayItem_id标识Mark()所属的PlayItem()(图6)。由此,如在图6所描述的,标识了剪辑信息文件和剪辑流文件。
mark_time_stamp表示在由ref_to_PlayItem_id标识的剪辑流文件中、Mark()所表示的位置(时间)。
图9示出了PlayList()、PlayItem()、剪辑以及存储在剪辑流文件中的节目流之间的关系。
图9中,PlayList()由三个顺序地编号为ID#1、ID#2和ID#3的PlayItem()组成。在以下的描述中,编号为ID#i的PlayItem()被表示为PlayItem#i。
图9中,作为由PlayItem#0、PlayItem#1和PlayItem#2再现的内容的剪辑被分别标示为clip A、clip B和clip C。
剪辑的实体是在由图6所示的PlayItem()中的Clip_Information_file_name所标识的剪辑流文件(也由剪辑信息文件所标识)中存储的节目流从IN_time到OUT_time的剪辑。图9中,作为剪辑A、剪辑B和剪辑C的实体的节目流被分别表示为节目流A、节目流B、和节目流C。
在图9中,在作为在与PlayList()相对应的再现的时间轴上的位置(时间)t0的标记的Mark()中,ref_to_PlayItem_id和mark_time_stamp如下所述。
在图9中,因为时间t0是再现PlayItem#1的时间,所以ref_to_PlayItem_id描述了作为PlayItem#1的ID的1。因为在时间t0处再现了作为剪辑B实体的节目流B,所以mark_time_stamp描述了与时间t0相对应地存储节目流B的剪辑流文件的时间。
在图7中,当Mark()与特定基本流相关时,entry_ES_stream_id和entry_ES_private_stream_id用于标识该基本流。换言之,entry_ES_stream_id描述与Mark()相关的基本流的stream_id(包含基本流的PES_packet(),将在以下参考图16A和16B以及18A和18B描述PES_packet())。另一方面,entry_ES_private_stream_id描述与Mark()相关的基本流的private_stream_id(包含基本流的private_stream1_PES_payload()的private_header(),将在以下参考图21描述private_header())。
当再现其中已经多路复用了视频流#1和视频流#2的剪辑中的视频流#1时以及当在再现视频流#2的同时需要改变章节时间时,在正在再现视频流#2的同时,在章节标记时间处,在Mark()中的entry_ES_stream_id和entry_ES_private_stream_id中描述视频流#1的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()的描述】
以下,将描述存储在图4所示的“剪辑”目录中的、具有CLP扩展名的剪辑信息文件的内部结构。
图4中,在“剪辑”目录下有三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”。这些剪辑信息文件包含表示存储在“流”目录下的剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”的特征的元数据。
图10示出了剪辑信息文件Clip()的内部结构。
剪辑信息文件Clip()以presentation_start_time和presentation_end_time(各为32位)。presentation_start_time和presentation_end_time表示与剪辑信息文件Clip()相对应的剪辑流文件(存储在其中的节目流)的开始时间和结束时间。剪辑流文件的时间被描述为用作MPEG2-系统的时间的90千赫的倍数。
在presentation_end_time后跟随reserved_for_word_alignment(7位)和capture_enable_flag_Clip(1位)。7位的reserved_for_word_alignment用于字对准。capture_enable_flag_Clip是与图5所示的capture_enable_flag_PlayList相似的用于表示是否允许二次使用视频数据的标志。
然而,图5所示的capture_enable_flag_PlayList表示是否允许对应于与PlayList()相对应地再现的视频流的视频数据(属于PlayList())被二次使用。相反,图10所示的capture_enable_flag_Clip表示是否允许对应于存储在与剪辑信息文件Clip()相对应的剪辑流文件中的视频流(视频数据的基本流)的视频数据被二次使用。因此,图5所示capture_enable_flag_PlayList不同于图10所示的capture_enable_flag_Clip之处在于,允许二次使用的视频数据的单位(范围)。
与图5描述的capture_enable_flag_PlayList相似,图10中描述的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()相关的基本流。
图11示出stream_id、private_stream_id、以及由此标识的基本流之间的关系。
stream_id与MPEG2-系统标准中定义的相同。MPEG2-系统标准为基本流(数据)的每个属性(类型)定义了stream_id的值。因此,MPEG2-系统标准中定义的基本流的属性只能由stream_id来标识。
本实施例能够处理MPEG2-系统标准中未定义的基本流的属性。private_stream_id是标识MPEG2-系统标准中未定义的基本流的属性的信息。
图11示出具有四个属性的基本流的stream_id和private_stream_id的关系,这些基本流是与在MPEG中定义的编码(解码)系统相对应地编码的视频基本流、与自适应变换声学编码(ATARC)系统相对应地编码的音频基本流(有时在下文中称为ATRAC音频流)、与线性脉码调制(LPCM)系统相对应地编码的音频基本流(有时在下文中称为LPCM音频流)、以及子标题基本流(有时在下文中称为子标题流)。
MPEG2-系统标准定义了与在MPEG中定义的编码系统相对应地编码的视频基本流与在从0xE0到0xEF(其中0x表示其后的字符串以十六进制表示)范围中的值多路复用。因此,可以用节目流来多路传输与在MPEG中定义的编码系统相对应地编码、并且由从0xE0到0xEF的范围中的stream_id所标识的16个视频基本流。
由于与在MPEG中定义的编码系统相对应地编码的视频基本流可以由在从0xE0到0xEF的范围内的stream_id所标识,所以不需要private_stream_id(可以被忽略)。
另一方面,在MPEG2-系统中,没有为ATRAC音频流、LPCM音频流、和子标题流定义stream_id。
因此,根据本实施例,对于未在MPEG2-系统中定义其stream_id的基本流,使用了作为代表MPEG2-系统中的属性private_stream_1的值的0xBD。此外,如图11所示,由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。
图10中,在private_stream_id后顺序地跟随StaticInfo()和reserved_for_word_alignment(8位)。StaticInfo()描述在再现由stream_id和private_stream_id标识的基本流(在包括StaticInfo()的StreamInfo()中描述的)时发生变化的信息。以下将参考图12对StaticInfo()进行描述。
reserved_for_word_alignment用于字对准。
reserved_for_word_alignment后跟随humber_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所代表的再现时间处变为有效。稍后将参考图13描述DynamicInfo()
在由number_of_DynamicInfo表示的pts_change_point和DynamicInfo()的集合后跟随EP_map()。以下将参考图14对EP_map()进行描述。
【对StaticInfo()的描述】
以下,将参考图12对图10示出的StaticInfo()进行详细描述。
图12示出了StaticInfo()的语法。
StaticInfo()的内容取决于对应基本流的属性(类型)而改变。由图10所示包括StaticInfo()在内的StreamInfo()中包含的stream_id和private_stream_id来确定与StaticInfo()相对应的基本流的属性。
当对应于StaticInfo()的基本流是视频流(流==VIDEO)时,StaticInfo()包含picture_size(4位)、frame_rate(4位)、cc_flag(1位)、以及用于字对准的reserved_for_word_alignment。
picture_size代表与视频流相对应的视频数据(利用该视频数据显示的图像)的大小。frame_rate代表与视频流相对应的视频数据的帧频。cc_flag代表视频流是否包含封闭的(closed)字幕数据。当视频流包含封闭的字幕数据时,cc_flag为1。当视频流不包含封闭的字幕数据时,cc_flag为0。
当对应于StaticInfo()的基本流为音频流(流==AUDIO)时,StaticInfo()包含audio_language_code(16位)、channel_configuration(8位)、lfe_existence(1位)、sampling_frequency(4位)、以及用于字对准的reserved_for_word_alignment。
audio_language_code描述了代表包含在音频流中的音频数据的语言的代码。channel_configuration代表包含在音频流中的音频数据的诸如非立体声(单声道)、立体声、多声道之类的属性。lfe_existence代表音频流是否包含低频效应声道。当音频流包含低频效应声道时,lfe_existence为1。当音频流不包含低频效应声道时,lfe_existence为0。sampling_frequency是代表包含在音频流中的音频数据的采样频率的信息。
当对应于StaticInfo()的基本流是子标题流(流==SUBTITLE)时,StaticInfo()包含subtitle_language_code(16位)、configurable_flag(1位)、以及用于字对准的reserved_for_word_alignment。
subtitle_language_code描述了表示包含在子标题流中的子标题数据的语言的代码。configurable_flag是代表是否允许从缺省显示模式改变该子标题数据显示模式的信息。当允许显示模式改变时,configurable_flag为1。当不允许显示模式改变时,configurable_flag为0。子标题数据的显示模式包括子标题数据的显示大小、显示位置、显示颜色、显示模式(例如,闪烁)、显示方向(垂直或者水平)等。
【对DynamicInfo()的描述】
以下,将参考图13对图10所示DynamicInfo()进行详细描述。
图13示出DynamicInfo()的语法。
DynamicInfo()以用于字对准的reserved_for_word_alignment(8位)开始。跟随在reserved_for_word_alignment后面的元素取决于与DynamicInfo()对应的基本流的属性。由图12所示、包括DynamicInfo()的StreamInfo()中包含的stream_id和private_stream_id确定与DynamicInfo()相对应的基本流的属性。
如图10所述,DynamicInfo()描述了在再现基本流时改变的动态信息。动态信息不是特定的。然而,在图13所示的实施例中,在DynamicInfo()中描述了与DynamicInfo()相对应的基本流的数据,即作为对基本流的处理的输出的数据的输出属性(从基本流获得的数据的输出属性)。
具体而言,当与DynamicInfo()相对应的基本流是视频流(流==VIDEO)时,DynamicInfo()包含display_aspect_ratio(4位)和用于字对准的reserved_for_word_alignment。display_aspect_ratio描述了视频流中的视频数据的输出属性(显示模式),例如视频数据的纵横比。换句话说,display_aspect_ratio描述了代表作为纵横比的16∶9或者4∶3的信息。视频流的DynamicInfo()可以描述如视频数据中的图像的大小(X像素×Y像素)以及纵横比。
当与DynamicInfo()相对应的基本流是音频流(流==AUDIO)时,DynamicInfo()包含channel_assignment(4位)和用于字对准的reserved_for_word_alignment。当音频流包含两个声道音频数据时,channel_assignment描述两个声道的输出属性(输出模式)。换句话说,channel_assignment描述代表立体声或者双声道(双语)的声道分配的信息。
当与DynamicInfo()相对应的基本流是子标题流(流==SUBTITLE)时,DynamicInfo()包含用于字对准的reserved_for_word_alignment。换句话说,根据图13所示的实施例,没有为子标题流定义作为动态信息的输出属性。
【对EP_map()的描述】
以下将参考图14对图10所示EP_map()进行详细描述。
图14示出EP_map()的语法。
EP_map()描述了可解码起始(startable)点(入口点)的信息,从该起始点开始可以解码用存储在对应于包括EP_map()的剪辑信息文件Clip()的剪辑流文件中的节目流多路复用的每个基本流。
可以通过计算获得具有固定速率的流中的可解码起始点。然而,对于诸如与MPEG标准相对应地编码的视频流之类、其大小在每个视频存取单元中发生改变的流,不能通过计算获得可解码起始点。除非对流进行分析,否则不能获得可解码起始点。为了随机存取数据,必须快速地识别出可解码起始点。利用EP_map(),可以快速地识别出可解码起始点。
在MPEG2-视频中,包括Sequence_header()等的帧内画面(intra_picture)的开头是可解码起始点。
EP_map()从用于字对准的reserved_for_word_alignment(8位)开始。reserved_for_word_alignment之后跟随number_of_stream_id_entries(8位)。number_of_stream_id_entries代表在EP_map()中描述可解码起始点信息的基本流的数目。
number_of_stream_id_entries之后跟随由number_of_stream_id_entries所代表的、标识基本流的信息和基本流的可解码起始点的信息的集合。
换句话说,number_of_stream_id_entries之后跟随作为标识基本流的信息的stream_id(8位)和private_stream_id(8位)。private_stream_id之后跟随number_of_EP_entries(32位)。number_of_EP_entries代表由number_of_EP_entries之前的stream_id和private_stream_id所标识的可解码起始点的数目。
number_of_EP_entries之后跟随由number_of_EP_entries所代表的、作为由stream_id和private_stream_id所标识的基本流中的可解码起始点的信息PTS_EP_start(每个32位)和RPN_EP_start(每个32位)的集合。
作为可解码起始点的一个信息元素的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分组(作为private_stream_2的属性的PES_packet())之后。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集合可被对半搜索(binary-searched)。
例如在日本专利待审公开2000-341640(日本专利申请HEI 11-317738)中描述了用于可变速率的流和其大小在视频存取单元方面不同的流的随机存取方法。
【对剪辑流文件的描述】
以下将描述存储在图4所示的“流”目录中的、具有PS扩展名的剪辑流文件的内部结构(图4中的“00001.PS”、“00002.PS”和“00003.PS”)。
基于在MPEG-2系统(ISO/IEC_13818-1)中定义的MPEG2_Program_Stream()构成剪辑流文件。
图15A和图15B示出了在MPEG-2系统(ISO/IEC 13818-1:20000)标准中描述的表格2-31、表格2-32、和表格2-33。
存储在剪辑流文件中的节目流是在MPEG2-系统标准的表格2-31中定义的MPEG2_Program_Stream()。节目流包含至少一个pack()和一个MPEG_program_end_code。日本专利第2785220号中描述了MPEG2_Program_Stream()
如MPEG-2系统标准的表格2-32中定义的那样,一个pack()包含一个Pack_header()和任意数目的PES packet()。在MPEG2-系统标准的表格2-33中详细地描述了Pack_header()。
在MPEG2-系统标准中,pack()具有可变长度的大小。然而,如图14所述,假定pack()的大小是固定的2048字节。在这个示例中,一个pack()中的PES_packet()的数目是1、2、或者3。当Pack()从private_stream_2分组开始时,其后总是跟随对应视频流(在相同Pack()中的)的PES_packet()。此外,作为第三PES_packet(),可能有padding_packet。private_stream_2分组总是出现在Pack()的开头处。
当Packet()不是以private_stream_2分组开始时,Pack()以包含视频数据、音频数据、子标题数据等中的内容数据的PES_packet()开始。第二PES_packet()可以是padding_packet。
图16A和图16B到图18A和18B示出了在MPEG2-系统标准的表格2-17中定义的PES_packet()。
PES_packet()主要包含packet_start_code_prefix、stream_id、PES_packet_length(它们在图16A和图16B中示出)、对应于stream_id等而改变的头部部分(包括stuffing_byte)(这些部分在图16A和图16B到图18A和图18B中示出)、PES_packet_data_byte(图18A和图18B所示)。当PES_packet()是padding_packet(stream_id==padding_stream)时,重复所需数目的padding_byte(0xFF)(图18A和图18B)来代替PES_packet_data_byte。
如图16A、图16B、图17A、图17B和图17C所示,PES_packet()的头部部分可以描述代表被称为呈现时间戳(PTS)的显示定时的信息、和代表被称为解码时间戳的解码定时的信息。根据这个实施例,将PTS添加到全部存取单元(构成在MPEG2-系统中定义的基本流的解码单元)中的每一个中。当在MPEG2-系统中指定时,添加DTS。
用节目流多路传输的基本流被存储在PES_packet()的PES_packet_data_byte(图18A和图18B)中。PES_packet()中的stream_id描述了与基本流的属性相对应的值,以便标识存储在PES_packet_data_byte中的基本流。
在MPEG2-系统标准的表格2-18中定义了在PES_packet()的stream_id中描述的值和基本流的属性(类型)之间的关系。图19A和图19B示出了MPEG-2系统标准中的表格2-18。
根据本发明的实施例,图20所示的值用作在图19A和图19B所示的MPEG2-系统标准中定义的stream_id。
换句话说,根据这个实施例,使用了五个模式10111101B、10111110B、10111111B、110xxxxxB、和1110xxxxB作为stream_id的值,其中“x”代表0和1中的任何一个。
对应于图20所示的表格,具有属性private_stream_1的基本流中的PES_packet()的stream_id是10111101B。对应于图20所示的表格,padding_packet中的PES_packet()的stream_id是10111110B。根据图20所示的表格,具有属性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。110xxxxB中的低4位xxxx是标识视频流的视频流号码。可以用节目流对16(=24)个视频流(MPEG中定义的视频流)进行多路复用。
stream_id为110xxxxB的PES_packet()用于存储在MPEG中定义的视频流。stream_id为110xxxxxB的PES_packet()用于存储在MPEG中定义的音频流。另一方面,没有在MPEG中定义用于与编码系统(例如,ATRAC系统)相对应的基本流的PES_packet()中的stream_id。因此,类似于在MPEG中定义的视频流和音频流,不能用stream_id在PES_packet()中存储与未在MPEG中定义的编码系统相对应的基本流。
因此,根据这个实施例,扩展了private_stream_1的PES_packet()中的PES_packet_data_byte,以便存储与未在MPEG中定义的编码系统相对应的基本流。
private_stream_1的PES_packet()中的扩展PES_packet_data_byte被描述为private_stream1_PES_payload()。
【private_stream1_PES_payload()的描述】
图21示出了private_stream1_PES_payload()的语法。
private_stream1_PES_payload()包含private_header()和private_payload()。private_payload()存储诸如ATRAC音频流、LPCM音频流、子标题流等之类、与未在MPEG系统中定义的编码系统相对应地编码的基本流。
private_header()从private_stream_id(8位)开始。private_stream_id是标识存储在private_payload()中的基本流的标识信息。private_stream_id具有与基本流的属性(类型)相对应的下列值。
图22示出了private_stream_id值和存储在private_payload()中的基本流的属性之间的关系。
图22示出了作为private_stream_id值的三个模式0000xxxxB、0001xxxxB、和100xxxxxB,其中如果图20所示的情况那样,“x”是0和1的任何值。
根据图22所示的表格,ATRAC音频流的private_payload()的private_stream1_PES_payload()中的private_stream_id为0000xxxxB。0000xxxxB中的低4位是标识ATRAC音频流的音频流号码。可以用节目流(MPEG2_Program_Stream())来多路复用可由该音频流号码标识的16(=24)个ATRAC音频流。
根据图22所示的表格,LPCM音频流的private_payload()的private_stream1_PES_payload()中的private_stream_id为0001xxxxB。0001xxxxB中的低4位是标识LPCM音频流的音频流号码。可以用节目流多路复用可由该音频流号码标识的16(=24)个LPCM音频流。
根据图22所示的表格,子标题流的private_payload()的private_stream1_PES_payload()中的private_stream_id为100xxxxxB。100xxxxxB中的低五位是标识子标题流的子标题流号码。可以用节目流多路复用32(=25)个子标题流。
图21示出了图20和图22的关系。
在图21中,在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音频流的音频存取单元(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音频流的音频存取单元(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()的描述】
图23示出了private_stream2_PES_payload()的语法。
private_stream2_PES_payload()是private_stream_2的private_payload()中的PES_packet_data_byte(图18A和图18B)的扩展,即private_stream_2的PES_packet()中的PES_packet_data_byte的扩展。private_stream2_PES_payload()描述了用于解码视频流的信息。
根据这个实施例,private_stream 2的PES_packet()紧跟在视频流的可解码起始点之后。因此,根据这个实施例,当从节目流中检测到private_stream_2PES_packet()时,可以解码紧跟在PES_packet()之后的视频流。
图14所示的EP_map()中的RPN_EP_start表示用于视频流的private_stream_2的PES_packet()的开始位置。
private_stream2_PES_payload()从用于将来扩展的reserved_for_future_use(8位)开始。reserved_for_future_use之后连续地跟随video_stream_id(8位)、1stRef_picture(16位)、2ndRef_picture(16位)、3rdRef_picture(16位)、4thRef_picture(16位)、au_information()、和VBI()。
video_stream_id描述了紧跟在private_stream_2的PES_packet()之后的视频流的PES_packet()中的stream_id(与stream_id同值)。video_stream_id标识了用存储在private_stream_2的PES_packet()中的信息(PES_packet()中的private_stream2_PES_payload())解码的视频流(存储视频流的PES_packet())。
1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture分别表示包括第一、第二、第三、和第四参考图像的上一个pack()从由video_stream_id所标识的视频流中的private_stream_2中的PES_packet()到下一个private_stream_2的PES_packet()的位置相对值。在日本专利待审公开HEI09-46712(日本专利申请HEI 07-211420)中将1stRef_picture、2ndRef_picture、3rdRef_picture、和4thRef_picture的详细信息公开为bytes_to_first_P_pic和bytes_to_second_P_pic。
au_information()逐个private_stream 2中的PES_packet()地描述了有关视频流中的视频存取单元的信息。将参考图24详细描述au_information()。
VBI()用于描述有关封闭字幕的信息。
为每个视频流的可解码起始点描述了具有private_stream2_PES_payload()的private_stream_2中的PES_packet()。
图24示出了图23所示的au_information()的语法。
au_information()从length(16位)开始。length表示包括length的大小在内的、au_information()的大小。length之后连续地跟随reserved_for_word_alignment(8位)和number_of_access_unit(8位)。reserved_for_word_alignment用于字对准。
number_of_access_unit代表从private_stream2的PES_packet()到下一个private_stream2的PES_packet()所存储的存取单元(画面)数目。
换句话说,number_of_access_unit代表在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循环的内容。换句话说,描述了有关从包括number_of_access_unit的private_stream_2的PES_packet()到下一个private_stream_2的PES_packet()中的至少一个视频存取单元的信息。
在该for循环中描述的信息(有关视频存取单元的信息)如下。
该for循环包含pic_struct_copy(4位)、au_ref_flag(位)、AU_length(21位)、和reserved(保留)。
pic_struct_copy为与MPEG4-AVC(ISO/IEC 14496-10)相对应的视频存取单元描述了在ISO/IEC 14496-10,D.2.2.中定义的pic_struct()的拷贝。pic_struct()是代表例如显示画面帧、或者在显示画面的上半帧之后显示下半帧的信息。
au_ref_flag表示对应的存取单元是否为当解码另一个存取单元(的画面)时参考的参考画面。当对应的存取单元是参考画面时,au_ref_flag为1。当对应的存取单元不是参考画面时,au_ref_flag为0。
AU_length以字节为单位表示对应存取单元的大小。
【记录在盘101上的数据的特定示例】
图25到图28示出了具有上述格式并且已经记录在图1所示的盘101上的数据的特定示例。
在图25到图28中,使用了对应于MPEG2-视频的视频流和对应于ATRAC的音频流。然而,在本发明中使用的视频流和音频流不局限于这些流。换句话说,可以使用与MPEG4-Visual相对应的视频流、与MPEG4-AVC相对应的视频流等。另一方面,可以使用与MPEG1/2/4音频相对应的音频流、与LPCM音频相对应的音频流等。
不同于视频流和音频流,子标题流可以不被连续地解码并且以相同间隔显示(输出)。换句话说,子标题流不时地从图2A和图2B所示的缓冲器控制模块215提供给子标题解码器控制模块218。子标题解码器控制模块218解码该子标题流。
图25到图28示出了在其中三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”存储在目录“剪辑”中、而且与三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”相对应的三个剪辑流文件“00001.PS”、“00002.PS”、和“00003.PS”存储在目录“流”中的情况下,文件“PLAYLIST.DAT”、三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”等的特定示例。然而,在图25到图28中,省略了诸如文件“PLAYLIST.DAT”等之类的部分数据。
图25示出了图5所示的文件“PLAYLIST.DAT”的特定示例。
在图25中,number_of_PlayLists为2。因此,存储在文件“PLAYLIST.DAT”中的PlayList()的数目为2。在图25中,两个PlayList()是PlayList#0和PlayList#1。
第一PlayList(),即PlayList#0中的capture_enable_flag_PlayList为1。因此,允许二次使用根据PlayList#0再现的视频数据。另一方面,PlayList#0中的number_of_PlayItems为2。因此,包含在PlayList#0中的PlayItem()的数目为2。在图25所示的“PlayList#0”字段之下描述了作为两个PlayItem()的PlayItem#0和PlayItem#1的特定示例。
在作为包含在PlayList#0中的第一PlayItem()的PlayItem#0中,图6中描述的Clip_Information_file_name是“00001.CLP”,IN_time为180,090,OUT_time为27,180,090。因此,由PlayList#0中的PlayItem#0再现的剪辑在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”中的时间180,090到时间27,180,090。
在作为在PlayList#0中包含的第二PlayItem()的PlayItem#1中,图6中描述的Clip_Information_file_name是“00002.CLP”,IN time为90,000,OUT_time为27,090,000。因此,由PlayList#0中的PlayItem#1再现的剪辑在与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”中的时间90,000到时间27,090,000。
在图25中,在作为第二PlayList()的PlayList#1中,capture_enable_flag_playlist为0。因此,不允许二次使用(禁止二次使用)根据PlayList#1再现的视频数据。在PlayList#1中,number_of_PlayItems为1。因此,包含在PlayList#1中的PlayItem()的数目为1。在图25中,在字段“PlayList#1”之下描述了作为一个PlayItem()的PlayItem#0的特定示例。
在作为在PlayList#1中包含的一个PlayItem()的PlayItem#0中,图6中描述的Clip_Information_file_name是“00001.CLP”,IN_time为90,000,OUT_time为81,090,000。因此,由PlayList#1中的PlayItem#0再现的剪辑在与剪辑信息文件“00003.CLP”相对应的剪辑流文件“00003.PS”中的时间90,000到时间81,090,000。
图26A和图26B示出了在图10中描述的剪辑信息文件Clip()的特定示例。因此,图26A和图26B示出了剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”的特定示例。
在剪辑信息文件“00001.CLP”中,presentation_start_time是90,000而presentation_end_time是27,990,000。因此,存储在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”中的节目流可以使用内容达310秒(27,990,000-90,000/90kHz)。
在剪辑信息文件“00001.CLP”中,capture_enable_flag_Clip为1。因此,允许二次使用利用在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”中存储的节目流所多路复用的视频流(与此对应的视频数据)。
在图26A和图26B中,在剪辑信息文件“00001.CLP”中,number_of_streams为4。因此,用存储在剪辑流文件“00001.PS”中的节目流多路复用四个基本流。
假定四个基本流由stream#0、stream#1、stream#2、和stream#3表示,在图26A和图26B所示的字段“00001.CLP”下描述了stream#0、stream#1、stream#2、和stream#3这四个基本流中的StreamInfo()(图10)的特定示例。
在剪辑流文件“00001.PS”的第一基本流stream#0中,stream_id为0xE0。因此,如图20和图22(或者图11)所述,基本流stream#0是视频流。根据这个实施例,private_stream_id没有与视频流相关。在图26A和图26B中,private_stream_id为0x00。
在作为剪辑流文件“00001.PS”中的第一基本流的视频流stream#0中,包含在StreamInfo()中的StaticInfo()(图12)的picture_size为“720×480”,frame_rate为“29.97Hz”,而cc_flag为“是(Yes)”。因此,视频流stream#0是具有720×480像素以及29.97Hz的帧周期的视频数据。此外,视频流stream#0包含封闭的字幕数据。
在作为剪辑流文件“00001.PS”中的第一基本流的视频流stream#0中,StreamInfo()中的number_of_DynamicInfo(图10)为0。不存在pts_change_point和DynamicInfo()对。
在剪辑流文件“00001.PS”的第二基本流stream#1中,stream_id为0xBD,private_stream_id为0x00。因此,如图20和图22所述,基本流stream#1为ATRAC音频流。
在作为剪辑流文件“00001.PS”中的第二基本流的ATRAC音频流stream#1中,包含在StreamInfo()中的StaticInfo()(图12)的audio_language_code为“Japanese(日语)”,channel_configuration为“STEREO(立体声)”,Ife_existence为“NO(否)”,sampling_frequency为“48kHz”。因此,ATRAC音频流stream#1为日语立体声音频数据。此外,ATRAC音频流stream#1不包含低频效应声道,而且采样频率为48kHz。
此外,在作为剪辑流文件“00001.PS”中的第二基本流的ATRAC音频流stream#1中,StreamInfo()中的number_of_DynamicInfo(图10)为0。不存在pts_change_point和DynamicInfo()对。
在剪辑流文件“00001.PS”的第三基本流stream#2中,stream_id为0xBD,private_stream_id为0x80。因此,如图20和图22所述,基本流stream#2为子标题流。
在作为剪辑流文件“00001.PS”中的第三基本流的子标题流stream#2中,包含在StreamInfo()中的StaticInfo()的subtitle_language_code为“Japanese(日语)”,configurable_flag为0。因此,子标题流stream#2是日语子标题数据。此外,不允许改变(禁止改变)这个显示模式。
在作为剪辑流文件“00001.PS”中的第三基本流的子标题流stream#2中,StreamInfo()中的number_of_DynamicInfo(图10)为0。不存在pts_change_point和DynamicInfo()对。
在剪辑流文件“00001.PS”的第四基本流stream#3中,stream_id为0xBD,private_stream_id为0x81。因此,如图20和22所述,基本流stream#3为子标题流。
为了区分作为剪辑流文件“00001.PS”中的第三基本流的子标题流stream#2和作为第四基本流的子标题流stream#3,它们的private_stream_id分别为0x80和0x81。
在作为剪辑流文件“00001.PS”中的第四基本流的子标题流stream#3中,包含在StreamInfo()中的StaticInfo()(图12)的subtitle_language_code为“Japanese(日语)”,configurable_flag为1。因此,子标题流stream#3是日语子标题数据。允许改变子标题流stream#3的显示模式。
在作为剪辑流文件“00001.PS”中的第四基本流的子标题流stream#3中,StreamInfo()中的number_of_DynamicInfo(图10)为0。不存在pts_change_point和DynamicInfo()对。
在图26A和图26B中,在剪辑信息文件“00002.CLP”中,presentation_start_time为90,000,presentation_end_time为27,090,000。因此,存储在与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”中的节目流可以使用内容达300秒(27,090,000-90,000/90kHz)。
在剪辑信息文件“00002.CLP”中,capture_enable_flag_Clip为0。因此,不允许二次使用(禁止二次使用)利用与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”中存储的节目流多路复用的视频流(与此对应的视频数据)。
在图26A和图26B中,在剪辑信息文件“00002.CLP”中,number_of_streams为4。因此,如同上述剪辑流文件“00001.PS”一样,用存储在对应剪辑流文件“00002.PS”中的节目流多路复用了四个基本流。
假定四个基本流用stream#0、stream#1、stream#2、和stream#3表示,在图26A和图26B所示的字段“00002.CLP”下描述了stream#0、stream#1、stream#2、和stream#3这四个基本流中的StreamInfo()(图10)的特定示例。
在图26A和图26B中,剪辑流文件“00002.PS”中的第一到第四基本流的StreamInfo()的内容与剪辑流文件“00001.PS”中的第一到第四基本流的那些相同。因此,将省略对它们的描述。
如上所述,剪辑流文件“00002.PS”中的第一到第四基本流(stream#0到stream#3)的StreamInfo()的内容与剪辑流文件“00001.PS”中的第一到第四基本流(stream#0到stream#3)的那些相同。因此,剪辑流文件“00002.PS”中的第一基本流stream#0是视频流。第二基本流stream#1是ATRAC音频流。第三和第四基本流stream#2和stream#3是子标题流。
在图26A和图26B中,在剪辑信息文件“00003.CLP”中,presentation_start_time为90,000,presentation_end_time为81,090,000。因此,在与剪辑信息文件“00003.CLP”相对应的剪辑流文件“00003.PS”中存储的节目流可以使用内容达900秒((81,090,000-90,000)/90kHz)。
在剪辑信息文件“00003.CLP”中,capture_enable_flag_Clip为1。因此,允许二次使用利用在与剪辑信息文件“00003.CLP”相对应的剪辑流文件“00003.PS”中存储的节目流多路复用的视频流。
在图26A和图26B中,在剪辑信息文件“00003.CLP”中,number_of_streams为3。因此,用存储在剪辑流文件“00003.PS”中的节目流多路复用了三个基本流。
假定三个基本流用stream#0、stream#1、和stream#2表示,在图26A和图26B所示的字段“00003.CLP”下描述了stream#0、stream#1、和stream#2这三个流中的StreamInfo()(图10)的特定示例。
在剪辑流文件“00003.PS”的第一基本流stream#0中,stream_id为0xE0。因此,如图20和图22(或者图11)所述,基本流stream#0是视频流。类似于剪辑流文件“00001.PS”的第一基本流stream#0,private_stream_id为0x00。
在作为剪辑流文件“00003.PS”中的第一基本流的视频流stream#0中,包含在StreamInfo()中的StaticInfo()(图12)的picture_size为“720×480”,frame_rate为“29.97Hz”,而cc_flag为“No(否)”。因此,视频流stream#0是具有720×480像素以及29.97Hz的帧周期的视频数据。视频流stream#0不包含封闭的字幕数据。
在作为剪辑流文件“00003.PS”中的第一基本流的视频流stream#0中,StreamInfo()中的number_of_DynamicInfo(图10)为2。因此,在StreamInfo()中描述了两组pts_change_point和DynamicInfo()。
在剪辑流文件“00003.PS”的第二基本流stream#1中,stream_id为0xE1。因此,如图20和图21(或者图11)所述,基本流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()(图12)的picture_size、ftame_rate、和cc_flag和作为第一基本流的视频流stream#0中的那些相同。因此,作为剪辑流文件“00003.PS”中的第二基本流的视频流stream#1是具有720×480像素和29.97Hz帧周期的视频数据。视频流stream#1不包含封闭的字幕数据。
在作为剪辑流文件“00003.PS”中的第二基本流的视频流stream#1中,StreamInfo()中的number_of_DynamicInfo(图10)为0。因此,不存在pts_change_point和DynamicInfo()对。
在剪辑流文件“00003.PS”的第三基本流stream#2中,stream_id为0xBD,private_stream_id为0x00。因此,如图20和图22中所述,基本流stream#2为ATRAC音频流。
在作为剪辑流文件“00003.PS”中的第三基本流的ATRAC音频流stream#2中,包含在StreamInfo()中的StaticInfo()(图12)的audio_language_code、channel_configuration、lfe_existence和sampling_frequency与作为剪辑流文件“00001.PS”中的第二基本流的ATRAC音频流stream#1中的那些相同。因此,作为剪辑流文件“00003.PS”中的第三基本流的ATRAC音频流stream#2是日语和立体声音频数据。此外,ATRAC音频流stream#2不包含低频效应声道。ATRAC音频流stream#2具有48kHz的采样频率。
在作为剪辑流文件“00003.PS”中的第三基本流的ATRAC音频流stream#2中,StreamInfo()中的number_of_DynamicInfo(图10)为3。因此,StreamInfo()描述了三组pts_change_point和DynamicInfo()。
图27示出了在图10中描述的剪辑信息文件Clip()中的EP_map()的特定示例。图27示出了图4所示的剪辑信息文件“00001.CLP”中的如图14所示的EP_map()的特定示例。
在图27中,在EP_map()中,number_of_stream_id_entries为1。因此,EP_map()描述了一个基本流中的可解码起始点的信息。
在图27所示的EP_map()中,stream_id为0xE0。因此,如图20和图22所述,EP_map()描述了由0xE0的stream_id所标识的视频流中的可解码起始点的信息(PTS_EP_start和RPN_EP_start(图14))。在图27中,EP_map()是剪辑信息文件“00001.CLP”。如图26A和图26B所述,在与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”中,stream_id为0xE0的基本流是剪辑流文件“00001.PS”中的第一视频流。因此,在图27所示的EP_map()中描述的信息是视频流stream#0中的可解码起始点PTS_EP_start和RPN_EP_start。
在图27中,描述了剪辑流文件“00001.PS”中的第一视频流stream#0的可解码起始点的前五个PTS_EP_start和RPN_EP_start,但是省略了第六个和以后的PTS_EP_start和RPN_EP_start。
在图27所示的EP_map()中,private_stream_id为0x00。当stream_id代表视频流时,忽略private_stream_id。
图28示出了在图25中描述的PlayList#0和PlayList#1(图5所示的PlayList())中的PlayListMark()的特定示例。
图28所示的上部表格代表PlayList#0中的PlayListMark()(图7)。
在图28所示的上部表格中,PlayList#0中的PlayListMark()的number_of_PlayList_marks为7。因此,包含在PlayList#0中的Mark()(其中的PlayListMark())的数目为7。
在图28所示的上部表格中,作为包含在PlayList#0中的七个Mark()中的第一Mark()的Mark#0的mark_type(图7)为“Chapter(章节)”。因此,Mark#0是章节标记。此外,因为ref_to_PlayItem_id(图7)为0,所以Mark#0属于图25所示的两个PlayItem#0和#1中的PlayItem#0。此外,Mark#0的mark_time_stamp为180,090。因此,Mark#0是由包含在PlayList#0中的PlayItem#0再现的剪辑流文件的时间(再现时间)180,090的标记。Mark#0中的entry_ES_stream_id和entry ES_private_stream_id二者都是0。因此,Mark#0不与任何基本流相关。此外,Mark#0中的mark_data为1。因此,Mark#0代表编号为1的章节。
由包含在PlayList#0中的PlayItem#0再现的剪辑流文件是由在PlayItem#0的Clip_Information_file_name(图25)中描述的“00001.CLP”所标识的剪辑流文件“00001.PS”。因此,由Mark#0中的mark_time_stamp所表示的时间180,090是剪辑流文件“00001.PS”中的时间。
在图28所示的上部表格中,作为包含在PlayList#0中的七个Mark()中的第五Mark()的Mark#4是与第一Mark#0相同的章节标记。
换句话说,作为第五Mark()的Mark#4的mark_type(图7)是“Chapter(章节)”。因此,Mark#4是章节标记。此外,Mark#4中的ref_to_PlayItem_id(图7)为1。因此,Mark#4属于包含在PlayList#0中的两个PlayItem#0和#1(如图25所示)中的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再现的剪辑流文件是由在PlayItem#1的Clip_Information_file_name中描述的“00002.CLP”所标识的剪辑流文件“00002.PS”(图25)。因此,由Mark#4中的mark_time_stamp所表示的时间90,000是剪辑流文件“00002.PS”中的时间。
在图28所示的上部表格中,作为包含在PlayList#0中的七个Mark()中的第二Mark()的Mark#1的mark_type(图7)为“Index(索引)”。因此,Mark#1是索引标记。此外,Mark#1中的ref_to_PlayItem_id(图7)为0。因此,Mark#1属于包含在PlayList#0中的两个PlayItem#0和#1(如图25所示)中的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”中的时间。
在图28所示的上部表格中,作为包含在PlayList#0中的七个Mark()中的第三、第六、和第七Mark()的Mark#2、Mark#5、和Mark#6是类似于第二Mark#1的索引标记。
在图28所示的上部表格中,作为包含在PlayList#0中的七个Mark()中的第四个Mark()的Mark#3的mark_type(图7)为“Event(事件)”。因此,Mark#3是事件标记。此外,Mark#3中的ref_to_PlayItem_id(图7)为0。因此,Mark#3属于包含在PlayList#0中的两个PlayItem#0和#1(如图25所示)中的PlayItem#0。此外,Mark#3中的mark_time_stamp为16,380,090。因此,Mark#3是由包含在PlayList#0中的PlayItem#0再现的剪辑流文件中的时间16,380,090的标记。Mark#3中的entry_ES_strearn_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”中的时间。
在图28所示的上部表格中,在PlayList#0中的PlayListMark()表格的右侧的左栏中描述了Mark()所属的PlayItem()的累积时间。在表格右侧的右栏中描述了playlist#0的累积时间。
图28所示的下部表格表示PlayList#1中的PlayListMark()(图7)。
在图28所示的下部表格中,PlayList#1中的PlayListMark()的number_of_PlayList_marks为3。因此,包含在PlayList#1中的Mark()(其中的PlayListMark())的数目为3。
在图28所示的下部表格中,作为包含在PlayList#1中的三个Mark()中的第一个Mark()的Mark#0的mark_type(图7)为“Chapter(章节)”。因此,Mark#0是章节标记。此外,Mark#0中的ref_to_PlayItem_id(图7)为0。因此,Mark#0属于包含在PlayList#1中的一个PlayItem#0(如图25所示)。Mark#0中的mark_time_stamp是90,000。因此,Mark#0是由包含在PlayList#1中的PlayItem#0再现的剪辑流文件中的时间90,0000的标记。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再现的剪辑流文件是由在PlayItem#0中的Clip_Information_file_name(图25)描述的“00003.CLP”所标识的剪辑流文件“00003.PS”。因此,由Mark#0中的mark_time_stamp所表示的时间90,000是剪辑流文件“00003.PS”中的时间。
在图28所示的下部表格中,作为包含在PlayList#1中的三个Mark()中的第二个Mark()的Mark#1的mark_type(图7)为“Event(事件)”。因此,Mark#1是事件标记。此外,Mark#1中的ref_to_PlayItem_id(图7)为0。因此,Mark#1属于包含在PlayList#1中的PlayItem#0(如图25所示)。此外,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与图20和图22所述的视频流相关。此外,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的视频流是在用由图26A和图26B所示的剪辑信息文件“00003.CLP”所标识的剪辑流文件“00003.PS”多路复用的三个基本流stream#0到#2当中的、第一个基本流(视频流)stream#0。
在图28所示的下部表格中,作为包含在PlayList#1中的三个Mark()中的第三个Mark()的Mark#2的mark_type为“Event(事件)”。因此,Mark#2是事件标记。此外,Mark#2中的ref_to_PlayItem_id(图7)为0。因此,Mark#2属于包含在PlayList#1中的Playltem之一的PlayItem#0(如图25所示)。此外,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的基本流,即与图20和图22所述的视频流相关。此外,Mark#2中的mark_data为2。因此,Mark#2使得具有参数2的事件发生。
在这个示例中,如上所述,由包含在PlayList#1中的PlayItem#0再现的剪辑流文件是剪辑流文件“00003.PS”。因此,由Mark#2所代表的时间27,540,000是剪辑流文件“00003.PS”中的时间。
与Mark#2相关的其stream_id为0xE1的视频流是在图25所示的PlayList#1中包含的PlayItem#0中的Clip_Information_file_name中描述的“00003.CLP”中描述的视频流,即用根据图26A和26B所示的剪辑信息文件“00003.CLP”所识别的剪辑流文件“00003.PS”多路复用的三个基本流stream#0到#2中的第二个基本流(视频流)stream#1。
在图28所示的下部表格中,在PlayList#1中的PlayListMark()表格的右侧描述了Mark()所属的PlayItem()的累积时间。
在图28中,虽然mark_data描述了章节和索引标记代表的章节和索引数目,但是它们可以不必在mark_data中描述。相反,通过对PlayListMark()中的章节和索引标记进行计数,可以识别出章节和索引数目。
【对盘设备的操作的描述】
接下来,对图1所示的盘设备的操作进行描述,在此假设图25到28所述的数据(文件)已记录在图1所示的盘101上。
当将盘101装入盘设备102时,通过图2A和图2B所示的驱动器接口114和操作系统201将对应的消息发送到视频内容再现程序210。当视频内容再现程序210已经从操作系统201收到表示盘101已装入盘设备102中的消息时,视频内容再现程序210启动图29所示的预再现处理。
【预再现处理】
图29是描述视频内容再现程序210执行的预再现处理的流程图。
应当注意到,盘设备不必以流程图的时序执行操作或者处理。作为选择,盘设备可以并行地或分散地执行操作或者处理。然而,在本说明书中,为方便起见,将对应于该流程图来描述盘设备的操作或者处理。
在预再现处理中,在步骤S101处,视频内容再现程序210利用操作系统201的文件系统功能来检查盘101,并确定对于视频内容再现程序210盘101是否是正常的盘。
如上所述,虽然利用操作系统201的文件系统功能对盘101进行存取(从中读取文件),但在此省略对其的描述。
当在步骤S 101的确定结果表示盘101不是正常的盘,即盘101中使用的文件系统不符合操作系统201、或盘101的根目录不包含“视频”目录时,视频内容再现程序210确定视频内容再现程序210不符合盘101,流程前进到步骤S102。在步骤S102,图形处理模块219执行错误处理并结束预再现处理。
换言之,图形处理模块219作为错误处理而生成表示盘101不正常的错误消息(其视频数据),并使视频输出模块220输出错误消息以显示该错误消息。例如可以通过从音频输出模块221输出报警声音或将盘101从盘设备102中卸载来执行错误处理。
当在步骤S101的确定结果表示盘101是正常的盘时,流程前进到步骤S103。在步骤S103,视频内容再现程序210使内容数据提供模块213请求操作系统201读取存储在盘101的“视频”目录(图4)下的两个数据文件“SCRIPT.DAT”和“PLAYLIST.DAT”。然后,流程前进到步骤S104。在步骤S104,将文件“SCRIPT.DAT”提供给脚本控制模块211。此外,将文件“PLAYLIST.DAT”提供给播放器控制模块212。
然后,流程从步骤S104前进到步骤S105至步骤S107。在步骤S105到S107,播放器控制模块212进行初始化处理。脚本控制模块211等待,直至播放器控制模块212完成初始化处理为止。
【播放器控制模块212的初始化处理】
在初始化处理中,在步骤S 105,播放器控制模块212对文件“PLAYLIST.DAT”进行分析,并检查文件“PLAYLIST.DAT”中描述的剪辑信息文件的数目以及它们的文件名。
换言之,由于文件“PLAYLIST.DAT”如图25所示,并且如图25所示的文件“PLAYLIST.DAT”中的number_of_PlayLists为2,所以播放器控制模块212识别出有两个PlayList(),它们是PlayList#0和PlayList#1。此外,由于图25所示的文件“PLAYLIST.DAT”的第一PlayList#0的number_of_PlayItems为2,所以播放器控制模块212识别出PlayList#0包含两个PlayItem(),它们是PlayItem#0和PlayItem#1。此后,播放器控制模块212参考在图25所示的文件“PLAYLIST.DAT”的PlayList#0中包含的第一PlayItem#0和第二PlayItem#1的Clip_Information_file_name,并识别出包含在PlayList#0中的第一PlayItem#0的剪辑信息文件(其文件名)是“00001.CLP”,而第二PlayItem#1的剪辑信息文件是“00002.CLP”。
类似地,由于number_of_PlayItems为1,播放器控制模块212还识别出第二PlayList#1包含一个PlayItem()(PlayItem#0),并且由于PlayItem#0的Clip_Information_file_name而识别出PlayItem#0的剪辑信息文件是“00003.CLP”。
然后,流程从步骤S105前进到步骤S106。在步骤S106中,播放器控制模块212从盘101的“视频”目录下的“剪辑”目录中读取在步骤S105识别出的剪辑信息文件,即三个剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”。
需要在步骤S106读取的PlayList()的PlayItem的剪辑信息文件仅为第一个被再现的PlayList()的PlayItem的剪辑信息。然而,根据该实施例,如上所述,预先读取PlayList()的PlayItem()的所有剪辑信息文件。
在步骤S106之后,流程前进到步骤S107。在步骤S107,播放器控制模块212确定是否已经成功地读取了在步骤S105处识别出的剪辑信息文件。此外,播放器控制模块212确定(检查)在盘101上是否存在对应于剪辑信息文件的剪辑流文件。换言之,在步骤S107,播放器控制模块212确定是否已经成功读取了剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”,以及对应于剪辑信息文件“00001.CLP”、“00002.CLP”和“00003.CLP”的剪辑流文件“00001.PS”、“00002.PS”和“00003.PS”是否存在于盘101的“视频”目录下的“流”目录中。
当在步骤S107的确定结果表示还没有成功读取在步骤S105识别出的剪辑信息文件、或者在盘101上不存在对应于这些剪辑信息文件的剪辑流文件时,即对应于“PLAYLIST.DAT”文件的剪辑信息文件和剪辑流文件还没有记录在盘101上时,视频内容再现程序210确定盘101不正确。此后,流程返回到步骤S102。在步骤S102,视频内容再现程序210执行上述错误处理,并结束预再现处理。
另一方面,当在步骤S107的确定结果表示已成功地读取了在步骤S105中识别出的剪辑信息文件、并且对应于这些剪辑信息文件的剪辑流文件存在于盘101上时,播放器控制模块212完成初始化处理。此后,流程前进到步骤S108。
在步骤S108,脚本控制模块211解释并执行文件“SCRIPT.DAT”。
在脚本控制模块211执行文件“SCRIPT.DAT”时,假设播放器控制模块212已促使第一PlayList()(PlayList#0)被再现,则执行如图30所示的再现处理。
【再现处理】
图30是视频内容再现程序210执行的再现处理的流程图。
【再现准备处理】
在步骤S121和S122,播放器控制模块212为PlayList()执行再现准备处理,该PlayList()是已经由脚本控制模块211促使其再现的PlayList(),即第一PlayList()(PlayList#0)。
换言之,在步骤S121,播放器控制模块212检查包含在第一PlayList#0中的第一PlayItem#0的IN_time(图6)。此后,流程前进到步骤S122。在步骤S 122,播放器控制模块212检查与PlayItem#0的IN_time相对应的、由包含在第一PlayList#0中的第一PlayItem#0再现的剪辑流文件“00001.CLP”的再现开始位置。
当PlayItem()的IN_time(图6)表示剪辑流文件的开头时,从该剪辑流文件的开头读取节目流。然而,当IN_time代表除了剪辑流文件的开头之外的其它位置时,播放器控制模块212需要搜索(检查)对应于IN_Time的位置,并从该位置读取剪辑流文件。
具体而言,在图25中,包含在第一PlayList#0中的第一PlayItem#0的IN_time为180,090。播放器控制模块212在由包含在第一PlayList#0中的第一PlayItem#0再现的剪辑流文件“00001.CLP”的EP_map()(如图27所示)中搜索PlayItem#0的IN_time为180,090的再现开始位置。
换言之,播放器控制模块212通过二分搜索方法等搜索满足PTS_EP_start≤IN_time的最大PTS_EP_start,其中PTS_EP_start代表在EP map()中描述的可解码开始点。这是因为由IN_time所代表的位置并不总是可解码开始点。
在这种情况下,如上所述,IN_time是180,090。此外,在由包含在第一PlayList#0中的第一PlayItem#0再现的剪辑流文件“00001.CLP”的EP_map()(如图27所示)中,满足PTS_EP_start≤IN_time的PTS_EP_start的最大值是180,090。因此,播放器控制模块212在图27所示的EP_map()中搜索作为180,090的PTS_EP_start。
此外,播放器控制模块212读取305(扇区)以搜索RPN_EP_start,并将剪辑流文件“00001.CLP”中由RPN_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()(图7),进行分析。
具体而言,在图28的上部表格中,已被预先读取的文件“PLAYLIST.DAT”的第一PlayList#0中的PlayListMark()的number_of_PlayList_marks为7。因此,播放器控制模块212识别出包含在PlayList#0中的Mark()的数量为7。
此外,播放器控制模块212分析图28所示上部表格中的7个Mark(),并识别出7个Mark()中的第一至第四Mark()这4个Mark()属于PlayList#0中的第一个PlayItem()(PlayItem#0)。
此后,播放器控制模块212获得属于PlayList#0的第一PlayItem#0的4个Mark()中的mark_time_stamp,并将它们作为4元素矩阵提供给解码控制模块214。因此,作为图28所示的上部表格中的7个Mark()中的第一至第四Mark()这4个Mark()的mark_time_stamp的4个时间{180,090}、{5,580,090}、{10,980,090}和{16,380,090}从播放器控制模块212发送到解码控制模块214。此时,将这些时间的属性“mark process(标记处理)”从播放器控制模块212发送到解码控制模块214。当由时间计数部分214A计数的时间与具有“mark process(标记处理)”属性的时间相匹配时,解码控制模块214将对应的消息、与具有“markprocess”属性的时间相匹配的时间、以及“mark process”属性发送到播放器控制模块212。
【要再现的基本流的判断处理】
此后,流程从步骤S124前进到步骤S125。在步骤S125,播放器控制模块212判断要再现的基本流。
换言之,在作为已经由脚本控制模块211促使其再现的PlayList()的第一PlayList#0的第一PlayItem#0(图25)的Clip_Information_file_name中描述的、如图26A和26B所示的剪辑信息文件“00001.CLP”中,number_of_streams为4。因此,播放器控制模块212识别出已经用对应的剪辑流文件“00001.PS”多路复用了4个基本流。此外,播放器控制模块212检查4个基本流的剪辑信息文件“00001.CLP”(如图26A和26B所示)的StaticInfo()中的stream_id和private_stream_id,并识别出这4个基本流是一个视频流、一个ATRAC音频流,以及两个子标题流。换言之,播放器控制模块212识别出用剪辑流文件“00001.PS”多路复用的、具有各自属性的基本流的数目。
有关用剪辑流文件多路复用的、具有各自属性的基本流的数目的信息用于将一种基本流改变为要再现的另一基本流(从一种音频模式到另一种音频模式,或从一种子标题模式到另一种子标题模式)。当剪辑流文件不包含子标题流文件时,即内容不包含子标题数据时,利用有关具有属性“子标题流”的基本流的数目的信息来确定是否存在子标题流。
与StaticInfo()的检查结果相对应,播放器控制模块212选择并确定要再现的基本流。在这种情况下,用剪辑流文件“00001.PS”多路复用的4个基本流包含一个具有属性“视频流”的基本流和一个具有属性“音频流”的基本流。因此,具有属性“视频流”的基本流和具有属性“音频流”的基本流(ATRAC音频流)被单独确定为要再现的基本流。
另一方面,用剪辑流文件“00001.PS”多路复用的4个基本流包含两个具有属性“子标题流”的基本流。因此,选择和确定这两个子标题流之一。在该示例中,选择在剪辑信息文件“00001.CLP”的两个子标题流中、最先出现的子标题流。
在识别出用剪辑流文件“00001.PS”多路复用的基本流的属性和数目后,需要对四个基本流进行标识。播放器控制模块212用stream_id和private_stream_id来标识用剪辑流文件“00001.PS”多路复用的4个基本流。
换言之,播放器控制模块212利用图26A和26B所示的剪辑信息文件“00001.CLP”中描述的、作为0xE0的stream_id,来标识用剪辑流文件“00001.PS”多路复用的4个基本流中具有“视频流”属性的基本流。
此外,播放器控制模块212还利用图26A和26B所示的剪辑信息文件“00001.CLP”中描述的、值为0xBD的stream_id和值为0x00的private_stream_id,来标识用剪辑流文件“00001.PS”多路复用的4个基本流中具有“音频流”属性的基本流,即ATRAC音频流。
此外,播放器控制模块212还利用值为0xBD的stream_id和值为0x80的private_stream_id、以及利用值为0xBD的stream_id和值为0x81的private_stream_id,来标识用剪辑流文件“00001.PS”多路复用的4个基本流中的具有“子标题流”属性的基本流,即两个子标题流。
如上所述,可以用被描述为与剪辑流文件相对应的剪辑信息文件的元数据的stream_id和private_stream_id,来标识用剪辑流文件多路复用的基本流。
stream_id和private_stream_id的组合是一种被提供来扩展MPEG2-系统的多路复用的机制。当将stream_id和private_stream_id的组合用作作为数据库的元数据时,可以可靠地标识基本流。此外,当扩展private_stream_id以便增加对应的基本流的数量和类型时,可以采用当前的机制而无需任何改变。因此,stream_id和private_stream_id的组合具有高扩展性。
换言之,例如,蓝光盘(BD)标准采用MPEG2标准的传输流的分组ID(PID)来标识数据。因此,BD标准受到MPEG2标准的限制。另一方面,DVD-视频标准定义了类似于private_stream_id的sub_stream_id。然而,不能在数据库中描述sub_stream_id以标识流。在固定的区域内为仅仅8~32个流的信息描述了sub_stream_id(见VI4-49,表4.2.1-2(VTS_AST_ATRT)和VI4-52,表4.2.1-3(VTS_SPST_ATRT))。因此,sub_stream_id不具有高可扩展性。
另一方面,可以用元数据来描述stream_id和private_stream_id的组合。例如,图10所示的剪辑信息文件Clip()可以描述与由number_of_streams表示的值相对应的stream_id和private_stream_id的组合。因此,用剪辑流文件多路复用的基本流可以由作为剪辑信息文件Clip()中描述的元数据的stream_id和private_stream_id的组合来标识,而与基本流的数量无关(在number_of_streams所表示的范围内)。
根据这个实施例,将stream_id和private_stream_id的组合用于标识利用与图10所示的剪辑信息文件相对应的剪辑流文件多路复用的基本流。此外,这个组合可以用于标识这样的基本流,该基本流将Mark()相关为图7所示的PlayListMark()中的entry_ES_stream_id和entry_ES_private_stream_id的组合。此外,stream_id和private_stream_id的组合还用于标识这样的基本流,该基本流描述了图14所示的Ep_map()中的可解码开始点的信息。
【输出属性控制处理】
此后,流程从步骤S125前进到步骤S126。在步骤S126,播放器控制模块212对在步骤S125处确定为要在步骤S125再现的基本流执行输出属性控制处理。
具体而言,播放器控制模块212检查代表DynamicInfo()(图13)的数量的number_of_DynamicInfo(图10),DynamicInfo()描述了在步骤S125处确定为要再现的视频流、ATRAC音频流以及子标题流的输出属性。
在这种情况下,要再现的视频流、ATRAC音频流以及子标题流是用剪辑流文件“00001.PS”多路复用的基本流。在图26A和26B所示的剪辑信息文件“00001.CLP”中,number_of_DynamicInfo都为0。当number_of_DynamicInfo都为0时,播放器控制模块212不对要再现的基本流的输出属性执行输出属性控制处理。
当要再现的基本流的number_of_DynamicInfo不为0时,为该基本流执行输出属性控制处理。该输出属性控制处理将在稍后描述。
【再现开始准备处理】
在步骤S126之后,流程前进到步骤S127。在步骤S127,播放器控制模块212对要再现的基本流执行再现开始准备处理。
换言之,播放器控制模块212向内容数据提供模块213提供已经用于多路复用要再现的基本流的剪辑流文件“00001.PS”的文件名,并提供在步骤S 122确定的作为再现开始位置的、在EP_map()中描述的RPN_EP_start(=305)。
此外,播放器控制模块212还在将存储在已经用于多路复用要再现的基本流的剪辑流文件“00001.PS”中的节目流提供给缓冲器控制模块215之前,初始化该缓冲器控制模块215。
具体而言,缓冲器控制模块215(图3)为存储在数据起始指针存储部分231中的数据起始指针、存储在数据写指针存储部分232中的数据写指针、存储在视频读指针存储部分241中的视频读指针、存储在音频读指针存储部分251中的音频读指针,以及存储在子标题读指针存储部分262中的子标题读指针设置相同的值。
因此,存储在数据起始指针存储部分231中的数据起始指针和存储在数据写指针存储部分232中的数据写指针在缓冲器控制模块215的缓冲器215A中保持相同的位置。这表示还没有有效数据存储在缓冲器215A中。
此外,播放器控制模块212向缓冲器控制模块215提供作为用于要再现的基本流的标识信息的stream_id以及需要时的private_stream_id。
换言之,如上所述,要再现的基本流中具有属性“视频流”的视频流由值为0xE0的stream_id标识。具有属性“音频流”的ATRAC音频流由值为0xBD的stream_id和值为0x00的private_stream_id来标识。具有属性“子标题流”的子标题流由值为0xBD的stream_id和值为0x80的private_stream_id来标识。播放器控制模块212将这些stream_id和private_stream_id提供给缓冲器控制模块215。
在缓冲器控制模块215(图3)中,视频读取功能部分233将从播放器控制模块212接收的、值为0xE0的用于视频流的stream_id存储到stream_id寄存器242中。此外,音频读取功能部分234将从播放器控制模块212接收的、值为0xBD的stream_id和值为0x00的private_stream_id分别存储到stream_id寄存器252和private_stream_id寄存器253中。此外,子标题读取功能部分235将从播放器控制模块212接收的、值为0xBD的stream_id和值为0x80的private_stream_id分别存储到stream_id寄存器263和private_stream_id寄存器264中。
播放器控制模块212存储提供给缓冲器控制模块215的、要再现的基本流的stream_id和private_stream_id,以用于以后的处理。当出现流改变请求消息、或标识在标记处理(将在以下描述)中正被再现的流时,播放器控制模块212使用stream_id和private_stream_id。
为了初始化缓冲器控制模块215(图3),播放器控制模块212在子标题读取功能标志存储部分261中设置具有与用于多路复用要再现的基本流的剪辑流文件对应的值的子标题读取功能标志。
换言之,在这种情况下,由于已经用于多路复用要再现的基本流的剪辑流文件“00001.PS”包含子标题流,所以将值为1的子标题读取功能标志设置到子标题读取功能标志存储部分261中,以激活子标题读取功能部分235。当已用于多路复用要再现的基本流的剪辑流文件不包含子标题流时,将值为0的子标题读取功能标志设置到子标题读取功能标志存储部分261中。在这种情况下,不激活子标题读取功能部分235(子标题读取功能部分235不执行任何处理)。
此外,播放器控制模块212向解码控制模块214提供包含在脚本控制模块211已经促使播放器控制模块212再现的第一PlayList#0中的、第一PlayItem#0(图25)的值为180,090的IN_time和值为27,180,090的OUT_time。解码控制模块214使用IN_time启动对由PlayItem()再现的剪辑的解码,并使用OUT_time停止对剪辑的解码,并控制将在稍后描述的PlayItem改变处理。
播放器控制模块212初始化其中图形处理模块219显示子标题流的子标题流显示模式。换言之,播放器控制模块212控制图形处理模块219以默认的显示模式显示子标题流。
【开始读取数据】
此后,流程从步骤S127前进到步骤S128。播放器控制模块212使用操作系统201的功能控制内容数据提供模块213,以读取已经用于多路复用要再现的基本流的包含节目流的剪辑流文件。换言之,内容数据提供模块213指定盘101的“视频”目录下的“流”目录中的剪辑流文件“00001.PS”(图4),指定已经在步骤S122判定的作为再现开始位置的扇区305,并使操作系统201读取该文件。内容数据提供模块213使操作系统201将已经从盘101读取的数据提供给缓冲器控制模块215。
这样,从盘101中读取了剪辑流文件“00001.PS”的节目流。将该节目流提供给缓冲器控制模块215。
缓冲器控制模块215(图3)将已经从盘101读取的节目流写入到缓冲器215A中的由数据写指针存储部分232中的数据写指针所代表的位置,并将该数据写指针递增所写入数据的大小。
除非另外指明,否则当缓冲器控制模块215的缓冲器215A具有自由空间时,内容数据提供模块213就从盘101读取数据,并将数据提供并存储到缓冲器控制模块215的缓冲器215A中。因此,缓冲器215A总是存储足够量的数据。
【开始控制解码器】
当从盘101读取数据并将数据存储到缓冲器控制模块215的缓冲器215A中时,流程从步骤S128前进到步骤S129。在步骤S129,解码控制模块214控制视频解码器控制模块216、音频解码器控制模块217和子标题解码器控制模块218,以便作为预解码操作而开始从缓冲器215A读取数据。
因此,视频解码器控制模块216请求缓冲器控制模块215中的视频读取功能部分233(图3)发送数据。对应于该请求,视频解码器控制模块216从缓冲器控制模块215获得存储在缓冲器215A中的一个视频存取单元、添加到该视频存取单元中的PTS和DTS(有时也称为时间戳)、作为紧跟在可解码开始点之后的private_stream_2的PES_packet()中描述的信息的pic_struct_copy、au_ref_flag和AU_length(有时也称为附加信息)。每当视频解码器控制模块216获得视频存取单元时,将时间戳从视频解码器控制模块216提供给解码控制模块214。
另一方面,音频解码器控制模块217请求缓冲器控制模块215中的音频读取功能部分234(图3)发送数据。对应于该请求,音频解码器控制模块217从缓冲器控制模块215获得存储在缓冲器215A中的一个(ATRAC)音频存取单元、以及添加到该音频存取单元的时间戳(PTS和DTS)。每当音频解码器控制模块217获得音频存取单元时,就将时间戳从音频解码器控制模块217提供给解码控制模块214。
此外,子标题解码器控制模块218请求缓冲器控制模块215中的子标题读取功能部分235(图3)发送数据。对应于该请求,子标题解码器控制模块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使视频解码器控制模块216、音频解码器控制模块217和子标题解码器控制模块218与在步骤S127从播放器控制模块212提供的包含在PlayList#0中的第一PlayItem#0的值为180,090的IN_time相对应地、以及与在步骤S129从视频解码器控制模块216、音频解码器控制模块217和子标题解码器控制模块218提供的时间戳相对应地、或必要时在改变的定时处开始解码,以便可靠地同步被解码的数据。
在改变的定时处开始解码以便可靠地同步数据的方法例如在日本专利No.3496725中描述了。简言之,将从视频解码器控制模块216、音频解码器控制模块217和子标题解码器控制模块218提供的时间戳的最小值设置为时间计数部分214A的初始值。时间计数部分214A从该设置的时间开始计时。当由时间计数部分214A计数的时间与时间戳相匹配时,解码控制模块214使这些模块开始解码数据。
视频解码器控制模块216从解码控制模块214接收解码开始命令,将从缓冲器控制模块215(图3)的视频读取功能部分233获得的一个视频存取单元提供给视频解码器116(图1),并使视频解码器116解码该视频存取单元。此外,视频解码器控制模块216将由视频解码器116解码的视频数据提供给图形处理模块219。
此后,视频解码器控制模块216使视频解码器116每次一个地连续解码从缓冲器控制模块215的视频读取功能部分233获得的视频存取单元,并将解码后的视频存取单元作为视频数据提供给图形处理模块219。
音频解码器控制模块217从解码控制模块214接收解码开始命令,将从缓冲器控制模块215(图3)的音频读取功能部分234获得的一个音频存取单元提供给音频解码器117(图1),并使音频解码器117解码该音频存取单元。音频解码器控制模块217将由音频解码器117解码的音频数据提供给音频输出模块221。
此后,音频解码器控制模块217使音频解码器117每次一个地连续解码从缓冲器控制模块215的音频读取功能部分234获得的音频存取单元,并将解码后的音频存取单元作为音频数据提供给音频输出模块221。
此外,子标题解码器控制模块218从解码控制模块214接收解码开始命令,并根据该命令使内部子标题解码软件对从缓冲器控制模块215(图3)的子标题读取功能部分235获得的一个子标题存取单元进行解码,并将解码后的子标题存取单元作为子标题数据(子标题的图像数据)提供给图形处理模块219。
此后,子标题解码器控制模块218使内部解码软件每次一个地连续解码从缓冲器控制模块215的子标题读取功能部分235获得的子标题存取单元,并将解码后的子标题存取单元作为子标题数据提供给图形处理模块219。
【图形处理】
此后,流程从步骤S130前进到步骤S131。在步骤S131,图形处理模块219对从视频解码器控制模块216提供的视频数据、以及需要时对从子标题解码器控制模块218提供的子标题数据进行图形处理。
换言之,图形处理模块219执行子标题处理,该处理例如对应于从播放器控制模块212接收的显示模式命令而对由子标题解码器控制模块218提供的子标题数据进行放大或缩小。当图形处理模块219还没有从播放器控制模块212接收到显示模式命令、或存在默认的显示模式时,图形处理模块219存储从子标题解码器控制模块218接收的子标题数据。
此外,图形处理模块219将从视频解码器控制模块216接收到的视频数据和从子标题解码器控制模块218接收到的子标题数据或已处理的子标题数据相加,获得已经叠加了子标题数据的输出视频数据,并将该叠加的视频数据提供给视频输出模块220。
当图形处理模块219从脚本控制模块211或播放器控制模块212接收到用于菜单、消息、时间码、章节号、或索引号的信息显示命令时,图形处理模块219生成信息,将其与输出视频数据叠加,并将该叠加的数据提供给视频输出模块220。
【输出处理】
在步骤S131之后,流程前进到步骤S132。在步骤S132,视频输出模块220将从图形处理模块219提供的输出视频数据连续地存储到FIFO 220A中,并以预定的输出速率输出存储在FIFO 220A中的视频数据。
只要FIFO 220A具有足够的存储容量(自由空间),视频输出模块220就接收来自图形处理模块219的输出视频数据。当FIFO 220A没有足够的存储容量时,视频输出模块220使图形处理模块219停止接收输出视频数据。因此,图形处理模块停止接收输出数据。此外,视频输出模块220使视频解码器控制模块216和子标题解码器控制模块218停止它们的处理。因此,视频解码器控制模块216和子标题解码器控制模块218停止它们的处理。
在视频输出模块220已经使图形处理模块219停止接收输出视频数据且FIFO 220A已经输出了视频数据之后,当FIFO 220A具有了足够的存储容量时,视频输出模块220使图形处理模块219接收输出视频数据。与输出视频数据类似,图形处理模块219使得视频解码器控制模块216和图形处理模块219停止接收数据。因此,图形处理模块219、视频解码器控制模块216和子标题解码器控制模块218恢复停止的处理。
另一方面,音频输出模块221也使FIFO 221A连续地存储在步骤S130从音频解码器控制模块217提供的音频数据,并以预定的输出速率(采样频率)输出音频数据。
只要FIFO 221A具有足够的存储容量(空余空间),音频输出模块221就接收来自音频解码器控制模块217的音频数据。然而,当FIFO 221A没有足够的存储容量时,音频输出模块221使音频解码器控制模块217停止接收音频数据。因此,音频解码器控制模块217停止其处理。
在音频输出模块221已经使音频解码器控制模块217停止接收音频数据且FIFO 221A已经输出了音频数据之后,当FIFO 221A具有足够的存储容量时,音频输出模块221使音频解码器控制模块217接收音频数据。因此,音频解码器控制模块217恢复停止的处理。
按照以上所述的方式,在视频输出模块220和音频输出模块221输出数据时,对基本流进行解码。
如图1所示的盘设备与图29和图30所示的流程图相对应地再现来自盘101的数据。接下来,将描述在再现来自盘101的数据时对盘设备执行的其它处理或操作。
【改变PlayItem】
如图29和图30所述,再现图25所示的第一PlayList#0中的第一PlayItem#0。对应于PlayList#0,在再现第一PlayItem#0之后,再现第二PlayItem#1。换言之,执行将PlayItem从PlayItem#0改变到PlayItem#1的PlayItem改变处理。
接下来,将参考图31所示的流程图对PlayItem改变处理进行描述。
如图29和图30所述,在再现了图25所示的PlayList#0的第一PlayItem#0(其剪辑)之后,在再现第一PlayItem#0时,解码控制模块214(图2A和图2B)检查由时间计数部分214A计数的时间。
【结束PlayItem#0的再现】
当时间计数部分214A已经计数的时间变为27,180,090(图25)、即与在图30所示的步骤S127从播放器控制模块212提供的第一PlayItem#0的OUT_time相同时,解码控制模块214在步骤S151执行解码停止控制,以停止再现PlayItem#0。
换言之,解码控制模块214操作视频解码器控制模块216、音频解码器控制模块217和子标题解码器控制模块218以停止它们的解码操作。解码控制模块214控制视频输出模块220连续地输出视频数据。
此外,解码控制模块214向播放器控制模块212发送表示第一PlayItem#0已被再现的消息。
【开始再现PlayItem#1】
如上所述,播放器控制模块212已经在图29所示的步骤S105处识别出第一PlayList#0包含第一PlayItem#0和第二PlayItem#1。当解码控制模块214已经向播放器控制模块212通知了第一PlayItem#0已被再现时,流程从步骤S151前进到步骤S152。在步骤S152,以与第一PlayItem#0相同的方式,播放器控制模块212开始再现第二PlayItem#1。
类似于图30所示的步骤S122,播放器控制模块212将在EP_map()中描述的RPN_EP_start之一确定为第二PlayItem#1的再现开始位置。
此外,播放器控制模块212如图30所示的步骤S124所述、识别出属于第二PlayItem#1的Mark(),以及如图30所示的步骤S125所述、识别出利用由PlayItem#1再现的剪辑流文件“00002.PS”多路复用的具有属性的基本流的数量,并确定要再现的基本流。
播放器控制模块212执行与图30所示的步骤S127相同的处理。
换言之,播放器控制模块212向内容数据提供模块213提供被确定为再现开始位置的EP_map()中的RPN_EP_start、以及用要再现的基本流多路复用的剪辑流文件的文件名,即与在第二PlayItem#1(图25)的Clip_Information_file_name中描述的“00002.CLP”相对应的剪辑流文件“00002.PS”的文件名。
此外,在将存储在利用要再现的基本流多路复用的剪辑流文件“00002.PS”中的节目流提供给缓冲器控制模块215之前,播放器控制模块212初始化缓冲器控制模块215。
换言之,缓冲器控制模块215(图3)对以下指针设置相同的值,即存储在数据起始指针存储部分231中的数据起始指针、存储在数据写指针存储部分232中的数据写指针、存储在视频读指针存储部分241中的视频读指针、存储在音频读指针存储部分251中的音频读指针,以及存储在子标题读指针存储部分262中的子标题读指针。
此外,播放器控制模块212向缓冲器控制模块215提供作为标识要再现的基本流的标识信息的stream_id、以及需要时的private_stream_id。
缓冲器控制模块215中的视频读取功能部分233(图3)从播放器控制模块212接收要再现的基本流中的视频流的stream_id,并将其存储到stream_id寄存器242中。此外,音频读取功能部分234从播放器控制模块212接收要再现的基本流中的音频流的stream_id和private_stream_id,并将它们存储到stream_id寄存器252和private_stream_id寄存器253中。
因为利用要再现的基本流多路复用的剪辑流文件“00002.PS”包含子标题流,所以从播放器控制模块212向子标题读取功能部分235提供要再现的基本流中的子标题流的stream_id和private_stream_id。子标题读取功能部分235将stream_id和private_stream_id分别存储到stream_id寄存器263和private_stream_id寄存器264中。
播放器控制模块212在子标题读取功能标志存储部分261中设置具有与用要再现的基本流多路复用的剪辑流文件相对应的值的子标题读取功能标志,以便初始化缓冲器控制模块215(图3),。
在这种情况下,由于用要再现的基本流多路复用的剪辑流文件“00002.PS”包含子标题流,所以将值为1的子标题读取功能标志设置到子标题读取功能标志存储部分261中,以激活子标题读取功能部分235。
播放器控制模块212向解码控制模块214提供作为要再现的第二PlayItem#1(图25)的IN_time的90,000以及作为其OUT_time的27,090,000。
此外,播放器控制模块212初始化用于图形处理模块219的子标题流显示模式命令。换言之,播放器控制模块212控制图形处理模块219以默认的显示模式显示子标题数据。
当要再现的子标题流的configurable_flag(图12)为1时(其表示允许改变显示模式),播放器控制模块212向图形处理模块219发送的子标题流显示模式命令可能是当前显示模式命令。
以与第一PlayItem#0同样的方式再现第二PlayItem#1。在再现第二PlayItem#1时,解码控制模块214监控由时间计数部分214A计数的时间。当时间计数部分214A已计数的时间变为27,090,000(图25)、即与在步骤S152(图31)从播放器控制模块212提供的第二PlayItem#1的OUT_time相同时,解码控制模块214执行与在步骤S151相同的解码停止控制,以停止再现PlayItem#1。
【显示时间码】
接下来,如上所述,在图30所示的步骤S123,显示时间码。时间码被连续更新。
接下来,将参考图32所示的流程图描述时间码显示处理。
当解码控制模块214的时间计数部分214A(图2A和图2B)已经计数了一秒时,流程前进到步骤S171。在步骤S171,解码控制模块214向播放器控制模块212提供表示已经过一秒的消息以及时间计数部分214A已计数的当前时间。然后流程前进到步骤S172,在步骤S 172,播放器控制模块212接收来自解码控制模块214的消息和当前时间,并将当前时间转换为时间码。然后,流程前进到步骤S173。
在步骤S173,播放器控制模块212控制图形处理模块219以显示在步骤S172获得的时间码。此后,流程返回到步骤S171。
因此,时间码以一秒的间隔被更新。时间码的更新间隔不限于一秒。
【改变流】
用图26A和26B所述的两个子标题流对由构成图25所述的第一Playlist#0的第一PlayItem#0再现的剪辑流文件“00001.PS”和由第二PlayItem#1再现的剪辑流文件“00002.PS”进行多路复用。
当用剪辑流文件多路复用了具有相同属性的多个基本流时,要再现的基本流可以从一个基本流改变到另一个基本流。
接下来,将参考图33所示的流程图对流改变处理进行描述。
当流改变命令被描述为在例如文件“SCRIPT.DAT”文件(图4)中的脚本程序,并且脚本控制模块211执行该脚本程序、或者用户操作遥控器来改变流时,将流改变命令提供给播放器控制模块212。
当脚本控制模块211执行描述该流改变请求的脚本程序时,脚本控制模块211向播放器控制模块212提供流改变请求消息。当用户利用遥控器输入流改变命令时,输入接口115从遥控器接收该流改变命令信号,并向播放器控制模块212提供该流改变请求消息。
当将促使播放器控制模块212改变子标题流的子标题流改变请求消息提供给播放器控制模块212时,播放器控制模块212检查在图30的步骤S125中已识别出的、要再现的基本流的子标题流的数目。
当播放器控制模块212已经检查的子标题流的数目为1或更小时,播放器控制模块212忽略该子标题流改变请求消息。因此,播放器控制模块212不执行从步骤S192到步骤S194的处理。
相反,而当子标题流的数目为2或更多时,流程前进到步骤S192至步骤S194。在这些步骤中,播放器控制模块212将正再现的子标题流改变为另一子标题流。
换言之,在步骤S192,播放器控制模块212标识在剪辑信息文件上正在被再现的子标题流。具体而言,假定正在再现与组成图25所述的第一PlayList#0的第二PlayItem#1相对应的、其stream_id为0xBD且private_stream_id为0x80、并且是用剪辑流文件“00002.PS”多路复用的子标题流,则播放器控制模块212在步骤S192将利用剪辑流文件“00002.PS”多路复用的两个子标题流中的、正被再现的子标题流标识为stream#2,其是图26A和图26B所示剪辑信息文件“00002.CLP”中的第三子标题流。
此后,流程前进到步骤S193。在步骤S193,播放器控制模块212将在步骤S192标识的剪辑信息文件中的下一个子标题流识别(标识)为下一个要再现的子标题流。在图26A和图26B中,第三子标题流stream#2的下一个子标题流是第四子标题流stream#3。因此,在步骤S193,播放器控制模块212将第四子标题流stream#3识别为下一个要再现的子标题流。
当正被再现的子标题流被标识为利用剪辑流文件“00002.PS”多路复用的两个子标题流中的stream#3(其是在图26A和26B所示的剪辑信息文件“00002.CLP”中的第四子标题流)时,播放器控制模块212例如将第三子标题流stream#2识别为下一个要再现的子标题流。
此后,流程前进到步骤S194。在步骤S194,播放器控制模块212向缓冲器控制模块215(图3)中的子标题读取功能部分235提供在步骤S193被识别为下一个要再现的子标题流的子标题流的stream_id和private_stream_id,以便子标题读取功能部分235从缓冲器215A中读取由stream_id和private_stream_id标识的下一个子标题存取单元。
缓冲器控制模块215(图3)中的子标题读取功能部分235将在步骤S 194从播放器控制模块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的处理】
接下来,将参考图34到图38描述缓冲器控制模块215(图3)的处理、向缓冲器215A写入数据的处理和从缓冲器215A读取数据的处理。
如图3所示,缓冲器控制模块215具有用于向缓冲器215A写入数据和从缓冲器215A读取数据的5个指针。
换言之,如图34和图35所示,缓冲器控制模块215具有存储在数据起始指针存储部分231中的数据起始指针、存储在数据写指针存储部分232中的数据写指针、存储在视频读指针存储部分241中的视频读指针、存储在音频读指针存储部分251中的音频读指针、以及存储在子标题读指针存储部分262中的子标题读指针。
在图34和35中,省略了图3所示的视频读取功能部分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读取的子标题流的位置。
如图3所述,数据起始指针、数据写指针、视频读指针、音频读指针、以及子标题读指针在缓冲器215A中沿顺时针方向移动。
如图35所示,根据该实施例,总是更新数据起始指针,以便其代表与视频读指针、音频读指针、和子标题读指针的最老数据位置相同的位置。在图35中,音频读指针代表在视频读指针、音频读指针、或子标题读指针中的最老数据的位置。数据起始指针与音频读指针相匹配。
在具有数据起始指针、数据写指针、视频读指针、音频读指针、和子标题读指针的缓冲器控制模块215中,当从盘101读取新数据并写入到缓冲器215A中时,沿顺时针方向更新数据写指针,从而数据写指针代表紧跟在新写入的数据之后的位置。
当从缓冲器215A读取视频流、音频流、或子标题流时,视频读指针、音频读指针、或子标题读指针沿顺时针方向被更新所读取的数据量。所读取的数据量是实际读取的视频数据、音频数据、或子标题数据和介于所读取的数据之间并在读取数据时被忽略的另一流的数据部分的总和。
当更新视频读指针、音频读指针、或子标题读指针时,数据起始指针也被更新,以便其代表由视频读指针、音频读指针、或子标题读指针所代表的最老数据的位置。
缓冲器控制模块215控制缓冲器215A的数据写入操作,从而使数据写指针不会超过数据起始指针。
除非数据写指针超过了数据起始指针,否则缓冲器控制模块215就将从盘101读取的数据写到缓冲器215A中、由数据写指针所代表的位置处,并更新数据写指针。另一方面,如果数据写指针超过了数据起始指针,则缓冲器控制模块215使内容数据提供模块213停止从盘101读取数据并停止向缓冲器215A写入数据。因此,可以防止缓冲器215A的溢出。
如前所述,与两个指针(即数据起始指针和数据写指针)的位置关系相对应地将从盘101读取的数据写到缓冲器215A中。
另一方面,缓冲器控制模块215控制缓冲器215A的数据读取操作,以便视频读指针、音频读指针、子标题读指针、以及数据起始指针不会超过数据写指针。
换言之,除非视频读指针、音频读指针、或子标题读指针超过了数据写指针,否则缓冲器控制模块215对应于从视频解码器控制模块216、音频解码器控制模块217、或子标题解码器控制模块218接收的请求,而从缓冲器215A中由视频读指针、音频读指针、或子标题读指针所代表的位置读取数据,并更新视频读指针、音频读指针、或子标题读指针,需要的话还更新数据起始指针。另一方面,如果视频读指针、音频读指针、或子标题读指针超过了数据写指针,则缓冲器控制模块215促使视频解码器控制模块216、音频解码器控制模块217、或子标题解码器控制模块218停止发送请求,或等待直到缓冲器215A存储了足够的数据为止。结果,可以防止缓冲器215A下溢。
因此,缓冲器215A沿顺时针方向、在从数据起始指针表示的位置到由数据写指针表示的位置的区域内(图34和图35中的阴影部分),存储要提供给视频解码器控制模块216、音频解码器控制模块217、和子标题解码器控制模块218的数据。此外,视频读指针、音频读指针、和子标题读指针存在于该区域中。
在以上情况下,更新数据起始指针,以便其表示由视频读指针、音频读指针、以及子标题读指针所表示的最老数据的位置。作为选择,还可以更新数据起始指针,以便其表示比最老数据的位置早预定时间(如1秒)的数据的位置。
可以假定在视频读指针、音频读指针、和子标题读指针中的视频读指针和音频读指针表示最老数据的位置。
因此,如图34所示,当更新数据起始指针、以便其表示比视频读指针或音频读指针所表示的最老数据的位置早例如1秒的数据的位置时,可将比视频读指针或音频读指针所表示的最老数据早1秒的数据存储在缓冲器215A中。在图34中,音频读指针表示最老数据的位置,而数据起始指针表示比最老数据早1秒的数据的位置。
当更新数据起始指针、以便其表示比最老数据的位置早1秒的数据的位置时,可以改进盘设备的响应。
换言之,如图35所示,当更新数据起始指针以便其表示音频读指针所表示的最老数据的位置时,如果发出了例如反向再现(reversereproduction)命令的特定再现命令,则需要再从盘101重新读取已从缓冲器215A读取的数据。因此,从发出特定再现命令到执行该特定再现命令需要一定的时间。
相反,如图34所示,当更新数据起始指针以便其表示比由音频读指针所表示的最老数据的位置早1秒的数据的位置时,如果发出了例如反向再现命令的特定再现命令,并且开始该特定再现操作所需的数据是比最老数据早1秒的数据且存储在缓冲器215A中,则可以快速开始该特定再现操作,而无需从盘101重读数据。
当更新数据起始指针以便其表示比由音频读指针所表示的最老数据的位置早1秒的数据的位置时,开始特定再现操作所需的数据可能未存储在缓冲器215A中。在这种情况下,需要从盘101重新读取开始特定再现操作所需的数据。
接下来,将详细描述从缓冲器215A中读取视频流、音频流、和子标题流的操作。
如图30中的步骤S 127所述,当开始剪辑流文件的再现操作时,缓冲器控制模块215初始化数据起始指针、数据写指针、视频读指针、音频读指针、以及子标题读指针,以便它们表示缓冲器215A中的相同位置。
当从盘101读取存储在剪辑流文件中的节目流(MPEG2-系统节目流)、并将其提供给缓冲器控制模块215时,缓冲器控制模块215将节目流存储在缓冲器215A中的数据写指针所表示的位置。此外,沿顺时针方向更新数据写指针。
此外,缓冲器控制模块215的视频读取功能部分233(图3)对存储在缓冲器215A中的节目流进行分析,对应于从视频解码器控制模块216接收的请求而从存储在缓冲器215A中的节目流中提取(分离)出视频流(视频存取单元),并将提取的视频流提供给视频解码器控制模块216。
类似地,音频读取功能部分234对存储在缓冲器215A中的节目流进行分析,对应于从音频解码器控制模块217接收的请求而从存储在缓冲器215A中的节目流中提取出音频流(音频存取单元),并将该音频流提供给音频解码器控制模块217。子标题读功能部分235对存储在缓冲器215A中的节目流进行分析,对应于从子标题解码器控制模块218接收的请求而从存储在缓冲器215A中的节目流中提取出子标题流(子标题存取单元),并将该子标题流提供给子标题解码器控制模块218。
【读取视频流】
接下来,将参考图36所示的流程图详细描述对于视频读功能部分233(图3)的缓冲器215A的视频流读取处理。
在步骤S211,视频读取功能部分233在存储在缓冲器215A中的节目流中搜索private_stream_2的PES_packet()。如图20所述,在private_stream_2的PES_packet()中,stream_id为10111111B(=0xBF)。视频读取功能部分233寻找其stream_id为10111111B的PES_packet()。
假设用存储在剪辑流文件“00001.PS”中的节目流多路复用的基本流是要再现的基本流,则当从盘101读取节目流并将其存储到缓冲器215A中时,用剪辑流文件“00001.PS”的EP_map()(图27)中描述的关于可解码开始点的信息来确定扇区305为再现开始位置。在图30中的步骤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()(图23)中提取video_stream_id,其是private_stream_2的PES_packet()的PES_packet_data_byte。在图30所示的步骤S127,视频读取功能部分233确定video_stream_id是否与存储在stream_id寄存器242(图3)中的要再现的视频流的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(图3)中。此后,流程前进到步骤S214。
在步骤S214,视频读取功能部分233将存储在视频起始指针存储部分231中的视频读指针更新达到在步骤S211找到的private_stream_2的PES_packet()的大小(即video_stream_id(图23)与存储在stream_id寄存器242(图3)中的stream_id相匹配)。
换言之,在剪辑流文件中,在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()的Au_length所描述的字节数的数据(即一个视频存取单元),将数据提供给视频解码器控制模块216,并将视频读指针更新达到已从缓冲器215A中读取的、一个视频存取单元的大小。
换言之,如图24所述,au_information()描述number_of_access_unit,其表示从包含au_information()的private_stream_2的PES_packet()到下一个private_stream_2的PES_packet()所包含的视频存取单元(画面)的数目。
此外,如图24所示,au_information()描述作为关于由number_of_access_unit表示的每个视频存取单元的信息的pic_struct_copy、au_ref_flag和AU_length。
如图24所述,因为在对应于number_of_access_unit的au_information()中描述的每个AU_length表示从private_stream_2的PES_packet()到下一个private_stream_2的PES_packet()的、由number_of_access_unit表示的每个视频存取单元的大小,所以视频读取功能部分233可以用AU_length提取存取单元,而无需对视频流进行分析。
换言之,当提取MPEG2-视频或MPEG4-AVC存取单元时,需要了解视频流的结构并对其进行分析。然而,在记录在盘101上的剪辑流文件中存储的节目流包含private_stream_2的PES_packet(),其描述表示视频存取单元的大小的AU_length,并且其后紧跟视频流的至少一个可解码开始点。因此,视频读取功能部分233可以与在private_stream_2的PES_packet()中描述的AU_length相对应、从缓冲器215A读取视频存取单元(作为视频存取单元的视频流),并将视频存取单元提供给视频解码器控制模块216,而无需对视频流进行分析。
在步骤S216,当视频读取功能部分233向视频解码器控制模块216提供视频存取单元时,视频读取功能部分233还向视频解码器控制模块216提供作为关于视频存取单元的信息的在au_information()中描述的pic_struct_copy、au_ref_flag和AU_length,以及为每个视频存取单元添加的时间戳(PTS和DTS)。
在视频读取功能部分233已经从缓冲器215A读取了一个视频存取单元、并将其提供给视频解码器控制模块216之后,流程前进到步骤S217。在步骤S217,视频读取功能部分233确定其是否已处理了由存储在au_information()寄存器243中的au_information()(图24)的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(),并重复相同的处理。
【读取音频流】
接下来,将参考图37所示的流程图描述音频读取功能部分234(图3)对缓冲器215A的音频流读取处理。
在步骤S230,音频读取功能部分234确定在图30所示的步骤S127处存储到stream_id寄存器252中的、要再现的音频流的stream_id是否表示private_stream_1的PES_packet()。
当在步骤S230的确定结果表示存储在stream_id寄存器252中的stream_id不表示private_stream_1的PES_packet()时,即如图20所示,当存储在stream_id寄存器252中的stream_id是分配给已与MPEG标准相对应地编码的音频流的110xxxxxB时,流程前进到步骤S231。在步骤S231,音频读取功能部分234在存储在缓冲器215A中的节目流中搜索表示MPEG音频中定义的音频帧的开头的同步码。因为该同步码的位置在音频帧的开头处,所以音频读取功能部分234更新音频读指针,以使其表示音频帧开头的位置。此后,流程从步骤S231前进到步骤S232。在步骤S232,音频读取功能部分234与音频读指针表示的位置相对应地、在存储在缓冲器215A中的节目流中搜索与存储在stream_id寄存器252中的stream_id相匹配的PES_packet(),并获得该PES_packet()。此后,流程前进到步骤S233。
在步骤S233,音频读取功能部分234更新存储在音频读指针存储部分251中的音频读指针,从而音频读指针表示已经在步骤S232找到的、PES_packet()的PES_packet_data_byte(图16A和16B到图18A和18B)的开头。此后,流程前进到步骤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()时,即如图20所述,存储在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()(图21)中提取作为private_stream_1的PES_packet()的PES_packet_data_byte的private_stream_id,并确定private_stream_id是否与已经在图30所示的步骤S127中存储到private_stream_id寄存器253中的、要再现的音频流的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()(图21)中描述的AU_locator,将紧跟在AU_locator后的位置与AU_locator所表示的值相加,并获得音频存取单元的起始位置。
换言之,如图21所述,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重复相同的处理。
【读取子标题流】
接下来,将参考图38所示的流程图对子标题读取功能部分235(图3)对缓冲器215A的子标题流读取处理进行描述。
在步骤S251,子标题读取功能部分235确定已在图30所示的步骤S127中存储到视频解码器控制模块216中的子标题读取功能标志。当在步骤S251的确定结果表示子标题读取功能标志为0时,即用要再现的基本流多路复用的剪辑流文件不包含子标题流、并且在图30所示的步骤S127处已将0设置到子标题读取功能标志存储部分261中时,子标题读取功能部分235不执行任何处理。
相反,当在步骤S251中的确定结果表示子标题读取功能标志为1时,即用要再现的基本流多路复用的剪辑流文件包含子标题流、并且在图30所示的步骤S127中已将1设置到子标题读取功能标志存储部分261中时,流程前进到步骤S252。在步骤S252,子标题读取功能部分235在存储在缓冲器215A中的节目流中搜索与已存储在stream_id寄存器263(图3)中的、要再现的子标题流的stream_id相匹配的PES_packet()。
如图30所示的步骤S127所述,要再现的子标题流的stream_id被存储在stream_id寄存器263(图3)中。另一方面,如图20所述,子标题流的stream_id为10111101B(=0xBD),其表示private_stream_1的PES_packet()。
因此,在步骤S252,子标题读取功能部分235在存储在缓冲器215A中的节目流中搜索private_stream_1的PES_packet()。
当子标题读取功能部分235已经搜索了private_stream_1的PES_packet()并获得它之后,流程前进到步骤S253。子标题读取功能部分235从private_stream_PES_payload()(图21)中提取private_stream_id,其是private_stream_1的PES_packet()的PES_packet_data_byte,并确定private_stream_id是否与在图30所示步骤S127中已经存储到private_stream_id寄存器2264中的要再现的子标题流的private_stream_id相匹配。
当在步骤S253的确定结果表示private_stream_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()(图21)中描述的AU_locator,将紧跟在AU_locator之后的位置与AU_locator所表示的值相加,并获得子标题存取单元的起始位置。
如图21所述,AU_locator表示基于紧跟在AU_locator之后的位置存储在private_stream1_PES_payload()的private_payload()中的子标题存取单元(或音频存取单元)的起始位置。因此,通过将AU_locator所表示的值与紧跟在AU_locator之后的位置相加,可以获得子标题存取单元的(绝对)起始位置。
此外,在步骤S254,子标题读取功能部分235更新存储在子标题读指针存储部分262中的子标题读指针,以便子标题读指针表示所获得的子标题存取单元的起始位置。此后,流程前进到步骤S255。
在步骤S255,子标题读取功能部分235确定子标题解码器控制模块218是否已经发出了数据请求。当步骤S255的确定结果表示子标题读取功能部分235还未发出数据请求时,流程返回到步骤S255。在步骤S255,子标题读取功能部分235重复同样的处理。
相反,当步骤S255的确定结果表示子标题解码器控制模块218已经发出了数据请求时,流程前进到步骤S256。在步骤S256,子标题读取功能部分235从缓冲器215A中子标题读指针表示的位置开始对节目流进行分析,从缓冲器215A读取一个其长度在该子标题存取单元的开头描述的子标题存取单元,并将子标题存取单元与添加到该子标题存取单元的时间戳一起提供给子标题解码器控制模块218。如图2A和图2B中所述,子标题存取单元的大小在该子标题存取单元的开头处描述。子标题读取功能部分235从缓冲器215A中由子标题读指针表示的位置开始读取该大小的子标题存取单元,并将子标题存取单元与添加到该子标题存取单元的时间戳一起提供给子标题解码器控制模块218。
子标题读取功能部分235将子标题读指针更新从缓冲器215A读取的一个子标题存取单元的大小。然后,流程返回到步骤S255。在步骤S255,子标题读取功能部分235重复相同的处理。
【再同步处理】
接下来,将对图2A和图2B所示的解码控制模块214对视频数据和音频数据的同步控制进行描述。
如图30所示的步骤S130所述,解码控制模块214使视频解码器控制模块216、音频解码器控制模块217和子标题解码器控制模块218开始对它们的数据进行解码。如果需要,解码控制模块214促使这些模块以不同的定时开始对它们的数据进行解码,以使它们同步。例如,当视频解码器116和音频解码器117执行其解码处理时,根据它们的进展程度,它们可能以不同的定时输出视频数据和音频数据。
因此,解码控制模块214执行再同步处理,以对视频数据和音频数据输出定时的差别进行补偿,并使视频解码器116和音频解码器117同步地输出视频数据和音频数据。
接下来,将参考图39所示的流程图描述再同步处理。
在再同步处理中,在步骤S271,解码控制模块214确定出从视频解码器控制模块216输出的视频存取单元的时间戳与从音频解码器控制模块217输出的音频存取单元的时间戳之间的差别是否是大的。
如图30所示的步骤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(图24)。
换言之,存储在private_stream_2的PES_packet()的private_stream2_PES_payload()(图23)中的au_information()(图24)包括作为关于存取单元的信息的au_ref_flag。如图30所示的步骤S129和如图36所示的步骤S216所述,与视频存取单元一起,缓冲器控制模块215还向视频解码器控制模块216提供其au_ref_flag。
在步骤S274,视频解码器控制模块216检查与存取单元一起提供的、该存取单元的au_ref_flag。
此后,流程从步骤S274前进到步骤S275。在步骤S275,与对已经从缓冲器控制模块215提供的该视频存取单元的au_ref_flag的检查结果相对应,视频解码器控制模块216确定该视频存取单元是否是在对其它画面进行解码时未被参考的非参考图像。
如图24所述,视频存取单元中的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接收连续输出请求,并且与该连续输出请求相对应地、将正被解码的视频存取单元的视频数据连续地输出到图形处理模块219。在缓冲器控制模块215已经提供了下一个视频存取单元之后,流程前进到步骤S271。
如上所述,解码控制模块214确定视频数据的输出是否晚于音频数据的输出。当视频数据的输出晚于音频数据的输出时,解码控制模块214使视频解码器控制模块216跳过对一个存取单元的处理。视频解码器控制模块216与存取单元的au_ref_flag相对应地确定要跳过的存取单元是参考图像还是非参考图像。当存取单元是非参考图像时,解码控制模块214使视频解码器116跳过对存取单元的处理。因此,可以容易地同步视频数据的输出和音频数据的输出。
换句话说,当要跳过的存取单元是参考图像时,需要解码该存取单元中的视频数据,以便当解码其它存取单元时参考该视频数据。因此,当同步视频数据的输出和音频数据的输出时,如果跳过了对参考图像存取单元的处理,则不能解码参考该参考图像的其它存取单元。因此,当显示与音频数据同步的视频数据时,出现了噪声。
因此,优选为跳过不是非参考图像的存取单元。
另一方面,为了在传统的基本流中搜索非参考图像的存取单元,需要分析该基本流。与例如MPEG4-AVC系统相对应地编码的基本流是非常复杂的。因此,当分析该基本流时,需要非常高的成本。
相反,除包括视频存取单元的、具有PES_packet_data_byte的PES_packet()(图16A和图16B到图18A和图18B)之外,还用包括private_stream2_PES_payload()(图23)(其是PES_packet_data_byte的扩展)的private_stream_2的PES_packet()来多路复用存储在记录在盘101上的剪辑流文件中的节目流。private_stream2PES_payload()中的au_information()(图24)描述了au_ref_flag,其表示该视频存取单元是参考图像还是非参考图像。au_ref_flag和对应的视频存取单元从缓冲器控制模块215提供给视频解码器控制模块216。因此,视频解码器控制模块216可以通过检查视频存取单元的au_ref_flag来确定视频存取单元是参考图像还是非参考图像,而几乎没有额外的成本。
【标记处理】
接下来,将参考图40所示的流程图描述基于在PlayListMark()(图7)中描述的Mark()的标记处理。
解码控制模块214一直检查由内置时间计数部分214A计数的当前时间。在步骤S301,解码控制模块214确定当前时间是否与在PlayListMark()(图7)中描述的任何Mark()的mark_time_stamp相匹配。
如图30所示步骤S 124所述,当播放器控制模块212再现图25所示的第一个PlayList#0中的第一个PlayItem#0时,播放器控制模块212识别出在图28所示的上部表格的PlayListMark()中包括的七个Mark()中的四个Mark()(第一到第四个Mark())属于PlayList()中的第一个PlayItem#0,并且将作为这四个Mark()的mark_time_stamp的{180,090}、{5,580,090}、{10,980,090}和{16,380,090}连同表示mark_time_stamp所表示的时间属性是“标记处理”的信息一起提供给解码控制模块214。
在步骤S301,解码控制模块214确定已经从播放器控制模块212提供的、具有属性“标记处理”的四个时间(mark_time_stamp)中的哪个与当前时间相匹配。
当步骤S301的确定结果表示当前时间不与任何具有属性“标记处理”的时间相匹配时,该流程返回到步骤S301。在步骤S301,解码控制模块214重复相同的处理。
相反,当步骤S301的确定结果表示当前时间与具有属性“标记处理”的四个时间之一相匹配时,解码控制模块214将表示当前时间成为具有属性“标记处理”的时间的消息连同具有属性“标记处理”的匹配时间一起提供给播放器控制模块212。此后,流程前进到步骤S302。
在步骤S302,播放器控制模块212从解码控制模块214接收表示当前时间成为具有属性“标记处理”的时间的消息、连同具有属性“标记处理”的匹配时间,并识别其mark_time_stamp与当前时间相匹配的Mark(),将其作为在标记处理中将被处理的Mark()(以下有时也将该Mark()称为目标标记)。
换句话说,播放器控制模块212已经识别出正再现的PlayList()中的PlayItem()。通过参考具有PlayList()、PlayItem()、和具有属性″标记处理″的已匹配时间(mark_time_stamp)(在下文中有时将这个时间称为标记时间)的“PLAYLIST.DAT”文件(图5)的PlayListMark()(图7),播放器控制模块212识别出目标标记。
具体而言,假定正在再现图25所示的第一个PlayList#0中的第一个PlayItem#0时,播放器控制模块212识别出标记时间是包括在图28所示的上部表格的PlayListMark()中的七个Mark()中的四个Mark()(其是第一到第四个Mark())中任何一个的mark_time_stamp。
当从解码控制模块214提供给播放器控制模块212的标记时间例如是16,380,090时,播放器控制模块212将在图28所示的上部表格的PlayListMark()中包括的四个Mark()(其是第一到第四个Mark())中的、mark_time_stamp与标记时间16,380,090相匹配的第四个Mark()识别为目标标记。
当播放器控制模块212已经识别出目标标记时,流程从步骤S302前进到步骤S303。在步骤S303,播放器控制模块212确定该目标标记是否描述了标识基本流的entry_ES_stream_id和entry_ES_private_stream_id(图7)。
当步骤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(图7)时,流程前进到步骤S304。在步骤S304,播放器控制模块212确定正被再现的基本流是否包括由entry_ES_stream_id以及必要时的entry_ES_private_stream_id所标识的基本流。
当步骤S304的确定结果表示正被再现的基本流不包括由目标标记中的entry_ES_stream_id和entry_ES_private_stream_id所标识的基本流时,流程返回到步骤S301。换句话说,当不正在再现由目标标记的entry_ES_stream_id和entry_ES_private_stream_id所标识的基本流时,忽略该目标标记。
相反,当步骤S304的结果表示正被再现的基本流包括由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流时,即正在再现由目标标记的entry_ES_stream_id和entry_ES_private_stream_id标识的基本流时,确定该目标标记是有效的。此后,流程前进到步骤S305。在步骤S305,播放器控制模块212执行对目标标记的处理。
换句话说,在步骤S305,通过参考目标标记的mark_type(图7),播放器控制模块212确定目标标记。
当步骤S305的确定结果表示目标标记是章节标记或者索引标记时,即目标标记中的mark_type是“Chapter(章节)”或者“Index(索引)”时,流程前进到步骤S306。在步骤S306,播放器控制模块212使图形处理模块219用目标标记的章节号或者索引号来更新章节号或者索引号。此后,流程返回到步骤S301。
当步骤S305的确定结果表示目标标记是事件标记时,即目标标记的mark_type是“Event(事件)”时,流程前进到步骤S307。在步骤S307,播放器控制模块212向脚本控制模块211通知表示已经发生了事件的事件消息和目标标记的mark_data。此后,流程前进到步骤S308。
在步骤S308,脚本控制模块211从播放器控制模块212接收事件消息和mark_data,并且与该事件消息的中断请求相对应地、利用mark_data的参数执行文件“SCRIPT.DAT”中描述的处理序列。此后,流程返回到步骤S301。
换句话说,脚本控制模块211执行与mark_data相对应的处理。
具体而言,在图28所示的下部表格中的PlayList#1的PlayListMark()中,第二Mark()(Mark#1)和第三Mark()(Mark#2)中的每一个的mark_type是“Event(事件)”,而且Mark#1的mark_data不同于Mark#2的mark_data。
当脚本控制模块211接收到与第二Mark()相对应的事件消息以及与第三Mark()相对应的事件消息时,脚本控制模块211用相同的事件处理器(中断处理例程)执行与所接收的事件消息相对应的处理。脚本控制模块211检查连同事件消息一起提供的mark_data,并且执行与mark_data相对应的处理。
具体而言,当mark_data例如为1时,脚本控制模块211控制图形处理模块219以显示第一类型图标。当mark_data例如为2时,脚本控制模块222控制图形处理模块229以显示第二类型图标。
mark_data不局限于1和2。此外,与mark_data相对应的处理不限于简单图标的显示。
换句话说,当mark_data处于从3到18的范围中时,脚本控制模块211控制图形处理模块219,以便用与从mark_data中减去2的值(在从1到16的范围中的值)相对应的强度显示第一类型图标。另一方面,当mark_data处于从19到34的范围中时,脚本控制模块1811控制图形处理模块219,以便用与从mark_data中减去18的值(在从1到16的范围中的值)相对应的强度显示第二类型图标。
当用户操作的控制器连接到输入接口115(图1)而且控制器具有振动电机(其是具有安装在电机轴上的偏心陀(eccentric weight)的直流(DC)电机并且当驱动该电机时发生振动),如果mark_data的值处于从35到42的范围内,则可以驱动振动电机达到与从mark_data中减去34的值(从1到8范围中的值)相对应的操作时间段。
mark_data是数字值。可以用脚本控制模块211执行的脚本程序描述mark_data的使用和算法。因此,可以与由盘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相对应的处理。
当正再现图25所示的第二PlayList#1时,执行以下的标记处理。
换句话说,如图28中的下部表格所示,第二PlayList#1中的PlayListMark()描述了其mark_time_stamp分别为90,000、27,090,000、和27,540,000的第一Mark()(Mark#0)、第二Mark()(Mark#1)、和第三Mark()(Mark#2)。
此外,因为在图28所示的下部表格中的PlayListMark()的第二Mark()和第三Mark()的entry_ES_stream_id描述了0xE0和0xE1,所以第二Mark()和第三Mark()与分别为0xE0和0xE1的stream_id所标识的基本流相关。
如图25所述,第二PlayList#1仅仅描述了一个PlayItem()(PlayItem#0)。利用PlayItem#0,再现剪辑流文件“00003.PS”。如与剪辑流文件“00003.PS”相对应的图26A和图26B所示的剪辑信息文件“00003.CLP”所述,用三个基本流多路复用该剪辑流文件“00003.PS”,这三个基本流是用值为0xE0的stream_id标识的视频流stream#0、用值为0xE1的stream_id标识的视频流stream#1、和用值为0x00的private_stream_id标识的音频stream#2。
因此,在图28所示的下部表格中的PlayListMark()的第二个Mark()与用剪辑流文件“00003.PS”多路复用的其stream_id为0xE0的视频流文件stream#0相关。第三个Mark()与用剪辑流文件“00003.PS”多路复用的其stream_id为0xE1的视频流stream#1相关。
当再现图25所示的第二个PlayItem#1的PlayItem#0时,如图30所示的步骤S124所述,播放器控制模块212识别出在图28所示的下部表格中的PlayListMark()包括的三个Mark()属于PlayList#1的PlayItem#0,并且将作为三个Mark()的mark_time_stamp的{90,000}、{27,090,000}、和{27,540,000}连同表示时间具有属性“标记处理”的信息一起提供给解码控制模块214。
在标记处理中,当正再现PlayList#1中的PlayItem#0时,解码控制模块214一直确定时间{90,000}、{27,090,000}、和{27,540,000}中的哪个与由时间计数部分214A所计数的当前时间相匹配(步骤S301)。当当前时间与具有属性“标记处理”的时间相匹配时,解码控制模块214将作为与当前时间相匹配的具有属性″标记处理″的时间的标记时间连同表示当前时间变为具有属性“标记处理”的时间的消息一起提供给播放器控制模块212。
当当前时间与具有属性“标记处理”的时间{90,000}、{27,090,000}、和{27,540,000}中的27,090,000相匹配时,解码控制模块214将具有属性“标记处理”的标记时间27,090,000连同表示当前时间变为具有属性“标记处理”的时间的消息一起提供给播放器控制模块212。
播放器控制模块212已识别出正在再现PlayList#1中的PlayItem#0。播放器控制模块212将90,000、27,090,000、和27,540,000(它们是属于在图28所示的下部表格中的PlayListMark()中描述的Mark()的PlayItem#0的三个Mark()的mark_time_stamp)与27,090,000(其是从解码控制模块214提供的标记时间)相比较,并且识别出其mark_time_stamp与作为标记时间的27,090,000相匹配的Mark()(即在图28所示的下部表格的PlayListMark()中描述的第二个Mark()(Mark#1))是目标标记(步骤S302)。
在作为目标标记的、在图28所示的下部表格的PlayListMark()中描述的第二个Mark()中,entry_ES_stream_id为0xE0。如上所述,值为0xE0的entry_ES_stream_id表示用剪辑流文件“00003.PS”多路复用的、其stream_id为0xE0的视频流stream#0(图26A和图26B)。播放器控制模块212确定正被再现的基本流是否包括视频流stream#0(步骤S303和S304)。
当正被再现的基本流不包括视频流stream#0时,播放器控制模块212忽略该目标标记(步骤S304)。
相反,当正被再现的基本流包括视频流stream#0时,播放器控制模块212认为目标标记是有效的,并且执行与该目标标记相对应的处理(步骤S305到S308)。
在这种情况下,在作为目标标记的、在图28所示的下部表格的PlayListMark()中描述的第二个Mark()中,mark_type是“Event(事件)”。因此,第二个Mark()是事件标记。播放器控制模块212将表示发生了事件的事件消息和该目标标记的mark_data一起提供给脚本控制模块211(步骤S305和S307)。与从播放器控制模块212接收的事件消息的中断请求相对应地,脚本控制模块211利用mark_data的参数执行在“SCRIPT.DAT”中描述的处理序列(步骤S308)。
如上所述,在标记处理中,播放器控制模块确定当前时间是否匹配mark_time_stamp,其中当前时间是与表示在PlayList()的时间轴上的一个再现时间的mark_time_stamp、表示Mark()类型的mark_type、以及PlayList()相对应地再现的剪辑流文件的再现时间,而PlayList()包括不具有Mark()或具有超过一个Mark()的PlayListMark()(图7),且Mark()包括作为事件标记的参数的mark_data。当当前时间匹配mark_time_stamp时,播放器控制模块212将具有mark_time_stamp等于作为当前时间的标记时间的Mark()识别为目标标记。当具有目标标记的mark_type表示事件发生的类型时,即目标标记是事件标记时,提供目标标记所具有的mark_type和事件消息。播放器控制模块212执行与mark_data相对应的处理。因此,播放器控制模块212可以在剪辑流文件的再现时间中执行与mark_data相对应的处理。
【输出属性控制处理】
接下来,将参考图41所示的流程图详细描述图30所示的步骤S126执行的输出属性控制处理。
如图30所示的步骤S126所述,播放器控制模块212检查表示DynamicInfo()(图13)的数目的number_of_DynamicInfo(图10),其中DynamicInfo()描述了至少一个要再现的基本流(即已经在步骤S125判定的、要再现的至少一个基本流)的输出属性。
当至少一个要再现的基本流中的每一个的number_of_DynamicInfo是0时,播放器控制模块212不执行任何处理。
相反,当要再现的基本流的number_of_DynamicInfo不是0时,播放器控制模块212执行与图41所示的流程图相对应的输出属性控制处理。
因此,当记录在盘101上的三个剪辑信息文件“00001.CLP”、“00002.CLP”、和“00003.CLP”如图26A和图26B所示、而且再现与剪辑信息文件“00001.CLP”相对应的剪辑流文件“00001.PS”(再现剪辑流文件“00001.PS”的第一PlayList#0中的第一PlayItem#0)时,因为全部四个基本流(它们是stream#0到stream#3)的number_of_DynamicInfo是0时,所以播放器控制模块212不执行输出属性控制处理。
同样地,当再现与剪辑信息文件“00002.CLP”相对应的剪辑流文件“00002.PS”(再现剪辑流文件“00002.PS”的第一PlayList#0中的第二PlayItem#1)时,因为用剪辑流文件“00002.PS”多路复用的、作为stream#0到stream#3的四个基本流的全部number_of_DynamicInfo都是0,所以播放器控制模块212不执行输出属性控制处理。
相反,当再现与剪辑信息文件“00003.CLP”相对应的剪辑流“00003.PS”时(再现剪辑流文件“00003.PS”的第二PlayList#1中的PlayItem#0),因为作为第一基本流的视频流stream#0和作为第三基本流的音频流stream#2的number_of_DynamicInfo分别为2和3,所以播放器控制模块212执行输出属性控制处理。
换句话说,在输出属性控制处理中,在步骤S320,播放器控制模块212将在与要再现的剪辑流文件相对应的剪辑信息文件Clip()(图10)中描述的pts_change_point连同表示具有属性“DynamicInfo()处理”的时间的信息一起提供给解码控制模块214。解码控制模块214从播放器控制模块212接收pts_change_point,其是具有属性“DynamicInfo()处理”的时间。此后,流程前进到步骤S321。
在步骤S321,解码控制模块214确定由时间计数部分214A计数的当前时间是否与作为具有属性“DynamicInfo()处理”的时间的pts_change_point之一相匹配。当步骤S321的确定结果表示当前时间不与任何一个pts_change_point相匹配时,流程返回到步骤S321。
相反,当步骤S321的确定结果表示当前时间与具有属性“DynamicInfo()处理”的任何一个时间相匹配时,解码控制模块214将表示当前时间变为具有属性“DynamicInfo()处理”的时间的消息、以及具有属性“DynamicInfo()处理”的匹配时间(在下文中有时称为DynamicInfo时间)提供给播放器控制模块212。此后,流程前进到步骤S322。
在步骤S332,播放器控制模块212从解码控制模块214接收表示当前时间变为具有属性“DynamicInfo()处理”的时间的消息以及DynamicInfo时间,并且识别出与DynamicInfo时间相匹配的、与pts_change_point(图10)配对的DynamicInfo()作为目标DynamicInfo()。此后,流程前进到步骤S323。
在步骤S323,播放器控制模块212将作为目标DynamicInfo()的DynamicInfo()(图13)中描述的输出属性提供给图形处理模块219或者音频输出模块221。此后,流程前进到步骤S324。
在步骤S324,图形处理模块219或者音频输出模块221与已经在步骤S323从播放器控制模块212提供的输出属性相对应地、开始控制视频数据或者音频数据的输出。此后,流程返回到步骤S321。
因此,与例如描述为输出属性(显示模式)的纵横比相对应地输出视频数据。作为选择,与例如被描述为输出属性的立体声模式或者双声道(双语)模式相对应地输出音频数据。
接下来,将参考图42详细描述输出属性控制处理。
图42示出了在图26A和图26B所示的剪辑信息文件“00003.CLP”中描述的一对pts_change_point和DynamicInfo()(图10)。
如上所述,在图26A和图26B所示的剪辑信息文件“00003.CLP”中,视频流stream#0和音频流stream#2(它们是用剪辑流文件“00003.PS”多路复用的三个基本流stream#0到stream#2中的第一基本流和第三基本流)的number_of_DynamicInfo分别为2和3。因此,剪辑信息文件“00003.CLP”描述了用于剪辑流文件“00003.PS”中的第一视频流stream#0的两组pts_change_point和DynamicInfo()、以及用于剪辑流文件“00003.PS”中的第三音频流stream#2的三组pts_change_point和DynamicInfo()。
图42所示的上部表格示出了剪辑流文件“00003.PS”中的第一视频流stream#0的两组pts_change_point和DynamicInfo()。图42所示的下部表格示出了剪辑流文件“00003.PS”中的第三音频流stream#2的三组pts_change_point和DynamicInfo()。
除第一视频流stream#0的两组pts_change_point和DynamicInfo()之外,图42所示的上部表格还表示出第一视频stream#0的stream_id(=0xE0)、private_stream_id(=0x00)、以及剪辑信息文件“00003.CLP”的number_of_DynamicInfo(=2)(如图26A和图26B所示)。同样地,除第三音频流stream#2的三组pts_change_point和DynamicInfo()之外,图42的下部表格还示出音频流stream#2的stream_id(=0xBD)、private_stream_id(=0x00)、和剪辑信息文件“00003.CLP”中的number_of_DynamicInfo(=3)(如图26A和图26B所示)。
在图42所示的上部表格中,视频流stream#0的两组pts_change_point和DynamicInfo()中的第一组的pts_change_point是90,000且其DynamicInfo()的display_aspect_ratio(图13)是“4:3”,第二组的pts_change_point是54,090,000且其DynamicInfo()的display_aspect_ratio是“16:9”。
在图42所示的下部表格中,音频流stream#2的三组pts_change_point和DynamicInfo()中的第一组的pts_change_point是90,000且其DynamicInfo()的channel_assignment(图13)是“Dual(双声)”、第二组的pts_change_point是27,090,000且其DynamicInfo()的channel_assignment是“Stereo(立体声)”、第三组的pts_change_point是32,490,000且其DynamicInfo()的channel_assignment是“Dual(双声)”。
现在,假定在图30所示的步骤S125处,已经将由值为0xE0的stream_id所标识的第一视频流stream#0以及由值为OxBD的stream_id和值为0x00的private_stream_id所标识的第三音频流stream#2确定为要从剪辑流文件“00003.PS”的流。
在这种情况下,播放器控制模块212为由值为0xE0的stream_id所标识的视频流stream#0检查在图42所示的上部表格中的两组pts_change_point和DynamicInfo(),并且为由值为0xBD的stream_id和值为0x00的private_stream_id所标识的音频流stream#2检查图42所示的下部表格中的三组pts_change_point和DynamicInfo(),并识别处初始值。
换句话说,在图42所示的上部表格中,由值为0xE0的stream_id所标识的视频流stream#0的两组pts_change_point和DynamicInfo()中的第一组的pts_change_point是90,000。90,000与在与已经用其多路复用了视频流stream#0的剪辑流文件″00003.PS″相对应的、图26A和图26B所示的剪辑信息文件″00003.CLP″中的presentation_start_time描述的90,000相匹配,其中presentation_start_time表示剪辑流文件“00003.PS”的开始时间。
同样地,在图42所示的下部表格中,由值为0xBD的stream_id和值为0x00的private_stream_id所标识的音频流stream#2的三组pts_change_point和DynamicInfo()中的第一组的pts_change_point是90,000。90,000与在与已经用其多路复用了音频流stream#2的剪辑流文件″00003.PS″相对应的、图26A和图26B所示的剪辑信息文件″00003.CLP″中的presentation_start_time描述的90,000相匹配,其中presentation_start_time表示剪辑流文件“00003.PS”的开始时间。
播放器控制模块212将与presentation_start_time(其表示剪辑流文件″00003.PS″的开始时间)中描述的90,000相匹配的pts_change_point识别为初始值。因此,播放器控制模块212将图42所示上部表格中的两组pts_change_point和DynamicInfo()中的第一组的pts_change_point和图42所示的下部表格中的三组pts_change_point和DynamicInfo()中的第一组的pts_change_point识别为初始值。
在再现剪辑流文件“00003.PS”之前,播放器控制模块212指定与被识别为初始值的pts_change_point成对的DynamicInfo()相对应的基本流的输出属性(图30所示的步骤S126)。
对于图42所示的上部表格中、由值为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。
对于图42所示的下部表格中、由值为0xBD的stream_id和值为0x00的private_stream_id所标识的音频流stream#2,与作为初始值的值为90,000的pts_change_point配对的DynamicInfo()的channel_assignment为“双声(Dual)”。在这种情况下,播放器控制模块212将表示channel_assignment是“Dual(双声)”的信息(即有关表示音频流stream#2是双声音频数据的输出属性的信息)提供给音频输出模块221。
在图30所示的步骤s126处,播放器控制模块212为作为初始值的pts_change_point执行输出属性控制处理。
此后,播放器控制模块212向解码控制模块214提供在图42所示的上部表格中、用于视频流stream#0的90,000和54,090,000(它们是两个pts_change_point),以及在图42所示的下部表格中、用于音频流stream#2的90,000、27,090,000、和32,490,000(它们是三个pts_change point的时间)中除了作为初始值的90,000之外的{27,090,000}、和{32,490,000},连同表示这些时间具有属性“DynamicInfo()处理”的信息。(步骤S320)
解码控制模块214从播放器控制模块212接收具有属性“DynamicInfo()处理”的时间{27,090,000}、{32,490,000}、和{54,090,000}。在开始再现视频流stream#0和音频流stream#2(再现剪辑流文件“00003.PS”的第二PlayList#1中的PlayItem#0)之后,解码控制模块开始监控由时间计数部分214A计数的当前时间。
当当前时间与具有属性“DynamicInfo()处理”的时间{27,090,000}、{32,490,000}、和{54,090,000}之一相匹配时,解码控制模块214向播放器控制模块212提供DynamicInfo时间,其是具有属性“DynamicInfo()处理”并且与当前时间相匹配的时间(步骤S321)。
当当前时间变为例如27,090,000时,解码控制模块214向播放器控制模块212提供作为DynamicInfo时间的27,090,000,其与当前时间相匹配并且是具有属性“DynamicInfo()处理”的时间之一。
播放器控制模块212从解码控制模块214接收作为DynamicInfo时间的27,090,000,并且从在图42所示的上部表格中用于视频stream#0的两个pts_change_point和图42所示的下部表格中用于音频stream#2的三个pts_change_point中检查与作为DynamicInfo时间的27,090,000相匹配的pts_change_point,并且识别出与匹配27,090,000的pts_change_point配对的DynamicInfo()(即图42所示的下部表格中用于音频流stream#2的第二DynamicInfo())作为目标DynamicInfo()(步骤S322)。
当目标DynamicInfo()是视频流的DynamicInfo()时,播放器控制模块212向图形处理模块219提供在目标DynamicInfo()中描述的输出属性(步骤S323)。当目标DynamicInfo()是音频流的DynamicInfo()时,播放器控制模块212向音频输出模块221提供在目标DynamicInfo()中描述的输出属性(步骤S323)。
当图形处理模块219已经从播放器控制模块212接收了输出属性时,图形处理模块219与该输出属性相对应地开始控制视频数据的输出(步骤S324)。
换句话说,图形处理模块219与由从例如播放器控制模块212收到的输出属性所表示的视频数据的纵横比(display_aspect_ratio(图13))以及连接到图1所示的视频输出端120的视频输出设备的纵横比相对应,转换输出到视频输出模块220的视频数据的纵横比。
具体而言,当视频输出设备的纵横比例如为16∶9而且由输出属性所代表的视频数据的纵横比是4∶3时,图形处理模块219在水平方向为输出到视频输出模块220的视频数据执行挤压处理并且使视频数据的左右端变黑。当视频输出设备的纵横比例如为4∶3而且由输出属性所代表的视频数据的纵横比是16∶9时,图形处理模块219在垂直方向为输出到视频输出模块220的视频数据执行挤压处理并且使视频数据的上下端变黑。当视频输出设备的纵横比和作为输出属性的视频数据的纵横比相同时,例如为4∶3或者16∶9时,图形处理模块219将视频数据输出到视频输出模块220,而不为该视频数据执行挤压处理。
利用在图42所示的上部表格中、由值为0xE0的stream_id所标识的视频流stream#0的两组pts_change_point和DynamicInfo(),在时间54,090,000之前,在作为视频流stream#0的再现开始时间的时间90,000之后,获得具有纵横比4∶3的视频数据。在时间54,090,000之后,获得具有纵横比16∶9的视频数据。
因此,假定连接到图1所示的视频输出端120的视频输出设备的纵横比为4∶3,则在时间90,000之后且在时间54,090,000之前,图形处理模块219将从视频流stream#0获得的具有纵横比4∶3的视频数据提供给纵横比为4∶3的视频输出设备。视频输出设备显示所收到的视频数据。
在时间54,090,000之后,图形处理模块219在垂直方向为具有纵横比16∶9的视频数据执行挤压处理并使该视频数据的上下端变黑,以便将纵横比16∶9的视频数据转换为纵横比4∶3的视频信号。将转换后的视频信号提供给视频输出设备。视频输出设备显示转换后的视频数据。
当音频输出模块221从播放器控制模块212接收到输出属性时,音频输出模块221与该输出属性相对应地开始控制音频数据的输出(步骤S324)。
换句话说,与由从播放器控制模块212收到的输出属性所表示的音频数据的声道分配(channel_assignment(图13))相对应地、并且与通过用户利用遥控器操作的输入接口115(图1)从播放器控制模块212提供的音频输出模式相对应地,音频输出模块221处理从音频解码器控制模块217收到的音频数据,并且将处理后的音频数据输出到音频输出端121(图1)。
具体而言,当由输出属性所代表的用于音频数据的声道分配是双声(双语)模式(其中,左声道是“主音频”数据而右声道是“子音频”数据)时,音频输出模块221与从播放器控制模块212提供的音频输出模式相对应地处理从音频解码器控制模块217提供的音频数据,并且将处理后的音频数据输出到音频输出端121。
换句话说,如果已经将“主声音”指定为音频输出模式的话,则音频输出模块221将从音频解码器控制模块217收到的音频数据的左声道复制为音频数据的右声道,并且将该音频数据(“主音频”数据)的左右声道输出到音频输出端121。如果已经将“子音频”指定为音频输出模式的话,则音频输出模块221将从音频解码器控制模块217收到的音频数据的右声道复制为左声道,并且将该左右声道(″子音频″数据)输出到音频输出端121。如果已经将“主和子音频”二者指定为音频输出模式,则音频输出模块221直接将从音频解码器控制模块217收到的音频数据输出到音频输出端121。
如果由输出属性所表示的音频数据的声道分配例如是立体声模式,则音频输出模块221直接将从音频解码器控制模块217收到的音频数据输出到音频输出端121而不考虑已经指定了什么音频输出模式。
利用图42所示的下部表格中、由值为0xBD的stream_id和值为0x00的private_stream_id标识的音频流stream#2的三组pts_change_point和DynamicInfo(),在作为再现开始时间的时间90,000之后且在时间27,090,000之前,从音频流stream#2中获得双声道音频数据。此外,在时间27,090,000之后且在时间32,490,000之前,从音频流stream#2获得立体声音频数据。此外,在时间32,490,000之后,从音频流stream#2获得双声道音频数据。
因此,当已经将“主音频”指定为音频输出模式时,音频输出模块221将在时间90,000之后且在时间27,090,000之前、从音频流stream#2获得的双声音频数据的左声道的音频数据复制为该音频数据的右声道。将音频数据的左声道和右声道输出到音频输出端121。
将在时间27,090,000之后且在时间32,490,000之前、从音频流stream#2获得的立体声音频数据输出到音频输出端121。
将时间32,490,000之后、从音频流stream#2获得的双声道音频数据的左声道复制为音频数据的右声道。将音频数据的左声道和右声道输出到音频输出端121。
如上所述,在输出属性控制处理中,确定正被再现的基本流的再现时间是否与对应于剪辑信息文件Clip()(图10)的pts_change_point相匹配,其中该剪辑信息文件Clip()包括n组pts_change_point和DynamicInfo(),其中pts_change_point表示用剪辑流文件多路复用的每个基本流的再现时间,而DynamicInfo()表示基本流的输出属性(其中n是0或者更大的任何整数)。当正被再现的基本流的再现时间与pts_change_point相匹配时,识别出与pts_change_point配对的DynamicInfo()。与在DynamicInfo()中描述的输出属性相对应地控制正被再现的基本流的输出。因此,可以与基本流的再现时间和输出属性相对应地控制基本流的输出。
【子标题显示控制处理】
接下来,将参考图43所示的流程图,描述控制与子标题流相对应的子标题数据的显示的子标题显示控制处理。
当开始PlayList()(图5)(其PlayList())的再现时,在步骤S341,播放器控制模块212初始化用于图形处理模块219的子标题数据显示模式。换句话说,播放器控制模块212控制该图形处理模块219,以将子标题数据显示模式改变为缺省显示模式。在步骤S341执行的显示模式的初始化对应于在图30所示的步骤S127执行的显示模式的初始化。
在步骤S341之后,流程前进到步骤S342。在步骤S342,播放器控制模块212确定用户是否已经通过遥控器向输入接口115输入了新子标题数据显示模式命令。
当步骤S342的确定结果表示已经输入了新显示模式命令时,流程前进到步骤S343。在步骤S343,播放器控制模块212确定是否正在再现子标题流(与此对应的子标题数据)。
当步骤S343的确定结果表示没有在再现子标题流时,流程返回到步骤S342。
相反,当步骤S343的确定结果表示正在再现子标题流时,流程前进到步骤S345。在步骤5345,播放器控制模块212确定新显示模式命令是否为缺省显示模式命令。当步骤S343的确定结果表示新显示模式命令是缺省显示模式命令时,流程返回到步骤S341。在步骤S341,如上所述,播放器控制模块212控制该图形处理模块219,以便将子标题数据显示模式改变为缺省显示模式。
相反,当步骤S345的确定结果表示新显示模式命令不是缺省显示模式命令时,即新显示模式命令是例如子标题数据放大命令、子标题数据缩小命令、或者亮度增加命令的非缺省显示模式命令时,流程前进到步骤S346。在步骤S346,播放器控制模块212从与用其多路复用了正被再现的子标题流的剪辑流文件相对应的剪辑信息文件Clip()(图10)的StaticInfo()(图12)中、获得正被再现的子标题流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确定是否已经如图31所述改变了PlayItem()。当步骤S342的确定结果表示还没有改变PlayItem()时,流程返回到步骤S342。
相反,当步骤S351的确定结果表示已经改变了PlayItem()时,流程返回到步骤S341。在步骤S341,如上所述,播放器控制模块212控制该图形处理模块219,以便将子标题数据显示模式改变为缺省显示模式。换句话说,当已经改变了PlayItem()时,子标题数据显示模式恢复为缺省显示模式。
如上所述,只有当子标题流的configurable_flag为1(其表示允许改变显示模式)时,可以与用户通过遥控器输入的显示模式命令相对应地改变子标题流的子标题数据显示模式。
因此,例如在图26A和图26B所示的剪辑信息文件“00001.CLP”中,因为子标题流stream#2(其是用剪辑流文件“00001.PS”多路复用的四个基本流中的第三个基本流)的configurable_flag是表示不允许改变显示模式的0,所以当正在显示子标题流stream#2时,即使用户操作遥控器以改变子标题显示模式,显示模式也不被改变。
相反,因为子标题流stream#3(其是用剪辑流文件“00001.PS”多路复用的四个基本流中的第四个基本流)的configurable_flag是表示允许改变显示模式的1,所以当正在显示子标题流stream#3时,当用户操作遥控器以改变子标题显示模式时,子标题的显示大小被改变。
现在,假定与图25所示的第一PlayList#1的第一PlayItem#1相对应地再现剪辑流文件“00001.PS”。此外,在图26A和图26B所示的剪辑信息文件“00001.CLP”中,假定用剪辑流文件“00001.PS”多路复用的四个基本流中的第三和第四基本流是子标题流,而且正在再现第三和第四子标题流stream#2和stream#3中的第三子标题流stream#2。
当用户操作遥控器以输入子标题显示模式命令(步骤S342)时,显示模式命令从输入接口115(图1)提供到播放器控制模块212。当播放器控制模块212收到显示模式命令时,播放器控制模块212在剪辑信息文件中搜索与正被再现的子标题流相对应的StaticInfo()(图10)(步骤S346)。
换句话说,正被再现的子标题流是用剪辑流文件“00001.PS”多路复用的第三子标题流stream#2。播放器控制模块212在对应的剪辑信息文件“00001.CLP”中搜索第三子标题流stream#2的StaticInfo()。
此外,播放器控制模块212确定在图26A和图26B所示的第三子标题流stream#2的StaticInfo()中描述的configurable_flag(其为0)(步骤S347)。因此,播放器控制模块212识别出不允许改变第三子标题流stream#2的显示模式。
在这种情况下,播放器控制模块212确定正被再现的子标题流(与此对应的子标题数据)不对应于放大和缩小模式,并且控制该图形处理模块219来生成对应的错误信息(步骤S348),并且将视频数据叠加在该错误信息上,并输出叠加后的视频数据。
在正在再现用剪辑流文件“00001.PS”多路复用的四个基本流中的第三和第四子标题流stream#2和stream#3当中的第四子标题流stream#3期间,当播放器控制模块212收到已经由用户通过遥控器输入的显示模式命令时,播放器控制模块212在对应的剪辑信息文件“00001.CLP”中搜索第四子标题流stream#3的StaticInfo()。
播放器控制模块212确定在图26A和图26B所示的第四子标题流stream#3的StaticInfo()中描述的configurable_flag(其为1)(步骤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()的显示模式。
在图43所示的子标题显示控制处理中,当由用户通过遥控器输入了新显示模式命令时,将新显示模式命令提供给图形处理模块219(步骤S349)。显示模式命令可以存储在例如组成存储器113(图1)的非易失性存储器中。可以将存储在非易失性存储器中的显示模式命令提供给图形处理模块219。
假定用户已经设置的显示模式命令作为图1所示的盘设备的初始设置被存储在非易失性存储器中,则当用户利用遥控器输入新显示模式命令时,存储在非易失性存储器中的显示模式命令被替换为该新显示模式命令,并且将存储在非易失性存储器中的新显示模式命令提供给图形处理模块219。在这种情况下,因为非易失性存储器存储了在上次再现完成时已经设置的显示模式命令,所以当再现下一个PlayList()时,用该显示模式命令来显示该子标题数据,而不需要通过遥控器输入显示命令。
在这种情况下,假定在非易失性存储器中存储的显示模式命令包括例如放大或者缩小子标题流的放大率或者缩小率。
如上所述,在子标题显示控制处理中,与用于子标题数据(其在当正在再现包括在剪辑信息文件Clip()(图10)中的基本流期间未发生改变)的StaticInfo()中包括的configurable_flag相对应地,确定是否允许从缺省显示模式开始改变子标题数据显示模式。当允许改变正被再现的子标题数据的缺省显示模式时,为子标题数据执行例如放大处理、缩小处理、或者颜色改变处理的显示处理。因此,可以控制子标题数据显示模式。
【捕获控制处理】
接下来,将参考图44所示的流程图描述控制对与视频流相对应的视频数据的捕获的捕获控制处理。图44还示出了这样的流程图,其描述了二次使用已经在捕获控制处理中捕获的视频数据的背景/屏幕保护程序处理。
当由用户通过输入接口115(图1)从遥控器将视频数据捕获命令输入到播放器控制模块212时,开始捕获控制处理。
换句话说,在捕获控制处理中,在步骤S371处,播放器控制模块212确定是否正在再现视频流。当步骤S371的确定结果表示没有正在再现视频流时,播放器控制模块212完成该捕获控制处理。
相反,当步骤S371的确定结果表示正在再现视频流时,流程前进到步骤S372。播放器控制模块212从与正被再现的视频流相对应的PlayList()(图5)获得capture_enable_flag_PlayList,并且从与正被再现的视频流相对应的剪辑信息文件Clip()(图10)获得capture_enable_flag_Clip。
如图5所示,PlayList()中的capture_enable_flag_PlayList表示是否允许二次使用对应于与PlayList()相对应地再现的视频流的视频数据(包括在PlayList()中的视频数据)。另一方面,如图10所示,剪辑信息文件Clip()中的capture_enable_flag_Clip表示是否允许二次使用对应于存储在与剪辑信息文件Clip()相对应的剪辑流文件中的视频流的视频数据。
在步骤S372之后,流程前进到步骤S373。与已经在步骤S373获得的capture_enable_flag_PlayList和capture_enable_flag_Clip相对应地,播放器控制模块212确定是否允许捕获当从输入接口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向图形处理模块219提供用于当从输入接口115输入捕获命令时正被再现的视频数据的捕获命令。此后,流程前进到步骤S376。
在步骤S376,与从播放器控制模块212收到的捕获命令相对应、图形处理模块219从视频解码器控制模块216捕获视频数据画面,将该画面存储在存储器113(图1)中,并完成该捕获控制处理。当capture_enable_flag包括多个位并且指定了它们的使用条件时,此时,执行对应的操作。换句话说,当捕获画面的大小受限时,捕获其大小被缩小的画面。当所使用的应用受限时,还记录表示该限制的标志。
如上所述,在捕获控制处理中,与当用户输入捕获命令时正被再现的视频流相对应的PlayList()(图5)和剪辑信息文件Clip()(图10)的capture_enable_flag_PlayList和capture_enable_flag_Clip被进行与(AND)操作。当与操作的结果是1,即capture_enable_flag_PlayList和capture_enable_flag_Clip二者均为1时(其表示允许二次使用视频数据),确定可以二次使用视频数据。因此,捕获该视频数据。
当与图25所示的第一PlayList#0的第一PlayItem#0相对应地再现视频流时,即正在再现用剪辑流文件“00001.PS”多路复用的视频流时,如果用户输入了捕获命令,则因为第一PlayList#0的capture_enable_flag_PlayList为1,且如图26A和图26B所示、与由第一PlayItem#0再现的剪辑流文件“00001.PS”相对应的剪辑信息文件“00001.CLP”的capture_enable_flag_Clip为1,所以确定可以二次使用正被再现的视频数据(与用剪辑流文件“00001.PS”多路复用的视频流相对应的视频数据),并且捕获该视频数据。
在与图25所示的第一PlayList#0的第二PlayItem#1相对应地再现视频流时,即正在再现用剪辑流文件“00002.PS”多路复用的视频流时,当用户输入了捕获命令时,因为第一PlayList#0的capture_enable_flag_PlayList为1,且如图26A和图26B所示、与对应于第二PlayItem#1表示的剪辑流文件“00002.PS”相对应的剪辑信息文件“00002.CLP”的capture_enable_flag_Clip为0,所以确定不能二次使用正被再现的视频数据(与用剪辑流文件“00002.PS”多路复用的视频流相对应的视频数据),并且不捕获该视频数据。
在与图25所示的第二PlayList#1中的PlayItem#0相对应地再现视频流时,即正在再现用剪辑流文件“00003.PS”多路复用的视频流时,当用户输入了捕获命令时,因为第二PlayList#1的capture_enable_flag_PlayList为0,且如图26A和图26B所示、与对应于第二PlayList#1中的PlayItem#0再现的剪辑流文件“00003.PS”相对应的剪辑信息文件“00003.CLP”的capture_enable_flag_Clip为1,所以确定不允许二次使用正被再现的视频数据(与用剪辑流文件“00003.PS”多路复用的视频流相对应的视频数据)。因此,不捕获该视频数据。
在这种情况下,当已经检查出第二PlayList#1的capture_enable_flag_PlayList为0时,可以确定不允许二次使用视频数据。因此,可以省略对如图26A和图26B所示、与对应于第二PlayList#1中的PlayItem#0再现的剪辑流文件“00003.PS”相对应的剪辑信息文件“00003.CLP”中的capture_enable_flag_Clip。
在捕获控制过处理中捕获并存储在存储器113中的画面可以在背景/屏幕保护程序处理中被二次使用。
例如在播放器控制模块212正在操作、但是没有正在再现基本流、即盘101还未被插入到盘驱动器102(图1)中或者早已再现了基本流期间,执行该背景/屏幕保护程序处理。
在背景/屏幕保护程序处理中,在步骤S381,播放器控制模块212控制图形处理模块219,以便显示在捕获控制处理中已经存储在存储器113中的画面。图形处理模块219在播放器控制模块212的控制下显示在捕获控制处理中已经存储在存储器113中的画面。
当图形处理模块219将存储在存储器113中的画面显示为静止画面时,实现了所谓的壁纸(背景)。当正在放大、缩小、并移动画面的同时显示画面时,实现了屏幕保护程序。可以由另一个独立的应用而不是播放器控制模块212来执行显示在捕获控制处理中存储在存储器113中的画面的背景/屏幕保护程序处理。
当将表示限制的标志添加到存储在存储器133中的画面时,与该标志相对应地限制所显示的画面。
如上所述,与例如大于视频存取单元的PlayList()或者PlayItem()相对应地获得表示是否允许二次使用正被再现的视频数据的capture_enable_flag_PlayList和capture_enable_flag_Clip。与capture_enable_flag_PlayList和capture_enable_flag_Clip相对应,确定是否允许二次使用正被再现的视频数据。当确定结果表示允许二次使用正被再现的视频数据时,捕获正被再现的视频数据,并且执行使用所捕获的视频数据的背景/屏幕保护程序处理。因此,可以控制视频数据的二次使用。
在图44所示的捕获控制处理中,PlayList()(图5)包括capture_enable_flag_PlayList,而且与由PlayItem()再现的剪辑流文件相对应的剪辑信息文件(图10)包括capture_enable_flag_Clip。利用capture_enable_flag_PlayList和capture_enable_flag_Clip二者,确定是否允许二次使用视频数据。作为选择,当PlayList()(图5)包括capture_enable_flag_PlayList,而且与由PlayItem()再现的剪辑流文件相对应的剪辑信息文件Clip()(图10)包括capture_enable_flag_Clip时,利用capture_enable_flag_PlayList或者capture_enable_flag_Clip,可以确定是否允许二次使用视频数据。
在图44所示的捕获控制处理中,在步骤S376,与从播放器控制模块212收到的捕获命令相对应,图形处理模块219仅仅从视频解码器控制模块216捕获一个视频数据画面。作为选择,图形处理模块219可以从视频解码器控制模块216捕获多个画面。换句话说,可以捕获视频解码器控制模块216输出的多个画面(作为活动画面的一系列多个画面)。在这种情况下,可以预先指定一次捕获的画面的数目。作为选择,可以为表示一次可以捕获的画面数目的信息扩展capture_enable_flag_PlayList和capture_enable_flag_Clip中的位。
在上述情况下,在PlayList()和剪辑信息文件Clip()中描述了表示是否允许二次使用视频数据的使用许可信息,即capture_enable_flag_PlayList和capture_enable_flag_Clip。利用该使用许可信息,确定是否允许二次使用与PlayList()相对应地再现的整个视频数据以及与用与剪辑信息文件Clip()相对应的剪辑流文件多路复用的视频流相对应的整个视频数据。使用许可信息可以描述任何单元的视频数据。利用该使用许可信息,可以确定是否允许二次使用在任何单元中的视频数据。
图45示出了包括使用许可信息的private_stream2_PES_payload()的语法。图46示出了包括使用许可信息的au_information()的语法。
除了作为使用许可信息的capture_enable_flag_ps2紧靠video_stream_id之前之外,图45所示的private_stream2_PES_payload()与图23所示的相同。同样地,除了作为使用许可信息的capture_enable_flag_AU紧靠pic_struct_copy之前之外,图46所示的au_information()与图24所示的相同。
在图45所示的private_stream2_PES_payload()中包括的capture_enable_flag_ps2表示是否允许二次使用在包括该private_stream2_PES_payload()的private_stream_2的PES_packet()之后、并在下一个private_straem_2的PES_packet()之前的视频流的视频数据。因此,利用包括在图45所示的private_stream2_PES_payload()中的capture_enable_flag_ps2,可以确定是否允许二次使用在特定可解码起始点之后并在下一个可解码起始点之前的视频数据。
此外,在图46所示的au_information()中包括的capture_enable_flag_AU表示是否允许二次使用在与capture_enable_flag_AU相对应的每个视频存取单元中的视频数据。因此,利用在图46所示的au_information()中包括的capture_enable_flag_AU,可以确定是否允许二次使用在每个视频存取单元(即每个画面)中的视频数据。
可以同时使用作为PlayList()的使用许可信息的capture_enable_flag_PlayList(图5)、作为剪辑信息文件Clip()的使用许可信息的capture_enable_flag_Clip(图10)、作为private_stream2_PES_payload()的使用许可信息的capture_enable_flag_ps2(图45)、和作为au_information()的使用许可信息的capture_enable_flag_AU(图46)中的至少两个。在这种情况下,利用作为使用许可信息的这些值中的至少两个的与操作的结果,可以确定是否允许二次使用视频数据的画面。
如图36所示的步骤S211所述,视频读取功能部分233在存储在缓冲器215A中的节目流中搜索包括图23或者图34所示的private_stream2_PES_payload的private_stream_2的PES_packet(),其中该private_stream2_PES_payload包括图46所示的au_information()。因此,当使用图45所示的private_stream2_PES_payload()(其包括capture_enable_flag_ps2)和图45所示的au_information()(其包括capture_enable_flag_AU)时,播放器控制模块212需要向视频读取功能部分233询问capture_enable_flag_ps2和capture_enable_flag_AU,以确定是否允许二次使用视频数据。
根据上述实施例,由软件执行处理序列。作为选择,这些处理可以由专用硬件执行。
此外,根据该实施例,视频解码器116(图1)是硬件解码器。作为选择,视频解码器116可以是软件解码器。这个关系适用于音频解码器117(图1)。
此外,根据该实施例,子标题解码器是软件解码器。作为选择,子标题解码器可以是硬件解码器。
Claims (3)
1.一种数据处理设备,用于处理编码数据,
所述编码数据包括:
编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得,
输出数据,与该编码后的视频数据相对应的视频数据同步输出,以及
使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,
该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,
该数据处理设备包括:
第一确定装置,用于确定该编码后的视频数据相对应的视频数据的输出是否晚于该输出数据的输出;
命令装置,用于当该第一确定装置的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对编码后的视频数据的一个存取单元的处理;
第二确定装置,用于与已由该命令装置促使跳过其处理的存取单元的编码后的视频数据的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该编码后的视频数据相对应的视频数据;以及
跳跃控制装置,用于当该第二确定装置已确定在对其它编码后的数据进行解码时、不参考与已由该命令装置促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已由该命令装置促使跳过其处理的存取单元的编码后的视频数据的处理。
2.根据权利要求1所述的数据处理设备,还包括:
输出控制装置,用于当所述第一确定装置已确定该输出数据的输出晚于该编码后的视频数据相对应的视频数据的输出时,连续输出该编码后的视频数据相对应的视频数据。
3.一种数据处理方法,用于处理编码数据,
所述编码数据包括:
编码后的视频数据,通过在作为存取单元的每个预定单元中编码视频数据而获得,
输出数据,与该编码后的视频数据相对应的视频数据同步输出,以及
使用信息,其后紧跟所述编码后的视频数据的至少一个可解码开始点,用于对该编码后的视频数据进行解码,
该使用信息包含参考信息,该参考信息表示当解码其他编码后的视频数据时、是否参考与在该使用信息和下一使用信息之间存在的至少一个存取单元的所述编码后的视频数据相对应的视频数据,
该数据处理方法包括:
第一确定步骤,确定该编码后的视频数据相对应的视频数据的输出是否晚于该输出数据的输出;
命令步骤,当该第一确定步骤的确定结果表示视频数据的输出晚于输出数据的输出时,使得跳过对一个存取单元的编码后的视频数据的处理;
第二确定步骤,与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的参考信息对应地,确定当解码其他编码后的视频数据时是否参考该编码后的视频数据相对应的视频数据;以及
当该第二确定步骤已确定在对其它编码后的数据进行解码时、不参考与已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据对应的视频数据时,跳过已在该命令步骤处促使跳过其处理的存取单元的编码后的视频数据的处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP174570/2004 | 2004-06-11 | ||
JP2004174570A JP4606070B2 (ja) | 2004-06-11 | 2004-06-11 | データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101002466A CN101002466A (zh) | 2007-07-18 |
CN100563320C true CN100563320C (zh) | 2009-11-25 |
Family
ID=35503502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800272575A Expired - Fee Related CN100563320C (zh) | 2004-06-11 | 2005-06-03 | 数据处理设备和数据处理方法 |
Country Status (12)
Country | Link |
---|---|
US (1) | US8107796B2 (zh) |
EP (1) | EP1761056A4 (zh) |
JP (1) | JP4606070B2 (zh) |
KR (1) | KR101154721B1 (zh) |
CN (1) | CN100563320C (zh) |
AU (1) | AU2005253423B2 (zh) |
BR (1) | BRPI0511958A (zh) |
CA (1) | CA2569949A1 (zh) |
MX (1) | MXPA06013877A (zh) |
MY (1) | MY146077A (zh) |
TW (1) | TW200606829A (zh) |
WO (1) | WO2005122566A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2009845A1 (en) * | 2007-06-07 | 2008-12-31 | Thomson Licensing | Method and apparatus for error messaging in a multimedia network |
JP6809028B2 (ja) * | 2016-08-09 | 2021-01-06 | 富士通株式会社 | 情報処理装置、行動支援プログラムおよび行動支援方法 |
CN117560501B (zh) * | 2024-01-11 | 2024-04-12 | 杭州国芯科技股份有限公司 | 一种多标准视频解码器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3358835B2 (ja) * | 1992-12-14 | 2002-12-24 | ソニー株式会社 | 画像符号化方法及び装置 |
US5559999A (en) * | 1994-09-09 | 1996-09-24 | Lsi Logic Corporation | MPEG decoding system including tag list for associating presentation time stamps with encoded data units |
US5594660A (en) * | 1994-09-30 | 1997-01-14 | Cirrus Logic, Inc. | Programmable audio-video synchronization method and apparatus for multimedia systems |
JP3100308B2 (ja) * | 1995-03-14 | 2000-10-16 | 日本ビクター株式会社 | 画像及び音声情報の再生システム |
JP3063838B2 (ja) * | 1997-10-02 | 2000-07-12 | 日本電気株式会社 | オーディオ・ビデオ同期再生装置および方法 |
JP3818819B2 (ja) | 1999-02-23 | 2006-09-06 | 松下電器産業株式会社 | 画像符号化方式変換装置、画像符号化方式変換方法および記録媒体 |
JP4292654B2 (ja) * | 1999-03-19 | 2009-07-08 | ソニー株式会社 | 記録装置および方法、再生装置および方法、並びに記録媒体 |
-
2004
- 2004-06-11 JP JP2004174570A patent/JP4606070B2/ja not_active Expired - Fee Related
-
2005
- 2005-06-03 AU AU2005253423A patent/AU2005253423B2/en not_active Ceased
- 2005-06-03 US US11/570,262 patent/US8107796B2/en not_active Expired - Fee Related
- 2005-06-03 CN CNB2005800272575A patent/CN100563320C/zh not_active Expired - Fee Related
- 2005-06-03 MX MXPA06013877A patent/MXPA06013877A/es active IP Right Grant
- 2005-06-03 KR KR20067025927A patent/KR101154721B1/ko not_active IP Right Cessation
- 2005-06-03 CA CA 2569949 patent/CA2569949A1/en not_active Abandoned
- 2005-06-03 EP EP05748465A patent/EP1761056A4/en not_active Withdrawn
- 2005-06-03 WO PCT/JP2005/010627 patent/WO2005122566A1/ja active Application Filing
- 2005-06-03 BR BRPI0511958-8A patent/BRPI0511958A/pt not_active IP Right Cessation
- 2005-06-06 TW TW094118595A patent/TW200606829A/zh not_active IP Right Cessation
- 2005-06-09 MY MYPI20052621 patent/MY146077A/en unknown
Also Published As
Publication number | Publication date |
---|---|
AU2005253423B2 (en) | 2009-10-29 |
CN101002466A (zh) | 2007-07-18 |
EP1761056A4 (en) | 2012-07-04 |
KR20070032677A (ko) | 2007-03-22 |
TW200606829A (en) | 2006-02-16 |
MXPA06013877A (es) | 2007-03-07 |
US20080049138A1 (en) | 2008-02-28 |
BRPI0511958A (pt) | 2008-01-22 |
TWI317511B (zh) | 2009-11-21 |
KR101154721B1 (ko) | 2012-07-06 |
EP1761056A1 (en) | 2007-03-07 |
JP4606070B2 (ja) | 2011-01-05 |
WO2005122566A1 (ja) | 2005-12-22 |
MY146077A (en) | 2012-06-29 |
CA2569949A1 (en) | 2005-12-22 |
AU2005253423A1 (en) | 2005-12-22 |
JP2005354522A (ja) | 2005-12-22 |
US8107796B2 (en) | 2012-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101112086B (zh) | 数据记录设备、数据记录方法、数据处理设备和数据处理方法 | |
CN101111896B (zh) | 数据记录装置、数据记录方法、数据处理装置、数据处理方法 | |
CN1965365B (zh) | 数据处理设备和数据处理方法 | |
CN100518277C (zh) | 数据处理装置及数据处理方法 | |
CN100556116C (zh) | 数据处理设备、数据处理方法、程序、程序记录介质、数据记录介质和数据结构 | |
CN101002268B (zh) | 数据处理设备和数据处理方法 | |
CN101111897B (zh) | 数据处理装置和数据处理方法 | |
CN101002467B (zh) | 数据处理设备和方法 | |
CN100563320C (zh) | 数据处理设备和数据处理方法 | |
CN101002264A (zh) | 数据处理装置和数据处理方法、程序和程序记录介质、数据记录介质和数据结构 | |
KR101169488B1 (ko) | 데이터 처리 장치, 데이터 처리 방법, 프로그램 기록 매체 및 데이터 기록 매체 | |
KR20070020503A (ko) | 데이터 처리 장치 및 데이터 처리 방법, 프로그램 및프로그램 기록 매체, 데이터 기록 매체, 및, 데이터 구조 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091125 Termination date: 20130603 |