JP2005354520A - データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体 - Google Patents

データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体 Download PDF

Info

Publication number
JP2005354520A
JP2005354520A JP2004174548A JP2004174548A JP2005354520A JP 2005354520 A JP2005354520 A JP 2005354520A JP 2004174548 A JP2004174548 A JP 2004174548A JP 2004174548 A JP2004174548 A JP 2004174548A JP 2005354520 A JP2005354520 A JP 2005354520A
Authority
JP
Japan
Prior art keywords
stream
data
video
control module
audio
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004174548A
Other languages
English (en)
Other versions
JP4586429B2 (ja
Inventor
Yasushi Fujinami
靖 藤波
Tetsuya Hirano
哲也 平野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP2004174548A priority Critical patent/JP4586429B2/ja
Application filed by Sony Corp filed Critical Sony Corp
Priority to CN2005800272857A priority patent/CN101002467B/zh
Priority to BRPI0511918-9A priority patent/BRPI0511918A/pt
Priority to EP05743603A priority patent/EP1768403A4/en
Priority to PCT/JP2005/009435 priority patent/WO2005122570A1/ja
Priority to US11/629,078 priority patent/US8213781B2/en
Priority to HK08107869.5A priority patent/HK1112778A1/xx
Priority to TW094117303A priority patent/TW200606827A/zh
Publication of JP2005354520A publication Critical patent/JP2005354520A/ja
Priority to HK07109878.1A priority patent/HK1101950A1/xx
Application granted granted Critical
Publication of JP4586429B2 publication Critical patent/JP4586429B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/105Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/206Game information storage, e.g. cartridges, CD ROM's, DVD's, smart cards
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/206Game information storage, e.g. cartridges, CD ROM's, DVD's, smart cards
    • A63F2300/207Game information storage, e.g. cartridges, CD ROM's, DVD's, smart cards for accessing game resources from local storage, e.g. streaming content from DVD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2562DVDs [digital versatile discs]; Digital video discs; MMCDs; HDCDs

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)

Abstract

【課題】 符号化ビデオデータを解析しなくても、アクセスユニット単位での符号化ビデオデータの読み出しを可能とする。
【解決手段】 ステップS211において、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置されている、符号化ビデオデータのデコードに利用されるprivate_stream_2のパケットが探索される。そして、ステップS216において、private_stream_2のパケットに含まれる、そのprivate_stream_2のパケットから次のprivate_stream_2のパケットまでの間に配置されているアクセスユニットそれぞれのサイズを表すAU_lengthに基づき、アクセスユニット単位で符号化ビデオデータが読み出される。本発明は、例えば、DVDを利用したゲーム装置などに適用できる。
【選択図】図36

Description

本発明は、データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体に関し、特に、例えば、利便性等の高いデータ処理を可能とするデータ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体に関する。
近年、大容量で、ランダムアクセスが可能な記録メディアとして、例えば、DVD(Digital Versatile Disc)が普及し、さらに、DVDを利用して各種の処理を行うDVD装置も広く普及している。
DVD装置としては、例えば、DVDに対して、テレビジョン放送番組のデータ等の記録再生を行うDVDレコーダや、DVDに地図情報等を記録し、その地図情報の表示を行うカーナビゲーションシステム、DVDにゲームのプログラム等を記録し、そのプログラムを実行するゲーム装置などがある。
なお、DVDについては、例えば、非特許文献1に、その詳細が記載されている。
DVD Specifications for Read-Only Disc Part 3; Version 1.1 Dcecmber 1997
DVDには、上述したように、大量のデータを記録することができる。従って、DVD装置には、そのような大量のデータについて、利便性等の高いデータ処理を行うことが要請される。
本発明は、このような状況に鑑みてなされたものであり、利便性等の高いデータ処理を行うことができるようにするものである。
本発明のデータ処理装置は、アクセスユニット単位の符号化ビデオデータと、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、符号化ビデオデータのデコードに利用される利用情報とを含む符号化データから、利用情報を探索する探索手段と、符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、利用情報に含まれるサイズ情報に基づき、符号化データからアクセスユニット単位で符号化ビデオデータを読み出し、ビデオデコーダに供給する供給手段とを備えることを特徴とする。
本発明のデータ処理方法は、アクセスユニット単位の符号化ビデオデータと、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、符号化ビデオデータのデコードに利用される利用情報とを含む符号化データから、利用情報を探索する探索ステップと、符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、利用情報に含まれるサイズ情報に基づき、符号化データからアクセスユニット単位で符号化ビデオデータを読み出し、ビデオデコーダに供給する供給ステップとを含むことを特徴とする。
本発明のプログラムは、アクセスユニット単位の符号化ビデオデータと、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、符号化ビデオデータのデコードに利用される利用情報とを含む符号化データから、利用情報を探索する探索ステップと、符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、利用情報に含まれるサイズ情報に基づき、符号化データからアクセスユニット単位で符号化ビデオデータを読み出し、ビデオデコーダに供給する供給ステップとを含むことを特徴とする。
本発明のプログラム記録媒体に記録されているプログラムは、アクセスユニット単位の符号化ビデオデータと、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、符号化ビデオデータのデコードに利用される利用情報とを含む符号化データから、利用情報を探索する探索ステップと、符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、利用情報に含まれるサイズ情報に基づき、符号化データからアクセスユニット単位で符号化ビデオデータを読み出し、ビデオデコーダに供給する供給ステップとを含むことを特徴とする。
本発明のデータ記録媒体は、符号化データが、所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、符号化ビデオデータのデコードに利用される利用情報とを含み、利用情報が、その利用情報から次の利用情報までの間に配置されている1以上のアクセスユニットそれぞれのサイズを表すサイズ情報を含むことを特徴とする。
本発明のデータ処理装置およびデータ処理方法、並びにプログラムおよびプログラム記録媒体に記録されているプログラムにおいては、符号化データから、利用情報が探索される。そして、符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、利用情報に含まれるサイズ情報に基づき、符号化データからアクセスユニット単位で符号化ビデオデータが読み出され、ビデオデコーダに供給される。
本発明のデータ記録媒体においては、所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、符号化ビデオデータのデコードに利用される利用情報とを含む符号化データが記録されており、利用情報が、その利用情報から次の利用情報までの間に配置されている1以上のアクセスユニットそれぞれのサイズを表すサイズ情報を含んでいる。
本発明によれば、利便性等の高いデータ処理が可能となる。特に、符号化ビデオデータを解析しなくても、アクセスユニット単位での符号化ビデオデータの読み出しが可能となる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
請求項1に記載のデータ処理装置は、
符号化データを処理するデータ処理装置(例えば、図1のディスク装置)において、
前記符号化データは、
所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報(例えば、図23のprivate_stream2_PES_payload())と
を含み、
前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報(例えば、図24のAU_length)を含み、
前記符号化データから、前記利用情報を探索する探索手段(例えば、図36のステップS211の処理を行う図3のビデオ読み出し機能部233)と、
前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給手段(例えば、図36のステップS216の処理を行う図3のビデオ読み出し機能部233)と
を備えることを特徴とする。
請求項2に記載のデータ処理装置は、
前記利用情報は、その利用情報から次の利用情報までの間に配置されている前記アクセスユニットの数を表す数情報(例えば、図24のnumber_of_access_unit)を、さらに含み、
前記供給手段は、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給することを、前記利用情報に含まれる前記数情報が表す数だけ繰り返す
ことを特徴とする。
請求項4に記載のデータ処理装置は、
符号化データを処理するデータ処理方法において、
前記符号化データは、
所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報(例えば、図23のprivate_stream2_PES_payload())と
を含み、
前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報(例えば、図24のAU_length)を含み、
前記符号化データから、前記利用情報を探索する探索ステップ(例えば、図36のステップS211)と、
前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給ステップ(例えば、図36のステップS216)と
を含むことを特徴とする。
請求項5に記載のプログラム、および請求項6に記載のプログラム記録媒体に記録されているプログラムは、
符号化データを処理するデータ処理を、コンピュータに行わせるプログラムにおいて、
前記符号化データは、
所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報(例えば、図23のprivate_stream2_PES_payload())と
を含み、
前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報(例えば、図24のAU_length)を含み、
前記符号化データから、前記利用情報を探索する探索ステップ(例えば、図36のステップS211)と、
前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給ステップ(例えば、図36のステップS216)と
を含むことを特徴とする。
請求項7に記載のデータ記録媒体は、
符号化データが記録されているデータ記録媒体(例えば、図1のディスク101)において、
前記符号化データは、
所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報(例えば、図23のprivate_stream2_PES_payload())と
を含み、
前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報(例えば、図24のAU_length)を含む
ことを特徴とする。
以下、図面を参照して、本発明の実施の形態について説明する。
[ハードウェア構成]
図1は、本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。
図1のディスク装置は、例えば、ディスクプレーヤや、ゲーム装置、カーナビゲーションシステムその他に適用することができる。
図1のディスク装置において、ディスク101は、例えば、DVDなどの光ディスク、あるいは光磁気ディスク、磁気ディスクなどであり、ビデオデータや、オーディオデータ、字幕データなどのコンテンツデータ、さらには、コンテンツデータを再生するのに必要なデータが記録されている。
なお、ディスク101に記録されるデータ(記録データ)には、必要に応じて、コンピュータが実行可能なプログラムも含まれる。また、本実施の形態では、記録媒体として、ディスク状の記録媒体であるディスク101を採用するが、その他、記録媒体としては、例えば、半導体メモリや、テープ状の記録媒体であってもよい。さらに、図1のディスク装置には、遠方にあるディスク101から読み出されて送信されてくるデータを入力することができる。即ち、ディスク101からのデータの読み出しは、ディスク装置に接続した別の装置で行い、その別の装置で読み出されたデータを、ディスク装置で受信して処理することができる。また、ディスク装置では、ディスク101に記録されたデータと同様のデータをストレージに記憶しているサーバ等から、インターネット等のネットワークを介して、データの配信を受けて処理することも可能である。さらに、ディスク装置では、サーバその他の装置からのデータを受信し、一旦、ディスク101に記録してから、そのディスク101に記録されたデータを処理することも可能である。
ディスクドライブ102には、ディスク101が着脱可能になっている。ディスクドライブ102は、図示せぬインターフェースを内蔵し、そのインターフェースを通じて、ドライブインターフェース114に接続されている。ディスクドライブ102は、そこに装着されたディスク101を駆動し、ドライブインターフェース114からの読み出し等の命令にしたがって、ディスク101からデータを読み出して、ドライブインターフェース114に供給する等の処理を行う。
バス111には、CPU(Central Processing Unit)112、メモリ113、ドライブインターフェース114、入力インターフェース115、ビデオデコーダ116、オーディオデコーダ117、ビデオ出力インターフェース118、オーディオ出力インターフェース119が接続されている。
CPU112およびメモリ113は、コンピュータシステムを形成している。即ち、CPU112は、メモリ113に記憶されたプログラムである、後述するソフトウェアモジュール群を実行し、ディスク装置全体を制御するとともに、後述する各種の処理を行う。メモリ113は、CPU112が実行するソフトウェアモジュール群を記憶している。また、メモリ113は、CPU112の動作上必要なデータを一時記憶する。なお、メモリ113は、不揮発性メモリのみ、または揮発性メモリと不揮発性メモリとの組み合わせで構成することが可能である。また、図1のディスク装置に、ハードディスクを設け、そのハードディスクに、CPU112が実行するソフトウェアモジュール群を記録(インストール)しておく場合には、メモリ113は、揮発性メモリのみで構成することが可能である。
ここで、CPU112が実行するプログラム(ソフトウェアモジュール群)は、ディスク装置に内蔵されている記録媒体としてのメモリ113に予め記録しておく(記憶させておく)ことができる。
あるいはまた、プログラムは、ディスク101、さらには、ディスク101以外のフレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク、磁気ディスク、メモリカードなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、メモリ113にあらかじめ記憶させておくこと、あるいは、上述したようなリムーバブル記録媒体からディスク装置にインストールすることができる。また、プログラムは、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、ディスク装置に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、ディスク装置に有線で転送し、ディスク装置では、そのようにして転送されてくるプログラムを、入力インターフェース115で受信し、内蔵するメモリ113にインストールすることができる。
さらに、プログラムは、1のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
ドライブインターフェース114は、CPU112の制御の下、ディスクドライブ102を制御し、これにより、ディスクドライブ102がディスク101から読み出したデータを、バス111を介して、CPU112や、メモリ113、ビデオデコーダ116、オーディオデコーダ117などに供給する。
入力インターフェース115は、図示せぬキー(ボタン)や、リモコン(リモートコントローラ)がユーザに操作されることによって供給される信号を受信し、バス111を介して、CPU112に供給する。なお、入力インターフェース115は、その他、例えば、モデム(ADSL(Asymmetric Digital Subscriber Line)モデムを含む)や、NIC(Network Interface Card)などの通信インターフェースとしても機能する。
ビデオデコーダ116は、ディスクドライブ102によってディスク101から読み出され、ドライブインターフェース114およびバス111を介して供給される、ビデオデータの符号化データ(符号化オーディオデータ)をデコードし、その結果得られるビデオデータを、バス111を介して、CPU112やビデオ出力インターフェース118に供給する。
オーディオデコーダ117は、ディスクドライブ102によってディスク101から読み出され、ドライブインターフェース114およびバス111を介して供給される、オーディオデータの符号化データ(符号化オーディオデータ)をデコードし、その結果得られるオーディオデータを、バス111を介して、CPU112やオーディオ出力インターフェース119に供給する。
ビデオ出力インターフェース118は、バス111を介して供給されるビデオデータに必要な処理を施し、ビデオ出力端子120から出力する。オーディオ出力インターフェース119は、バス111を介して供給されるオーディオデータに必要な処理を施し、オーディオ出力端子121から出力する。
ビデオ出力端子120は、図示せぬCRT(Cathode Ray Tube)や、液晶パネル等のビデオ出力装置に接続されており、従って、ビデオ出力端子120から出力されるビデオデータは、ビデオ出力装置に供給されて表示される。オーディオ出力端子121は、図示せぬスピーカやアンプなどのオーディオ出力装置に接続されており、従って、オーディオ出力端子121から出力されるオーディオデータは、オーディオ出力装置に供給されて出力される。
なお、ディスク装置から、ビデオ出力装置とオーディオ出力装置へのビデオデータとオーディオデータの供給は、有線または無線のいずれによって行うことも可能である。
[ソフトウェアモジュール群の構成]
次に、図2は、図1のCPU112が実行するソフトウェアモジュール群の構成例を示している。
CPU112が実行するソフトウェアモジュール群は、オペレーティングシステム(OS)201と、アプリケーションプログラムとしてのビデオコンテンツ再生プログラム210に大別される。
「オペレーティングシステム201」
オペレーティングシステム201は、ディスク装置の電源が投入されると最初に起動し(CPU112がオペレーティングシステム201を実行し)、初期設定等の必要な処理を行い、アプリケーションプログラムであるビデオコンテンツ再生プログラム210を呼び出す。
オペレーティングシステム201は、ビデオコンテンツ再生プログラム210に対して、ファイルの読み出し等のインフラ(インフラストラクチャ(infrastructure))的なサービスを提供する。即ち、オペレーティングシステム201は、例えば、ファイルの読み出しに関しては、ビデオコンテンツ再生プログラム210からのファイルの読み出しのリクエストに対して、ドライブインターフェース114を介してディスクドライブ102を操作して、ディスク101のデータを読み出し、ビデオコンテンツ再生プログラム210に渡すサービスを提供する。また、オペレーティングシステム201は、ファイルシステムの解釈等も行う。
なお、オペレーティングシステム201は、マルチタスク処理の機能を備えており、複数のソフトウェアモジュールを、時分割で(見かけ上)同時に動作させることができる。即ち、ビデオコンテンツ再生プログラム210は、幾つかのソフトウェアモジュールで構成されるが、各ソフトウェアモジュールは、並列で動作することができる。
「ビデオコンテンツ再生プログラム210」
ビデオコンテンツ再生プログラム210は、スクリプト制御モジュール211、プレイヤ制御モジュール212、コンテンツデータ供給モジュール213、デコード制御モジュール214、バッファ制御モジュール215、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218、グラフィックス処理モジュール219、ビデオ出力モジュール220、およびオーディオ出力モジュール221で構成されている。
ビデオコンテンツ再生プログラム210は、ディスク101の再生にあたって中心的な役割を果たすソフトウェアであり、ディスク101がディスクドライブ102に装着(挿入)されると、そのディスク101が、コンテンツが記録された後述するフォーマットのディスクであるかを確認する。さらに、ビデオコンテンツ再生プログラム210は、ディスク101から、後述するスクリプトファイルを読み出して実行し、また、ディスク101から、そのディスク101に記録されたコンテンツを再生するのに必要なメタデータ(データベース情報)のファイルを読み出し、そのメタデータに基づいて、コンテンツの再生を制御する。
以下、図2のビデオコンテンツ再生プログラム210を構成するソフトウェアモジュールについて説明する。なお、図2においては、原則として、実線の矢印は、コンテンツのデータを表し、点線の矢印は、制御のデータを表す。
「スクリプト制御モジュール211」
スクリプト制御モジュール211は、ディスク101に記録されたスクリプトファイルに記述されているスクリプトプログラム(スクリプト)を解釈して実行する。スクリプトプログラムでは、例えば、「グラフィクス処理モジュール219を操作し、メニュー等の画像を作成して表示する」、「リモコン等のUI(User Interface)からの信号に従いメニューの表示を変更する(例えば、メニュー上のカーソルを移動する等)」、「プレイヤ制御モジュール212を制御する」等の動作を記述することができる。
「プレイヤ制御モジュール212」
プレイヤ制御モジュール212は、ディスク101に記録されているメタデータ(データベース情報)等を参照し、コンテンツの再生に関する制御を行う。即ち、プレイヤ制御モジュール212は、例えば、ディスク101に記録されている、後述するPlayList()やClip()を解析し、その解析結果にしたがって、コンテンツデータ供給モジュール213や、デコード制御モジュール214、バッファ制御モジュール215を制御する。また、プレイヤ制御モジュール212は、スクリプト制御モジュール211や入力インターフェース115からの指示にしたがい、再生対象のストリームを切り替える、後述するストリーム切り替え等の制御を行う。さらに、プレイヤ制御モジュール214は、デコード制御モジュール214から時刻を取得し、時刻表示や、後述するマーク(Mark())の処理等を行う。
「コンテンツデータ供給モジュール213」
コンテンツデータ供給モジュール213は、プレイヤ制御モジュール212の制御にしたがい、あるいは、バッファ制御モジュール215に蓄積されたデータの量に基づき、ディスク101からのコンテンツのデータやメタデータ等の読み出しを、オペレーティングシステム201に要求する。
なお、オペレーティングシステム201が、コンテンツデータ供給モジュール213からの要求に応じてディスク101から読み出したメタデータ等は、必要なモジュールに供給される。また、オペレーティングシステム201が、コンテンツデータ供給モジュール213からの要求に応じてディスク101から読み出したコンテンツのデータは、バッファ制御モジュール215に供給される。
「デコード制御モジュール214」
デコード制御モジュール214は、プレイヤ制御モジュール212からの制御にしたがい、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218の動作を制御する。また、デコード制御モジュール214は、時刻を計時する計時部214Aを内蔵し、ビデオデコーダ制御モジュール216の制御によって出力されるビデオデータの出力と、そのビデオデータと同期して出力されるべきデータ(出力データ)の出力、即ち、ここでは、オーディオデコーダ制御モジュール217の制御によって出力されるオーディオデータの出力との同期を管理する。
「バッファ制御モジュール215」
バッファ制御モジュール215は、図1のメモリ113の記憶領域の一部であるバッファ215Aを内蔵しており、そのバッファ215Aに、コンテンツデータ供給モジュール213がオペレーティングシステム201に要求を行うことによってディスク101から読み出されたコンテンツのデータを一時記憶する。
また、バッファ制御モジュール215は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218の要求にしたがって、バッファ215Aに記憶されたデータを、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218に供給する。
即ち、バッファ制御モジュール215は、後述する図3で説明するビデオ読み出し機能部233、オーディオ読み出し機能部234、および字幕読み出し機能部235を内蔵している。そして、バッファ制御モジュール215は、ビデオデコーダ制御モジュール216からのデータの要求を、ビデオ読み出し機能部233で処理することにより、バッファ215Aに記憶されたデータを、ビデオデコーダ制御モジュール216に供給する。同様に、バッファ制御モジュール215は、オーディオデコーダ制御モジュール217からのデータの要求を、オーディオ読み出し機能部234で処理することにより、バッファ215Aに記憶されたデータを、オーディオデコーダ制御モジュール217に供給するとともに、字幕デコーダ制御モジュール218からのデータの要求を、字幕読み出し機能部235で処理することにより、バッファ215Aに記憶されたデータを、字幕デコーダ制御モジュール218に供給する。
「ビデオデコーダ制御モジュール216」
ビデオデコーダ制御モジュール216は、バッファ制御モジュール215内のビデオ読み出し機能部233(図3)を操作して、ビデオデータを符号化したデータ(ビデオ符号化データ)を、ビデオアクセスユニット単位で、バッファ制御モジュール215のバッファ215Aから読み出し、図1のビデオデコーダ116に供給する。また、ビデオデコーダ制御モジュール216は、ビデオデコーダ116を制御し、ビデオアクセスユニット単位のデータをデコードさせる。さらに、ビデオデコーダ制御モジュール216は、ビデオデコーダ116でのデコードの結果得られるビデオデータを、グラフィクス処理モジュール219に供給する。
ここで、ビデオアクセスユニットとは、例えば、ビデオデータの1ピクチャ(1フレームまたは1フィールド)分である。
「オーディオデコーダ制御モジュール217」
オーディオデコーダ制御モジュール217は、バッファ制御モジュール215内のオーディオ読み出し機能部234(図3)を操作して、オーディオデータを符号化したデータ(オーディオ符号化データ)を、オーディオアクセスユニット単位で、バッファ制御モジュール215のバッファ215Aから読み出し、図1のオーディオデコーダ117に供給する。また、オーディオデコーダ制御モジュール217は、オーディオデコーダ117を制御し、オーディオアクセスユニット単位のデータをデコードさせる。さらに、オーディオデコーダ制御モジュール217は、オーディオデコーダ117でのデコードの結果得られるオーディオデータを、オーディオ出力モジュール221に供給する。
ここで、オーディオアクセスユニットとは、オーディオデータの所定のデータ量分(例えば、1ピクチャに同期して出力される分)である。本実施の形態では、オーディオアクセスユニットは、例えば、既知の固定長であるとする。
「字幕デコーダ制御モジュール218」
字幕デコーダ制御モジュール218は、バッファ制御モジュール215内の字幕読み出し機能部235(図3)を操作して、字幕データを符号化したデータ(字幕符号化データ)を、字幕アクセスユニット単位で、バッファ制御モジュール215のバッファ215Aから読み出す。また、字幕デコーダ制御モジュール218は、内部に、図示せぬ字幕デコードソフトウェアを備えており、バッファ215Aから読み出したデータをデコードする。さらに、字幕デコーダ制御モジュール218は、そのデコードの結果得られる字幕データ(字幕の画像データ)を、グラフィクス処理モジュール219に供給する。
ここで、字幕アクセスユニットとは、字幕データの所定のデータ量分(例えば、1ピクチャに同期して出力される分)である。本実施の形態では、字幕アクセスユニットのサイズは、例えば、その字幕アクセスユニットの先頭に記述されていることとする。
「グラフィクス処理モジュール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(First In First Out)220A(バッファ)として使用し、グラフィクス処理モジュール219からのビデオデータを一時的に記憶し、また、そのFIFO220Aに記憶されたビデオデータを適宜読み出して、ビデオ出力端子120(図1)に出力する。
「オーディオ出力モジュール221」
オーディオ出力モジュール221は、図1のメモリ113の一部を排他的に占有してFIFO221A(バッファ)として使用し、オーディオデコーダ制御モジュール217(オーディオデコーダ117)からのオーディオデータを一時的に記憶し、また、そのFIFO221Aに記憶されたオーディオデータを適宜読み出して、オーディオ出力端子121(図1)に出力する。
さらに、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータが、左チャネルが「主音声」のオーディオデータで、右チャネルの「副音声」のオーディオデータであるデュアル(Dual)(二ヶ国語)モードのオーディオデータである場合、あらかじめ指定された音声出力モードに従って、オーディオデコーダ制御モジュール217からのオーディオデータを、オーディオ出力端子121に出力する。
即ち、音声出力モードとして、例えば、「主音声」が指定されているときには、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータのうちの左チャネルのオーディオデータを、右チャネルのオーディオデータとしてコピーし、その左チャネルと右チャネルのオーディオデータ(「主音声」のオーディオデータ)を、オーディオ出力端子121に出力する。また、音声出力モードとして、「副音声」が指定されているときには、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータのうちの右チャネルのオーディオデータを、左チャネルのオーディオデータとしてコピーし、その左チャネルと右チャネルのオーディオデータ(「副音声」のオーディオデータ)を、オーディオ出力端子121に出力する。さらに、音声出力モードとして、「主・副」が指定されているときには、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータを、そのまま、オーディオ出力端子121に出力する。
なお、オーディオデコーダ制御モジュール217からのオーディオデータが、ステレオ(Stereo)モードのオーディオデータである場合、オーディオ出力モジュール221は、音声出力モードの指定にかかわらず、オーディオデコーダ制御モジュール217からのオーディオデータを、そのまま、オーディオ出力端子121に出力する。
ここで、音声出力モードの指定は、例えば、ビデオコンテンツ再生プログラム210が生成するメニューが表示された画面等において、ユーザがリモコン等を操作することにより対話的に行うことができる。
[バッファ制御モジュール215の構成]
次に、図3は、図2のバッファ制御モジュール215の構成例を示している。
バッファ制御モジュール215は、図1のメモリ113の一部を、バッファ215Aとして排他的に使用し、そのバッファ215Aに、ディスク101から読み出されたデータを一時記憶させる。また、バッファ制御モジュール215は、バッファ215Aに記憶されたデータを読み出して、図2のビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218に供給する。
即ち、バッファ制御モジュール215は、バッファ215Aの他、メモリ113の一部であるデータ先頭ポインタ記憶部231、およびデータ書き込みポインタ記憶部232を有するとともに、内部モジュールとして、ビデオ読み出し機能部233、オーディオ読み出し機能部234、字幕読み出し機能部235を有する。
バッファ215Aは、例えば、リングバッファであり、ディスク101から読み出されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形で、最新のデータを、いわば無限ループ状に記憶していく。
データ先頭ポインタ記憶部231は、バッファ215Aに記憶されたデータのうち、まだ、バッファ215Aから読み出されていない最も古いデータが記憶されている位置(アドレス)を指すデータ先頭ポインタを記憶する。
データ書き込みポインタ記憶部232は、ディスク101から読み出された最新のデータが書き込まれるバッファ215Aの位置(アドレス)を指す書き込みポインタを記憶する。
ここで、データ書き込みポインタが指す位置は、バッファ215Aに、ディスク101から読み出されたデータが記憶されるごとに、図中、右回り(時計回り)に更新されていき、データ先頭ポインタが指す位置は、バッファ215Aからのデータの読み出しに応じて、図中、右回りに更新されていく。したがって、バッファ215Aに記憶されたデータのうち、いわば有効なデータは、データ先頭ポインタが指す位置から、右回りに、データ書き込みポインタが指す位置までに記憶されているデータである。
ビデオ読み出し機能部233は、図2のビデオデコーダ制御モジュール216からの要求に応じて、バッファ215Aからビデオストリーム(ビデオデータに関するエレメンタリストリーム)を読み出し、ビデオデコーダ制御モジュール216に供給する。オーディオ読み出し機能部234も、図2のオーディオデコーダ制御モジュール217からの要求に応じて、バッファ215Aからオーディオストリーム(オーディオデータに関するエレメンタリストリーム)を読み出し、オーディオデコーダ制御モジュール217に供給する。字幕読み出し機能部235も、図2の字幕デコーダ制御モジュール218からの要求に応じて、バッファ215Aから字幕ストリーム(字幕データに関するエレメンタリストリーム)を読み出し、字幕デコーダ制御モジュール218に供給する。
即ち、光ディスク101には、例えば、MPEG(Moving Picture Experts Group)2の規格に準拠したプログラムストリーム(MPEG2-System Program Stream)が記録されており、バッファ215Aには、光ディスク101から読み出されたプログラムストリームが記憶される。このプログラムストリームは、ビデオストリームや、オーディオストリーム、字幕ストリーム等の1以上のエレメンタリストリームが時分割多重されている。ビデオ読み出し機能部233は、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、ビデオストリームを分離して読み出す。
同様に、オーディオ読み出し機能部234も、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、オーディオストリームを分離して読み出す。字幕読み出し機能部235も、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、字幕ストリームを分離して読み出す。
ここで、ビデオ読み出し機能部233は、図1のメモリ113の一部であるビデオ読み出しポインタ記憶部241、stream_idレジスタ242、およびau_information()レジスタ243を有している。
ビデオ読み出しポインタ記憶部241は、バッファ215Aの、ビデオストリームが記憶された位置(アドレス)を指すビデオ読み出しポインタを記憶し、ビデオ読み出し機能部233は、バッファ215Aの、ビデオ読み出しポインタが指す位置に記憶されているデータを、ビデオストリームとして読み出す。stream_idレジスタ242は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すビデオストリームを識別(特定)するための後述するstream_idを記憶する。au_information()レジスタ243は、バッファ215Aからビデオストリームを読み出すために必要な(ビデオストリームの読み出しに利用される)データである後述するau_information()を記憶する。
オーディオ読み出し機能部234は、図1のメモリ113の一部であるオーディオ読み出しポインタ記憶部251、stream_idレジスタ252、およびprivate_stream_idレジスタ253を有している。
オーディオ読み出しポインタ記憶部251は、バッファ215Aの、オーディオストリームが記憶された位置(アドレス)を指すオーディオ読み出しポインタを記憶し、オーディオ読み出し機能部234は、バッファ215Aの、オーディオ読み出しポインタが指す位置に記憶されているデータを、オーディオストリームとして読み出す。stream_idレジスタ252とprivate_stream_idレジスタ253は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すオーディオストリームを識別するための後述するstream_idとprivate_stream_idを、それぞれ記憶する。
字幕読み出し機能部235は、図1のメモリ113の一部である字幕読み出し機能フラグ記憶部261、字幕読み出しポインタ記憶部262、stream_idレジスタ263、およびprivate_stream_idレジスタ264を有している。
字幕読み出し機能フラグ記憶部261は、字幕読み出し機能フラグを記憶する。字幕読み出し機能フラグ記憶部261に記憶された字幕読み出し機能フラグが、例えば0である場合、字幕読み出し機能部235は機能動作せず、字幕読み出し機能フラグ記憶部261に記憶された字幕読み出し機能フラグが、例えば1である場合、字幕読み出し機能部235は機能する。
字幕読み出しポインタ記憶部262は、バッファ215Aの、字幕ストリームが記憶された位置(アドレス)を指す字幕読み出しポインタを記憶し、字幕読み出し機能部235は、バッファ215Aの、字幕読み出しポインタが指す位置に記憶されているデータを、字幕ストリームとして読み出す。stream_idレジスタ263とprivate_stream_idレジスタ264は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出す字幕ストリームを識別するための後述するstream_idとprivate_stream_idを、それぞれ記憶する。
[ディスク101に記録されたデータのデータフォーマットの説明]
次に、ディスク101に記録されたデータのデータフォーマットについて説明する。
図4は、ディスク101のディレクトリ構造を模式的に示している。
ディスク101のファイルシステムとしては、例えば、ISO(International Organization for Standardization)-9660や、UDF(Universal Disk Format:http://www.osta.org/specs/)などで規定されたファイルシステムが用いられており、ディスク101に記録されたデータのファイルはディレクトリ構造により階層的に管理されている。ここで、ファイルシステムは、上述したファイルシステムに限定されるものではない。
図4では、ファイルシステムの基点を示すルート(root)ディレクトリに、"VIDEO"ディレクトリが置かれ、"VIDEO"ディレクトリには、"CLIP"ディレクトリと、"STREAM"ディレクトリとの2つのディレクトリが置かれている。
"VIDEO"ディレクトリには、"CLIP"ディレクトリと"STREAM"ディレクトリとの2つのディレクトリの他に、"SCRIPT.DAT"ファイルと、"PLAYLIST.DAT"ファイルの2つのデータファイルが置かれている。
"SCRIPT.DAT"ファイルは、スクリプトプログラムが記述されたスクリプトファイルである。即ち、"SCRIPT.DAT"ファイルには、ディスク101の再生形態をインタラクティブなものとするために使用するスクリプトプログラムが記述されている。この"SCRIPT.DAT"ファイルに記述されたスクリプトプログラムは、図2のスクリプト制御モジュール211によって解釈、実行される。
"PLAYLIST.DAT"ファイルには、ディスク101に記録されたビデオデータ等のコンテンツの再生手順が記述されたプレイリスト(後述する図5のPlayList())が1以上格納されている。
"CLIP"ディレクトリには、1以上のクリップ情報ファイルが置かれ、"STREAM"ディレクトリには、1以上のクリップストリームファイルが置かれる。即ち、図4では、"CLIP"ディレクトリには、3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"が置かれており、"STREAM"ディレクトリには、3つのクリップストリームファイル"00001.PS","00002.PS","00003.PS"が置かれている。
クリップストリームファイルには、ビデオデータ、オーディオデータ、字幕データなどの1以上のデータ(ストリーム)を圧縮、符号化して得られる1以上のエレメンタリストリームを時分割多重化したプログラムストリームが格納されている。
クリップ情報ファイルには、対応するクリップストリームファイルの性質等の、クリップストリームに関する(ファイル)メタデータが記述されている。
即ち、クリップストリームファイルとクリップ情報ファイルとは、1対1に対応している。図4では、クリップストリームファイルには、5文字の数字+ピリオド+"PS"という命名規則にしたがって、ファイル名が付されており、クリップ情報ファイルには、対応するクリップストリームファイルと同一の5文字の数字+ピリオド+"CLP"という命名規則にしたがって、ファイル名が付されている。
従って、ファイルが、クリップストリームファイルまたはクリップ情報ファイルのうちのいずれであるかは、ファイル名の拡張子(ピリオドより右側の部分)によって識別することができ、さらに、対応するクリップストリームファイルとクリップ情報ファイルとは、ファイル名の拡張子以外の部分(ピリオドより左側の部分)が一致するかどうかによって識別することができる。
以下、ディスク101に記録された各ファイルの詳細について説明する。
「PLAYLIST.DAT」
図5は、図4の"VIDEO"ディレクトリ下の"PLAYLIST.DAT"ファイルの内部構造(シンタクス(syntax))を示している。
ここで、図5において、"Syntax"の欄の記載がデータ構造を表し、"No. of bits"の欄の記載は、対応する行の"Syntax"の欄のデータのビット長を表す。さらに、"Mnemonic"の欄の記載のうちの"bslbf"(bit string left bit first)は、対応する行の"Syntax"の欄のデータが左のビットから送り出されることを意味し、"uimsbf"(unsigned integer most significant bit first)は、対応する行の"Syntax"の欄のデータが、符号なし整数値であり、最上位ビットから送り出されることを意味する。以下説明する、図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は、続くPlayList()の個数を表す。number_of_PlayListsの後に、そのnumber_of_PlayListsの数だけのPlayList()が配置される。
PlayList()は、ディスク101に記録されたクリップストリームファイルの再生手順が記述されたプレイリストであり、以下のような内部構造を有する。
即ち、PlayList()の先頭には、PlayList_data_length(32ビット)が配置される。PlayList_data_lengthは、そのPlayList()のサイズを表す。
PlayList_data_lengthの後には、reserved_for_word_alignment(15ビット)とcapture_enable_flag_PlayList(1ビット)が順次配置される。15ビットのreserved_for_word_alignmentは、その後に配置される1ビットのcapture_enable_flag_PlayListの位置で、いわゆるワードアライン(word alignment)をとるため(16ビットの位置に揃えるため)に配置される。capture_enable_flag_PlayListは、PlayList()によって再生されるビデオストリームに対応するビデオデータ(PlayList()に属するビデオデータ)の、光ディスク101が再生される図1のディスク装置内での2次利用を許可するか否かを表す1ビットのフラグである。capture_enable_flag_PlayListが、0または1のうちの、例えば1である場合、PlayList()に属するビデオデータの2次利用が許可されていることを表し、capture_enable_flag_PlayListが、0または1のうちの、例えば0である場合、PlayList()に属するビデオデータの2次利用が許可されていない(禁止されている)ことを表す。
なお、図5では、capture_enable_flag_PlayListを1ビットとしたが、その他、capture_enable_flag_PlayListは、複数ビットで構成し、PlayList()に属するビデオデータの2次利用を、いわば段階的に許可するようにすることが可能である。即ち、capture_enable_flag_PlayListは、例えば、2ビットで構成することができる。そして、capture_enable_flag_PlayListの値が00B(Bは、その前の数字が2進数であることを表す)である場合には、ビデオデータの2次利用を禁止し、capture_enable_flag_PlayListの値が01Bである場合には、ビデオデータを、64×64ピクセル以下のサイズに縮小して利用する2次利用のみを許可することができる。また、capture_enable_flag_PlayListの値が10Bである場合には、サイズの制限なしで、ビデオデータの2次利用を許可することができる。
さらに、上述のように、ビデオデータの2次利用にあたって、サイズに制限を設けるのではなく、用途に制限を設けるようにすることも可能である。即ち、capture_enable_flag_PlayListの値が01Bである場合には、ビデオコンテンツ再生アプリケーション210(図2)のみでの2次利用を許可し、capture_enable_flag_PlayListの値が10Bである場合には、図1のディスク装置内の、ビデオコンテンツ再生アプリケーション210を含む任意のアプリケーションによる2次利用を許可することができる。ここで、図1のディスク装置内のビデオコンテンツ再生アプリケーション210以外のアプリケーションとしては、例えば、壁紙(バックグラウンド)やスクリーンセーバーの表示の処理を行うアプリケーションなどがある。
なお、capture_enable_flag_PlayListを、上述のように、2ビットとした場合、その前に配置されるreserved_for_word_alignmentは、ワードアラインをとるために、14ビットとなる。
また、capture_enable_flag_PlayListにより、ビデオデータのディスク装置内での2次利用を許可する他、ディスク装置外での2次利用を許可するようにすることも可能である。ここで、ビデオデータの、ディスク装置外での2次利用を許可する場合には、ビデオデータは、例えば、ディスク装置に着脱可能な記録媒体やディスク装置に接続可能な他の装置に着脱可能な記録媒体に記録され、あるいはインターネット等のネットワークを介して、他の装置に送信(配信)される。この場合、ビデオデータには、そのビデオデータを記録媒体に記録する回数や配信する回数を制限する情報を付加するようにすることができる。
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()の構造が記述される。
ここで、1つのPlayList()では、PlayItem()単位で、コンテンツの再生手順を記述することができる。
また、PlayList()の中の、number_of_PlayItemsの数だけのPlayItem()それぞれに対しては、そのPlayList()の中でユニークなID(Identification)が付される。即ち、PlayList()中の最初のPlayItem()には、IDとして0番が付され、以下、続くPlayItem()に対して、その出現順に、1番、2番、・・・と通し番号のIDが付される。
number_of_PlayItemsの数だけのPlayItem()の後には、1つのPlayListMark()が配置される。PlayListMark()は、PlayList()にしたがって行われる再生の時間軸上の印となる後述するMark()の集合で、その詳細については、図7を参照して後述する。
「PlayItem()の説明」
次に、図6は、図5のPlayList()に含まれるPlayItem()の内部構造を示している。
PlayItem()の先頭には、length(16ビット)が配置され、lengthは、それを含むPlayItem()のサイズを表す。
lengthに続いては、Clip_Information_file_name_length(16ビット)とClip_Information_file_name(可変長)が順次配置される。Clip_Information_file_name_lengthは、その後に配置されるClip_Information_file_nameのサイズを、バイト数で表す。Clip_Information_file_nameは、PlayItem()によって再生するクリップストリームファイル(図4の拡張子がPSのファイル)に対応するクリップ情報ファイル(図4の拡張子がCLPのファイル)のファイル名を表す。なお、クリップストリームファイルおよびクリップ情報ファイルのファイル名の、上述した命名規則により、Clip_Information_file_nameから、PlayItem()によって再生するクリップ情報ファイルのファイル名を認識し、そのクリップストリームファイルを特定することができる。
Clip_Information_file_nameに続いては、IN_time(32ビット)とOUT_time(32ビット)が順次配置される。
IN_timeとOUT_timeは、それぞれ、Clip_Information_file_nameから特定されるクリップストリームファイルの再生開始位置と再生終了位置を指定する時刻情報である。
IN_timeによれば、クリップストリームファイルの(先頭を含む)途中の位置を再生開始位置として指定することができ、OUT_timeによれば、クリップストリームファイルの(最後を含む)途中の位置を再生終了位置として指定することができる。
ここで、PlayItem()によれば、Clip_Information_file_nameから特定されるクリップストリームファイルの、IN_timeからOUT_timeまでの間のコンテンツが再生される。このPlayItem()によって再生されるコンテンツを、以下、適宜、クリップという。
「PlayListMark()の説明」
次に、図7は、図5のPlayList()に含まれるPlayListMark()の内部構造を示している。
PlayListMark()は、上述したように、そのPlayListMark()を含むPlayList()(図5)にしたがって行われる再生の時間軸上の印となる、0以上のMark()の集合である。1つのMark()は、PlayList()にしたがって行われる再生の時間軸上の1つの時刻(位置)を表す時刻情報、Mark()のタイプを表すタイプ情報、およびタイプ情報がイベントを発生させるタイプを表しているときの、そのイベントの引数となる引数情報を、少なくとも有する。
即ち、PlayListMark()の先頭には、length(32ビット)が配置される。lengthは、それを含むPlayListMark()のサイズを表す。
lengthの後には、number_of_PlayList_marks(16ビット)が配置され、number_of_PlayList_marksは、それに続いて配置されるMark()の個数を表す。number_of_PlayList_marksの後には、そのnumber_of_PlayList_marksの数だけMark()の構造が記述される。
Mark()の先頭には、mark_type(8ビット)が配置される。mark_typeは、上述のタイプ情報であり、それを含むMark()のタイプを表す。
本実施の形態では、Mark()のタイプとして、例えば、チャプタ(Chapter)、インデクス(Index)、イベント(Event)の3種類が用意されている。
タイプがチャプタのMark()(以下、適宜、チャプタマークという)は、PlayList()を分割する頭出しの単位であるチャプタの先頭位置の印である。また、タイプがインデクスのMark()(以下、適宜、インデクスマークという)は、チャプタを細分化した単位であるインデクスの先頭位置の印である。タイプがイベントのMark()(以下、適宜、イベントマークという)は、PlayList()にしたがったコンテンツの再生中においてイベントを発生させる位置の印である。イベントマークによるイベントの発生は、後述するように、スクリプト制御モジュール211に通知される。
ここで、mark_typeの値と、Mark()のタイプとの関係を、図8に示す。図8によれば、チャプタマークのmark_typeには、1がセットされる。また、インデクスマークのmark_typeには、2がセットされ、イベントマークのmark_typeには、3がセットされる。なお、図8では、mark_typeで表される8ビットの値のうちの、0と、4乃至255は、将来の拡張のための予約(reserved)とされている。
図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に続いては、PlayList()上で定義されるMark()をクリップストリームファイルと対応付ける4つの要素ref_to_PlayItem_id(16ビット)、mark_time_stamp(32ビット)、entry_ES_stream_id(8ビット)、entry_ES_private_stream_id(8ビット)が順次配置される。
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()は、3つのPlayItem()から構成されており、その3つのPlayItem()それぞれには、通し番号で付されるID#0,#1,#2が付されている。ここで、以下、適宜、ID#iが付されたPlayItem()を、PlayItem#iと記述する。
また、図9では、PlayItem#0,PlayItem#1,PlayItem#2によって再生されるコンテンツであるクリップが、それぞれ、クリップA、クリップB、クリップCとして示されている。
クリップの実体は、図6のPlayItem()におけるClip_Information_file_nameから特定される(クリップ情報ファイルから、さらに特定される)クリップストリームファイルに格納されたプログラムストリームのうちの、IN_timeからOUT_timeまでのプログラムストリームである。図9では、クリップA、クリップB、クリップCの実体としてのプログラムストリームが、プログラムストリームA、プログラムストリームB、プログラムストリームCとして、それぞれ示されている。
例えば、図9において、PlayList()にしたがって行われる再生の時間軸上の位置(時刻)t0の印となるMark()においては、そのref_to_PlayItem_idとmark_time_stampは、次のように記述される。
即ち、時刻t0は、PlayItem#1の再生が行われる時刻であるため、ref_to_PlayItem_idには、そのPlayItem#1のIDである1が記述される。さらに、時刻t0では、PlayItem#1によって、クリップBの実体であるプログラムストリームBが再生されるため、mark_time_stampには、プログラムストリームBが格納されたクリップストリームファイルにおける時刻t0に相当する時刻が記述される。
再び、図7に戻り、entry_ES_stream_idと、entry_ES_private_stream_idは、Mark()を、特定のエレメンタリストリームに関連付ける場合に、そのエレメンタリストリームを特定するために使用される。即ち、entry_ES_stream_idには、Mark()を関連付けるエレメンタリストリーム(が配置される、後述する図16乃至図18に示すPES_packet())の後述するstream_idが記述される。また、entry_ES_private_stream_idには、必要に応じて、Mark()を関連付けるエレメンタリストリーム(が配置される、後述する図21に示すprivate_stream1_PES_payload()におけるprivate_header())の後述するprivate_stream_idが記述される。
例えば、ビデオストリーム#1とビデオストリーム#2が多重化されているクリップにおいて、ビデオストリーム#1を再生している場合と、ビデオストリーム#2を再生している場合でチャプタの発生時刻を変更したいときには、ビデオストリーム#1再生時のチャプタマーク発生時刻のMark()のentry_ES_stream_idとentry_ES_private_stream_idに、ビデオストリーム#1のstream_idとprivate_stream_idが記述され、また、ビデオストリーム#2再生時のチャプタマーク発生時刻のMark()のentry_ES_stream_idとentry_ES_private_stream_idに、ビデオストリーム#2のstream_idとprivate_stream_idが記述される。
なお、特定のエレメンタリストリームに関連付けないMark()のentry_ES_stream_idと、entry_ES_private_stream_idには、例えば、いずれも0が記述される。
entry_ES_private_stream_idの後には、mark_data(32ビット)が配置される。mark_dataは、Mark()がイベントマークである場合に、そのイベントマークによって発生されるイベントの引数となる引数情報である。なお、mark_dataは、Mark()がチャプタマークやインデクスマークである場合に、そのチャプタマークやインデクスマークが表すチャプタやインデクスの番号として使用することも可能である。
「Clip()の説明」
次に、図4の"CLIP"ディレクトリに置かれる、拡張子がCLPのクリップ情報ファイルの内部構造について説明する。
図4では、"CLIP"ディレクトリに、3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"が置かれており、それぞれには、"STREAM"ディレクトリに置かれたクリップストリームファイル"00001.PS","00002.PS","00003.PS"の性質等を示すメタデータが格納されている。
図10は、そのようなクリップ情報ファイルClip()の内部構造を示している。
クリップ情報ファイルClip()の先頭には、presentation_start_timeとpresentation_end_time(いずれも32ビット)が、順次配置される。presentation_start_timeとpresentation_end_timeは、クリップ情報ファイルClip()に対応するクリップストリームファイル(に格納されているプログラムストリーム)の先頭と最後の時刻を表す。なお、クリップストリームファイルの時刻は、MPEG2-Systemの時刻で使われている90kHzの倍数で記述される。
presentation_end_timeに続いては、reserved_for_word_alignment(7ビット)とcapture_enable_flag_Clip(1ビット)が順次配置される。7ビットのreserved_for_word_alignmentは、ワードアラインをとるためのもので、capture_enable_flag_Clipは、上述した図5のcapture_enable_flag_PlayListと同様に、ビデオデータの2次利用を許可するか否かを表すフラグである。
但し、図5のcapture_enable_flag_PlayListは、PlayList()によって再生されるビデオストリームに対応するビデオデータ(PlayList()に属するビデオデータ)の2次利用を許可するか否かを表すのに対して、図10のcapture_enable_flag_Clipは、クリップ情報ファイルClip()に対応するクリップストリームファイルに格納されているビデオストリーム(ビデオのエレメンタリストリーム)に対応するビデオデータの2次利用を許可するか否かを表す。従って、図5のcapture_enable_flag_PlayListと、図10のcapture_enable_flag_Clipとでは、2次利用を許可するビデオデータの単位(範囲)が異なる。
なお、図10のcapture_enable_flag_Clipも、図5のcapture_enable_flag_PlayListで説明したように、1ビットではなく、複数ビットとすることが可能である。
capture_enable_flag_Clipの後には、number_of_streams(8ビット)が配置され、このnumber_of_streamsには、それに続くStreamInfo()構造の個数が記述される。従って、number_of_streamsに続いては、そのnumber_of_Streamsの数だけ、StreamInfo()の構造が記述される。
StreamInfo()の先頭には、length(16ビット)が配置され、このlengthは、それを含むStreamInfo()のサイズを表す。lengthに続いては、stream_id(8ビット)とprivate_stream_id(8ビット)が配置されており、このstream_idとprivate_stream_idによって、StreamInfo()に関連付けるエレメンタリストリームが特定(識別)される。
ここで、図11は、エレメンタリストリームを識別するstream_idおよびprivate_stream_idと、エレメンタリストリームとの関係を示している。
stream_idは、MPEG2-System規格において規定されているのと同一のものであり、その値は、MPEG2-System規格において、エレメンタリストリーム(データ)の属性(種類)ごとに、あらかじめ決められている。従って、MPEG2-System規格で定義されている属性のエレメンタリストリームは、stream_idだけで特定することができる。
本実施の形態では、MPEG2-System規格において規定されていない属性のエレメンタリストリームも扱うことが可能になっており、private_stream_idは、MPEG2-System規格において規定されていない属性のエレメンタリストリームを識別するための情報である。
図11では、MPEGで規定されている符号化(復号)方式でエンコードされたビデオのエレメンタリストリーム、ATRAC(Adaptive TRansform Acoustic Coding)方式でエンコードされたオーディオのエレメンタリストリーム(以下、適宜、ATRACオーディオストリームという)、LPCM(Linear Pulse Code Modulation)方式でエンコードされたオーディオのエレメンタリストリーム(以下、適宜、LPCMオーディオストリームという)、字幕のエレメンタリストリーム(以下、適宜、字幕ストリームという)の4つの属性のエレメンタリストリームについて、stream_idおよびprivate_stream_idとの関係を示している。
MPEG2-System規格では、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームは、0xE0乃至0xEFの範囲の値を(0xは、その後に続く文字列が16進数であることを表す)、エレメンタリストリームを識別するstream_idとして用いて多重化することが規定されている。従って、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームについては、0xE0乃至0xEFの範囲の値のstream_idで識別することができる16本のビデオのエレメンタリストリームを、プログラムストリームに多重化することができる。
なお、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームの識別は、0xE0乃至0xEFの範囲の値のstream_idで行うことができるので、private_stream_idは不要である(無視することができる)。
一方、MPEG2-Systemでは、ATRACオーディオストリーム、LPCMオーディオストリーム、字幕ストリームについては、stream_idは定義されていない。
そこで、本実施の形態では、MPEG2-Systemでstream_idが定義されていないエレメンタリストリームについては、そのstream_idに、MPEG2-Systemにおいて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()には、(そのStaticInfo()を含むStreamInfo()に記述された)stream_idおよびprivate_stream_idによって特定されるエレメンタリストリームの再生中に変化しない情報が記述される。StaticInfo()の詳細については、図12を参照して後述する。
reserved_for_word_alignmentは、ワードアラインをとるために使用される。
reserved_for_word_alignmentに続いては、number_of_DynamicInfo(8ビット)が配置され、number_of_DynamicInfoは、その後に続いて配置されるpts_change_point(32ビット)とDynamicInfo()のセットの数を表す。
従って、number_of_DynamicInfoに続いては、そのnumber_of_DynamicInfoの数だけのセット数のpts_change_pointとDynamicInfo()の構造が記述される。
pts_change_pointは、それとセットになっているDynamicInfo()の情報が有効になる時刻を表す。ここで、エレメンタリストリームの先頭の時刻を表すpts_change_pointは、そのエレメンタリストリームが格納されたクリップストリームファイルに対応するクリップ情報ファイルClip()の最初に記述されるpresentation_start_timeに等しい。
DynamicInfo()には、stream_idおよびprivate_stream_idによって特定されるエレメンタリストリームの再生中に変化する、いわば動的な情報が記述される。DynamicInfo()に記述された情報は、それとセットになっているpts_change_pointが表す再生時刻となったときに有効になる。なお、DynamicInfo()の詳細については、図13を参照して後述する。
number_of_DynamicInfoの数だけのセットのpts_change_pointとDynamicInfo()の後には、EP_map()が配置される。なお、EP_map()については、図14を参照して後述する。
「StaticInfo()の説明」
次に、図12を参照して、図10のStaticInfo()の詳細について説明する。
図12は、StaticInfo()のシンタクスを示している。
StaticInfo()は、対応するエレメンタリストリームの属性(種類)により内容が異なっている。StaticInfo()に対応するエレメンタリストリームの属性は、そのStaticInfo()を含む図10のStreamInfo()に含まれるstream_idとprivate_stream_idにより判断される。
StaticInfo()に対応するエレメンタリストリームがビデオストリームである場合(stream==VIDEO)、StaticInfo()は、picture_size(4ビット),frame_rate(4ビット),およびcc_flag(1ビット)と、ワードアラインをとるためのreserved_for_word_alingmentとで構成される。
picture_sizeは、ビデオストリームに対応するビデオデータ(によって表示される画像)の大きさを表す。frame_rateは、ビデオストリームに対応するビデオデータのフレーム周波数を表す。cc_flagは、ビデオストリームにクローズドキャプション(Closed Caption)データが含まれているか否かを表す。即ち、例えば、ビデオストリームにクローズドキャプションデータが含まれている場合には、cc_flagは1とされ、ビデオストリームにクローズドキャプションデータが含まれていない場合には、cc_flagは0とされる。
StaticInfo()に対応するエレメンタリストリームがオーディオストリームである場合(stream==AUDIO)、StaticInfo()は、audio_language_code(16ビット),channel_configuration(8ビット),lfe_existence(1ビット)、およびsampling_frequency(4ビット)と、ワードアラインをとるためのreserved_for_word_alingmentとで構成される。
audio_language_codeには、オーディオストリームに含まれているオーディオデータの言語を表すコードが記述される。channel_configurationは、モノラル(mono)/ステレオ(stereo)/マルチチャネル等の、オーディオストリームに含まれているオーディオデータの属性を表す。lfe_existenceは、オーディオストリームに低域強調チャネルが含まれているかどうかを表し、含まれていれば1となり、含まれていなければ0となる。sampling_frequencyは、オーディオストリームに含まれているオーディオデータのサンプリング周波数を示す情報である。
StaticInfo()に対応するエレメンタリストリームが字幕ストリームである場合(stream==SUBTITLE)、StaticInfo()は、subtitle_language_code(16ビット)およびconfigurable_flag(1ビット)と、ワードアラインをとるためのreserved_for_word_alingmentとで構成される。
subtitle_language_codeには、字幕ストリームに含まれている字幕データの言語を表すコードが記述される。configurable_flagは、字幕ストリームに含まれている字幕データの表示をデフォルトの表示方式から変更することを許可するか否かを表す情報で、例えば、表示方式の変更が許可されている場合には1が記述され、許可されていない場合には0が記述される。なお、字幕データの表示方式としては、字幕データの表示サイズや、表示位置、表示色、表示パターン(例えば、点滅表示など)、表示方向(例えば、垂直方向や水平方向)などがある。
「DynamicInfo()の説明」
次に、図13を参照して、図10のDynamicInfo()の詳細について説明する。
図13は、DynamicInfo()のシンタクスを示している。
DynamicInfo()の先頭には、ワードアラインのためのreserved_for_word_alignment(8ビット)が配置されており、その後に続く要素は、DynamicInfo()に対応するエレメンタリストリームの属性により内容が異なっている。DynamicInfo()に対応するエレメンタリストリームの属性は、図12で説明したStaticInfo()における場合と同様に、DynamicInfo()を含む図10のStreamInfo()に含まれるstream_idとprivate_stream_idにより判断される。
DynamicInfo()には、図10で説明したように、エレメンタリストリームの再生中に変化する動的な情報が記述される。この動的な情報は、特に限定されるものではないが、図13の実施の形態では、DynamicInfo()に対応するエレメンタリストリームに対応するデータ、即ち、エレメンタリストリームが処理されることによって出力されるデータの出力属性(エレメンタリストリームから得られるデータの出力属性)が、DynamicInfo()に記述される。
具体的には、DynamicInfo()に対応するエレメンタリストリームがビデオストリームである場合(stream==VIDEO)、DynamicInfo()は、display_aspect_ratio(4ビット)と、ワードアラインのためのreserved_for_word_alingmentとで構成される。diplay_aspect_ratioには、ビデオストリームに対応するビデオデータの出力属性(表示方式)としての、例えば、そのビデオデータのアスペクト比が記述される。即ち、diplay_aspect_ratioには、例えば、アスペクト比が、16:9または4:3のうちのいずれであるかを表す情報が記述される。なお、ビデオストリームのDynamicInfo()には、アスペクト比の他、例えば、ビデオデータによって表示される画像のサイズ(X画素×Y画素)などを記述することが可能である。
DynamicInfo()に対応するエレメンタリストリームがオーディオストリームである場合(stream==AUDIO)、DynamicInfo()は、channel_assignment(4ビット)と、ワードアラインをとるためのreserved_for_word_alingmentとで構成される。channel_assignmentには、オーディオストリームに2チャネルのオーディオデータが含まれている場合に、その2チャネルの出力属性(出力方式)が記述される。即ち、channel_assignmentには、オーディオデータが、ステレオまたはデュアル(二ヶ国語)のうちのいずれのチャネル割り当てがされているものであるかを表す情報が記述される。
DynamicInfo()に対応するエレメンタリストリームが字幕ストリームである場合(stream==SUBTITLE)、DynamicInfo()は、ワードアラインをとるためのreserved_for_word_alingmentで構成される。即ち、図13の実施の形態では、字幕ストリームに関しては、動的な情報としての出力属性は定義されていない。
「EP_map()の説明」
次に、図14を参照して、図10のEP_map()の詳細について説明する。
図14は、EP_map()のシンタクスを示している。
EP_map()には、そのEP_map()を含む図10のクリップ情報ファイルClip()に対応するクリップストリームファイルに格納されたプログラムストリームに多重化されているエレメンタリストリーム毎に、各エレメンタリストリームの、デコードを開始することができるデコード開始可能点(エントリポイント)の情報が記述される。
ここで、固定レートのストリームについては、デコード開始可能点は、計算によって求めることができるが、可変レートのストリーム、あるいはMPEG規格にしたがって符号化されたビデオストリームのように、ビデオアクセスアクセスユニットごとにサイズが異なるストリームについては、デコード開始可能点は、計算によって求めることができず、実際にストリームを解析しないと見つけることができない。デコード開始可能点を迅速に認識することは、ランダムアクセスを行うために重要であり、EP_map()によれば、デコード開始可能点を迅速に認識することができる。
なお、MPEG2-Videoでは、Sequence_header()(シーケンスヘッダ)等を含めたイントラピクチャの先頭が、デコード開始可能点である。
EP_map()の先頭には、ワードアラインのためのreserved_for_word_alignment(8ビット)が配置されており、続いてnumber_of_stream_id_entries(8ビット)が配置されている。number_of_stream_id_entriesは、EP_map()にデコード開始可能点の情報が記述されているエレメンタリストリームの本数を表す。
number_of_stream_id_entriesの後には、エレメンタリストリームを識別するための情報と、そのエレメンタリストリームのデコード開始可能点の情報とが、number_of_stream_id_entriesが表す数だけ繰り返し配置される。
即ち、number_of_stream_id_entriesの直後には、エレメンタリストリームを識別する情報としてのstream_id(8ビット)とprivate_stream_id(8ビット)が配置され、それに続けて、number_of_EP_entries(32ビット)が配置される。number_of_EP_entriesは、その直前のstream_idとprivate_stream_idで識別(特定)されるエレメンタリストリームのデコード開始可能点の数を表す。
number_of_EP_entriesの後には、その直前のstream_idとprivate_stream_idで特定されるエレメンタリストリームのデコード開始可能点の情報としてのPTS_EP_start(32ビット)とRPN_EP_start(32ビット)とのセットが、number_of_EP_entriesが表す数だけ繰り返し配置される。
デコード開始可能点の情報の1つであるPTS_EP_startは、上述のようにstream_idとprivate_stream_idで特定されるエレメンタリストリームが多重化されているプログラムストリームが格納されたクリップストリームファイル内での、デコード開始可能点の時刻(再生時刻)を表す。
デコード開始可能点の情報の他の1つであるRPN_EP_startには、上述のようにstream_idとprivate_stream_idで特定されるエレメンタリストリームが多重化されているプログラムストリームが格納されたクリップストリームファイル内での、デコード開始可能点の位置を、プログラムストリームのpack()単位で数えたときの値が記述される。なお、本実施の形態では、pack()のサイズは2048バイトで固定であるとする。また、本実施の形態では、ディスク101(図1)の1セクタが、2048バイトであるとする。
ここで、ビデオストリームについては、そのデコード開始可能点(エントリポイント)の直前に、後述するprivate_stream_2パケット(private_stream_2の属性のPES_packet())が配置されている。private_stream_2パケットは、そのprivate_stream_2パケットから、次のprivate_stream_2パケットまでの間に配置されているビデオストリームをデコードするのに利用される情報が格納されている。このため、ビデオストリームについては、デコード開始可能点の情報としてのRPN_EP_startには、実際のデコード開始可能点そのものではなく、実際のデコード開始可能点の直前に配置されているprivate_stream_2パケットの先頭の位置が記述される。
また、EP_map()において、デコード開始可能点の情報としてのPTS_EP_startとRPN_EP_startとのセットは、stream_idとprivate_stream_idで特定されるエレメンタリストリームごとに、あらかじめ、昇順にソートされている。これにより、デコード開始可能点の情報としてのPTS_EP_startとRPN_EP_startとのセットは、二分探索が可能となっている。
なお、可変レートのストリームや、ビデオアクセスアクセスユニットごとにサイズが異なるストリームを対象としたランダムアクセスの方法は、例えば、特開2000-341640号公報(特願平11-317738号)などに記載されている。
「クリップストリームファイルの説明」
次に、図4の"STREAM"ディレクトリに置かれる、拡張子がPSのクリップストリームファイル(図4では、"00001.PS","00002.PS","00003.PS")の内部構造について説明する。
クリップストリームファイルは、MPEG-2 System (ISO/IEC 13818-1)に定義されたMPEG2_Program_Stream()をベースに構成されている。
即ち、図15は、MPEG-2 System(ISO/IEC 13818-1:2000)規格に記述されているTable2-31,Table2-32,Table2-33を示している。
クリップストリームファイルに格納されたプログラムストリームは、MPEG-2 System規格のTable2-31に定義されているMPEG2_Program_Stream()であり、1つ以上のpack()と、1つのMPEG_program_end_codeで構成される。なお、MPEG2_Program_Stream()の説明は、特許第2785220号などにも記載されている。
1つのpack()は、MPEG-2 System規格のTable2-32に定義されているように、1つのPack_header()と、任意の数のPES_packet()とで構成される。Pack_header()の詳細は、MPEG-2 System規格のTable2-33に定義されている。
ここで、MPEG-2 System規格では、pack()のサイズは、可変長として定義されているが、ここでは、図14で説明したように、2048バイトで固定であるとする。さらに、ここでは、1つのpack()のPES_packet()の数は、1つ、2つ、または3つとする。Pack()が後述するprivate_stream_2パケットで始まる場合、その直後(同じPack()内)に対応するビデオストリームのPES_packet()が必ず存在する。またこれに加えて3つ目のPES_packet()としてpadding_packet(パディングパケット)を置くことができる。なおprivate_stream_2パケットは必ずPack()の先頭におかれる。
Pack()がprivate_stream_2パケットで始まらない場合には、Pack()の先頭にはビデオ、オーディオ、字幕などのコンテンツデータの格納されたPES_packet()が置かれる。これに加えて2つ目のPES_packet()としてpadding_packet(パディングパケット)を置くことができる。
図16乃至図18は、MPEG-2 System規格のTable2-17で定義されているPES_packet()を示している。
PES_packet()は、packet_start_code_prefix,stream_id、およびPES_packet_length(図16)と、stream_id等により構造の変化するヘッダ部分(stuffing_byteを含む)(図16乃至図18)と、PES_packet_data_byte(図18)とに大別することができる。なお、PES_packet()が、padding_packetである場合(stream_id==padding_stream)、PES_packet_data_byteに代えて、padding_byte(0xFF)(図18)が必要な数だけ繰り返し配置される。
ここで、PES_packet()のヘッダ部分には、図16および図17に示すように、PTS(Presentation Time Stamp)と呼ばれる表示タイミングを示す情報と、DTS(Decoding Time Stamp)と呼ばれるデコードタイミングを示す情報とを配置することができる。本実施の形態では、すべてのアクセスユニット(MPEG2-Systemで定義された、エレメンタリストリームを構成するデコード単位)に対してPTSが付加され、MPEG2-Systemに定める場合にDTSが付加されるとする。
プログラムストリームに多重化されるエレメンタリストリームは、PES_packet()のPES_packet_data_byte(図18)に格納される。そして、PES_packet()のstream_idには、そのPES_packet_data_byteに格納されたエレメンタリストリームを識別するために、そのエレメンタリストリームの属性に応じた値が記述される。
PES_packet()のstream_idに記述される値と、エレメンタリストリームの属性(種類)との関係は、MPEG-2 System規格のTable 2-18に定義されている。ここで、図19に、MPEG-2 System規格のTable 2-18を示す。
本実施の形態では、図19に示したMPEG-2 System規格で定義されているstream_idのうちの、例えば、図20に示す値を採用する。
即ち、本実施の形態では、10111101B,10111110B,10111111B,110xxxxxB,1110xxxxBの5パターンを、stream_idの値として採用する。なお、"x"は、0または1のうちの任意の値を表す。
そして、private_stream_1と呼ばれる属性のエレメンタリストリームのPES_packet()のstream_idは、図20にしたがい、10111101Bとされる。また、padding_packetのPES_packet()のstream_idは、図20にしたがい、10111110Bとされる。さらに、private_stream_2と呼ばれる属性のエレメンタリストリームのPES_packet()のstream_idは、図20にしたがい、10111111Bとされる。
また、MPEGで定義されたオーディオストリーム(オーディオのエレメンタリストリーム)のPES_packet()のstream_idは、110xxxxxBとされる。なお、110xxxxxBのうちの下位5ビットxxxxxは、オーディオストリームを区別するオーディオストリームナンバであり、プログラムストリーム(MPEG2_Program_Stream())には、このオーディオストリームナンバで区別することのできる数である32(=25)本のオーディオストリーム(MPEGで定義されたオーディオストリーム)を多重化することができる。
さらに、MPEGで定義されたビデオストリーム(ビデオのエレメンタリストリーム)のPES_packet()のstream_idは、1110xxxxBとされる。なお、1110xxxxBのうちの下位4ビットxxxxは、ビデオストリームを区別するビデオストリームナンバであり、プログラムストリームには、このビデオストリームナンバで区別することのできる数である16(=24)本のビデオストリーム(MPEGで定義されたビデオストリーム)を多重化することができる。
ところで、stream_idが1110xxxxBのPES_packet()は、MPEGで定義されたビデオストリームを格納するために使用され、stream_idが110xxxxxBのPES_packet()は、MPEGで定義されたオーディオストリームを格納するために使用される。一方、MPEGで定義されていない符号化方式(たとえばATRAC方式)のエレメンタリストリームを格納するのに使用するPES_packet()のstream_idは、MPEGでは規定されておらず、従って、MPEGで定義されていない符号化方式のエレメンタリストリームは、MPEGで定義されたビデオストリームやオーディオストリームと同様に、単純に、stream_idを指定して、PES_packet()に格納することはできない。
そこで、本実施の形態では、private_stream_1のPES_packet()のPES_packet_data_byteを拡張し、MPEGで定義されていない符号化方式のエレメンタリストリームを格納する。
ここで、private_stream_1のPES_packet()の、拡張したPES_packet_data_byteを、private_stream1_PES_payload()と記述する。
「private_stream1_PES_payload()の説明」
図21は、private_stream1_PES_payload()のシンタクスを示している。
private_stream1_PES_payload()は、private_header()とprivate_payload()とで構成される。private_payload()には、ATRACオーディオストリームや、LPCMオーディオストリーム、字幕ストリームなどの、MPEGで定義されていない符号化方式のエレメンタリストリームが格納される。
private_header()の先頭には、private_stream_id(8ビット)が配置される。
private_stream_idは、private_payload()に格納されるエレメンタリストリームを識別する識別情報で、その属性(種類)に応じて、例えば、以下のような値とされる。
即ち、図22は、private_stream_idの値と、private_payload()に格納されるエレメンタリストリームの属性との関係を示している。
図22では、0000xxxxB,0001xxxxB,100xxxxxBの3パターンが、private_stream_idの値として採用されている。なお、"x"は、図20における場合と同様に、0または1のうちの任意の値を表す。
図22によれば、ATRACオーディオストリームがprivate_payload()に格納されるprivate_stream1_PES_payload()のprivate_stream_idは、0000xxxxBとされる。なお、0000xxxxBのうちの下位4ビットxxxxは、ATRACオーディオストリームを区別するオーディオストリームナンバであり、プログラムストリーム(MPEG2_Program_Stream())には、このオーディオストリームナンバで区別することのできる数である16(=24)本のATRACオーディオストリームを多重化することができる。
さらに、図22によれば、LPCMオーディオストリームがprivate_payload()に格納されるprivate_stream1_PES_payload()のprivate_stream_idは、0001xxxxBとされる。なお、0001xxxxBのうちの下位4ビットxxxxは、LPCMオーディオストリームを区別するオーディオストリームナンバであり、プログラムストリームには、このオーディオストリームナンバで区別することのできる数である16(=24)本のLPCMオーディオストリームを多重化することができる。
また、図22によれば、字幕ストリームがprivate_payload()に格納されるprivate_stream1_PES_payload()のprivate_stream_idは、100xxxxxBとされる。なお、100xxxxxBのうちの下位5ビットxxxxxは、字幕ストリームを区別する字幕ストリームナンバであり、プログラムストリームには、この字幕ストリームナンバで区別することのできる数である32(=25)本の字幕ストリームを多重化することができる。
ここで、図20と図22の関係をまとめたものが、上述した図11である。
図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ビット)が配置され、その後、AU_locator(16ビット)が配置される。AU_locatorは、そのAU_locatorの直後の位置を基準として、private_payload()に格納されたATRACオーディオストリームのオーディオアクセスユニット(ATRACオーディオアクセスユニット)(オーディオフレーム)の先頭位置を表す。private_payload()にオーディオアクセスユニットが存在しない場合、AU_locatorには、例えば0xFFFFが記述される。
private_payload()に格納されるエレメンタリストリームがLPCMオーディオストリームである場合(private_stream_id==LPCM)、fs_flag(1ビット),reserved_for_future_use(3ビット),ch_flag(4ビット)、およびAU_locator(16ビット)が順次配置される。
fs_flagは、private_payload()に格納されるLPCMオーディオストリームのサンプリング周波数を示す。即ち、例えば、サンプリング周波数が48KHzの場合、fs_flagは0とされ、サンプリング周波数が44.1KHzの場合、fs_flagは1とされる。
ch_flagは、private_payload()に格納されるLPCMオーディオストリームのチャネル数を示す。例えば、LPCMオーディオストリームがモノラルの場合、ch_flagは1とされ、LPCMオーディオストリームがステレオの場合、ch_flagは2とされる。
AU_locatorは、そのAU_locatorの直後の位置を基準として、private_payload()に格納されるLPCMオーディオストリームのオーディオアクセスユニット(LPCMオーディオアクセスユニット)(オーディオフレーム)の先頭位置を示す。private_payload()にオーディオアクセスユニットが存在しない場合、AU_locatorには、例えば0xFFFFが記述される。
private_payload()に格納されるエレメンタリストリームが字幕ストリームである場合(private_stream_id==SUBTITLE)、将来の拡張のためのreserved_for_future_use(8ビット)が配置され、その後に、AU_locator(16ビット)が配置される。AU_locatorは、そのAU_locatorの直後の位置を基準として、private_payload()に格納される字幕ストリームの字幕アクセスユニットの先頭位置を示す。private_payload()に字幕アクセスユニットが存在しない場合、AU_locatorには、例えば0xFFFFが記述される。
「private_stream2_PES_payload()の説明」
次に、図23は、private_stream2_PES_payload()のシンタクスを示している。
private_stream2_PES_payload()は、private_stream_2のPES_packet()のPES_packet_data_byte(図18)を拡張したもの、即ち、private_stream_2のPES_packet()の、拡張したPES_packet_data_byteであり、ビデオストリームのデコードに利用される情報が記述される。
本実施の形態では、private_stream_2のPES_packet()は、ビデオストリームにおけるデコード開始可能点の直前に配置される。従って、本実施の形態では、プログラムストリームからprivate_stream_2のPES_packet()を見つければ、その直後のビデオストリームからデコードを開始することができる。
ここで、上述した図14のEP_map()のRPN_EP_startは、ビデオストリームについては、private_stream_2のPES_packet()の先頭の位置を示す。
private_stream2_PES_payload()の先頭には、将来の拡張用のreserved_for_future_use(8ビット)が配置され、続けて、video_stream_id(8ビット),1stRef_picture(16ビット),2ndRef_picture(16ビット),3rdRef_picture(16ビット),4thRef_picture(16ビット),au_information()、およびVBI()が、順次配置される。
video_stream_idには、private_stream_2のPES_packet()の直後に配置されるビデオストリームのPES_packet()のstream_id(と同一の値)が記述される。このvideo_stream_idによって、private_stream_2のPES_packet()(のprivate_stream2_PES_payload())に格納された情報を利用してデコードされるビデオストリーム(が格納されたPES_packet())が特定される。
1stRef_picture,2ndRef_picture,3rdRef_picture,4thRef_pictureは、video_stream_idによって特定されるビデオストリームの、private_stream_2のPES_packet()から次のprivate_stream_2のPES_packet()までの中の1,2,3,4番目の参照画像を含む最後のpack()の位置を相対値で、それぞれ表す。なお、1stRef_picture,2ndRef_picture,3rdRef_picture,4thRef_pictureについては、例えば、特開平09-46712号公報(特願平07-211420号)に、bytes_to_first_P_pic bytes_to_second_P_picとして、その詳細が開示されている。
au_information()には、private_stream_2のPES_packet()から、次のprivate_stream_2のPES_packet()までのビデオストリームの中のビデオアクセスユニットに関する情報が記述される。au_information()の詳細については、図24を参照して後述する。
VBI()は、Closed Captionの情報を記述するために使用される。
以上のようなprivate_stream2_PES_payload()を有するprivate_stream_2のPES_packet()は、ビデオストリームごとの、デコード開始可能点ごとに配置される。
次に、図24は、図23のau_information()のシンタクスを示している。
au_information()の先頭には、length(16ビット)が配置される。lengthは、それを含むau_information()のサイズを表す。lengthに続いては、reserved_for_word_alignment(8ビット)、およびnumber_of_access_unit(8ビット)が順次配置される。reserved_for_word_alignmentは、ワードアラインをとるために使用される。
number_of_access_unitは、それを含むprivate_stream_2のPES_packet()から、次のprivate_stream_2のPES_packet()までの間に含まれるビデオアクセスユニット(ピクチャ)の数を表す。
即ち、number_of_access_unitは、図23のprivate_stream2_PES_payload()が同一のvideo_stream_idを有するprivate_stream_2のPES_packet()の中で、このau_informatnio()から次のau_information()の直前までに(このau_infromation()がクリップストリームファイルで最後の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()までの間に含まれる1以上のビデオアクセスユニットそれぞれに関する情報が配置される。
forループ内に配置される情報(ビデオアクセスユニットに関する情報)は、以下のようになっている。
即ち、forループ内には、pic_struct_copy(4ビット),au_ref_flag(1ビット),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は、対応するアクセスユニットが、他のアクセスユニット(のピクチャ)のデコードにあたって参照される参照画像であるか否かを表し、参照画像である場合には1とされ、参照画像でない場合には0とされる。
AU_lengthは、対応するアクセスユニットのサイズをバイト単位で表す。
[ディスク101に記録されたデータの具体例]
次に、図25乃至図28は、図1のディスク101に記録された、上述したようなフォーマットのデータの具体例を示している。
ここで、図25乃至図28では、ビデオストリームとしては、MPEG2-Videoを採用し、オーディオストリームとしては、ATRACオーディオストリームを採用している。但し、ビデオストリームやオーディオストリームは、これに限定されるものではない。即ち、ビデオストリームとしては、例えば、MPEG4-VisualやMPEG4-AVCなどを採用することができる。さらに、オーディオストリームとしては、例えば、MPEG1/2/4オーディオやLPCMオーディオストリームなどを採用することができる。
なお、字幕ストリームは、ビデオストリームやオーディオストリームと異なり、同じ間隔で連続的なデコード・表示(出力)が行われるとは限らない。すなわち、字幕ストリームは、時折、図2のバッファ制御モジュール215から字幕デコーダ制御モジュール218に供給されてデコードされる。
図25乃至図28は、ディスク101において、図4に示したように、"CLIP"ディレクトリに、3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"が記録され、"STREAM"ディレクトリに、その3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"それぞれに対応する3つのクリップストリームファイル"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では、その2つのPlayList()のうちの1番目がPlayList #0と、2番目がPlayList #1と、それぞれ記載されている。
1番目のPlayList()であるPlayList #0については、capture_enable_flag_PlayListが1となっており、従って、PlayList #0にしたがって再生されるビデオデータの2次利用が許可されている。また、PlayList #0については、number_of_PlayItemsが2となっており、従って、PlayList #0に含まれるPlayItem()の数は2である。図25では、その2つのPlayItem()であるPlayItem#0とPlayItem#1の具体例が、「PlayList#0」の欄の下方に記載されている。
PlayList #0に含まれる1番目の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に含まれる2番目の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において、2番目のPlayList()であるPlayList #1については、capture_enable_flag_PlayListが0となっており、従って、PlayList #1にしたがって再生されるビデオデータの2次利用が許可されていない(禁止されている)。また、PlayList #1については、number_of_PlayItemsが1となっており、従って、PlayList #1に含まれるPlayItem()の数は1である。図25では、その1つのPlayItem()であるPlayItem#0の具体例が、「PlayList#1」の欄の下方に記載されている。
PlayList #1に含まれる1つのPlayItem()であるPlayItem#0では、図6で説明したClip_Information_file_nameが"00003.CLP"に、In_timeが90,000に、OUT_timeが81,090,000に、それぞれなっている。従って、PlayList #1のPlayItem#0によって再生されるクリップは、クリップ情報ファイル"00003.CLP"に対応するクリップストリームファイル"00003.PS"の、時刻90,000から81,090,000までである。
次に、図26は、図10で説明したクリップ情報ファイルClip()の具体例を示している。即ち、図26は、図4のクリップ情報ファイル"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"に格納されたプログラムストリームに多重化されたビデオストリーム(に対応するビデオデータ)については、その2次利用が許可されている。
さらに、図26において、クリップ情報ファイル"00001.CLP"のnumber_of_streamsは4となっており、従って、対応するクリップストリームファイル"00001.PS"に格納されたプログラムストリームには、4本のエレメンタリストリームが多重化されている。
いま、その4本のエレメンタリストリームを、stream#0,stream#1,stream#2,stream#3とすると、図26では、その4本のエレメンタリストリームstream#0,stream#1,stream#2,stream#3それぞれのStreamInfo()(図10)の具体例が、「"00001.CLP"」の欄の下方に記載されている。
クリップストリームファイル"00001.PS"の1本目のエレメンタリストリームstream#0については、stream_idが0xE0となっており、従って、このエレメンタリストリームstream#0は、図20および図22(あるいは図11)で説明したように、ビデオストリームである。なお、本実施の形態では、ビデオストリームについては、上述したように、private_stream_idは無関係であるが、図26では、0x00になっている。
また、クリップストリームファイル"00001.PS"の1本目のエレメンタリストリームであるビデオストリームstream#0については、そのStreamInfo()に含まれるStaticInfo()(図12)のpicture_sizeが'720×480'に、frame_rateが'29.97Hz'に、cc_flagが'Yes'に、それぞれなっている。従って、このビデオストリームstream#0は、720×480ピクセルの、フレーム周期が29.97Hzのビデオデータであり、さらに、クローズドキャプションデータを含んでいる。
さらに、クリップストリームファイル"00001.PS"の1本目のエレメンタリストリームであるビデオストリームstream#0については、StreamInfo()(図10)のnumber_of_DynamicInfoが0になっており、pts_change_pointとDynamicInfo()とのセットは存在しない。
次に、クリップストリームファイル"00001.PS"の2本目のエレメンタリストリームstream#1については、stream_idが0xBDとなっており、private_stream_idが0x00となっている。従って、このエレメンタリストリームstream#1は、図20および図22で説明したように、ATRACオーディオストリームである。
また、クリップストリームファイル"00001.PS"の2本目のエレメンタリストリームであるATRACオーディオストリームstream#1については、そのStreamInfo()に含まれるStaticInfo()(図12)のaudio_language_codeが'日本語'に、channel_configurationが'STEREO'に、lfe_existenceが'NO'に、sampling_frequencyが'48kHz'に、それぞれなっている。従って、このATRACオーディオストリームstream#1は、日本語で、かつステレオのオーディオデータである。また、低域強調チャネルは含まれておらず、サンプリング周波数は、48kHzである。
さらに、クリップストリームファイル"00001.PS"の2本目のエレメンタリストリームであるATRACオーディオストリームstream#1については、StreamInfo()(図10)のnumber_of_DynamicInfoが0になっており、pts_change_pointとDynamicInfo()とのセットは存在しない。
次に、クリップストリームファイル"00001.PS"の3本目のエレメンタリストリームstream#2については、stream_idが0xBDとなっており、private_stream_idが0x80となっている。従って、このエレメンタリストリームstream#2は、図20および図22で説明したように、字幕ストリームである。
また、クリップストリームファイル"00001.PS"の3本目のエレメンタリストリームである字幕ストリームstream#2については、そのStreamInfo()に含まれるStaticInfo()(図12)のsubtitle_language_codeが'日本語'に、configurable_flagが0に、それぞれなっている。従って、この字幕ストリームstream#2は、日本語の字幕データであり、また、その表示方式を変更することは許可されていない(禁止されている)。
さらに、クリップストリームファイル"00001.PS"の3本目のエレメンタリストリームである字幕ストリームstream#2については、StreamInfo()(図10)のnumber_of_DynamicInfoが0になっており、pts_change_pointとDynamicInfo()とのセットは存在しない。
次に、クリップストリームファイル"00001.PS"の4本目のエレメンタリストリームstream#3については、stream_idが0xBDとなっており、private_stream_idが0x81となっている。従って、このエレメンタリストリームstream#3は、図20および図22で説明したように、字幕ストリームである。
なお、クリップストリームファイル"00001.PS"の3本目のエレメンタリストリームである字幕ストリームstream#2と、4本目のエレメンタリストリームである字幕ストリームstream#3とを区別するために、それぞれのprivate_stream_idは、0x80と0x81とになっている。
また、クリップストリームファイル"00001.PS"の4本目のエレメンタリストリームである字幕ストリームstream#2については、そのStreamInfo()に含まれるStaticInfo()(図12)のsubtitle_language_codeが'日本語'に、configurable_flagが1に、それぞれなっている。従って、この字幕ストリームstream#3は、日本語の字幕データであり、また、その表示方式を変更することが許可されている。
さらに、クリップストリームファイル"00001.PS"の4本目のエレメンタリストリームである字幕ストリームstream#3については、StreamInfo()(図10)のnumber_of_DynamicInfoが0になっており、pts_change_pointとDynamicInfo()とのセットは存在しない。
次に、図26において、クリップ情報ファイル"00002.CLP"については、presentation_start_timeが90,000に、presentation_end_timeが27,090,000に、それぞれなっている。従って、クリップ情報ファイル"00002.CLP"に対応するクリップストリームファイル"00002.PS"に格納されたプログラムストリームによれば、300秒分((27,090,000-90,000)/90kHz)のコンテンツが利用可能である。
また、クリップ情報ファイル"00002.CLP"においては、capture_enable_flag_Clipが0になっており、従って、クリップ情報ファイル"00002.CLP"に対応するクリップストリームファイル"00002.PS"に格納されたプログラムストリームに多重化されたビデオストリーム(に対応するビデオデータ)については、その2次利用が許可されていない(禁止されている)。
さらに、図26において、クリップ情報ファイル"00002.CLP"のnumber_of_streamsは4となっており、従って、対応するクリップストリームファイル"00002.PS"に格納されたプログラムストリームには、上述したクリップストリームファイル"00001.PS"における場合と同様に、4本のエレメンタリストリームが多重化されている。
いま、その4本のエレメンタリストリームを、stream#0,stream#1,stream#2,stream#3とすると、図26では、その4本のエレメンタリストリームstream#0,stream#1,stream#2,stream#3それぞれのStreamInfo()(図10)の具体例が、「"00002.CLP"」の欄の下方に記載されている。
ここで、図26では、クリップストリームファイル"00002.PS"の1乃至4本目のエレメンタリストリームstream#0乃至#3それぞれのStreamInfo()の内容は、上述したクリップストリームファイル"00001.PS"の1乃至4本目のエレメンタリストリームstream#0乃至#3それぞれのStreamInfo()の内容と同一になっているので、その説明は省略する。
なお、上述のように、クリップストリームファイル"00002.PS"の1乃至4本目のエレメンタリストリームstream#0乃至#3それぞれのStreamInfo()の内容は、クリップストリームファイル"00001.PS"の1乃至4本目のエレメンタリストリームstream#0乃至#3それぞれのStreamInfo()の内容と同一であるので、クリップストリームファイル"00002.PS"の1本目のエレメンタリストリームstream#0はビデオストリームであり、2本目のエレメンタリストリームstream#1はATRACオーディオストリームである。また、その3本目のエレメンタリストリームstream#2と、4本目のエレメンタリストリームstream#3は、いずれも字幕ストリームである。
次に、図26において、クリップ情報ファイル"00003.CLP"については、presentation_start_timeが90,000に、presentation_end_timeが81,090,000に、それぞれなっている。従って、クリップ情報ファイル"00003.CLP"に対応するクリップストリームファイル"00003.PS"に格納されたプログラムストリームによれば、900秒分((81,090,000-90,000)/90kHz)のコンテンツが利用可能である。
また、クリップ情報ファイル"00003.CLP"においては、capture_enable_flag_Clipが1になっており、従って、クリップ情報ファイル"00003.CLP"に対応するクリップストリームファイル"00003.PS"に格納されたプログラムストリームに多重化されたビデオストリームについては、その2次利用が許可されている。
さらに、図26において、クリップ情報ファイル"00003.CLP"のnumber_of_streamsは3となっており、従って、対応するクリップストリームファイル"00003.PS"に格納されたプログラムストリームには、3本のエレメンタリストリームが多重化されている。
いま、その3本のエレメンタリストリームを、stream#0,stream#1,stream#2とすると、図26では、その3本のエレメンタリストリームstream#0,stream#1,stream#2それぞれのStreamInfo()(図10)の具体例が、「"00003.CLP"」の欄の下方に記載されている。
クリップストリームファイル"00003.PS"の1本目のエレメンタリストリームstream#0については、stream_idが0xE0となっており、従って、このエレメンタリストリームstream#0は、図20および図22(あるいは図11)で説明したように、ビデオストリームである。なお、クリップストリームファイル"00001.PS"の1本目のエレメンタリストリームstream#0と同様に、private_stream_idは、0x00になっている。
また、クリップストリームファイル"00003.PS"の1本目のエレメンタリストリームであるビデオストリームstream#0については、そのStreamInfo()に含まれるStaticInfo()(図12)のpicture_sizeが'720×480'に、frame_rateが'29.97Hz'に、cc_flagが'No'に、それぞれなっている。従って、このビデオストリームstream#0は、720×480ピクセルの、フレーム周期が29.97Hzのビデオデータであり、さらに、クローズドキャプションデータを含んでいない。
さらに、クリップストリームファイル"00003.PS"の1本目のエレメンタリストリームであるビデオストリームstream#0については、StreamInfo()(図10)のnumber_of_DynamicInfoが2になっており、従って、そのStreamInfo()には、pts_change_pointとDynamicInfo()とのセットが2セット記述されている。
次に、クリップストリームファイル"00003.PS"の2本目のエレメンタリストリームstream#1については、stream_idが0xE1となっており、従って、このエレメンタリストリームstream#1は、図20および図22(あるいは図11)で説明したように、ビデオストリームである。なお、クリップストリームファイル"00003.PS"の1本目のエレメンタリストリームであるビデオストリームstream#0と、2本目のエレメンタリストリームであるビデオストリームstream#1とを区別するために、それぞれのstream_idは、0xE0と0xE1とになっている。また、クリップストリームファイル"00001.PS"の1本目のエレメンタリストリームstream#0と同様に、private_stream_idは、0x00になっている。
また、クリップストリームファイル"00003.PS"の2本目のエレメンタリストリームであるビデオストリームstream#1については、そのStreamInfo()に含まれるStaticInfo()(図12)のpicture_size,frame_rate,cc_flagが、1本目のエレメンタリストリームであるビデオストリームstream#0についてのものと同一になっている。従って、クリップストリームファイル"00003.PS"の2本目のエレメンタリストリームであるビデオストリームstream#1は、720×480ピクセルの、フレーム周期が29.97Hzのビデオデータであり、さらに、クローズドキャプションデータを含んでいない。
さらに、クリップストリームファイル"00003.PS"の2本目のエレメンタリストリームであるビデオストリームstream#1については、StreamInfo()(図10)のnumber_of_DynamicInfoが0になっており、pts_change_pointとDynamicInfo()とのセットは存在しない。
次に、クリップストリームファイル"00003.PS"の3本目のエレメンタリストリームstream#2については、stream_idが0xBDとなっており、private_stream_idが0x00となっている。従って、このエレメンタリストリームstream#2は、図20および図22で説明したように、ATRACオーディオストリームである。
また、クリップストリームファイル"00003.PS"の3本目のエレメンタリストリームであるATRACオーディオストリームstream#2については、そのStreamInfo()に含まれるStaticInfo()(図12)のaudio_language_code,channel_configuration,lfe_existence,sampling_frequencyが、クリップストリームファイル"00001.PS"の2本目のエレメンタリストリームであるATRACオーディオストリームstream#1のものと同一になっている。従って、クリップストリームファイル"00003.PS"の3本目のエレメンタリストリームであるATRACオーディオストリームstream#2は、日本語で、かつステレオのオーディオデータである。また、低域強調チャネルは含まれておらず、サンプリング周波数は、48kHzである。
さらに、クリップストリームファイル"00003.PS"の3本目のエレメンタリストリームであるATRACオーディオストリームstream#2については、StreamInfo()(図10)のnumber_of_DynamicInfoが3になっており、従って、そのStreamInfo()には、pts_change_pointとDynamicInfo()とのセットが3セット記述されている。
次に、図27は、図10で説明したクリップ情報ファイルClip()のうちのEP_map()具体例を示している。即ち、図27は、図4のクリップ情報ファイル"00001.CLP"の中の、図14のEP_map()の具体例を示している。
図27において、EP_map()のnumber_of_stream_id_entriesは1になっており、従って、このEP_map()には、1つのエレメンタリストリームについてのデコード開始可能点の情報が記述されている。
また、図27のEP_map()では、stream_idが0xE0になっている。従って、図20および図22で説明したことから、EP_map()には、0xE0となっているstream_idによって特定されるビデオストリームについてのデコード開始可能点の情報(PTS_EP_startとRPN_EP_start(図14))が記述されている。即ち、図27は、クリップ情報ファイル"00001.CLP"のEP_map()であり、クリップ情報ファイル"00001.CLP"に対応するクリップストリームファイル"00001.CLP"において、stream_idが0xE0のエレメンタリストリームは、図26で説明したように、クリップストリームファイル"00001.CLP"の1本目のビデオストリームstream#0であるから、図27のEP_map()に記述されている情報は、そのビデオストリームstream#0のデコード開始可能点のPTS_EP_startとRPN_EP_startである。
図27では、クリップストリームファイル"00001.CLP"の1本目のビデオストリームstream#0のデコード開始可能点のうちの、先頭から5点のPTS_EP_startとRPN_EP_startが記載されており、6点目以降のPTS_EP_startとRPN_EP_startの記載は省略してある。
なお、図27のEP_map()において、private_stream_idは0x00になっているが、stream_idがビデオストリームを表している場合は、上述したように、private_stream_idは無関係である(無視される)。
次に、図28は、図25で説明したPlayList #0とPlayList #1(図5のPlayList())の中のPlayListMark()の具体例を示している。
図28上側は、PlayList #0のPlayListMark()(図7)を示している。
図28上側において、PlayList #0のPlayListMark()におけるnumber_of_PlayList_marksは7になっており、従って、PlayList #0(のPlayListMark())に含まれるMark()の数は7である。
また、図28上側において、PlayList #0に含まれる7つのMark()のうちの1番目のMark()であるMark#0は、mark_type(図7)が'Chapter'になっているので、チャプタマークである。さらに、Mark#0は、ref_to_PlayItem_id(図7)が0になっているので、PlayList #0に含まれる図25の2つのPlayItem#0と#1のうちの、PlayItem#0に属する。また、Mark#0は、mark_time_stampが180,090になっているので、PlayList #0に含まれるPlayItem#0によって再生されるクリップストリームファイルの時刻(再生時刻)180,090上の印である。さらに、Mark#0は、entry_ES_stream_idおよびentry_ES_private_stream_idがいずれも0になっているので、いずれのエレメンタリストリームにも関連付けられていない。また、Mark#0は、mark_dataが1になっているので、番号が1のチャプタを表す。
なお、ここでは、PlayList #0に含まれるPlayItem#0によって再生されるクリップストリームファイルは、図25で説明した、そのPlayItem#0のClip_Infomation_file_nameに記述されている"00001.CLP"から特定されるクリップストリームファイル"00001.PS"であり、従って、Mark#0のmark_time_stampが表す、上述した時刻180,090は、クリップストリームファイル"00001.PS"の時刻である。
図28上側において、PlayList #0に含まれる7つのMark()のうちの5番目のMark()であるMark#4も、1番目のMark#0と同様のチャプタマークである。
即ち、5番目のMark()であるMark#4は、mark_type(図7)が'Chapter'になっているので、チャプタマークである。さらに、Mark#4は、ref_to_PlayItem_id(図7)が1になっているので、PlayList #0に含まれる図25の2つのPlayItem#0と#1のうちの、PlayItem#1に属する。また、Mark#4は、mark_time_stampが90,000になっているので、PlayList #0に含まれるPlayItem#1によって再生されるクリップストリームファイルの時刻90,000上の印である。さらに、Mark#4は、entry_ES_stream_idおよびentry_ES_private_stream_idがいずれも0になっているので、いずれのエレメンタリストリームにも関連付けられていない。また、Mark#4は、mark_dataが2になっているので、番号が2のチャプタを表す。
なお、ここでは、PlayList #0に含まれるPlayItem#1によって再生されるクリップストリームファイルは、図25で説明した、そのPlayItem#1のClip_Infomation_file_nameに記述されている"00002.CLP"から特定されるクリップストリームファイル"00002.PS"であり、従って、Mark#4のmark_time_stampが表す、上述した時刻90,000は、クリップストリームファイル"00002.PS"の時刻である。
また、図28上側において、PlayList #0に含まれる7つのMark()のうちの2番目のMark()であるMark#1は、mark_type(図7)が'Index'になっているので、インデクスマークである。さらに、Mark#1は、ref_to_PlayItem_id(図7)が0になっているので、PlayList #0に含まれる図25の2つのPlayItem#0と#1のうちの、PlayItem#0に属する。また、Mark#1は、mark_time_stampが5,580,090になっているので、PlayList #0に含まれるPlayItem#0によって再生されるクリップストリームファイルの時刻5,580,090上の印である。さらに、Mark#1は、entry_ES_stream_idおよびentry_ES_private_stream_idがいずれも0になっているので、いずれのエレメンタリストリームにも関連付けられていない。また、Mark#1は、mark_dataが1になっているので、番号が1のインデクスを表す。
なお、ここでは、PlayList #0に含まれるPlayItem#0によって再生されるクリップストリームファイルは、上述したように、クリップストリームファイル"00001.PS"であり、従って、Mark#1のmark_time_stampが表す、上述した時刻5,580,090は、クリップストリームファイル"00001.PS"の時刻である。
図28上側において、PlayList #0に含まれる7つのMark()のうちの3番目、6番目、7番目のMark()であるMark#2,Mark#5,Mark#6も、2番目のMark#1と同様のインデクスマークである。
また、図28上側において、PlayList #0に含まれる7つのMark()のうちの4番目のMark()であるMark#3は、mark_type(図7)が'Event'になっているので、イベントマークである。さらに、Mark#3は、ref_to_PlayItem_id(図7)が0になっているので、PlayList #0に含まれる図25の2つのPlayItem#0と#1のうちの、PlayItem#0に属する。また、Mark#3は、mark_time_stampが16,380,090になっているので、PlayList #0に含まれるPlayItem#0によって再生されるクリップストリームファイルの時刻16,380,090上の印である。さらに、Mark#3は、entry_ES_stream_idおよびentry_ES_private_stream_idがいずれも0になっているので、いずれのエレメンタリストリームにも関連付けられていない。また、Mark#3は、mark_dataが0になっているので、引数として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(のPlayListMark())に含まれるMark()の数は3である。
また、図28下側において、PlayList#1に含まれる3つのMark()のうちの1番目のMark()であるMark#0は、mark_type(図7)が'Chapter'になっているので、チャプタマークである。さらに、Mark#0は、ref_to_PlayItem_id(図7)が0になっているので、PlayList#1に含まれる図25の1つのPlayItem#0に属する。また、Mark#0は、mark_time_stampが90,000になっているので、PlayList#1に含まれるPlayItem#0によって再生されるクリップストリームファイルの時刻90,000上の印である。さらに、Mark#0は、entry_ES_stream_idおよびentry_ES_private_stream_idがいずれも0になっているので、いずれのエレメンタリストリームにも関連付けられていない。また、Mark#0は、mark_dataが0になっているので、番号が0のチャプタを表す。
なお、ここでは、PlayList#1に含まれるPlayItem#0によって再生されるクリップストリームファイルは、図25で説明した、そのPlayItem#0のClip_Infomation_file_nameに記述されている"00003.CLP"から特定されるクリップストリームファイル"00003.PS"であり、従って、Mark#0のmark_time_stampが表す、上述した時刻90,000は、クリップストリームファイル"00003.PS"の時刻である。
図28下側において、PlayList#1に含まれる3つのMark()のうちの2番目のMark()であるMark#1は、mark_type(図7)が'Event'になっているので、イベントマークである。さらに、Mark#1は、ref_to_PlayItem_id(図7)が0になっているので、PlayList#1に含まれる図25の1つのPlayItem#0に属する。また、Mark#1は、mark_time_stampが27,090,000になっているので、PlayList#1に含まれるPlayItem#0によって再生されるクリップストリームファイルの時刻27,090,000上の印である。さらに、Mark#1は、entry_ES_stream_idが0xE0で、entry_ES_private_stream_idが0になっているので、stream_idが0xE0で特定(識別)されるエレメンタリストリーム、即ち、図20および図22で説明したように、ビデオストリームに関連付けられている。また、Mark#1は、mark_dataが1になっているので、引数として1を伴うイベントを発生させる。
なお、ここでは、PlayList#1に含まれるPlayItem#0によって再生されるクリップストリームファイルは、上述したように、クリップストリームファイル"00003.PS"であり、従って、Mark#1のmark_time_stampが表す、上述した時刻27,090,000は、クリップストリームファイル"00003.PS"の時刻である。
また、Mark#1が関連付けられている、stream_idが0xE0のビデオストリームは、そのMark#1が属する、図25のPlayList#1に含まれるPlayItem#0のClip_Infomation_file_nameに記述されている"00003.CLP"に記述されているstream_idが0xE0のビデオストリーム、即ち、図26のクリップ情報ファイル"00003.CLP"から特定される、クリップストリームファイル"00003.PS"に多重化されている3本のエレメンタリストリームstream#0乃至#2のうちの、1本目のエレメンタリストリーム(ビデオストリーム)stream#0である。
次に、図28下側において、PlayList#1に含まれる3つのMark()のうちの3番目のMark()であるMark#2は、mark_type(図7)が'Event'になっているので、イベントマークである。さらに、Mark#2は、ref_to_PlayItem_id(図7)が0になっているので、PlayList#1に含まれる図25の1つのPlayItem#0に属する。また、Mark#1は、mark_time_stampが27,540,000になっているので、PlayList#1に含まれるPlayItem#0によって再生されるクリップストリームファイルの時刻27,540,000上の印である。さらに、Mark#2は、entry_ES_stream_idが0xE1で、entry_ES_private_stream_idが0になっているので、stream_idが0xE1で特定(識別)されるエレメンタリストリーム、即ち、図20および図22で説明したように、ビデオストリームに関連付けられている。また、Mark#2は、mark_dataが2になっているので、引数として2を伴うイベントを発生させる。
なお、ここでは、PlayList#1に含まれるPlayItem#0によって再生されるクリップストリームファイルは、上述したように、クリップストリームファイル"00003.PS"であり、従って、Mark#2が表す、上述した時刻27,540,000は、クリップストリームファイル"00003.PS"の時刻である。
また、Mark#2が関連付けられている、stream_idが0xE1のビデオストリームは、そのMark#2が属する、図25のPlayList#1に含まれるPlayItem#0のClip_Infomation_file_nameに記述されている"00003.CLP"に記述されているstream_idが0xE1のビデオストリーム、即ち、図26のクリップ情報ファイル"00003.CLP"から認識される、クリップストリームファイル"00003.PS"に多重化されている3本のエレメンタリストリームstream#0乃至#2のうちの、2本目のエレメンタリストリーム(ビデオストリーム)stream#1である。
ここで、図28下側では、PlayList#1のPlayListMark()の一覧表の欄外の右側に、Mark()が属するPlayItem()の先頭からの時刻を示してある。
なお、図28においては、チャプタマークやインデクスマークが表すチャプタやインデクスの番号が、mark_dataに記述されているが、チャプタマークやインデクスマークが表すチャプタやインデクスの番号は、mark_dataに記述しなくても、例えば、PlayListMark()におけるチャプタマークやインデクスマークの数をカウントすることによって認識することができる。
[ディスク装置の動作説明]
次に、図1のディスク101に、図25乃至図28で説明したようなデータ(ファイル)が記録されているとして、図1のディスク装置の動作について説明する。
ディスク101がディスクドライブ102に挿入されると、その旨を示すメッセージがドライブインターフェース114、さらには、図2のオペレーティングシステム201を経由して、ビデオコンテンツ再生プログラム210に伝えられる。ビデオコンテンツ再生プログラム210は、ディスク101がディスクドライブ102に挿入された旨のメッセージをオペレーティングシステム201から受信すると、図29の再生前処理を開始する。
「再生前処理」
即ち、図29は、ビデオコンテンツ再生プログラム210が行う再生前処理を説明するフローチャートである。
ここで、以下、フローチャートによって説明するディスク装置の動作または処理は、必ずしもフローチャートとして記載された順序に沿って時系列に行われる必要はなく、並列的あるいは個別に行われることもある。但し、本明細書では、便宜上、ディスク装置の動作または処理を、フローチャートに沿って説明する。
再生前処理では、ビデオコンテンツ再生プログラム210は、ステップS101において、オペレーティングシステム201のファイルシステム機能を使用して、ディスク101をチェックし、ディスク101が、ビデオコンテンツ再生プログラム210用の正常なディスクであるか否かを判定する。
ここで、上述したように、ディスク101へのアクセス(ファイルの読み出し)は、オペレーティングシステム201のファイルシステム機能を使用して行われるが、以下では、その説明は、適宜省略する。
ステップS101において、ディスク101が正常なディスクでないと判定された場合、即ち、例えば、ディスク101に採用されているファイルシステムが、オペレーティングシステム201の対応していないタイプであった場合や、ルートディレクトリに"VIDEO"ディレクトリが置かれていない場合、ビデオコンテンツ再生プログラム210はディスク101に対応していないと判断して、ステップS102に進み、グラフィクス処理モジュール219が、エラー処理を行って、再生前処理を終了する。
即ち、グラフィックス処理モジュール219は、エラー処理として、ディスク101が正常でない旨のエラーメッセージ(のビデオデータ)を生成し、ビデオ出力モジュール220から出力させ、これにより、エラーメッセージを表示させる。なお、エラー処理としては、その他、例えば、オーディオ出力モジュール221からの警告音の出力や、ディスクドライブ102からのディスク101の排出等を行うようにすることが可能である。
一方、ステップS101において、ディスク101が正常なディスクであると判定された場合、ステップS103に進み、ビデオコンテンツ再生プログラム210は、コンテンツデータ供給モジュール213によって、オペレーティングシステム201に対し、ディスク101(図4)の"VIDEO"ディレクトリに置かれている"SCRIPT.DAT"ファイルと、"PLAYLIST.DAT"ファイルとの2つのデータファイルを要求して読み込み、ステップS104に進む。ステップS104では、"SCRIPT.DAT"ファイルが、スクリプト制御モジュール211に供給されるとともに、"PLAYLIST.DAT"ファイルが、プレイヤ制御モジュール212に供給される。
その後、ステップS104からS105乃至S107に進み、プレイヤ制御モジュール212は、初期化処理を行う。なお、スクリプト制御モジュール211は、プレイヤ制御モジュール212の初期化処理が終了するまで待つ。
「プレイヤ制御モジュール212の初期化処理」
初期化処理では、ステップS105において、プレイヤ制御モジュール212が、"PLAYLIST.DAT"ファイルの解析を行い、"PLAYLIST.DAT"ファイルの中で使われているクリップ情報ファイルの数とそのファイル名を調査する。
即ち、いまの場合、"PLAYLIST.DAT"ファイルは、図25に示したものとなっており、プレイヤ制御モジュール212は、図25の"PLAYLIST.DAT"ファイルにおいてnumber_of_PlayListsが2になっていることから、1番目のPlayList#0と2番目のPlayList#1との2つのPlayList()が存在することを認識する。さらに、プレイヤ制御モジュール212は、図25の"PLAYLIST.DAT"ファイルにおける1番目のPlayList#0について、number_of_PlayItemsが2となっていることから、そのPlayList#0には、1番目のPlayItem#0と2番目のPlayItem#1との2つのPlayItem()が存在することを認識する。そして、プレイヤ制御モジュール212は、図25の"PLAYLIST.DAT"ファイルにおける、PlayList#0に含まれる1番目のPlayItem#0と2番目のPlayItem#1それぞれのClip_Information_file_nameを参照することにより、PlayList#0に含まれる1番目のPlayItem#0のクリップ情報ファイル(のファイル名)が"00001.CLP"であり、2番目のPlayItem#1のクリップ情報ファイルが"00002.CLP"であることを認識する。
プレイヤ制御モジュール212は、2番目のPlayList#1についても同様にして、そのnumber_of_PlayItemsが1であることから、1つのPlayItem()(PlayItem#0)が存在し、さらに、そのPlayItem#0の中のClip_Information_file_nameから、そのPlayItem#0のクリップ情報ファイルが"00003.CLP"であることを認識する。
その後、ステップS105からS106に進み、プレイヤ制御モジュール212は、ディスク101から、ステップS105で認識したクリップ情報ファイル、即ち、ディスク101の"VIDEO"ディレクトリ内の"CLIP"ディレクトリから3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"を読み込む。
ここで、ステップS106でのクリップ情報ファイルの読み込みは、最初に再生されるPlayList()のPlayItemのクリップ情報ファイルだけで十分であるが、本実施の形態では、上述したように、すべてのPlayList()のPlayItem()のクリップ情報ファイルを先読みしておくこととする。
ステップS106の処理後は、ステップS107に進み、プレイヤ制御モジュール212は、ステップS105で認識したクリップ情報ファイルの読み込みに成功したかどうかを判定し、さらに、その読み込んだクリップ情報ファイルに対応するクリップストリームファイルが、ディスク101に存在するか否かを判定(チェック)する。即ち、ステップS107では、クリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"の読み込みに成功し、さらに、そのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"それぞれとファイル名の拡張子のみが異なるクリップストリームファイル"00001.PS"、"00002.PS"、"00003.PS"が、ディスク101の"VIDEO"ディレクトリの下にある"STREAM"ディレクトリに存在するかどうかを判定する。
ステップS107において、ステップS105で認識したクリップ情報ファイルの読み込みに失敗したと判定されるか、または、クリップ情報ファイルに対応するクリップストリームファイルが、ディスク101に存在しないと判定された場合、即ち、例えば、"PLAYLIST.DAT"ファイルにしたがった再生に必要なクリップ情報ファイルやクリップストリームファイルが、ディスク101に記録されていない場合、ビデオコンテンツ再生プログラム210は、ディスク101に対応していないと判断して、ステップS102に進み、上述したエラー処理が行われ、再生前処理を終了する。
一方、ステップS107において、ステップS105で認識したクリップ情報ファイルの読み込みに成功し、かつ、クリップ情報ファイルに対応するクリップストリームファイルが、ディスク101に存在すると判定された場合、プレイヤ制御モジュール212は、初期化処理を終了し、ステップS108に進む。
ステップS108では、スクリプト制御モジュール211が、"SCRIPT.DAT"ファイルの解釈と実行を開始する。
例えば、いま、スクリプト制御モジュール211が、"SCRIPT.DAT"ファイルを実行することにより、1番目のPlayList()(PlayList#0)の再生が、プレイヤ制御モジュール212に指示されたとすると、図30の再生処理が行われる。
「再生処理」
即ち、図30は、ビデオコンテンツ再生プログラム210が行う再生処理を説明するフローチャートである。
「再生準備処理」
再生処理では、プレイヤ制御モジュール212は、まずステップS121とS122において、スクリプト制御モジュール211から再生を指示されたPlayList()、即ち、1番目のPlayList()(PlayList#0)の再生準備処理を行う。
即ち、プレイヤ制御モジュール212は、ステップS121において、1番目のPlayList#0に含まれる1番目のPlayItem#0のIN_time(図6)を確認して、ステップS122に進み、1番目のPlayList#0に含まれる1番目のPlayItem#0によって再生されるクリップストリームファイル"00001.PS"上の、そのPlayItem#0のIN_timeに相当する、再生を開始する再生開始位置を調査する。
ここで、PlayItem()のIN_time(図6)が、クリップストリームファイルの先頭を指し示している場合には、クリップストリームファイルの先頭から、プログラムストリームを読み出せば良いが、IN_timeが、クリップストリームファイルの先頭以外を指し示している場合には、IN_timeに対応する位置を探し出し(調査し)、そこからプログラムストリームを読み出す必要がある。
具体的には、図25に示した場合、1番目のPlayList#0に含まれる1番目のPlayItem#0のIN_timeは、180,090である。プレイヤ制御モジュール212は、1番目のPlayList#0に含まれる1番目のPlayItem#0によって再生されるクリップストリームファイル"00001.CLP"の、図27に示したEP_map()から、PlayItem#0のIN_timeである180,090に適した再生開始位置を探し出す。
即ち、プレイヤ制御モジュール212は、例えば、EP_map()に記述されたデコード開始可能点を表すPTS_EP_startのうちの、式PTS_EP_start≦IN_timeを満たす最大のPTS_EP_startを、二分探索(バイナリサーチ)等を用いて検索する。ここで、IN_time以下のPTS_EP_startを検索するのは、IN_timeによって表される位置が、デコード開始可能点であるとは限らないからである。
いまの場合、IN_timeは、上述したように、180,090である。また、1番目のPlayList#0に含まれる1番目のPlayItem#0によって再生されるクリップストリームファイル"00001.CLP"の、図27に示したEP_map()においては、式PTS_EP_start≦IN_timeを満たす最大のPTS_EP_startとして、180,090が記述されている。従って、プレイヤ制御モジュール212では、図27に示したEP_map()から、その180,090となっているPTS_EP_startが検索される。
さらに、プレイヤ制御モジュール212では、その検索されたPTS_EP_startに対応するRPN_EP_startである305(セクタ)が読み出され、その305であるRPN_EP_startによって表されるクリップストリームファイル"00001.PS"上の位置が、再生開始位置として決定される。
プレイヤ制御モジュール212は、以上のようにして再生開始位置を決定すると、ステップS122からS123に進み、タイムコードを表示するように、グラフィクス処理モジュール219を制御する。グラフィクス処理モジュール219は、プレイヤ制御モジュール212の制御にしたがい、タイムコード(のビデオデータ)を生成してビデオ出力モジュール220に出力する。これにより、タイムコードの表示が開始される。
ここで、ステップS123で表示が開始されるタイムコードは、例えば、PlayList()の先頭を00:00:00(時間:分:秒)に換算した値とする。なお、タイムコードとともに、またはタイムコードではなく、チャプタやインデクスの番号を表示するようにしても良い。
「PlaylistMark()の解析処理」
ステップS123でタイムコードの表示が開始された後は、ステップS124に進み、プレイヤ制御モジュール212は、スクリプト制御モジュール211から再生を指示されたPlayList()、即ち、1番目のPlayList()(PlayList#0)に記述されているPlayListMark()(図7)を解析する解析処理を行う。
具体的には、プレイヤ制御モジュール212は、既に読み込んである"PLAYLIST.DAT"ファイルにおける1番目のPlayList#0の、図28上側に示したPlayListMark()において、number_of_PlayList_marksが7になっていることから、そのPlayList#0に含まれるMark()の数が7であることを認識する。
さらに、プレイヤ制御モジュール212は、PlayList#0に含まれる、図28上側の7つのMark()を解析し、そのref_to_PlayItem_idから、7つのMark()のうちの1番目から4番目までの4つのMark()が、PlayList#0の1番目のPlayItem()(PlayItem#0)に属していることを認識する。
その後、プレイヤ制御モジュール212は、PlayList#0の1番目のPlayItem#0に属している4つのMark()のmark_time_stampを取り出し、要素数が4の配列として、デコード制御モジュール214に渡す。即ち、これにより、図28上側の7つのMark()のうちの1番目から4番目までの4つのMark()それぞれのmark_time_stampである{180,090}、{5,580,090}、 {10,980,090}、 {16,380,090}の4つの時刻が、プレイヤ制御モジュール212から、デコード制御モジュール214に渡される。このときこれら時刻の属性は「マーク処理」であることも、プレイヤ制御モジュール212から、デコード制御モジュール214に伝えられる。デコード制御モジュール214は、計時部214Aで計時している時刻が、「マーク処理」の属性の時刻に一致したとき、その旨を示すメッセージ、「マーク処理」の属性の時刻に一致した時刻、および「マーク処理」の属性を、プレイヤ制御モジュール212に伝える。
「再生するエレメンタリストリームの決定処理」
次に、ステップS124からS125に進み、プレイヤ制御モジュール212は、再生するエレメンタリストリームを決定する。
即ち、プレイヤ制御モジュール212は、スクリプト制御モジュール211から再生を指示されたPlayList()である1番目のPlayList#0における1番目のPlayItem#0(図25)のClip_Information_fime_nameにファイル名が記述されている、図26のクリップ情報ファイル"00001.CLP"において、number_of_streamsが4になっていることから、対応するクリップストリームファイル"00001.PS"に、4本のエレメンタリストリームが多重化されていることを認識する。さらに、プレイヤ制御モジュール212は、その4本のエレメンタリストリームに対する、図26のクリップ情報ファイル"00001.CLP"のStaticInfo()のstream_idと必要なprivate_stream_idを順に調査し、その4本のエレメンタリストリームが、1本のビデオストリーム、1本のATRACオーディオストリーム、および2本の字幕ストリームであることを認識する。即ち、クリップストリームファイル"00001.PS"に多重化されている各属性のエレメンタリストリームの本数が認識される。
なお、クリップストリームファイルに多重化されている各属性のエレメンタリストリームの本数の情報は、再生中でのエレメンタリストリームの切り替え(オーディオ切り替え、字幕切り替え等)に使用される。また、字幕ストリームは、クリップストリームファイル中に存在しない(コンテンツに字幕が含まれない)場合があり、字幕ストリームが存在するかどうかの判断に、「字幕ストリーム」の属性のエレメンタリストリームの本数の情報が使用される。
プレイヤ制御モジュール212は、以上のようなStaticInfo()の調査の結果に基づいて、再生するエレメンタリストリームを選択、決定するが、いまの場合、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームの中に、「ビデオストリーム」と「オーディオストリーム」の属性のエレメンタリストリームは、それぞれ1本しかないので、「ビデオストリーム」と「オーディオストリーム」の属性のエレメンタリストリームについては、選択の余地がなく、その1本のビデオストリームとオーディオストリーム(ATRACオーディオストリーム)が、再生するエレメンタリストリームとして決定される。
また、「字幕ストリーム」の属性のエレメンタリストリームについては、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームの中に2本存在するので、その2本の字幕ストリームのうちのいずれか1本の字幕ストリームが、再生するエレメンタリストリームとして選択、決定される。ここでは、例えば、2本の字幕ストリームのうちの、クリップ情報ファイル"00001.CLP"での出現順で最初の字幕ストリームが選択されることとする。
ここで、上述のように、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームの属性と本数を認識するにあたっては、その4本のエレメンタリストリームそれぞれを特定する必要があるが、プレイヤ制御モジュール212は、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームの特定を、stream_idと必要なprivate_stream_idによって行う。
即ち、プレイヤ制御モジュール212は、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームのうちの、「ビデオストリーム」の属性のエレメンタリストリームであるビデオストリームを、図26でクリップ情報ファイル"00001.CLP"について説明したように、0xE0となっているstream_idで特定する。
また、プレイヤ制御モジュール212は、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームのうちの、「オーディオストリーム」の属性のエレメンタリストリームであるATRACオーディオストリームを、図26でクリップ情報ファイル"00001.CLP"について説明したように、0xBDとなっているstream_id、および0x00となっているprivate_stream_idで特定する。
さらに、プレイヤ制御モジュール212は、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームにおける「字幕ストリーム」の属性のエレメンタリストリームである2本の字幕ストリームそれぞれを、図26でクリップ情報ファイル"00001.CLP"について説明したように、0xBDとなっているstream_id、および0x80となっているprivate_stream_idと、0xBDとなっているstream_id、および0x81となっているprivate_stream_idで、それぞれ特定する。
以上のように、クリップストリームファイルに対応するクリップ情報ファイルのメタデータとして記述されるstream_idとprivate_stream_idの組み合わせによって、そのクリップストリームファイルに多重化されているエレメンタリストリームを特定することができる。
ここで、stream_idとprivate_stream_idの組み合わせは、MPEG2-Systemの多重化を拡張するために設けたメカニズムである。このstream_idとprivate_stream_idの組み合わせを、メタデータ(データベース)において、エレメンタリストリームを特定するために使用することにより、エレメンタリストリームを確実に特定することが可能になる。また、将来、private_stream_idの意味を拡張し、対応するエレメンタリストリームの本数や種類(属性)を増やした場合にも現在のメカニズムをそのまま使用可能であるため、拡張性において勝っている。
即ち、例えば、BD(Blue ray Disc)規格では、データの特定に、MPEG2規格のトランスポートストリーム(Transport Stream)のPID(Packet ID)が用いられるため、MPEG2規格に拘束される。また、例えば、DVD-Video規格では、private_stream_idに類似するsub_stream_idが定義されているが、sub_stream_idは、ストリームの特定のためにデータベース上に記述することができるようにはなっておらず、8本あるいは32本のストリーム情報を記述する固定的な領域に記述することができるにすぎないため(たとえばVI4-49、Table 4.2.1-2(VTS-AST_ATRT)やVI4-52、Table 4.2.1-3(VTS_SPST_ATRT)等参照)、拡張性に乏しい。
これに対して、stream_idとprivate_stream_idの組み合わせは、メタデータが記述される、例えば、図10のクリップ情報ファイルClip()において、number_of_streamsで表すことができる数だけ記述することができ、従って、クリップストリームファイルに多重化されているエレメンタリストリームを、その数によらず(但し、number_of_streamsで表すことができる数の範囲)、クリップ情報ファイルClip()に記述されたメタデータとしてのstream_idとprivate_stream_idの組み合わせから特定することが可能となる。
なお、本実施の形態では、stream_idとprivate_stream_idの組み合わせは、図10のクリップ情報ファイルにおいて、対応するクリップストリームファイルに多重化されているエレメンタリストリームを特定するのに使用される他、例えば、図7のPlayListMark()におけるentry_ES_stream_idとentry_ES_private_stream_idの組み合わせとして、Mark()を関連付けるエレメンタリストリームの特定にも使用される。さらに、stream_idとprivate_stream_idの組み合わせは、その他、例えば、図14のEP_map()において、デコード可能開始点の情報を記述するエレメンタリストリームの特定にも使用される。
「出力属性の制御処理」
その後、ステップS125からS126に進み、プレイヤ制御モジュール212は、再生対象のエレメンタリストリーム、即ち、ステップS125で再生すると決定したエレメンタリストリームの出力属性の制御処理を行う。
具体的には、プレイヤ制御モジュール212は、まず、再生対象のエレメンタリストリーム、即ち、ステップS125で再生すると決定したビデオストリーム、ATRACオーディオストリーム、字幕ストリームそれぞれについて、出力属性が記述されるDynamicInfo()(図13)の数を表すnumber_of_DynamicInfo(図10)を調査する。
ここで、いまの場合、再生対象のビデオストリーム、ATRACオーディオストリーム、字幕ストリームは、クリップストリームファイル"00001.PS"に多重化されているエレメンタリストリームであり、それらのnumber_of_DynamicInfoは、図26の"00001.CLP"で説明したように、いずれも0になっている。このように、再生対象のエレメンタリストリームのすべてについて、number_of_DynamicInfoが0である場合、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームの出力属性の制御処理としては、特に処理を行わない。
なお、再生対象のエレメンタリストリームについてのnumber_of_DynamicInfoが0でない場合に、そのエレメンタリストリームの出力属性の制御として行われる処理については、後述する。
「再生開始の準備処理」
ステップS126の処理後は、ステップS127に進み、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームの再生開始の準備処理を行う。
即ち、プレイヤ制御モジュール212は、コンテンツデータ供給モジュール213に対し、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"のファイル名と、ステップS122で決定した再生開始位置であるEP_map()に記述されたRPN_EP_start(=305)を与える。
さらに、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"に格納されたプログラムストリームの、バッファ制御モジュール215への供給が開始される前に、バッファ制御モジュール215を初期化する。
具体的には、バッファ制御モジュール215(図3)では、データ先頭ポインタ記憶部231に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部232に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部241に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部251に記憶されるオーディオ読み出しポインタ、字幕読み出しポインタ記憶部262に記憶される字幕読み出しポインタに、同じ値が代入される。
これにより、データ先頭ポインタ記憶部231に記憶されたデータ先頭ポインタと、データ書き込みポインタ232に記憶されたデータ書き込みポインタとは、バッファ制御モジュール215のバッファ215Aの同一の位置を指す。これは、バッファ215Aに、有効なデータが蓄積されていない状態を表す。
さらに、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームを識別(特定)するための識別情報としてのstream_id、さらには、必要に応じて、private_stream_idを、バッファ制御モジュール215に供給する。
即ち、上述したように、再生対象のエレメンタリストリームのうちの、「ビデオストリーム」の属性のビデオストリームは、0xE0となっているstream_idによって特定され、「オーディオストリーム」の属性のATRACオーディオストリームは、0xBDとなっているstream_id、および0x00となっているprivate_stream_idによって特定され、「字幕ストリーム」の属性の字幕ストリームは、0xBDとなっているstream_id、および0x80となっているprivate_stream_idによって特定される。プレイヤ制御モジュール212は、これらのstream_idとprivate_stream_idを、バッファ制御モジュール215に供給する。
バッファ制御モジュール215(図3)では、ビデオ読み出し機能部233が、プレイヤ制御モジュール212からの、ビデオストリームについての0xE0となっているstream_idを、stream_idレジスタ242に記憶させる。また、オーディオ読み出し機能部234が、プレイヤ制御モジュール212からの、0xBDとなっているstream_idと、0x00となっているprivate_stream_idを、stream_idレジスタ252とprivate_stream_idレジスタ253に、それぞれ記憶させる。さらに、字幕読み出し機能部235が、プレイヤ制御モジュール212からの、0xBDとなっているstream_idと、0x80となっているprivate_stream_idを、stream_idレジスタ263とprivate_stream_idレジスタ264に、それぞれ記憶させる。
なお、プレイヤ制御モジュール212は、バッファ制御モジュール215に供給した再生対象のエレメンタリストリームのstream_idとprivate_stream_idを、今後の処理のために記憶する。プレイヤ制御モジュール212は、これらのstream_idやprivate_stream_idを、後述するストリーム切り替えを要求するメッセージの発生時や、後述するマーク処理において現在再生中のストリームを特定するために使用する。
プレイヤ制御モジュール212は、バッファ制御モジュール215(図3)の初期化として、さらに、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに応じた値の字幕読み出し機能フラグを、字幕読み出し機能フラグ記憶部261にセットする。
即ち、いまの場合、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"には、字幕ストリームが含まれるため、字幕読み出し機能部235を機能させるために、値が1の字幕読み出し機能フラグが、字幕読み出し機能フラグ記憶部261にセットされる。なお、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに字幕ストリームが含まれていない場合、字幕読み出し機能フラグ記憶部261には、値が0の字幕読み出し機能フラグがセットされる。この場合、字幕読み出し機能部235は機能しない(特に処理を行わない)。
また、プレイヤ制御モジュール212は、スクリプト制御モジュール211から再生を指示された1番目のPlayList#0に含まれる1番目のPlayItem#0(図25)のIN_timeである180,090と、OUT_timeである27,180,090とを、デコード制御モジュール214に対して与える。デコード制御モジュール214では、IN_timeは、PlayItem()によって再生されるクリップのデコード開始の制御に、OUT_timeは、そのクリップのデコード終了、さらには、後述するPlayItem乗り換えの制御に、それぞれ使用される。
さらに、プレイヤ制御モジュール212は、グラフィクス処理モジュール219に対する字幕ストリームの表示方式の指示を初期化する。即ち、プレイヤ制御モジュール212は、字幕ストリームの表示方式を、例えば、デフォルトの表示方式とするように、グラフィクス処理モジュール219を制御する。
「データ読み込み開始」
その後、ステップS127からS128に進み、プレイヤ制御モジュール212は、コンテンツデータ供給モジュール213を制御し、これにより、コンテンツデータ供給モジュール213は、オペレーティングシステム201の機能を使用して、再生対象のエレメンタリストリームが多重化されたプログラムストリームが格納されたクリップストリームファイルを読み出す。すなわち、コンテンツデータ供給モジュール213は、ディスク101(図4)の"VIDEO"ディレクトリの下にある"STREAM"ディレクトリのクリップストリームファイル"00001.PS"を指定し、さらに、ステップS122で決定された再生開始位置である305セクタを指定して、オペレーティングシステム201に対してファイル読み出しを要求する。また、コンテンツデータ供給モジュール213は、ディスク101から読み出したデータを、バッファ制御モジュール215に供給するように指定する。
これにより、ディスク101からの、クリップストリームファイル"00001.PS"に格納されたプログラムストリームの読み出しが開始され、そのプログラムストリームは、バッファ制御モジュール215に供給される。
バッファ制御モジュール215(図3)は、ディスク101から読み出されて供給されたプログラムストリームを、バッファ215Aのデータ書き込みポインタ記憶部232のデータ書き込みポインタが指す位置に書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
ここで、以下、特に断らない限り、コンテンツデータ供給モジュール213は、バッファ制御モジュール215のバッファ215Aに空きがあれば、ディスク101からデータを読み出し、バッファ制御モジュール215のバッファ215Aに供給して記憶させることとする。従って、バッファ215Aには、常時、十分なデータが蓄積されているとする。
「デコーダ制御開始」
以上のようにして、ディスク101からのデータの読み出しが開始され、そのデータがバッファ制御モジュール215のバッファ215Aに蓄積され始めると、ステップS128からS129に進み、デコード制御モジュール214は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218を制御し、デコード動作の前段階として、バッファ215Aからのデータの読み出しを開始させる。
即ち、これにより、ビデオデコーダ制御モジュール216は、バッファ制御モジュール215(図3)のビデオ読み出し機能部233にデータを要求し、その要求に応じてバッファ制御モジュール215から渡される、バッファ215Aに記憶された1つのビデオアクセスユニット、そのビデオアクセスユニットに付加されているPTSとDTS(以下、適宜、タイムスタンプという)、およびデコード開始可能点の直前に配置されているprivate_stream_2のPES_packet()に記述された情報(以下、適宜、付加情報ともいう)であるpic_struct_copyや、au_ref_flag、AU_lengthなどを得る。なお、タイムスタンプは、ビデオデコーダ制御モジュール216がビデオアクセスユニットを得る毎に、ビデオデコーダ制御モジュール216からデコード制御モジュール214に渡される。
一方、オーディオデコーダ制御モジュール217も、バッファ制御モジュール215(図3)のオーディオ読み出し機能部234にデータを要求し、その要求に応じてバッファ制御モジュール215から渡される、バッファ215Aに記憶された1つの(ATRAC)オーディオアクセスユニットと、そのオーディオアクセスユニットに付加されているタイムスタンプ(PTS,DTS)を得る。なお、タイムスタンプは、オーディオデコーダ制御モジュール217がオーディオアクセスユニットを得る毎に、オーディオデコーダ制御モジュール217からデコード制御モジュール214に渡される。
さらに、字幕デコーダ制御モジュール218は、バッファ制御モジュール215(図3)の字幕読み出し機能部235にデータを要求し、その要求に応じてバッファ制御モジュール215から渡される、バッファ215Aに記憶された1つの字幕アクセスユニットと、その字幕アクセスユニットに付加されているタイムスタンプを得る。なお、タイムスタンプは、字幕デコーダ制御モジュール218が字幕アクセスユニットを得る毎に、字幕デコーダ制御モジュール218からデコード制御モジュール214に渡される。また、再生対象のエレメンタリストリームに、字幕ストリームが存在しない場合や、バッファ215Aに、字幕アクセスユニットが記憶されていない場合は、バッファ制御モジュール215から字幕デコーダ制御モジュール218には、データは渡されない。
ここで、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218は、バッファ制御モジュール215に対してデータを要求する毎に、そのデータの要求に対する結果を、デコード制御モジュール214に渡す。
また、バッファ制御モジュール215から、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218に対してデータが渡されるときの、そのデータのバッファ215Aからの読み出しの詳細については、後述する。
「デコード開始」
以上のように、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218が、バッファ制御モジュール215のバッファ215Aからデータを読み出し始めると、ステップS129からS130に進み、そのデータのデコードが開始される。
即ち、デコード制御モジュール214は、ステップS127でプレイヤ制御モジュール212から与えられた、PlayList#0に含まれる1番目のPlayItem#0のIN_timeである180,090、さらには、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218からステップS129で説明したように渡されるタイムスタンプに基づき、同期を確保するために必要であればタイミングをずらして、デコード開始を、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218に指令する。
ここで、同期を確保するためのタイミングをずらしたデコード開始の指令の方法は、例えば、特許第3496725号に記載されており、簡単には、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218それぞれから渡されたタイムスタンプのうちの最小値を、計時部214Aによって計時される時刻の初期値として設定して時刻の計時を開始し、計時部214Aによって計時される時刻と、タイムスタンプとが一致した時点で、デコード開始を指令する方法がある。
ビデオデコーダ制御モジュール216は、デコード制御モジュール214からのデコード開始の指示を受け、その指示に応じて、バッファ制御モジュール215(図3)のビデオ読み出し機能部233から得た1つのビデオアクセスユニットを、ビデオデコーダ116(図1)に渡してデコードさせる。さらに、ビデオデコーダ制御モジュール216は、ビデオデコーダ116によるデコードの結果得られるビデオデータを、グラフィクス処理モジュール219に供給する。
以後、ビデオデコーダ制御モジュール216は、バッファ制御モジュール215のビデオ読み出し機能部233から得られる1ずつのビデオアクセスユニットを、ビデオデコーダ116で順次デコードし、そのデコードの結果得られるビデオデータを、グラフィクス処理モジュール219に供給していく。
一方、オーディオデコーダ制御モジュール217も、デコード制御モジュール214からのデコード開始の指示を受け、その指示に応じて、バッファ制御モジュール215(図3)のオーディオ読み出し機能部234から得た1つのオーディオアクセスユニットを、オーディオデコーダ117(図1)に渡してデコードさせる。さらに、オーディオデコーダ制御モジュール217は、オーディオデコーダ117によるデコードの結果得られるオーディオデータを、オーディオ出力モジュール221に供給する。
以後、オーディオデコーダ制御モジュール217は、バッファ制御モジュール215のオーディオ読み出し機能部234から得られる1ずつのオーディオアクセスユニットを、オーディオデコーダ117で順次デコードし、そのデコードの結果得られるオーディオデータを、オーディオ出力モジュール221に供給していく。
また、字幕デコーダ制御モジュール218も、デコード制御モジュール214からのデコード開始の指示を受け、その指示に応じて、バッファ制御モジュール215(図3)の字幕読み出し機能部235から得た1つの字幕アクセスユニットを、内部に持つ字幕デコードソフトウェアでデコードし、そのデコードの結果得られる字幕データ(字幕の画像データ)を、グラフィクス処理モジュール219に供給する。
以後、字幕デコーダ制御モジュール218は、バッファ制御モジュール215の字幕読み出し機能部235から得られる1ずつの字幕アクセスユニットを、内部に持つ字幕デコードソフトウェアで順次デコードし、そのデコードの結果得られる字幕データを、グラフィクス処理モジュール219に供給していく。
「グラフィクス処理」
その後、ステップS130からS131に進み、グラフィクス処理モジュール219は、上述したようにして、ビデオデコーダ制御モジュール216から供給されるビデオデータ、さらには、必要に応じて、字幕デコーダ制御モジュール218から供給される字幕データを対象に、グラフィクス処理を行う。
即ち、グラフィクス処理モジュール219は、まず字幕デコーダ制御モジュール218からの字幕データを、プレイヤ制御モジュール212からの表示方式の指示に従って、拡大や縮小等する字幕処理を行う。プレイヤ制御モジュール212から、表示方式の指示がない場合、またはデフォルトの表示方式の指示があった場合、グラフィクス処理モジュール219は、字幕デコーダ制御モジュール218からの字幕データを、そのまま保存する。
さらに、グラフィクス処理モジュール219は、ビデオデコーダ制御モジュール216からのビデオデータと、字幕デコーダ制御モジュール218からの字幕データ、または字幕処理後の字幕データとを加算し、ビデオデコーダ制御モジュール216からのビデオデータに字幕データがオーバーレイされた出力ビデオデータを得て、ビデオ出力モジュール220に供給する。
なお、グラフィクス処理モジュール219は、スクリプト制御モジュール211やプレイヤ制御モジュール212から、例えば、メニューや、メッセージ、タイムコード、チャプタまたはインデクスの番号等の情報の表示の指示を受けた場合は、その情報を生成し、出力ビデオデータにオーバーレイして、ビデオ出力モジュール220に供給する。
「出力処理」
ステップS131の処理後は、ステップS132に進み、ビデオ出力モジュール220は、ステップS131で説明したようにしてグラフィクス処理モジュール219から供給される出力ビデオデータを、FIFO220Aに順次記憶させ、そのFIFO220Aに記憶された出力ビデオデータを、あらかじめ決められた出力レートで順次出力する。
ビデオ出力モジュール220は、FIFO220Aの記憶容量(残量)に余裕がある限り、グラフィクス処理モジュール219からの出力ビデオデータを受け入れるが、余裕がない場合には、出力ビデオデータの受け入れの停止を、グラフィクス処理モジュール219に要求する。これにより、グラフィクス処理モジュール219は、処理を停止するとともに、処理の停止を、ビデオデコーダ制御モジュール216および字幕デコーダ制御モジュール218に要求する。これにより、ビデオデコーダ制御モジュール216および字幕デコーダ制御モジュール218が処理を停止する。
ビデオ出力モジュール220は、出力ビデオデータの受け入れの停止を、グラフィクス処理モジュール219に要求した後に、FIFO220Aからの出力ビデオデータの出力が進み、FIFO220Aに余裕ができた時点で、出力ビデオデータの受け入れを、グラフィクス処理モジュール219に要求する。この要求は、出力ビデオデータの受け入れの停止の要求と同様に、グラフィクス処理モジュール219から、ビデオデコーダ制御モジュール216および字幕デコーダ制御モジュール218に伝えられる。これにより、グラフィクス処理モジュール219、さらには、ビデオデコーダ制御モジュール216および字幕デコーダ制御モジュール218は、停止していた処理を再開する。
一方、オーディオ出力モジュール221も、ステップS130で説明したようにしてオーディオデコーダ制御モジュール217から供給されるオーディオデータを、FIFO221Aに順次記憶させ、そのFIFO221Aに記憶されたオーディオデータを、あらかじめ決められた出力レート(サンプリング周波数)で順次出力する。
オーディオ出力モジュール221は、FIFO221Aの記憶容量(残量)に余裕がある限り、オーディオデコーダ制御モジュール217からのオーディオデータを受け入れるが、余裕がない場合には、オーディオデータの受け入れの停止を、オーディオデコーダ制御モジュール217に要求する。これにより、オーディオデコーダ制御モジュール217は、処理を停止する。
オーディオ出力モジュール221は、オーディオデータの受け入れの停止を、オーディオデコーダ制御モジュール217に要求した後に、FIFO221Aからのオーディオデータの出力が進み、FIFO221Aに余裕ができた時点で、オーディオデータの受け入れを、オーディオデコーダ制御モジュール217に要求する。これにより、オーディオデコーダ制御モジュール217は、停止していた処理を再開する。
以上のようにして、ビデオ出力モジュール220およびオーディオ出力モジュール221からデータが出力されるにつれて、エレメンタリストリームのデコードが行われていく。
図1のディスク装置がディスク101を再生するときの全体の処理または動作の流れは、図29および図30で説明したとおりであるが、以下、ディスク装置においてディスク101の再生が行われているときの、その他の処理または動作について説明する。
[PlayItem乗り換え]
図29および図30で説明したようにして、図25における1番目のPlayList#0の1番目のPlayItem#0の再生が始まるが、PlayList#0によれば、その1番目のPlayItem#0の再生が終了すると、2番目のPlayItem#1の再生が開始される。即ち、PlayItem#0からPlayItem#1にPlayItemを乗り換えるPlayItem乗り換えが行われる。
そこで、図31のフローチャートを参照して、このPlayItem乗り換えの処理について説明する。
図29および図30で説明したようにして、図25におけるPlayList#0の1番目のPlayItem#0(のクリップ)の再生が開始されると、デコード制御モジュール214(図2)は、その1番目のPlayItem#0の再生が行われている間、内蔵する計時部214Aが計時している時刻を確認し続けている。
「PlayItem#0の再生終了」
そして、デコード制御モジュール214は、計時部214Aが計時している時刻が、図30のステップ127でプレイヤ制御モジュール212から与えられた1番目のPlayItem#0のOUT_timeである27,180,090(図25)に等しくなると、ステップS151において、デコード中断制御を行い、PlayItem#0の再生を終了する。
即ち、デコード制御モジュール214は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218を操作して、デコード動作を停止させる。さらに、デコード制御モジュール214は、ビデオ出力モジュール220を制御し、現在出力中の出力ビデオデータを引き続き出力させる。
また、デコード制御モジュール214は、1番目のPlayItem#0の再生が終了した旨のメッセージを、プレイヤ制御モジュール212に伝える。
「PlayItem#1の再生開始」
プレイヤ制御モジュール212は、上述したように、図29のステップS105で、1番目のPlayList #0に、1番目のPlayItem#0と2番目のPlayItem#1とが存在することを認識しており、デコード制御モジュール214から、1番目のPlayItem#0の再生が終了した旨のメッセージが伝えられると、ステップS151からS152に進み、2番目のPlayItem#1の再生を、上述した1番目のPlayItem#0における場合と同様にして開始する。
即ち、2番目のPlayItem#1の再生手順を概説すれば、まず、プレイヤ制御モジュール212は、図30のステップS122における場合と同様にして、2番目のPlayItem#1について、EP_map()に記述されたRPN_EP_startのうちのいずれかを、再生開始位置として決定する。
さらに、プレイヤ制御モジュール212では、図30のステップS124で説明したようにして、2番目のPlayItem#1に属するMark()の認識や、図30のステップS125で説明したようにして、PlayItem#1によって再生されるクリップストリームファイル"00002.PS"に多重化されている各属性のエレメンタリストリームの本数の認識、さらには、再生する(再生対象の)エレメンタリストリームの決定等が行われる。
そして、プレイヤ制御モジュール212は、図30のステップS127における場合と同様の処理を行う。
即ち、プレイヤ制御モジュール212は、再生開始位置として決定したEP_map()のRPN_EP_startと、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルのファイル名、即ち、いまの場合、2番目のPlayItem#1(図25)のClip_Information_file_nameに記述された"00002.CLP"に対応するクリップストリームファイル"00002.PS"のファイル名を、コンテンツデータ供給モジュール213に対して与える。
さらに、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00002.PS"に格納されたプログラムストリームの、バッファ制御モジュール215への供給が開始される前に、バッファ制御モジュール215を初期化する。
即ち、これにより、バッファ制御モジュール215(図3)において、データ先頭ポインタ記憶部231に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部232に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部241に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部251に記憶されるオーディオ読み出しポインタ、字幕読み出しポインタ記憶部262に記憶される字幕読み出しポインタに、同じ値が代入される。
さらに、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームを識別するための識別情報としてのstream_id、さらには、必要に応じて、private_stream_idを、バッファ制御モジュール215に供給する。
バッファ制御モジュール215(図3)では、ビデオ読み出し機能部233が、プレイヤ制御モジュール212からの、再生対象のエレメンタリストリームのうちのビデオストリームについてのstream_idを、stream_idレジスタ242に記憶させる。また、オーディオ読み出し機能部234が、プレイヤ制御モジュール212からの、再生対象のエレメンタリストリームのうちのオーディオストリームのstream_idとprivate_stream_idを、stream_idレジスタ252とprivate_stream_idレジスタ253に、それぞれ記憶させる。
さらに、いま再生対象となっているエレメンタリストリームが多重化されているクリップストリームファイル"00002.PS"には、字幕ストリームが含まれるため、プレイヤ制御モジュール212から字幕読み出し機能部235には、再生対象のエレメンタリストリームのうちの字幕ストリームのstream_idとprivate_stream_idが供給され、字幕読み出し機能部235は、そのstream_idとprivate_stream_idを、stream_idレジスタ263とprivate_stream_idレジスタ264に、それぞれ記憶させる。
そして、プレイヤ制御モジュール212は、バッファ制御モジュール215(図3)の初期化として、さらに、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに応じた値の字幕読み出し機能フラグを、字幕読み出し機能フラグ記憶部261にセットする。
即ち、いまの場合、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00002.PS"には、字幕ストリームが含まれるため、字幕読み出し機能部235を機能させるために、値が1の字幕読み出し機能フラグが、字幕読み出し機能フラグ記憶部261にセットされる。
また、プレイヤ制御モジュール212は、再生しようとしている2番目のPlayItem#1(図25)のIN_timeである90,000と、OUT_timeである27,090,000とを、デコード制御モジュール214に対して与える。
さらに、プレイヤ制御モジュール212は、グラフィクス処理モジュール219に対する字幕ストリームの表示方式の指示を初期化する。即ち、プレイヤ制御モジュール212は、字幕ストリームの表示方式をデフォルトの表示方式とするように、グラフィクス処理モジュール219を制御する。
なお、再生対象の字幕ストリームについて、configurable_flag(図12)が、表示方式の変更を許可する1になっている場合には、プレイヤ制御モジュール212からグラフィクス処理モジュール219に対する字幕ストリームの表示方式の指示は、現在の表示方式のままとするようにしても良い。
以下、2番目のPlayItem#1の再生は、1番目のPlayItem#0の再生と同様にして行われていく。そして、デコード制御モジュール214は、その2番目のPlayItem#1の再生が行われている間、内蔵する計時部214Aが計時している時刻を確認し続けており、計時部214Aが計時している時刻が、ステップS152(図31)でプレイヤ制御モジュール212から与えられた2番目のPlayItem#1のOUT_timeである27,090,000(図25)に等しくなると、ステップS151における場合と同様のデコード中断制御を行い、PlayItem#1の再生を終了する。
[タイムコードの表示]
次に、上述したように、図30のステップS123において、タイムコードの表示が開始されるが、このタイムコードの表示は、順次更新されていく。
そこで、図32のフローチャートを参照して、タイムコードの表示の処理について説明する。
デコード制御モジュール214(図2)は、その内蔵する計時部214Aによって1秒が計時されると、ステップS171において、1秒が経過した旨のメッセージとともに、その計時部214Aによって計時されている現在時刻を、プレイヤ制御モジュール212に供給し、ステップS172に進む。ステップS172では、プレイヤ制御モジュール212は、デコード制御モジュール214からのメッセージと現在時刻を受信し、その現在時刻を、タイムコードに換算して、ステップS173に進む。
ステップS173では、プレイヤ制御モジュール212は、ステップS172で得たタイムコードを表示するように、グラフィクス処理モジュール219を制御し、ステップS171に戻る。
これにより、タイムコードは、1秒ごとに更新される。なお、タイムコードの更新の間隔は、1秒に限定されるものではない。
[ストリーム切り替え]
次に、図25で説明した1番目のPlayList#0を構成する1番目のPlayItem#0によって再生されるクリップストリームファイル"00001.PS"や、2番目のPlayItem#1によって再生されるクリップストリームファイル"00002.PS"には、図26で説明したように、2本の字幕ストリームが多重化されている。
このように、クリップストリームファイルに、複数の、同一の属性のエレメンタリストリームが多重化されている場合においては、再生対象のエレメンタリストリームを、その複数の、同一の属性のエレメンタリストリームのうちの1つから、他の1つに切り替えるストリーム切り替えを行うことができる。
そこで、図33のフローチャートを参照して、ストリーム切り替えの処理について説明する。
ストリーム切り替えの要求は、例えば、"SCRIPT.DAT"ファイル(図4)に、ストリーム切り替えの指示がスクリプトプログラムとして記述されている場合に、スクリプト制御モジュール211が、そのスクリプトプログラムを実行することによって、あるいは、ユーザがリモコンを操作することによって、プレイヤ制御モジュール212に与えられる。
即ち、スクリプト制御モジュール211は、ストリーム切り替えの指示が記述されているスクリプトプログラムを実行すると、ストリーム切り替えを要求するメッセージを、プレイヤ制御モジュール212に供給する。また、入力インターフェース115は、ユーザがリモコンを操作することによって、リモコンから、ストリーム切り替えを指示する信号を受信すると、ストリーム切り替えを要求するメッセージを、プレイヤ制御モジュール212に供給する。
例えば、いま、プレイヤ制御モジュール212に対して、字幕ストリームの切り替えを要求するメッセージである字幕ストリーム切り替えのメッセージが供給されたとすると、プレイヤ制御モジュール212は、ステップS191において、図30のステップS125で行われた再生対象のエレメンタリストリームの決定のときに認識した字幕ストリームの本数をチェックする。
プレイヤ制御モジュール212は、字幕ストリームの本数をチェックした結果、その本数が1本以下である場合、字幕ストリーム切り替えのメッセージを無視し、従って、以降のステップS192乃至S194の処理は行われない。
一方、字幕ストリームの本数が2本以上である場合、ステップS192乃至S194に順次進み、再生する字幕ストリームが、現在再生されている字幕ストリームから、他の字幕ストリームに切り替えられる。
即ち、ステップS192において、プレイヤ制御モジュール212は、現在再生中の字幕ストリームを、クリップ情報ファイル上で特定する。具体的には、例えば、いま、図25で説明した1番目のPlayList#0を構成する2番目のPlayItem#1によって、クリップストリームファイル"00002.PS"に多重化された、stream_idが0xBDで、private_stream_idが0x80の字幕ストリームが再生されていることとすると、ステップS192では、現在再生中の字幕ストリームが、クリップストリームファイル"00002.PS"に多重化された2本の字幕ストリームのうちの、図26のクリップ情報ファイル"00002.CLP"上で3本目の字幕ストリームであるstream#2であることが特定される。
そして、ステップS193に進み、プレイヤ制御モジュール212は、ステップS192で特定した字幕ストリームの、クリップ情報ファイル上で次の字幕ストリームを、次に再生する字幕ストリームとして認識(特定)する。図26では、クリップ情報ファイル"00002.CLP"上で、3本目の字幕ストリームstream#2の次の字幕ストリームは、4本目の字幕ストリームstream#3であるから、ステップS193では、この4本目の字幕ストリームstream#3が、次に再生する字幕ストリームとして認識される。
なお、現在再生中の字幕ストリームが、クリップストリームファイル"00002.PS"に多重化された2本の字幕ストリームのうちの、図26のクリップ情報ファイル"00002.CLP"上で4本目の字幕ストリームであるstream#3であることが特定された場合は、例えば、3本目の字幕ストリームstream#2が、次に再生する字幕ストリームとして認識される。
その後、ステップS194に進み、プレイヤ制御モジュール212は、ステップS193で認識した次に再生する字幕ストリームのstream_idとprivate_stream_idを、バッファ制御モジュール215(図3)の字幕読み出し機能部235に対して与え、そのstream_idとprivate_stream_idを、次回からの、字幕アクセスユニットのバッファ215Aからの読み出しから使用するように指示する。
バッファ制御モジュール215(図3)の字幕読み出し機能部235では、ステップS194でプレイヤ制御モジュール212から与えられるstream_idとprivate_stream_idを、stream_idレジスタ263とprivate_stream_idレジスタ264に、それぞれ新たにセットし、次回以降のバッファ215Aからの読み出しは、そのstream_idレジスタ263とprivate_stream_idレジスタ264にそれぞれ新たにセットされたstream_idとprivate_stream_idによって特定される字幕アクセスユニットを対象として行われる。
以上のようにして、再生する字幕ストリームが、現在再生されている字幕ストリームから、他の字幕ストリームに切り替えられる。
[バッファ制御モジュール215の処理]
次に、図34乃至図38を参照して、バッファ制御モジュール215(図3)の処理、即ち、バッファ215Aへのデータの書き込みと、バッファ215Aからのデータの読み出しについて説明する。
バッファ制御モジュール215は、図3で説明したように、バッファ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へのデータの書き込みの位置を示し、この位置は、バッファ215Aで最も新しいデータが書き込まれる位置である。
ビデオ読み出しポインタ記憶部241に記憶されたビデオ読み出しポインタは、バッファ215Aから読み出すビデオストリームの位置を表す。また、オーディオ読み出しポインタ記憶部251に記憶されたオーディオ読み出しポインタは、バッファ215Aから読み出すオーディオストリームの位置を表し、字幕読み出しポインタ記憶部262に記憶された字幕読み出しポインタは、バッファ215Aから読み出す字幕ストリームの位置を表す。
なお、図3で説明したように、データ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタは、いずれも、バッファ215Aを右回りに移動する。
さらに、本実施の形態では、データ先頭ポインタは、図35に示すように、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように、常時更新されるものとする。ここで、図35では、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、そのオーディオ読み出しポインタと一致している。
以上のようなデータ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタを有するバッファ制御モジュール215では、データ書き込みポインタは、ディスク101から新たなデータが読み出され、バッファ215Aに書き込まれると、その書き込まれた新たなデータの直後の位置を指すように、右回りに更新される。
さらに、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタは、バッファ215Aから、ビデオストリーム、オーディオストリーム、または字幕ストリームが読み出されると、その読み出し量に応じた分だけ、それぞれ、右回りに更新される。ここで読み出し量に応じた分とは、実際に読み出したビデオ、オーディオ、字幕のデータに対応する部分と、読み出したデータの間に含まれており、読み出しの際には読み飛ばしを行った、他のストリームのデータの部分をあわせたものとなる。
また、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されると、そのビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
ここで、バッファ制御モジュール215は、バッファ215Aへのデータの書き込みについては、データ書き込みポインタがデータ先頭ポインタを追い越さないように、バッファ215Aへのデータの書き込みを制御する。
即ち、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しない限り、バッファ制御モジュール215では、ディスク101から読み出されたデータが、データ書き込みポインタが指すバッファ215Aの位置に書き込まれ、データ書き込みポインタが更新されていく。一方、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しそうになると、バッファ制御モジュール215では、コンテンツデータ供給モジュール213に対して、ディスク101からのデータの読み出しの停止(中断)が要求され、さらに、バッファ215Aへのデータの書き込みが停止される。これにより、バッファ215Aのオーバーフローを防止することができる。
以上のように、ディスク101から読み出されたデータの、バッファ215Aへの書き込みは、データ先頭ポインタとデータ書き込みポインタとの2つのポインタの位置関係だけで制御される。
一方、バッファ制御モジュール215は、バッファ215Aからのデータの読み出しについては、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタ、ひいては、データ先頭ポインタが、データ書き込みポインタを追い越さないように、バッファ215Aからのデータの読み出しを制御する。
即ち、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しない限り、バッファ制御モジュール215では、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218からの要求に応じて、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指すバッファ215Aの位置からデータが読み出され、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されるとともに、必要に応じて、データ先頭ポインタが更新される。一方、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しそうになると、バッファ制御モジュール215では、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218からの要求が、例えば凍結され、十分なデータが用意されるまで待たされる。これにより、バッファ215Aのアンダーフローを防止することができる。
以上から、バッファ215Aには、データ先頭ポインタが指す位置から、右回りに、データ書き込みポインタが指す位置までの範囲(図34および図35において影を付してある部分)に、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218に供給すべきデータが記憶されており、さらに、その範囲内に、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタは存在する。
なお、上述の場合には、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指している位置のうちの、最も古いデータの位置を指すように更新することとしたが、その他、データ先頭ポインタの更新は、例えば、その最も古いデータの位置から、所定の時間(例えば、1秒)分だけ過去のデータの位置を指すように行うことが可能である。
即ち、一般には、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、ビデオ読み出しポインタやオーディオ読み出しポインタが、最も古いデータの位置を指すことが多いと予想される。
従って、データ先頭ポインタを、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から、例えば、1秒分だけ過去のデータの位置を指すように更新した場合、図34に示すように、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から過去1秒分のデータを、バッファ215Aに残しておくことができる。ここで、図34では、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、その位置から1秒分だけ過去のデータの位置を指している。
以上のように、1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新することにより、ディスク装置の応答性を向上させることができる。
即ち、図35に示したように、オーディオ読み出しポインタが指している最も古いデータの位置を指すように、データ先頭ポインタを更新する場合には、例えば、リバース方向への特殊再生が指示されたときに、バッファ215Aからの読み出しが終了したデータを、ディスク101から再度読み出す必要があるため、特殊再生が指示されてから、その特殊再生が可能となるまでに、ある程度の時間がかかる。
これに対して、図34に示したように、オーディオ読み出しポインタが指している最も古いデータの位置から1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合には、リバース方向への特殊再生が指示されたときに、その特殊再生を開始するのに必要なデータが、バッファ215Aに記憶されている1秒分だけ過去のデータであれば、上述したようなディスク101からのデータの再読み出しを行わずに、即座に、特殊再生を開始することが可能となる。
なお、オーディオ読み出しポインタが指している最も古いデータの位置から1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合であっても、特殊再生を開始するのに必要なデータが、バッファ215Aに記憶されていないことがあり得る。この場合には、特殊再生を開始するのに必要なデータが、ディスク101から再度読み出される。
次に、バッファ215Aからのビデオストリーム、オーディオストリーム、字幕ストリームそれぞれの読み出しの詳細について説明する。
図30のステップS127で説明したように、クリップストリームファイルの再生が開始されるときに、バッファ制御モジュール215においては、データ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、字幕読み出しポインタが、すべて、バッファ215A上の同じ位置を指すように初期化される。
そして、ディスク101からクリップストリームファイルに格納されたプログラムストリーム(MPEG2-System Program Stream)が読み出され、バッファ制御モジュール215に供給されると、バッファ制御モジュール215では、そのプログラムストリームが、バッファ215Aのデータ書き込みポインタが指す位置に記憶されるとともに、データ書き込みポインタが、右回りに更新されていく。
さらに、バッファ制御モジュール215(図3)では、ビデオ読み出し機能部233が、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、ビデオデコーダ制御モジュール216からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、ビデオストリーム(ビデオアクセスユニット)を抽出(分離)して読み出し、ビデオデコーダ制御モジュール216に供給する。
同様に、オーディオ読み出し機能部234も、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、オーディオデコーダ制御モジュール217からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、オーディオストリーム(オーディオアクセスユニット)を抽出して読み出し、オーディオデコーダ制御モジュール217に供給する。字幕読み出し機能部235も、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、字幕デコーダ制御モジュール218からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、字幕ストリーム(字幕アクセスユニット)を抽出して読み出し、字幕デコーダ制御モジュール218に供給する。
「ビデオストリームの読み出し」
次に、図36のフローチャートを参照して、ビデオ読み出し機能部233(図3)による、バッファ215Aからのビデオストリームの読み出し処理の詳細について説明する。
ビデオ読み出し機能部233は、まず最初に、ステップS211において、バッファ215Aに記憶されたプログラムストリーム中のprivate_stream_2のPES_packet()を探索して見つけ出す。すなわち、private_stream_2のPES_packet()のstream_idは、図20で説明したように、10111111B(=0xBF)であり、ビデオ読み出し機能部233は、stream_idが10111111BとなっているPES_packet()を探索して見つけ出す。
ここで、例えば、いま、上述したように、クリップストリームファイル"00001.PS"に格納されたプログラムストリームに多重化されたエレメンタリストリームが、再生対象のエレメンタリストリームであるとすると、そのプログラムストリームをディスク101から読み出して、バッファ215Aに記憶させるときに、図30のステップS122において、クリップストリームファイル"00001.PS"のEP_map()(図27)に記述されたデコード開始可能点の情報から、305セクタが再生開始位置として決定され、さらに、図30のステップS128において、再生開始位置である305セクタが指定され、オペレーティングシステム201に対して、クリップストリームファイル"00001.PS"に格納されたプログラムストリームの読み出しが要求される。
また、ビデオストリームについては、EP_map()に記述されたデコード開始可能点の情報は、実際のデコード開始可能点の直前に配置されたprivate_stream_2のPES_packet()の位置を表す。
従って、クリップストリームファイル"00001.PS"に格納されたプログラムストリームがディスク101から読み出され、バッファ215Aに記憶された直後においては、データ先頭ポインタやビデオ読み出しポインタが指すバッファ215Aの位置には、private_stream_2のPES_packet()が記憶されている。
ビデオ読み出し機能部233は、ステップS211において、private_stream_2のPES_packet()が見つかると、ステップS212に進み、そのprivate_stream_2のPES_packet()のPES_packet_data_byteであるprivate_stream2_PES_payload()(図23)に記述されているvideo_stream_idを抜き出し、そのvideo_stream_idが、図30のステップS127でstream_idレジスタ242(図3)に記憶された、再生対象のビデオストリームのstream_idと一致するかどうかを判定する。
ステップS212において、private_stream2_PES_payload()に記述されているvideo_stream_idが、stream_idレジスタ242に記憶されたstream_idと一致しないと判定された場合、即ち、直前のステップS211で見つけ出されたprivate_stream_2のPES_packet()が、再生対象のビデオストリームのデコード開始点に配置されたものでない場合、ステップS211に戻り、バッファ215Aに記憶されたプログラムストリーム中の他のprivate_stream_2のPES_packet()の探索が行われ、以下、同様の処理が繰り返される。
一方、ステップS212において、private_stream2_PES_payload()に記述されているvideo_stream_idが、stream_idレジスタ242に記憶されたstream_idと一致すると判定された場合、即ち、直前のステップS211で見つけ出されたprivate_stream_2のPES_packet()が、再生対象のビデオストリームのデコード開始点に配置されたものである場合、ステップS213に進み、ビデオ読み出し機能部233は、そのprivate_stream_2のPES_packet()のprivate_stream2_PES_payload()に記述されているau_information()を、バッファ215Aから読み出し、au_information()レジスタ243(図3)に記憶させ、ステップS214に進む。
ステップS214では、ビデオ読み出し機能部233は、直前のステップS211で見つけ出したprivate_stream_2のPES_packet()(video_stream_id(図23)が、stream_idレジスタ242(図3)に記憶されたstream_idと一致するprivate_stream_2のPES_packet())のサイズだけ、ビデオ読み出しポインタ記憶部231に記憶されたビデオ読み出しポインタを更新する。
即ち、クリップストリームファイルでは、private_stream_2のPES_packet()の直後に、そのvideo_stream_idと一致するstream_idのビデオストリーム(PES_packet())が配置されており、従って、ステップS214では、ビデオ読み出しポインタは、ビデオストリームの実際のデコード開始可能点の位置を指すように更新される。
その後、ステップS214からS215に進み、ビデオ読み出し機能部233は、ビデデコーダ制御モジュール216から、データの要求があったかどうかを判定し、ないと判定した場合、ステップS215に戻り、同様の処理を繰り返す。
また、ステップS215において、ビデオデコーダ制御モジュール216から、データの要求があったと判定された場合、ステップS216に進み、ビデオ読み出し機能部233は、ビデオ読み出しポインタが指しているバッファ215Aの位置からのプログラムストリームの構文解析を行いつつ、au_information()レジスタ243に記憶されたau_information()のAU_lengthに記述されたバイト数のデータ、つまり1つのビデオアクセスユニットを、バッファ215Aから読み出し、ビデオデコーダ制御モジュール216に供給するとともに、ビデオ読み出しポインタを、バッファ215Aから読み出した1つのビデオアクセスユニットのサイズ分だけ更新する。
即ち、au_information()には、図24で説明したように、それを含むprivate_stream_2のPES_packet()から、次のprivate_stream_2のPES_packet()までの間に含まれるビデオアクセスユニット(ピクチャ)の数を表すnumber_of_access_unitが記述されている。
さらに、au_information()には、図24で説明したように、そのnumber_of_access_unitの数だけのビデオアクセスユニットそれぞれに関する情報としてのpic_struct_copy,au_ref_flag、およびAU_lengthが記述されている。
au_information()にnumber_of_access_unitの数だけ記述されているAU_lengthそれぞれは、図24で説明したように、それを含むprivate_stream_2のPES_packet()から、次のprivate_stream_2のPES_packet()までの間に含まれる、number_of_access_unitの数のビデオアクセスユニットそれぞれのサイズを表すから、ビデオ読み出し機能部233は、そのAU_lengthを用いることで、ビデオストリームの構文解析を行うことなく、アクセスユニットの切り出しを行うことが出来る。
即ち、従来、MPEG2-VideoやMPEG4-AVCのアクセスユニットを切り出す場合には、ビデオストリームの構文を知った上で、ビデオストリームの構文解析を行う必要があったが、ディスク101に記録されたクリップストリームファイルに格納されたプログラムストリームは、ビデオアクセスユニット単位のビデオストリームにおける1以上の実際のデコード開始可能点それぞれの直前に、ビデオアクセスユニットのサイズを表すAU_lengthが記述されたprivate_stream_2のPES_packet()を含んでいるので、ビデオ読み出し機能233は、そのprivate_stream_2のPES_packet()に記述されたAU_lengthに基づき、ビデオストリームの構文解析を行うことなく、バッファ215Aから、ビデオアクセスユニット(単位のビデオストリーム)を読み出し、ビデオデコーダ制御モジュール216に供給することができる。
なお、ビデオ読み出し機能部233は、ステップS216において、ビデオアクセスユニットを、ビデオデコーダ制御モジュール216に供給するときに、そのビデオアクセスユニットに関する情報としてau_information()に記述されているpic_struct_copy,au_ref_flag、およびAU_lengthと、ビデオアクセスユニット単位に付加されているタイムスタンプ(PTS,DTS)も、ビデオデコーダ制御モジュール216に供給する。
ステップS216において、バッファ215Aから1つのビデオアクセスユニットが読み出され、ビデオデコーダ制御モジュール216に供給された後は、ステップS217に進み、ビデオ読み出し機能部233は、au_information()レジスタ243に記憶されたau_information()(図24)のnumber_of_access_unitが表す数だけのアクセスユニットを処理したかどうかを判定する。
ステップS217において、number_of_access_unitが表す数だけのアクセスユニットを、まだ処理していないと判定された場合、即ち、number_of_access_unitが表す数だけのアクセスユニットを、まだ、バッファ215Aから読み出してビデオデコーダ制御モジュール216に供給していない場合、ステップS215に戻り、以下、同様の処理が繰り返される。
また、ステップS217において、number_of_access_unitが表す数だけのアクセスユニットを処理したと判定された場合、即ち、number_of_access_unitが表す数だけのアクセスユニットを、バッファ215Aから読み出してビデオデコーダ制御モジュール216に供給した場合、ステップS211に戻り、次のprivate_stream_2のPES_packet()の探索が行われ、以下、同様の処理が繰り返される。
「オーディオストリームの読み出し」
次に、図37のフローチャートを参照して、オーディオ読み出し機能部234(図3)による、バッファ215Aからのオーディオストリームの読み出し処理の詳細について説明する。
オーディオ読み出し機能部234は、まず最初に、ステップS230において、図30のステップS127でstream_idレジスタ252(図3)に記憶された、再生対象のオーディオストリームのstream_idが、private_stream_1のPES_packet()を表しているかどうかを判定する。
ステップS230において、stream_idレジスタ252に記憶されたstream_idが、private_stream_1のPES_packet()を表していない判定された場合、即ち、stream_idレジスタ252に記憶されたstream_idが、図20で説明したように、MPEG規格にしたがって符号化されたオーディオストリームに割り当てられる110xxxxxBである場合、ステップS231に進み、オーディオ読み出し機能部234は、バッファ215Aに記憶されたプログラムストリームから、MPEG Audioで定められたオーディオフレーム先頭を表す同期コードを探す。同期コードの位置がオーディオフレーム先頭なので、オーディオ読み出し機能部234は、オーディオ読み出しポインタを、オーディオフレーム先頭の位置を示すように更新し、ステップS231からS232に進む。ステップS232では、オーディオ読み出し機能部234は、バッファ215Aに記憶されたプログラムストリーム中の、stream_idレジスタ252に記憶されたstream_idに一致するPES_packet()を、オーディオ読み出しポインタが示す位置から探索して見つけ出し、ステップS233に進む。
ステップS233では、オーディオ読み出し機能部234は、オーディオ読み出しポインタ記憶部251に記憶されたオーディオ読み出しポインタを、直前のステップS232で見つけ出したPES_packet()のPES_packet_data_byte(図16乃至図18)の先頭を指すように更新し、ステップS237に進む。
ステップS237では、オーディオ読み出し機能部234は、オーディオデコーダ制御モジュール217から、データの要求があったかどうかを判定し、ないと判定した場合、ステップS237に戻り、同様の処理を繰り返す。
また、ステップS237において、オーディオデコーダ制御モジュール217から、データの要求があったと判定された場合、ステップS238に進み、オーディオ読み出し機能部234は、オーディオ読み出しポインタが指しているバッファ215Aの位置からのプログラムストリームの構文解析を行いつつ、既知の固定長の1つのオーディオアクセスユニットを、バッファ215Aから読み出し、そのオーディオアクセスユニットに付加されているタイムスタンプ(PTS,DTS)とともに、オーディオデコーダ制御モジュール217に供給する。
そして、オーディオ読み出し機能部234は、バッファ215Aから読み出した1つのオーディオアクセスユニットのサイズ分だけ、オーディオ読み出しポインタを更新して、ステップS237に戻り、以下、同様の処理が繰り返される。
一方、ステップS230において、stream_idレジスタ252に記憶されたstream_idが、private_stream_1のPES_packet()を表していると判定された場合、即ち、stream_idレジスタ252に記憶されたstream_idが、10111101B(=0xBD)であり、図20で説明したように、private_stream_1のPES_packet()を表している場合、ステップS234に進み、オーディオ読み出し機能部234は、バッファ215Aに記憶されたプログラムストリーム中のprivate_stream_1のPES_packet()を探索して見つけ出す。すなわち、オーディオ読み出し機能部234は、stream_idが10111101BとなっているPES_packet()を探索して見つけ出す。
オーディオ読み出し機能部234は、ステップS234において、private_stream_1のPES_packet()が見つかると、ステップS235に進み、そのprivate_stream_1のPES_packet()のPES_packet_data_byteであるprivate_stream1_PES_payload()(図21)に記述されているprivate_stream_idを抜き出し、そのprivate_stream_idが、図30のステップS127でprivate_stream_idレジスタ253(図3)に記憶された、再生対象のオーディオストリームの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に戻り、バッファ215Aに記憶されたプログラムストリーム中の他のprivate_stream_1のPES_packet()の探索が行われ、以下、同様の処理が繰り返される。
一方、ステップS235において、private_stream1_PES_payload()に記述されているprivate_stream_idが、private_stream_idレジスタ253に記憶されたprivate_stream_idと一致すると判定された場合、即ち、直前のステップS234で見つけ出されたprivate_stream_1のPES_packet()が、再生対象のオーディオストリームである場合、ステップS236に進み、オーディオ読み出し機能部234は、そのprivate_stream_1のPES_packet()のprivate_stream1_PES_payload()(図21)に記述されているAU_locatorを、バッファ215Aから読み出し、そのAU_locatorの直後の位置と、そのAU_locatorが表す値とを加算することで、オーディオアクセスユニットの先頭位置を求める。
即ち、AU_locatorは、図21で説明したように、そのAU_locatorの直後の位置を基準として、private_stream1_PES_payload()のprivate_payload()に格納されるオーディオアクセスユニット(あるいは字幕アクセスユニット)の先頭位置を表すから、AU_locatorの直後の位置に、そのAU_locatorが表す値を加算することにより、オーディオアクセスユニットの(絶対的な)先頭位置を求めることができる。
オーディオ読み出し機能部234は、さらに、ステップS236において、以上のようにして求めたオーディオアクセスユニットの先頭位置を指すように、オーディオ読み出しポインタ記憶部251に記憶されたオーディオ読み出しポインタを更新し、ステップS237に進む。
ステップS237では、オーディオ読み出し機能部234は、オーディオデコーダ制御モジュール217から、データの要求があったかどうかを判定し、ないと判定した場合、ステップS237に戻り、同様の処理を繰り返す。
また、ステップS237において、オーディオデコーダ制御モジュール217から、データの要求があったかと判定された場合、ステップS238に進み、オーディオ読み出し機能部234は、オーディオ読み出しポインタが指しているバッファ215Aの位置からのプログラムストリームの構文解析を行いつつ、既知の固定長の1つのオーディオアクセスユニットを、バッファ215Aから読み出し、そのオーディオアクセスユニットに付加されているタイムスタンプとともに、オーディオデコーダ制御モジュール217に供給する。
そして、オーディオ読み出し機能部234は、バッファ215Aから読み出した1つのオーディオアクセスユニットのサイズ分だけ、オーディオ読み出しポインタを更新して、ステップS237に戻り、以下、同様の処理が繰り返される。
「字幕ストリームの読み出し」
次に、図38のフローチャートを参照して、字幕読み出し機能部235(図3)による、バッファ215Aからの字幕ストリームの読み出し処理の詳細について説明する。
字幕読み出し機能部235は、まず最初に、ステップS251において、図30のステップS127で字幕読み出し機能フラグ記憶部261に記憶された字幕読み出し機能フラグを判定する。ステップS251において、字幕読み出し機能フラグが0であると判定された場合、即ち、例えば、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに字幕ストリームが含まれておらず、図30のステップS127で字幕読み出し機能フラグ記憶部261に、0がセットされた場合、字幕読み出し機能部235は特に処理を行わない。
一方、ステップS251において、字幕読み出し機能フラグが1であると判定された場合、即ち、例えば、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに字幕ストリームが含まれており、図30のステップS127で字幕読み出し機能フラグ記憶部261に、1がセットされた場合、ステップS252に進み、字幕読み出し機能部235は、stream_idレジスタ263(図3)に記憶された、再生対象の字幕ストリームのstream_idに一致するPES_packet()を、バッファ215Aに記憶されたプログラムストリームから探索する。
ここで、図30のステップS127で説明したように、stream_idレジスタ263(図3)には、再生対象の字幕ストリームのstream_idが記憶されるが、字幕ストリームのstream_idは、図20で説明したように、private_stream_1のPES_packet()を表す10111101B(=0xBD)である。
従って、ステップS252では、バッファ215Aに記憶されたプログラムストリーム中のprivate_stream_1のPES_packet()が探索されることになる。
ステップS252において、private_stream_1のPES_packet()の探索が行われ、private_stream_1のPES_packet()が見つかると、ステップS253に進み、字幕読み出し機能部235は、そのprivate_stream_1のPES_packet()のPES_packet_data_byteであるprivate_stream1_PES_payload()(図21)に記述されているprivate_stream_idを抜き出し、そのprivate_stream_idが、図30のステップS127でprivate_stream_idレジスタ264(図3)に記憶された、再生対象の字幕ストリームのprivate_stream_idと一致するかどうかを判定する。
ステップS253において、private_stream1_PES_payload()に記述されているprivate_stream_idが、private_stream_idレジスタ264に記憶されたprivate_stream_idと一致しないと判定された場合、即ち、直前のステップS252で見つかったprivate_stream_1のPES_packet()が、再生対象の字幕ストリームではない場合、ステップS252に戻り、バッファ215Aに記憶されたプログラムストリーム中の他のprivate_stream_1のPES_packet()の探索が行われ、以下、同様の処理が繰り返される。
一方、ステップS253において、private_stream1_PES_payload()に記述されているprivate_stream_idが、private_stream_idレジスタ264に記憶されたprivate_stream_idと一致すると判定された場合、即ち、直前のステップS252で見つかったprivate_stream_1のPES_packet()が、再生対象の字幕ストリームである場合、ステップS254に進み、字幕読み出し機能部235は、そのprivate_stream_1のPES_packet()のprivate_stream1_PES_payload()(図21)に記述されているAU_locatorを、バッファ215Aから読み出し、そのAU_locatorの直後の位置と、そのAU_locatorが表す値とを加算することで、字幕アクセスユニットの先頭位置を求める。
即ち、AU_locatorは、図21で説明したように、そのAU_locatorの直後の位置を基準として、private_stream1_PES_payload()のprivate_payload()に格納される字幕アクセスユニット(あるいはオーディオアクセスユニット)の先頭位置を表すから、AU_locatorの直後の位置に、そのAU_locatorが表す値を加算することにより、字幕アクセスユニットの(絶対的な)先頭位置を求めることができる。
字幕読み出し機能部235は、さらに、ステップS254において、以上のようにして求めた字幕アクセスユニットの先頭位置を指すように、字幕読み出しポインタ記憶部262に記憶された字幕読み出しポインタを更新し、ステップS255に進む。
ステップS255では、字幕読み出し機能部235は、字幕デコーダ制御モジュール218から、データの要求があったかどうかを判定し、ないと判定した場合、ステップS255に戻り、同様の処理を繰り返す。
また、ステップS255において、字幕デコーダ制御モジュール218から、データの要求があったかと判定された場合、ステップS256に進み、字幕読み出し機能部235は、字幕読み出しポインタが指しているバッファ215Aの位置からのプログラムストリームの構文解析を行いつつ、字幕アクセスユニットの先頭に記述されているサイズ分の1つの字幕アクセスユニットを、バッファ215Aから読み出し、その字幕アクセスユニットに付加されているタイムスタンプとともに、字幕デコーダ制御モジュール218に供給する。即ち、字幕アクセスユニットの先頭には、図2で説明したように、その字幕アクセスユニットのサイズが記述されており、字幕読み出し機能部235は、そのサイズ分のデータを、字幕読み出しポインタが指しているバッファ215Aの位置から読み出し、その読み出したデータである字幕アクセスユニットを、その字幕アクセスユニットに付加されているタイムスタンプとともに、字幕デコーダ制御モジュール218に供給する。
そして、字幕読み出し機能部235は、バッファ215Aから読み出した1つの字幕アクセスユニットのサイズ分だけ、字幕読み出しポインタを更新して、ステップS255に戻り、以下、同様の処理が繰り返される。
[再同期処理]
次に、図2のデコード制御モジュール214による、ビデオデータとオーディオデコーダとの同期制御について説明する。
図30のS130で説明したように、デコード制御モジュール214は、同期を確保するために必要であればタイミングをずらして、デコード開始を、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218に指令するが、例えば、その後のビデオデコーダ116とオーディオデコーダ117のデコード処理の進行程度によって、ビデオデータの出力と、そのビデオデータと同期して出力されるべき出力データとしてのオーディオデータの出力とがずれることがある。
そこで、デコード制御モジュール214では、ビデオデータの出力と、そのビデオデータと同期して出力されるべきオーディオデータの出力とに生じたずれを補正し、ビデオデータとオーディオデータとが同期して出力されるようにするための再同期処理が行われる。
図39のフローチャートを参照して、再同期処理について説明する。
再同期処理では、まず最初に、ステップS271において、デコード制御モジュール214は、ビデオデコーダ制御モジュール216からのビデオアクセスユニットのタイムスタンプと、オーディオ制御モジュール217からのオーディオアクセスユニットのタイムスタンプとのずれが大であるかどうかを判定する。
即ち、図30のステップS129で説明したように、ビデオデコーダ制御モジュール216は、バッファ制御モジュール215からビデオアクセスユニットを得るたびに、そのビデオアクセスユニットのタイムスタンプを、デコード制御モジュール214に供給する。同様に、オーディオ制御モジュール217も、バッファ制御モジュール215からオーディオアクセスユニットを得るたびに、そのオーディオアクセスユニットのタイムスタンプを、デコード制御モジュール214に供給する。
ステップS271では、デコード制御モジュール214は、ビデオデコーダ制御モジュール216とオーディオ制御モジュール217とのそれぞれから、同一タイミングで(同一タイミングとみなすことができる、ある時間内に)供給されるタイムスタンプどうしを比較し、それらのタイムスタンプのずれが大であるかどうかを判定する。
ステップS271において、ビデオデコーダ制御モジュール216からのビデオアクセスユニットのタイムスタンプと、オーディオ制御モジュール217からのオーディオアクセスユニットのタイムスタンプとのずれが大でないと判定された場合、即ち、ビデオアクセスユニットのタイムスタンプと、オーディオアクセスユニットのタイムスタンプとのずれが、あらかじめ定められた同期がとれているとみなすことができる範囲内である、例えば、2ビデオフレーム(約66ミリ秒)である場合、ステップS271に戻り、タイムスタンプどうしのずれの判定(監視)が続行される。
一方、ステップS271において、ビデオデコーダ制御モジュール216からのビデオアクセスユニットのタイムスタンプと、オーディオ制御モジュール217からのオーディオアクセスユニットのタイムスタンプとのずれが大であると判定された場合、即ち、ビデオアクセスユニットのタイムスタンプと、オーディオアクセスユニットのタイムスタンプとのずれが、あらかじめ定められた同期がとれているとみなすことができる範囲外である場合、ステップS272に進み、デコード制御モジュール214は、ビデオデコーダ制御モジュール216からのビデオアクセスユニットのタイムスタンプと、オーディオ制御モジュール217からのオーディオアクセスユニットのタイムスタンプとを比較することにより、ビデオデータの出力(デコード)と、オーディオデータの出力とのうちのいずれが遅れているかを判定する。
ステップS272において、ビデオデータの出力が、オーディオデータの出力よりも遅れていると判定された場合、ステップS273に進み、デコード制御モジュール214は、1ビデオアクセスユニットだけ、ビデオアクセスユニットの処理を進めるために、ビデオデコーダ制御モジュール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が含まれており、バッファ制御モジュール215は、図30のステップS129や、図36のステップS216で説明したように、ビデオアクセスユニットとともに、そのビデオアクセスユニットのau_ref_flagを、ビデオデコーダ制御モジュール216に供給する。
ステップS274では、このように、アクセスユニットとともに供給される、そのアクセスユニットのau_ref_flagが検査される。
そして、ステップS274からS275に進み、ビデオデコーダ制御モジュール216は、バッファ制御モジュール215から供給されたビデオアクセスユニットのau_ref_flagの検査の結果に基づき、そのビデオアクセスユニットが、他のピクチャのデコードにあたって参照されない非参照画像であるかどうかを判定する。
ここで、図24で説明したように、ビデオアクセスユニットのau_ref_flagは、そのアクセスユニットが参照画像であるか否かを表し、参照画像である場合には1とされ、参照画像でない場合、即ち、非参照画像である場合には0とされる。
ステップS275において、バッファ制御モジュール215から供給されたビデオアクセスユニットが非参照画像(のビデオアクセスユニット)でないと判定された場合、即ち、バッファ制御モジュール215から供給されたビデオアクセスユニットが参照画像である場合、ステップS276に進み、ビデオデコーダ制御モジュール216は、通常通り、そのビデオアクセスユニットを、ビデオデコーダ116に処理させ、次のビデオアクセスユニットが、バッファ制御モジュール215から供給されるのを待って、ステップS274に戻る。
また、ステップS275において、バッファ制御モジュール215から供給されたビデオアクセスユニットが非参照画像であると判定された場合、ステップS277に進み、ビデオデコーダ制御モジュール216は、そのビデオアクセスユニットの、ビデオデコーダ116による処理をスキップさせ、次のビデオアクセスユニットが、バッファ制御モジュール215から供給されるのを待って、ステップS271に戻る。
このように、ビデオアクセスユニットの処理がスキップされることにより、ビデオアクセスユニットの処理が、ほぼ1ビデオアクセスユニット分だけ進められる(処理時間が短縮される)。その結果、オーディオデータの出力よりも遅れていたビデオデータの出力が早まることになる。
一方、ステップS272において、ビデオデータの出力が、オーディオデータの出力よりも遅れていないと判定された場合、即ち、オーディオデータの出力が、ビデオデータの出力よりも遅れている場合、ステップS278に進み、デコード制御モジュール214は、ビデオアクセスユニットの処理を待たせるために、ビデオデコーダ制御モジュール216に対して、いまデコードされているビデオアクセスユニットに対応するビデオデータを繰り返して出力する繰り返し出力の指示を出力して、ステップS279に進む。
ステップS279では、ビデオデコーダ制御モジュール216は、デコード制御モジュール214からの繰り返し出力の指示を受信し、その繰り返し出力の指示に応じて、いまビデオデコーダ116でデコードされているビデオアクセスユニットに対応するビデオデータを繰り返して、グラフィクス処理モジュール219に出力し、次のビデオアクセスユニットが、バッファ制御モジュール215から供給されるのを待って、ステップS271に戻る。
以上のように、デコード制御モジュール214では、ビデオデータの出力が、オーディオデータの出力よりも遅れているか否かを判定し、ビデオデータの出力が、オーディオデータの出力よりも遅れている場合には、1つのアクセスユニットの処理のスキップを、ビデオデコーダ制御モジュール216に指示する。そして、ビデオデコーダ制御モジュール216では、スキップが指示されたアクセスユニットのau_ref_flagに基づき、そのアクセスユニットが参照画像であるか、または非参照画像であるかを判定し、非参照画像である場合に、ビデオデコーダ116に、スキップが指示されたアクセスユニットの処理をスキップさせる。従って、ビデオデータの出力と、オーディオデータの出力との同期を、容易にとることができる。
即ち、処理をスキップするアクセスユニットが参照画像である場合、そのアクセスユニットに対応するビデオデータは、その後にデコードされる他のアクセスユニットのデコード時に参照するためにデコードする必要がある。従って、ビデオデータの出力と、オーディオデータの出力との同期をとるための同期制御において、参照画像のアクセスユニットの処理をスキップしてしまうと、その参照画像を参照する他のアクセスユニットをデコードすることができず、その結果、ビデオデータの表示において、同期制御がノイズとして現れてしまう。
このため、処理をスキップするのは、参照画像でないアクセスユニット、即ち、非参照画像のアクセスユニットとするのが望ましい。
一方、従来のエレメンタリストリームについて、非参照画像のアクセスユニットを探すためには、エレメンタリストリームの構文解析を行う必要があるが、例えば、MPEG4-AVCなどにしたがった符号化により得られるエレメンタリストリームは、構文が非常に複雑であるため、構文解析に、多大なコストがかかる。
これに対して、ディスク101に記録されたクリップストリームファイルに格納されたプログラムストリームには、ビデオアクセスユニットがPES_packet_data_byteに配置されるPES_packet()(図16乃至図18)とは別に、PES_packet_data_byteを拡張したprivate_stream2_PES_payload()(図23)が配置されたprivate_stream_2のPES_packet()が多重化されており、そのprivate_stream2_PES_payload()のau_information()(図24)には、ビデオアクセスユニットごとに、そのビデオアクセスユニットが参照画像であるか、または非参照画像であるかを表すau_ref_flagが記述されている。そして、そのau_ref_flagは、対応するビデオアクセスユニットとともに、バッファ制御モジュール215からビデオデコーダ制御モジュール216に供給される。従って、ビデオデコーダ制御モジュール216は、ビデオアクセスユニットとともに供給される、そのビデオアクセスユニットのau_ref_flagを検査することにより、コストをほとんどかけずに、ビデオアクセスユニットが参照画像であるか、または非参照画像であるかを認識することができる。
[マーク処理]
次に、図40のフローチャートを参照して、PlayListMark()(図7)に記述されたMark()に基づいて行われるマーク処理について説明する。
デコード制御モジュール214は、内蔵する計時部214Aによって計時されている現在時刻を、常時確認しており、ステップS301において、現在時刻が、PlayListMark()(図7)に記述されたいずれかのMark()のmark_time_stampに一致したか否かを判定する。
即ち、図30のステップS124で説明したように、プレイヤ制御モジュール212は、図25に示した1番目のPlayList#0の1番目のPlayItem#0を再生しようとするときに、図28上側に示したPlayListMark()に含まれる7つのMark()のうちの1番目から4番目までの4つのMark()が、PlayList#0の1番目のPlayItem#0に属していることを認識し、その4つの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は、現在時刻が、「マーク処理」の属性の時刻となった旨のメッセージと、現在時刻と一致した「マーク処理」の属性の時刻とを、プレイヤ制御モジュール212に供給して、ステップS302に進む。
ステップS302では、プレイヤ制御モジュール212が、現在時刻が、「マーク処理」の属性の時刻となった旨のメッセージと、現在時刻と一致した「マーク処理」の属性の時刻(mark_time_stamp)とを、デコード制御モジュール214から受信し、mark_time_stampが現在時刻に一致したMark()を、マーク処理の処理対象とするMark()(以下、適宜、処理対象markという)として認識する。
即ち、プレイヤ制御モジュール212は、現在再生されているPlayList()のPlayItem()を認識しており、そのPlayList()およびPlayItem()と、デコード制御モジュール214からの、現在時刻と一致した「マーク処理」の属性の時刻(mark_time_stamp)(以下、適宜、マーク時刻という)とから、"PLAYLIST.DAT"ファイル(図5)のPlayListMark()(図7)を参照することにより、処理対象markを認識する。
具体的には、例えば、いま、図25に示した1番目のPlayList#0の1番目のPlayItem#0が再生されているとすると、そのことにより、プレイヤ制御モジュール212は、マーク時刻が、図28上側に示したPlayListMark()に含まれる7つのMark()のうちの1番目から4番目までの4つのMark()のうちのいずれかのmark_time_stampであることを認識する。
そして、デコード制御モジュール214からプレイヤ制御モジュール212に供給されたマーク時刻が、例えば、16,380,090であったとすると、プレイヤ制御モジュール212は、図28上側に示したPlayListMark()に含まれる1番目から4番目までの4つのMark()のうちの、mark_time_stampが、マーク時刻である16,380,090に一致する4番目のMark()を、処理対象markとして認識する。
プレイヤ制御モジュール212は、以上のようにして、処理対象markを認識すると、ステップS302からS303に進み、処理対象markにおいて、エレメンタリストリームを特定するentry_ES_stream_idとentry_ES_private_stream_id(図7)が記述されているかどうかを判定する。
ステップS303において、処理対象markに、エレメンタリストリームを特定するentry_ES_stream_idとentry_ES_private_stream_id(図7)が記述されていないと判定された場合、即ち、entry_ES_stream_idとentry_ES_private_stream_idが、いずれも0x00である場合、ステップS304をスキップして、ステップS305に進み、以下、処理対象markに応じた処理が行われる。
また、ステップS303において、処理対象markに、エレメンタリストリームを特定するentry_ES_stream_idとentry_ES_private_stream_id(図7)が記述されていると判定された場合、ステップS304に進み、プレイヤ制御モジュール212は、再生中のエレメンタリストリームに、そのentry_ES_stream_id、さらには、必要に応じてentry_ES_private_stream_idによって特定されるエレメンタリストリームが含まれるかどうかを判定する。
ステップS304において、再生中のエレメンタリストリームに、処理対象markのentry_ES_stream_idとentry_ES_private_stream_idによって特定されるエレメンタリストリームが含まれないと判定された場合、ステップS301に戻る。即ち、処理対象markのentry_ES_stream_idとentry_ES_private_stream_idによって特定されるエレメンタリストリームが再生されていない場合、処理対象markは、無視される。
一方、ステップS304において、再生中のエレメンタリストリームに、処理対象markのentry_ES_stream_idとentry_ES_private_stream_idによって特定されるエレメンタリストリームが含まれると判定された場合、即ち、処理対象markのentry_ES_stream_idとentry_ES_private_stream_idによって特定されるエレメンタリストリームが再生されている場合、処理対象markは有効であるとして、ステップS305に進み、以下、その処理対象markに応じた処理が行われる。
即ち、ステップS305では、プレイヤ制御モジュール212は、処理対象markのmark_type(図7)を参照することにより、その処理対象markを判定する。
ステップS305において、処理対象markが、チャプタマークまたはインデクスマークであると判定された場合、即ち、処理対象markのmark_typeが、'Chapter'または'Index'である場合、ステップS306に進み、プレイヤ制御モジュール212は、グラフィクス処理モジュール219に命じて、チャプタまたはインデクスの番号の表示を、処理対象markであるチャプタマークまたはインデクスマークが表すチャプタまたはインデクスの番号に更新させて、ステップS301に戻る。
また、ステップS305において、処理対象markが、イベントマークであると判定された場合、即ち、処理対象markのmark_typeが、'Event'である場合、ステップS307に進み、プレイヤ制御モジュール212は、イベントの発生を表すイベントメッセージと、処理対象markのmark_dataを、スクリプト制御モジュール211に通知(供給)して、ステップS308に進む。
ステップS308では、スクリプト制御モジュール211が、プレイヤ制御モジュール212からのイベントメッセージとmark_dataとを受信し、イベントメッセージを割り込み要求として、あらかじめ"SCRIPT.DAT"ファイルに記述された一連の処理を、mark_dataを引数として行って、ステップS301に戻る。
即ち、スクリプト制御モジュール211では、mark_dataに対応した処理が行われる。
具体的には、例えば、図28下側に示したPlayList #1のPlayListMark()では、2番目のMark()(Mark#1)と3番目のMark()(Mark#2)とは、いずれも、mark_typeが'Event'であるが、mark_dataは、それぞれ1(Mark#1)と2(Mark#2)で異なっている。
スクリプト制御モジュール211は、2番目のMark()に対応するイベントメッセージを受信した場合と、3番目のMark()に対応するイベントメッセージを受信した場合の、いずれも場合も、そのイベントメッセージに応じて、同一のイベントハンドラ(割り込み処理ルーチン)で処理を行うが、イベントハンドラ内において、イベントメッセージとともに供給されるmark_dataを検査することにより、イベントメッセージに対して、mark_dataごとに異なる処理を行う。
具体的には、例えば、mark_dataが1である場合には、スクリプト制御モジュール211は、グラフィクス処理モジュール219を制御して、第1の種類のアイコンの表示を行わせる。また、例えば、mark_dataが2である場合、スクリプト処理モジュール211は、グラフィクス処理モジュール219を制御して、第2の種類のアイコンの表示を行わせる。
なお、mark_dataは、1や2に限定されるものではなく、また、mark_dataに対応して行われる処理も、上述したような、単なるアイコンの表示限定されるものではない。
即ち、例えば、mark_dataが3乃至18の範囲の値である場合には、スクリプト制御モジュール211は、グラフィクス処理モジュール219を制御し、第1の種類のアイコンの表示を、mark_dataから2を減じた値(1〜16の数値)に対応する明るさで行わせる。また、例えば、mark_dataが19乃至34の範囲の値である場合には、スクリプト制御モジュール211は、グラフィクス処理モジュール219を制御し、第2の種類のアイコンの表示を、mark_dataから18を減じた値(1〜16の数値)に対応する明るさで行わせる。
その他、例えば、入力インターフェース115(図1)に、ユーザが操作するコントローラが接続されており、そのコントローラが、DC(Direct Current)モータの軸に偏芯させたおもりを取り付けた、DCモータを動作させると振動が発生する振動モータを内蔵する場合には、mark_dataが35乃至42の範囲の値であるときに、その振動モータを、mark_dataから34を減じた値(1〜8の数値)に応じた動作時間だけ動作させることができる。
mark_dataは数値であり、その使用法やアルゴリズムは、スクリプト制御モジュール211が実行するスクリプトプログラムにより記述することができる。従って、mark_dataは、事前に取り決められたルールで使用する他、ディスク101の製造者、あるいはディスク101に記録されるデータを提供するコンテンツプロバイダなどが独自に設定したルールで使用することが可能である。
以上のように、マーク処理では、現在時刻が、「マーク処理」の属性の時刻と一致すると、その「マーク処理」の属性の時刻であるマーク時刻から、処理対象markが認識される。さらに、処理対象markにおいて、エレメンタリストリームを特定するentry_ES_stream_idとentry_ES_private_stream_idが記述されていない場合には、処理対象markのmark_typeに応じた処理が行われる。また、処理対象markにおいて、エレメンタリストリームを特定するentry_ES_stream_idとentry_ES_private_stream_idが記述されている場合であっても、そのentry_ES_stream_idとentry_ES_private_stream_idによって特定されるエレメンタリストリームが再生中であれば、処理対象markのmark_typeに応じた処理が行われる。
従って、例えば、いま、図25に示した2番目のPlayList#1の再生が行われているとすると、以下のようなマーク処理が行われる。
即ち、2番目のPlayList#1のPlayListMark()においては、図28下側に示したように、mark_time_stampがそれぞれ90,000,27,090,000,27,540,000に指定されている1番目のMark()(Mark#0)、2番目のMark()(Mark#1)、3番目のMark()(Mark#2)が記述されている。
さらに、図28下側のPlayListMark()においては、2番目のMark()と3番目のMark()のentry_ES_stream_idには、それぞれ、0xE0と0xE1が記述されているから、2番目のMark()と3番目のMark()は、それぞれ、stream_idが0xE0と0xE1で特定されるエレメンタリストリームが関連付けられている。
ここで、図25で説明したように、2番目のPlayList#1には、1つのPlayItem()(PlayItem#0)だけが記述され、そのPlayItem#0によれば、クリップストリームファイル"00003.PS"が再生される。そして、クリップストリームファイル"00003.PS"には、そのクリップストリームファイル"00003.PS"に対応する図26のクリップ情報ファイル"00003.CLP"で説明したように、0xE0となっているstream_idで特定されるビデオストリームstream#0、0xE1となっているstream_idで特定されるビデオストリームstream#1、0xBDとなっているstream_idおよび0x00となっているprivate_stream_idで特定されるオーディオストリームstream#2の3つのエレメンタリストリームが多重化されている。
従って、図28下側のPlayListMark()の2番目のMark()には、クリップストリームファイル"00003.PS"に多重化されている、stream_idが0xE0となっているビデオストリームstream#0が関連付けられており、3番目のMark()には、クリップストリームファイル"00003.PS"に多重化されている、stream_idが0xE1となっているビデオストリームstream#1が関連付けられている。
図25の2番目のPlayList#1のPlayItem#0の再生が開始される場合、図30のステップS124で説明したようにして、プレイヤ制御モジュール212は、図28下側に示したPlayListMark()に含まれる3つのMark()が、PlayList#1のPlayItem#0に属していることを認識し、その3つのMark()のmark_time_stampである{90,000}、{27,090,000}、{27,540,000}を、そのmark_time_stampが表す時刻の属性が「マーク処理」である旨とともに、デコード制御モジュール214に渡している。
マーク処理では、デコード制御モジュール214が、PlayList#1のPlayItem#0の再生中に、計時部214Aによって計時される現在時刻が、属性が「マーク処理」の時刻{90,000}、{27,090,000}、{27,540,000}のうちのいずれかに一致するかを、常時確認しており(ステップS301)、現在時刻が、属性が「マーク処理」の時刻に一致すると、現在時刻と一致した「マーク処理」の属性の時刻であるマーク時刻と、現在時刻が、「マーク処理」の属性の時刻となった旨のメッセージとを、プレイヤ制御モジュール212に供給する。
即ち、例えば、いま、現在時刻が、「マーク処理」の属性の時刻{90,000}、{27,090,000}、{27,540,000}のうちの、27,090,000に一致したとすると、デコード制御モジュール214は、現在時刻と一致した「マーク処理」の属性の時刻であるマーク時刻27,090,000と、現在時刻が、「マーク処理」の属性の時刻となった旨のメッセージとを、プレイヤ制御モジュール212に供給する。
プレイヤ制御モジュール212は、PlayList#1のPlayItem#0が現在再生されていることを認識しており、そのPlayList#1の図28下側に示したPlayListMark()に記述されたMark()のうちの、PlayItem#0に属する3つのMark()のmark_time_stampである90,000,27,090,000,27,540,000それぞれと、デコード制御モジュール214からのマーク時刻である27,090,000とを比較することにより、そのマーク時刻27,090,000に、mark_time_stampが一致するMark()、即ち、図28下側のPlayListMark()に記述された2番目のMark()(Mark#1)を、処理対象markとして認識する(ステップS302)。
処理対象markである、図28下側のPlayListMark()に記述された2番目のMark()においては、entry_ES_stream_idとして、0xE0が指定されている。この0xE0となっているentry_ES_stream_idは、上述したことから、クリップストリームファイル"00003.PS"に多重化されている、stream_idが0xE0となっているビデオストリームstream#0(図26)を表すものであり、プレイヤ制御モジュール212は、再生中のエレメンタリストリームの中に、そのビデオストリームstream#0が含まれるかどうかを判定する(ステップS303,S304)。
そして、再生中のエレメンタリストリームの中に、ビデオストリームstream#0が含まれない場合には、処理対象markは無視される(ステップS304)。
一方、再生中のエレメンタリストリームの中に、ビデオストリームstream#0が含まれる場合には、処理対象markは有効であるとして、その処理対象markに応じた処理が行われる(ステップS305乃至S308)。
即ち、いまの場合、処理対象markである、図28下側のPlayListMark()に記述された2番目のMark()は、そのmark_typeが'Event'になっているからイベントマークであり、従って、プレイヤ制御モジュール212は、イベントの発生を表すイベントメッセージと、処理対象markのmark_dataを、スクリプト制御モジュール211に供給する(ステップS305,S307)。そして、スクリプト制御モジュール211では、プレイヤ制御モジュール212からのイベントメッセージを割り込み要求として、あらかじめ"SCRIPT.DAT"ファイルに記述された一連の処理を、そのイベントメッセージとともに供給されたmark_dataを引数として行う(ステップS308)。
以上のように、マーク処理によれば、PlayList()の時間軸上の1つの再生時刻を表すmark_time_stampと、Mark()のタイプを表すmark_typeと、イベントマークの引数となるmark_dataとを含む0以上のMark()を有するPlayListMark()(図7)を含むPlayList()(図5)にしたがって再生されているクリップストリームファイルの再生時刻である現在時刻が、mark_time_stampに一致するか否かが判定され、現在時刻が、mark_time_stampに一致する場合に、その一致した現在時刻であるマーク時刻に等しいmark_time_stampを有するMark()が、処理対象markとして認識される。さらに、その処理対象markが有するmark_typeが、イベントを発生させるタイプを表している場合、即ち、処理対象markが、イベントマークである場合、処理対象markが有するmark_dataとイベントメッセージとが通知され、そのmark_dataに応じた処理が実行される。従って、クリップストリームファイルの再生時刻に応じ、mark_dataに応じた処理を実行することが可能となる。
[出力属性の制御処理]
次に、図41のフローチャートを参照して、図30のステップS126などで行われる出力属性の制御処理の詳細について説明する。
図30のステップS126で説明したように、プレイヤ制御モジュール212は、まず、再生対象の1以上のエレメンタリストリーム、即ち、図30のステップS125で再生すると決定した1以上のエレメンタリストリームそれぞれについて、出力属性が記述されるDynamicInfo()(図13)の数を表すnumber_of_DynamicInfo(図10)を調査する。
そして、再生対象の1以上のエレメンタリストリームのすべてについて、number_of_DynamicInfoが0になっている場合、プレイヤ制御モジュール212は、特に処理を行わない。
一方、再生対象のエレメンタリストリームについてのnumber_of_DynamicInfoが0でない場合、プレイヤ制御モジュール212は、図41のフローチャートにしたがった出力属性の制御処理を行う。
従って、ディスク101に記録された3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"が、例えば、図26に示したようになっている場合に、クリップ情報ファイル"00001.CLP"に対応するクリップストリームファイル"00001.PS"(を再生する1番目のPlayList#0の1番目のPlayItem#0)が再生されるときには、クリップ情報ファイル"00001.CLP"(図26)では、クリップストリームファイル"00001.PS"に多重化されている4つのエレメンタリストリームstream#0乃至stream#3のすべてについて、number_of_DynamicInfoが0になっているから、出力属性の制御処理は行われない。
同様に、クリップ情報ファイル"00002.CLP"に対応するクリップストリームファイル"00002.PS"(を再生する1番目のPlayList#0の2番目のPlayItem#1)が再生されるときも、クリップ情報ファイル"00002.CLP"(図26)では、クリップストリームファイル"00002.PS"に多重化されている4つのエレメンタリストリームstream#0乃至stream#3のすべてについて、number_of_DynamicInfoが0になっているから、出力属性の制御処理は行われない。
一方、クリップ情報ファイル"00003.CLP"に対応するクリップストリームファイル"00003.PS"(を再生する2番目のPlayList#1のPlayItem#0)が再生されるときは、クリップ情報ファイル"00003.CLP"(図26)において、クリップストリームファイル"00003.PS"に多重化されている3つのエレメンタリストリームstream#0乃至stream#2のうちの、1番目のエレメンタリストリームであるビデオストリームstream#0と、3番目のエレメンタリストリームであるオーディストリームstream#2について、number_of_DynamicInfoが0でない2と3に、それぞれなっているから、出力属性の制御処理が行われる。
即ち、出力属性の制御処理では、まず最初に、ステップS320において、プレイヤ制御モジュール212は、再生対象のクリップストリームファイルに対応するクリップ情報ファイルClip()(図10)に記述されたpts_change_pointを、「DynamicInfo()処理」の属性の時刻である旨とともに、デコード制御モジュール214に渡し、デコード制御モジュール214は、プレイヤ制御モジュール212からの「DynamicInfo()処理」の属性の時刻であるpts_change_pointを受信して、ステップS321に進む。
ステップS321では、デコード制御モジュール214が、計時部214Aによって計時されている現在時刻が、「DynamicInfo()処理」の属性の時刻であるpts_change_point(のいずれか)に一致したかどうかを判定し、一致していないと判定した場合、ステップS321に戻る。
また、ステップS321において、現在時刻が、「DynamicInfo()処理」の属性の時刻(のいずれか)に一致したと判定された場合、デコード制御モジュール214は、現在時刻が、「DynamicInfo()処理」の属性の時刻となった旨のメッセージと、現在時刻と一致した「DynamicInfo()処理」の属性の時刻(以下、適宜、DynamicInfo時刻という)とを、プレイヤ制御モジュール212に供給して、ステップS322に進む。
ステップS332では、プレイヤ制御モジュール212が、現在時刻が、「DynamicInfo()処理」の属性の時刻となった旨のメッセージと、DynamicInfo時刻とを、デコード制御モジュール214から受信し、そのDynamicInfo時刻に一致するpts_change_point(図10)とセットになっているDynamicInfo()を、処理対象のDynamicInfo()である処理対象DynamicInfo()として認識して、ステップS323に進む。
ステップS323では、プレイヤ制御モジュール212は、処理対象DynamicInfo()となっているDynamicInfo()(図13)に記述された出力属性を、グラフィクス処理モジュール219またはオーディオ出力モジュール221に供給して、ステップS324に進む。
ステップS324では、グラフィクス処理モジュール219またはオーディオ出力モジュール221が、直前のステップS323でプレイヤ制御モジュール212から供給された出力属性にしたがって、ビデオデータまたはオーディオデータの出力の制御を、それぞれ開始し、ステップS321に戻る。
これにより、ビデオデータが、出力属性(表示方式)として記述された、例えばアスペクト比に応じて出力され、あるいは、オーディオデータが、出力属性(出力方式)として記述された、例えば、ステレオまたはデュアル(二ヶ国語)に応じて出力される。
次に、図42を参照して、出力属性の制御処理の詳細について、さらに説明する。
即ち、図42は、図26のクリップ情報ファイル"00003.CLP"に記述されているpts_change_pointとDynamicInfo()とのセット(図10)を示している。
ここで、上述したように、クリップストリームファイル"00003.PS"に多重化されている3つのエレメンタリストリームstream#0乃至stream#2のうちの、1番目のエレメンタリストリームであるビデオストリームstream#0と、3番目のエレメンタリストリームであるオーディストリームstream#2については、図26のクリップ情報ファイル"00003.CLP"において、number_of_DynamicInfoが、それぞれ2と3になっている。従って、クリップ情報ファイル"00003.CLP"において、クリップストリームファイル"00003.PS"の1番目のビデオストリームstream#0については、2セットのpts_change_pointおよびDynamicInfo()が記述されており、3番目のオーディオストリームstream#2については、3セットのpts_change_pointおよびDynamicInfo()が記述されている。
図42上側は、クリップストリームファイル"00003.PS"の1番目のビデオストリームstream#0について記述されている2セットのpts_change_pointおよびDynamicInfo()を示しており、図42下側は、クリップストリームファイル"00003.PS"の3番目のオーディオストリームstream#2について記述されている3セットのpts_change_pointおよびDynamicInfo()を示している。
なお、図42上側では、1番目のビデオストリームstream#0について記述されている2セットのpts_change_pointおよびDynamicInfo()の他に、そのビデオストリームstream#0について、図26のクリップ情報ファイル"00003.CLP"に記述されているstream_id(=0xE0),private_stream_id(=0x00),number_of_DynamicInfo(=2)も、図示してある。同様に、図42下側でも、3番目のオーディオストリームstream#2について記述されている3セットのpts_change_pointおよびDynamicInfo()の他に、そのオーディオストリームstream#2について、図26のクリップ情報ファイル"00003.CLP"に記述されているstream_id(=0xBD),private_stream_id(=0x00),number_of_DynamicInfo(=3)も、図示してある。
図42上側において、ビデオストリームstream#0について記述されている2セットのpts_change_pointおよびDynamicInfo()のうちの1セット目では、pts_change_pointが90,000になっており、DynamicInfo()のdisplay_aspect_ratio(図13)が'4:3'になっている。さらに、その2セット目では、pts_change_pointが54,090,000になっており、DynamicInfo()のdisplay_aspect_ratioが'16:9'になっている。
一方、図42下側において、オーディオストリームstream#2について記述されている3セットのpts_change_pointおよびDynamicInfo()のうちの1セット目では、pts_change_pointが90,000になっており、DynamicInfo()のchannel_assignment(図13)が'Dual'になっている。さらに、その2セット目では、pts_change_pointが27,090,000になっており、DynamicInfo()のchannel_assignmentが'Stereo'になっている。また、その3セット目では、pts_change_pointが32,490,000になっており、DynamicInfo()のchannel_assignmentが'Dual'になっている。
例えば、いま、図30のステップS125において、クリップストリームファイル"00003.PS"の、0xE0となっているstream_idで特定される1番目のビデオストリームstream#0と、0xBDとなっているstream_idおよび0x00となっているprivate_stream_idで特定される3番目のオーディオストリームstream#2とが、再生対象のストリームとして決定されたとする。
この場合、プレイヤ制御モジュール212は、0xE0となっているstream_idで特定されるビデオストリームstream#0について記述されている図42上側の2セットのpts_change_pointおよびDynamicInfo()と、0xBDとなっているstream_idおよび0x00となっているprivate_stream_idで特定されるオーディオストリームstream#2について記述されている図42下側の3セットのpts_change_pointおよびDynamicInfo()との中のpts_change_pointを調査し、初期値を認識する。
即ち、0xE0となっているstream_idで特定されるビデオストリームstream#0について記述されている図42上側の2セットのpts_change_pointおよびDynamicInfo()のうちの1セット目では、pts_change_pointが90,000になっている。そして、この90,000という時刻は、ビデオストリームstream#0が多重化されているクリップストリームファイル"00003.PS"に対応する図26のクリップ情報ファイル"00003.CLP"において、クリップストリームファイル"00003.PS"の先頭の時刻を表すpresentation_start_timeに記述されている時刻90,000に一致する。
同様に、0xBDとなっているstream_idおよび0x00となっているprivate_stream_idで特定されるオーディオストリームstream#2について記述されている図42下側の3セットのpts_change_pointおよびDynamicInfo()のうちの1セット目では、pts_change_pointが90,000になっている。そして、この90,000という時刻は、オーディオストリームstream#2が多重化されているクリップストリームファイル"00003.PS"に対応する図26のクリップ情報ファイル"00003.CLP"において、クリップストリームファイル"00003.PS"の先頭の時刻を表すpresentation_start_timeに記述されている時刻90,000に一致する。
プレイヤ制御モジュール212は、クリップストリームファイル"00003.PS"の先頭の時刻を表すpresentation_start_timeに記述されている時刻90,000に一致するpts_change_pointを、初期値として認識する。従って、図42上側の2セットのpts_change_pointおよびDynamicInfo()のうちの1セット目のpts_change_pointと、図42下側の3セットのpts_change_pointおよびDynamicInfo()のうちの1セット目のpts_change_pointが、初期値として認識される。
そして、プレイヤ制御モジュール212は、クリップストリームファイル"00003.PS"の再生が開始される前に(図30のステップS126で)、初期値として認識したpts_change_pointとセットになっているDynamicInfo()にしたがって、対応するエレメンタリストリームの出力属性を指示する。
即ち、0xE0となっているstream_idで特定されるビデオストリームstream#0については、図42上側で、初期値である90,000になっているpts_change_pointとセットになっているDynamicInfo()において、display_aspect_ratioが'4:3'になっている。この場合、プレイヤ制御モジュール212は、display_aspect_ratioが'4:3'になっている旨、即ち、ビデオストリームstream#0が、4:3のアスペクト比のビデオデータである旨の出力属性の情報を、グラフィクス処理モジュール219を制御する。
また、0xBDとなっているstream_idおよび0x00となっているprivate_stream_idで特定されるオーディオストリームstream#2については、図42下側で、初期値である90,000になっているpts_change_pointとセットになっているDynamicInfo()において、channel_assignmentが'Dual'になっている。この場合、プレイヤ制御モジュール212は、channel_assignmentが'Dual'になっている旨、即ち、オーディオストリームstream#2が、デュアルのオーディオデータである旨の出力属性の情報を、オーディオ出力モジュール221に供給する。
ここで、図30のステップS126では、以上のような初期値としてのpts_change_pointを対象とした出力属性の制御処理が行われる。
その後、プレイヤ制御モジュール212は、ビデオストリームstream#0についての図42上側の2つのpts_change_pointである90,000および54,090,000と、オーディオストリームstream#2についての図42下側の3つのpts_change_pointである90,000,27,090,000、および32,490,000のうちの、初期値90,000以外の時刻である{27,090,000},{32,490,000},{54,090,000}を、「DynamicInfo()処理」の属性の時刻である旨とともに、デコード制御モジュール214に渡す(ステップS320)。
デコード制御モジュール214は、プレイヤ制御モジュール212からの、「DynamicInfo()処理」の属性の時刻{27,090,000},{32,490,000},{54,090,000}を受信し、さらに、ビデオストリームstream#0およびオーディオストリームstream#2の再生(クリップストリームファイル"00003.PS"を再生する2番目のPlayList#1のPlayItem#0の再生)の開始後、計時部214Aによって計時されている現在時刻の監視を開始する。
そして、デコード制御モジュール214は、現在時刻が、「DynamicInfo()処理」の属性の時刻{27,090,000},{32,490,000},{54,090,000}のうちのいずれかに一致した場合、その現在時刻と一致した「DynamicInfo()処理」の属性の時刻であるDynamicInfo時刻を、プレイヤ制御モジュール212に供給する(ステップS321)。
即ち、例えば、現在時刻が、27,090,000になったとすると、デコード制御モジュール214は、「DynamicInfo()処理」の属性の時刻のうちの、現在時刻と一致する27,090,000を、DynamicInfo時刻として、プレイヤ制御モジュール212に供給する
プレイヤ制御モジュール212は、デコード制御モジュール214からのDynamicInfo時刻である27,090,000を受信し、ビデオストリームstream#0についての図42上側の2つのpts_change_pointと、オーディオストリームstream#2についての図42下側の3つのpts_change_pointとの中から、DynamicInfo時刻である27,090,000に一致するpts_change_pointを調査し、その27,090,000に一致するpts_change_pointとセットになっているDynamicInfo()、即ち、オーディオストリームstream#2についての図42下側の2番目のDynamicInfo()を、処理対象DynamicInfo()として認識する(ステップS322)。
処理対象DynamicInfo()が、ビデオストリームについてのDynamicInfo()である場合、プレイヤ制御モジュール212は、処理対象DynamicInfo()に記述されている出力属性を、グラフィクス処理モジュール219に供給する(ステップS323)。また、処理対象DynamicInfo()が、オーディオストリームについてのDynamicInfo()である場合、プレイヤ制御モジュール212は、処理対象DynamicInfo()に記述されている出力属性を、オーディオ出力モジュール221に供給する(ステップS323)。
グラフィクス処理モジュール219は、プレイヤ制御モジュール212から出力属性が供給されると、その出力属性にしたがって、ビデオデータの出力の制御を開始する(ステップ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について記述されている2セットのpts_change_pointおよびDynamicInfo()によれば、ビデオストリームstream#0の再生開始時である時刻90,000から、時刻54,090,000の直前までは、ビデオストリームstream#0から、4:3のアスペクト比のビデオデータが得られる。そして、時刻54,090,000以後は、ビデオストリームstream#0から、16:9のアスペクト比のビデオデータが得られる。
従って、例えば、図1のビデオ出力端子120に接続されたビデオ出力装置のアスペクト比が4:3であるとすると、グラフィクス処理モジュール219では、時刻90,000から時刻54,090,000の直前までは、ビデオストリームstream#0から得られる4:3のアスペクト比のビデオデータが、そのまま4:3のアスペクト比のビデオ出力装置に供給されて表示される。
そして、時刻54,090,000以後は、ビデオストリームstream#0から得られる16:9のアスペクト比のビデオデータが、縦方向にスクイーズ処理され、さらに、上下に黒味が入った4:3のアスペクト比のビデオ信号に変換され、4:3のアスペクト比のビデオ出力装置に供給されて表示される。
一方、オーディオ出力モジュール221は、プレイヤ制御モジュール212から出力属性が供給されると、その出力属性にしたがって、オーディオデータの出力の制御を開始する(ステップS324)。
即ち、オーディオ出力モジュール221は、例えば、プレイヤ制御モジュール212からの出力属性が表す、オーディオデータのチャネル割り当ての指示(channel_assignment(図13))と、ユーザがリモコンを操作することによって入力インターフェース115(図1)を介してプレイヤ制御モジュール212から供給される音声出力モードとに基づいて、オーディオデコーダ制御モジュール217からのオーディオデータを処理し、オーディオ出力端子121(図1)に出力する。
具体的には、例えば、出力属性が表すオーディオデータのチャネル割り当ての指示が、左チャネルが「主音声」のオーディオデータで、右チャネルの「副音声」のオーディオデータであるデュアル(Dual)(二ヶ国語)モードを表している場合、オーディオ出力モジュール221は、プレイヤ制御モジュール212から供給される音声出力モードにしたがって、オーディオデコーダ制御モジュール217からのオーディオデータを処理して、オーディオ出力端子121に出力する。
即ち、音声出力モードとして、例えば、「主音声」が指定されているときには、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータのうちの左チャネルのオーディオデータを、右チャネルのオーディオデータとしてコピーし、その左チャネルと右チャネルのオーディオデータ(「主音声」のオーディオデータ)を、オーディオ出力端子121に出力する。また、音声出力モードとして、「副音声」が指定されているときには、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータのうちの右チャネルのオーディオデータを、左チャネルのオーディオデータとしてコピーし、その左チャネルと右チャネルのオーディオデータ(「副音声」のオーディオデータ)を、オーディオ出力端子121に出力する。さらに、音声出力モードとして、「主・副」が指定されているときには、オーディオ出力モジュール221は、オーディオデコーダ制御モジュール217からのオーディオデータを、そのまま、オーディオ出力端子121に出力する。
また、例えば、出力属性が表すオーディオデータのチャネル割り当ての指示が、ステレオ(Stereo)モードを表している場合、オーディオ出力モジュール221は、プレイヤ制御モジュール212から供給される音声出力モードにかかわらず、オーディオデコーダ制御モジュール217からのオーディオデータを、そのまま、オーディオ出力端子121に出力する。
ここで、図42下側において、0xBDとなっているstream_idおよび0x00となっているprivate_stream_idで特定されるオーディオストリームstream#2について記述されている3セットのpts_change_pointおよびDynamicInfo()によれば、オーディオストリームstream#2の再生開始時である時刻90,000から、時刻27,090,000の直前までは、オーディオストリームstream#2から、デュアルのオーディオデータが得られる。また、時刻27,090,000から、時刻32,490,000の直前までは、オーディオストリームstream#2から、ステレオのオーディオデータが得られ、時刻32,490,000以後は、オーディオストリームstream#2から、デュアルのオーディオデータが得られる。
従って、例えば、音声出力モードとして、「主音声」が指定されているとすると、オーディオ出力出力モジュール221では、時刻90,000から、時刻27,090,000の直前までは、オーディオストリームstream#2から得られるデュアルのオーディオデータのうちの左チャネルのオーディオデータが、右チャネルのオーディオデータとしてコピーされ、その左チャネルと右チャネルのオーディオデータが、オーディオ出力端子121に出力される。
また、時刻27,090,000から、時刻32,490,000の直前までは、オーディオストリームstream#2から得られるステレオのオーディオデータが、そのまま、オーディオ出力端子121に出力される。
そして、時刻32,490,000以後は、オーディオストリームstream#2から得られるデュアルのオーディオデータのうちの左チャネルのオーディオデータが、右チャネルのオーディオデータとしてコピーされ、その左チャネルと右チャネルのオーディオデータが、オーディオ出力端子121に出力される。
以上のように、出力属性の制御処理では、クリップストリームファイルに多重化されているエレメンタリストリームごとに、そのエレメンタリストリームの再生時刻を表すpts_change_pointと、そのエレメンタリストリームの出力属性を含むDynamicInfo()とのセットを0セット以上含むクリップ情報ファイルClip()(図10)の記述に基づき、再生中のエレメンタリストリームの再生時刻が、pts_change_pointに一致するか否かが判定される。そして、再生中のエレメンタリストリームの再生時刻が、pts_change_pointに一致する場合、そのpts_change_pointとセットになっているDynamicInfo()が認識され、その認識されたDynamicInfo()に含まれる出力属性にしたがって、再生中のエレメンタリストリームの出力が制御される。従って、エレメンタリストリームの再生時刻と出力属性に応じて、そのエレメンタリストリームの出力を制御することが可能となる。
[字幕表示制御処理]
次に、図43のフローチャートを参照して、字幕ストリームに対応する字幕データの表示を制御する字幕表示制御処理について説明する。
PlayList()(図5)(のPlayItem())の再生が開始されると、プレイヤ制御モジュール212は、ステップS341において、グラフィクス処理モジュール219に対する字幕データの表示方式の指示を初期化する。即ち、プレイヤ制御モジュール212は、字幕データの表示方式をデフォルトの表示方式とするように、グラフィクス処理モジュール219を制御する。なお、ステップS341で行われる表示方式の指示の初期化は、図30の127で説明した表示方式の指示の初期化に対応する。
ステップS341の処理後は、ステップS342に進み、プレイヤ制御モジュール212は、ユーザがリモコンを操作することにより入力インターフェース115から、字幕データの表示について、新たな表示方式の指示があったかどうかを判定する。
ステップS342において、新たな表示方式の指示があったと判定された場合、ステップS343に進み、プレイヤ制御モジュール212は、字幕ストリーム(に対応する字幕データ)を、現在再生しているかどうかを判定する。
ステップS343において、字幕ストリームが再生されていないと判定された場合、ステップS342に戻る。
また、ステップS343において、字幕ストリームが再生されていると判定された場合、ステップS345に進み、プレイヤ制御モジュール212は、新たな表示方式の指示が、デフォルトの表示方式の指示であるかどうかを判定する。ステップS343において、新たな表示方式の指示が、デフォルトの表示方式の指示であると判定された場合、ステップS341に戻り、上述したように、プレイヤ制御モジュール212は、字幕データの表示方式をデフォルトの表示方式とするように、グラフィクス処理モジュール219を制御する。
一方、ステップS345において、新たな表示方式の指示が、デフォルトの表示方式の指示でないと判定された場合、即ち、新たな表示方式の指示が、例えば、字幕データを拡大や縮小して表示する、あるいは明るさを変えて見やすくする等、デフォルトでない表示方式の指示である場合、ステップS346に進み、プレイヤ制御モジュール212は、現在再生している字幕ストリームが多重化されたクリップストリームファイルに対応するクリップ情報ファイルClip()(図10)のStaticInfo()(図12)のうちの、現在再生している字幕ストリームについてのStaticInfo()を取得し、ステップS347に進む。
ステップS347では、プレイヤ制御モジュール212は、ステップS346で取得したStaticInfo()のconfigurable_flagを判定する。
ステップS347において、configurable_flagが、字幕データの表示方式の変更を許可しない旨の0になっていると判定された場合、ステップS348に進み、プレイヤ制御モジュール212は、グラフィクス処理モジュール219を制御することにより、出力ビデオデータに、字幕データの表示方式を変更することができない旨のエラーメッセージをオーバーレイさせ、ステップS342に戻る。これにより、エラーメッセージが表示される。
一方、ステップS347において、configurable_flagが、字幕データの表示方式の変更を許可する旨の1になっていると判定された場合、ステップS349に進み、プレイヤ制御モジュール212は、ユーザがリモコンを操作することにより入力インターフェース115から供給された新たな表示方式の指示を、グラフィクス処理モジュール219に供給して、ステップS350に進む。
ステップS350では、グラフィクス処理モジュール219は、字幕デコーダ制御モジュール218から供給される字幕データを、直前のステップS349でプレイヤ制御モジュール212から供給された表示方式の指示にしたがって拡大または縮小等あるいは明るさを変える等の処理を開始し、ステップS342に戻る。これにより、字幕データは、ユーザがリモコンを操作することによって指示した表示方式にしたがった表示サイズや、表示位置、表示色等で表示される。
一方、ステップS342において、新たな表示方式の指示がなかったと判定された場合、ステップS351に進み、プレイヤ制御モジュール212は、図31で説明したPlayItem()の乗り換えが行われたかどうかを判定し、行われていないと判定した場合、ステップS342に戻る。
また、ステップS351において、PlayItem()の乗り換えが行われたと判定された場合、ステップS341に戻り、上述したように、プレイヤ制御モジュール212は、字幕データの表示方式をデフォルトの表示方式とするように、グラフィクス処理モジュール219を制御する。即ち、この場合、PlayItem()の乗り換えが行われたときには、字幕データの表示方式は、デフォルトの表示方式に戻される。
以上のように、字幕表示制御処理においては、字幕ストリームのconfigurable_flagが、表示方式の変更を許可する旨の1になっている場合にのみ、その字幕ストリームに対応する字幕データの表示方式が、例えば、ユーザがリモコンを操作することにより入力される表示方式の指示に応じて変更される。
従って、例えば、図26に示したクリップ情報ファイル"00001.CLP"によれば、対応するクリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームのうちの3本目のエレメンタリストリームである字幕ストリームstream#2についてのconfigurable_flagは、表示方式の変更を許可しない旨の0になっているので、その字幕ストリームstream#2が表示されているときに、ユーザが字幕の表示を変更するようにリモコンを操作しても、その表示は変更されない。
一方、例えば、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームのうちの4本目のエレメンタリストリームである字幕ストリームstream#3についてのconfigurable_flagは、表示方式の変更を許可する旨の1になっているので、その字幕ストリームstream#3が表示されているときに、ユーザが字幕の表示を変更するようにリモコンを操作すると、その操作に応じて、字幕の表示サイズ等が変更される。
即ち、例えば、いま、図25の1番目のPlayList#0の1番目のPlayItem#0にしたがい、クリップストリームファイル"00001.PS"が再生されているとする。また、図26でクリップ情報ファイル"00001.CLP"について説明したように、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームのうちの、3本目と4本目が字幕ストリームであるが、その3本目の字幕ストリームstream#2と、4本目の字幕ストリームstream#3のうちの、例えば、3本目の字幕ストリームstream#2が、現在再生されているとする。
ユーザが、リモコンを操作することにより、字幕の表示方式の指示を入力すると(ステップS342)、その表示方式の指示は、入力インターフェース115(図1)からプレイヤ制御モジュール212に供給される。プレイヤ制御モジュール212は、表示方式の指示が供給されると、再生中の字幕ストリームに対応するStaticInfo()(図10)を、クリップ情報ファイルから探し出す(ステップS346)。
即ち、いまの場合、再生中の字幕ストリームは、クリップストリームファイル"00001.PS"に多重化されている3本目の字幕ストリームstream#2であり、プレイヤ制御モジュール212は、対応するクリップ情報ファイル"00001.CLP"から、3本目の字幕ストリームstream#2についてのStaticInfo()を探し出す。
さらに、プレイヤ制御モジュール212は、図26において3本目の字幕ストリームstream#2についてのStaticInfo()に記述されている、0になっているconfigurable_flagを判定し(ステップS347)、これにより、3本目の字幕ストリームstream#2については、表示方式の変更が許可されていないことを認識する。
この場合、プレイヤ制御モジュール212は、再生中の字幕ストリーム(に対応する字幕データ)が拡大縮小等に対応していないと判断し、グラフィクス処理モジュール219を制御することにより、その旨のエラーメッセージを生成させ(ステップS348)、ビデオデータにオーバーレイして出力させる。
一方、クリップストリームファイル"00001.PS"に多重化されている4本のエレメンタリストリームの3本目の字幕ストリームstream#2と、4本目の字幕ストリームstream#3のうちの、3本目の字幕ストリームstream#2ではなく、4本目の字幕ストリームstream#3が、現在再生されている場合には、ユーザがリモコンを操作することによって表示方式の指示の供給を受けたプレイヤ制御モジュール212は、対応するクリップ情報ファイル"00001.CLP"から、4本目の字幕ストリームstream#3についてのStaticInfo()を探し出す。
さらに、プレイヤ制御モジュール212は、図26において4本目の字幕ストリームstream#3についてのStaticInfo()に記述されている、1になっているconfigurable_flagを判定し(ステップS347)、これにより、4本目の字幕ストリームstream#3については、表示方式の変更が許可されていることを認識する。
この場合、プレイヤ制御モジュール212は、再生中の字幕ストリーム(に対応する字幕データ)が拡大縮小等に対応していると判断し、ユーザがリモコンを操作することによって供給された表示方式の指示を、グラフィクス処理モジュール219に供給する(ステップS349)。
これにより、その後、グラフィックス処理制御モジュール219は、プレイヤ制御モジュール212からの表示方式の指示にしたがい、字幕デコーダ制御モジュール218からの字幕データを拡大または縮小等し、ビデオデコーダ制御モジュール216からのビデオデータにオーバーレイして出力する。
なお、プレイヤ制御モジュール212は、PlayList()の最初のPlayItem()の再生開始時に、グラフィクス処理モジュール219に対する字幕データの表示方式の指示を初期化する(ステップS341)。即ち、プレイヤ制御モジュール212は、字幕データの表示方式をデフォルトの表示方式とするように、グラフィクス処理モジュール219を制御する。
さらに、プレイヤ制御モジュール212は、PlayItem()の乗り換え時にも、グラフィクス処理モジュール219に対する字幕データの表示方式の指示を初期化する(ステップS341,S351)。
但し、PlayItem()の乗り換え時においては、その後に新たに再生されるPlayItem()にしたがって再生される新たな字幕ストリームについてのconfigurable_flagを調査し、configurable_flagが0である場合には、グラフィクス処理モジュール219に対する字幕データの表示方式の指示を初期化し、configurable_flagが1である場合には、グラフィクス処理モジュール219に対する表示方式の指示を、PlayItem()の乗り換え前のまま維持するようにすることが可能である。
また、図43の字幕表示制御処理では、ユーザがリモコンを操作することにより、新たな表示方式の指示が入力された場合に、その新たな表示方式の指示を、グラフィクス処理モジュール219に供給するようにしたが(ステップS349)、表示方式の指示は、例えば、メモリ113(図1)を構成する不揮発性メモリに記憶し、その不揮発性メモリに記憶された表示方式の指示を、グラフィクス処理モジュール219に供給するようにすることが可能である。
即ち、例えば、図1のディスク装置の初期設定として、不揮発性メモリに、ユーザ設定の表示方式の指示を記憶させておき、ユーザがリモコンを操作することにより、新たな表示方式の指示が入力された場合には、不揮発性メモリに記憶された表示方式の指示を、新たな表示方式の指示に更新する一方、その不揮発性メモリに記憶された表示方式の指示を、グラフィクス処理モジュール219に供給するようにすることが可能である。この場合、不揮発性メモリには、前回の再生終了時における表示方式の指示が保持されるので、次回のPlayList()の再生時に、ユーザがリモコンを操作することにより、前回の再生終了時における表示方式の指示を入力しなくても、その表示方式で、字幕データの表示が開始される。
なお、この場合、不揮発性メモリに記憶させる表示方式の指示には、例えば、字幕データを拡大または縮小するときの拡大率または縮小率等が含まれるものとする。
以上のように、字幕表示制御処理によれば、クリップ情報ファイルClip()(図10)に含まれる、エレメンタリストリームごとの、そのエレメンタリストリームの再生中に変化しないStaticInfo()のうちの、字幕データのStaticInfo()が取得され、そのStaticInfo()に含まれる、字幕データの表示をデフォルトの表示方式から変更することを許可するか否かを表すconfigurable_flagに基づき、再生中の字幕データの表示をデフォルトの表示方式から変更することが許可されているか否かが判定される。そして、再生中の字幕データの表示をデフォルトの表示方式から変更することが許可されている場合には、字幕データの表示方式の変更の指示にしたがって、その字幕データの表示処理、即ち、例えば、字幕データを拡大または縮小、あるいは表示色を変更する等して表示する処理が行われる。従って、字幕データの表示方式の変更を制御することができる。
[キャプチャ制御処理]
次に、図44のフローチャートを参照して、ビデオストリームに対応するビデオデータのキャプチャを制御するキャプチャ制御処理について説明する。なお、図44には、キャプチャ制御処理を説明するフローチャートとともに、そのキャプチャ制御処理によってキャプチャされたビデオデータを2次利用する処理の例であるバックグラウンド/スクリーンセーバ処理を説明するフローチャートも、図示してある。
キャプチャ制御処理は、例えば、ユーザがリモコンを操作することにより、ビデオデータのキャプチャを指示するキャプチャ指示が、入力インターフェース115(図1)を介して、プレイヤ制御モジュール212に供給されると開始される。
即ち、キャプチャ制御処理では、まず最初に、ステップS371において、プレイヤ制御モジュール212が、ビデオストリームを再生中であるかどうかを判定し、再生中でないと判定した場合、キャプチャ制御処理は終了する。
一方、ステップS371において、ビデオストリームを再生中であると判定された場合、ステップS372に進み、プレイヤ制御モジュール212は、再生中のビデオストリームに対応するPlayList()(図5)から、capture_enable_flag_PlayListを取得するとともに、再生中のビデオストリームに対応するクリップ情報ファイルClip()(図10)から、capture_enable_flag_Clipを取得する。
ここで、PlayList()におけるcapture_enable_flag_PlayListは、図5で説明したように、そのPlayList()によって再生されるビデオストリームに対応するビデオデータ(PlayList()に属するビデオデータ)の2次利用を許可するか否かを表す。また、クリップ情報ファイルClip()におけるcapture_enable_flag_Clipは、図10で説明したように、そのクリップ情報ファイルClip()に対応するクリップストリームファイルに格納されているビデオストリームに対応するビデオデータの2次利用を許可するか否かを表す。
ステップS372の処理後は、ステップS373に進み、プレイヤ制御モジュール212は、直前のステップS373で取得されたcapture_enable_flag_PlayListとcapture_enable_flag_Clipとに基づき、キャプチャ指示が入力インターフェース115(図1)から入力されたときに再生されていたビデオデータのピクチャのキャプチャの可否を判定する。
ステップS373において、キャプチャ指示が入力インターフェース115から入力されたときに再生されていたビデオデータのピクチャのキャプチャが不可であると判定された場合、即ち、直前のステップS373で取得されたcapture_enable_flag_PlayListまたはcapture_enable_flag_Clipのうちの少なくとも一方が、ビデオデータの2次利用を許可しない旨の0になっている場合、ステップS374に進み、プレイヤ制御モジュール212は、グラフィクス処理モジュール219を制御することにより、ビデオデータのキャプチャが不可である旨のエラーメッセージをオーバーレイさせ、キャプチャ制御処理を終了する。これにより、エラーメッセージが表示される。
一方、ステップS373において、キャプチャ指示が入力インターフェース115から入力されたときに再生されていたビデオデータのピクチャのキャプチャが可能であると判定された場合、即ち、直前のステップS373で取得されたcapture_enable_flag_PlayListおよびcapture_enable_flag_Clipの両方が、ビデオデータの2次利用を許可する旨の1になっている場合、ステップS375に進み、プレイヤ制御モジュール212は、キャプチャ指示が入力インターフェース115から入力されたときに再生されていたビデオデータのピクチャのキャプチャの指示を、グラフィクス処理モジュール219に供給し、ステップS376に進む。
ステップS376では、グラフィクス処理モジュール219は、プレイヤ制御モジュール212からのキャプチャの指示にしたがい、ビデオデコーダ制御モジュール216からのビデオデータのピクチャをキャプチャし、メモリ113(図1)に記憶させて、キャプチャ制御処理を終了する。なお、capture_enable_flagが複数ビット構成になっており、使用条件の制約が行われている場合にはこの時点で対応が行われる。すなわちキャプチャした画像の大きさに制限がある場合には、この時点で縮小した画像がキャプチャされる。また使用するアプリケーションに制約がある場合にはその旨を知らせるフラグが同時に記録される。
以上のように、キャプチャ制御処理では、ユーザからのキャプチャ指示があったときに再生されているビデオストリームに対応するPlayList()(図5)とクリップ情報ファイルClip()(図10)それぞれのcapture_enable_flag_PlayListとcapture_enable_flag_Clipとの論理積をとって、その論理積が1である場合、即ち、capture_enable_flag_PlayListとcapture_enable_flag_Clipが、いずれも、2次利用を許可する1になっている場合にのみ、ビデオデータの2次利用が可能であると判断され、キャプチャが行われる。
従って、例えば、図25における1番目のPlayList#0の1番目のPlayItem#0にしたがって、ビデオストリームの再生、即ち、クリップストリームファイル"00001.PS"に多重化されたビデオストリームの再生が行われている場合に、ユーザからのキャプチャ指示があったときには、1番目のPlayList#0におけるcapture_enable_flag_PlayListは1であり、その1番目のPlayItem#0によって再生されるクリップストリームファイル"00001.PS"に対応する図26のクリップ情報ファイル"00001.CLP"におけるcapture_enable_flag_Clipは1であるから、再生中のビデオデータ(クリップストリームファイル"00001.PS"に多重化されたビデオストリームに対応するビデオデータ)の2次利用は可能であると判断され、キャプチャが行われる。
また、例えば、図25における1番目のPlayList#0の2番目のPlayItem#1にしたがって、ビデオストリームの再生、即ち、クリップストリームファイル"00002.PS"に多重化されたビデオストリームの再生が行われている場合に、ユーザからのキャプチャ指示があったときには、1番目のPlayList#0におけるcapture_enable_flag_PlayListは1であり、その2番目のPlayItem#1によって再生されるクリップストリームファイル"00002.PS"に対応する図26のクリップ情報ファイル"00002.CLP"におけるcapture_enable_flag_Clipは0であるから、再生中のビデオデータ(クリップストリームファイル"00002.PS"に多重化されたビデオストリームに対応するビデオデータ)の2次利用は不可であると判断され、キャプチャが行われない。
さらに、例えば、図25における2番目のPlayList#1のPlayItem#0にしたがって、ビデオストリームの再生、即ち、クリップストリームファイル"00003.PS"に多重化されたビデオストリームの再生が行われている場合に、ユーザからのキャプチャ指示があったときには、2番目のPlayList#1におけるcapture_enable_flag_PlayListは0であり、2番目のPlayList#1のPlayItem#0によって再生されるクリップストリームファイル"00003.PS"に対応する図26のクリップ情報ファイル"00003.CLP"におけるcapture_enable_flag_Clipは1であるから、再生中のビデオデータ(クリップストリームファイル"00003.PS"に多重化されたビデオストリームに対応するビデオデータ)の2次利用は不可であると判断され、キャプチャは行われない。
なお、この場合、2番目のPlayList#1におけるcapture_enable_flag_PlayListが0であることが確認された時点で、ビデオデータの2次利用は不可であると判断することができるので、2番目のPlayList#1のPlayItem#0によって再生されるクリップストリームファイル"00003.PS"に対応する図26のクリップ情報ファイル"00003.CLP"におけるcapture_enable_flag_Clipの確認は省略することができる。
キャプチャ制御処理によってキャプチャされ、メモリ113に記憶されたピクチャは、バックグラウンド/スクリーンセーバ処理において2次利用することができる。
バックグラウンド/スクリーンセーバ処理は、例えば、プレイヤ制御モジュール212が動作しているが、エレメンタリストリームの再生が行われていない状態、即ち、ディスクドライブ102(図1)にディスク101が挿入されていない状態、あるいはエレメンタリストリームの再生が終了した状態となったときなどに行われる。
即ち、バックグラウンド/スクリーンセーバ処理では、ステップS381において、プレイヤ制御モジュール212は、キャプチャ制御処理によってメモリ113に記憶されたピクチャを表示するように、グラフィクス処理モジュール219を制御する。グラフィクス処理モジュール219は、プレイヤ制御モジュール212からの制御にしたがい、キャプチャ制御処理によってメモリ113に記憶されたピクチャを表示させる。
ここで、グラフィクス処理モジュール219において、メモリ113に記憶されたピクチャを静止画で表示させれば、いわゆる壁紙(バックグラウンド)が実現され、一定周期で拡大や縮小、移動等しながら表示させれば、スクリーンセーバーが実現される。また、キャプチャ制御処理によってメモリ113に記憶されたピクチャの表示を行うバックグラウンド/スクリーンセーバ処理は、プレイヤ制御モジュール212ではなく、他の独立したアプリケーションによって行うことが可能である。
また、このときメモリ113に記憶されたピクチャに使用制限を表すフラグが付加されている場合にはその制限に従う。
以上のように、ビデオアクセスユニット単位より大きな単位の、例えば、PlayList()やPlayItem()に対応するビデオデータの2次利用を許可するか否かを表す、再生中のビデオデータに対するcapture_enable_flag_PlayListやcapture_enable_flag_Clipが取得され、そのcapture_enable_flag_PlayListやcapture_enable_flag_Clipに基づき、再生中のビデオデータの2次利用が許可されているか否かが判定される。そして、再生中のビデオデータの2次利用が許可されていると判定された場合、再生中のビデオデータがキャプチャされ、そのキャプチャされたビデオデータを利用したバックグラウンド/スクリーンセーバ処理が実行される。従って、ビデオデータの2次利用の制御が可能となる。
なお、図44のキャプチャ制御処理では、PlayList()(図5)において、capture_enable_flag_PlayListを設けるとともに、PlayItem()によって再生されるクリップストリームファイルに対応するクリップ情報ファイルClip()(図10)において、capture_enable_flag_Clipを設け、そのcapture_enable_flag_PlayListとcapture_enable_flag_Clipとの両方を用いて、2次利用の許可(可否)を判定するようにしたが、PlayList()(図5)において、capture_enable_flag_PlayListを設けるだけか、または、PlayItem()によって再生されるクリップストリームファイルに対応するクリップ情報ファイルClip()(図10)において、capture_enable_flag_Clipを設けるだけにして、capture_enable_flag_PlayListまたはcapture_enable_flag_Clipの一方だけを用いて、2次利用の可否を判定するようにすることも可能である。
また、図44のキャプチャ制御処理では、ステップS376において、グラフィクス処理モジュール219が、プレイヤ制御モジュール212からのキャプチャの指示にしたがい、ビデオデコーダ制御モジュール216からのビデオデータのピクチャ、即ち、1つのピクチャだけをキャプチャするようにしたが、その他、複数のピクチャをキャプチャすることも可能である。つまり、ビデオデコーダ制御モジュール216が出力する時系列の複数のピクチャ(動画としての複数のピクチャのシーケンス)をキャプチャすることが可能である。この場合、一度にキャプチャされるピクチャの枚数は、例えば、あらかじめ決めておくことができる。あるいは、capture_enable_flag_PlayListやcapture_enable_flag_Clipのビットを拡張して、そのcapture_enable_flag_PlayListやcapture_enable_flag_Clipに、一度にキャプチャ可能なピクチャの枚数の情報を含めるようにしても良い。
さらに、上述の場合には、ビデオデータの2次利用を許可するか否かの利用許可情報(capture_enable_flag_PlayList,capture_enable_flag_Clip)を、PlayList()や、クリップ情報ファイルClip()に記述し、その利用許可情報によって、PlayList()によって再生されるビデオデータ全体や、クリップ情報ファイルClip()に対応するクリップストリームファイルに多重化されたビデオストリームに対応するビデオデータ全体についての2次利用の可否を判定するようにしたが、利用許可情報は、その他の任意の単位のビデオデータについて記述し、その利用許可情報によって、任意の単位のビデデータについての2次利用の可否を判定することが可能である。
即ち、図45は、利用許可情報が配置されたprivate_stream2_PES_payload()のシンタクスを示しており、図46は、利用許可情報が配置されたau_information()のシンタクスを示している。
なお、図45のprivate_stream2_PES_payload()は、video_stream_idの直前に、利用許可情報としてのcapture_enable_flag_ps2が配置されている他は、図23における場合と同様に構成されている。図46のau_information()も、pic_struct_copyの直前に、利用許可情報としてのcapture_enable_flag_AUが配置されている他は、図24における場合と同様に構成されている。
図45のprivate_stream2_PES_payload()に配置されたcapture_enable_flag_ps2は、そのprivate_stream2_PES_payload()を含むprivate_stream_2のPES_packet()から、次のprivate_stream_2のPES_packet()の直前までに配置されるビデオストリームに対応するビデオデータの2次利用を許可するか否かを表す。従って、図45のprivate_stream2_PES_payload()に配置されたcapture_enable_flag_ps2によれば、あるデコード開始可能点から次のデコード開始可能点までの間のビデオデータについて、その2次利用を許可するか否かを判定することができる。
また、図46のau_information()に配置されたcapture_enable_flag_AUは、そのcapture_enable_flag_AUに対応するビデオアクセスユニットのビデオデータの2次利用を許可するか否かを表す。従って、図46のau_information()に配置されたcapture_enable_flag_AUによれば、ビデオアクセスユニット単位のビデオデータについて、即ち、ピクチャ単位で、その2次利用を許可するか否かを判定することができる。
ここで、PlayList()(図5)における利用許可情報としてのcapture_enable_flag_PlayList、クリップ情報ファイルClip()(図10)における利用許可情報としてのcapture_enable_flag_Clip、private_stream2_PES_payload()(図45)における利用許可情報としてのcapture_enable_flag_ps2,au_information()(図46)における利用許可情報としてのcapture_enable_flag_AUは、そのうちの2以上を重複して採用することが可能であり、この場合、あるビデオデータのピクチャの2次利用の可否は、その重複して採用される2以上の利用許可情報の論理積等に基づいて判定することができる。
また、図46のau_information()が配置される図23または図45のprivate_stream2_PES_payload()を含むprivate_stream_2のPES_packet()は、図36のステップS211で説明したように、バッファ制御モジュール215(図3)のビデオ読み出し機能部233が、バッファ215Aに記憶されたプログラムストリーム中から探索する。従って、capture_enable_flag_ps2が配置された図45のprivate_stream2_PES_payload()や、capture_enable_flag_AUが配置された図46のau_information()を採用する場合には、プレイヤ制御モジュール212は、ビデオデータの2次利用の可否を判定するにあたって、capture_enable_flag_ps2やcapture_enable_flag_AUを、ビデオ読み出し機能部233に問い合わせる必要がある。
なお、本実施の形態では、上述した一連の処理を、ソフトウェアによって行うこととしたが、上述した一連の処理は、専用のハードウェアにより行うこともできる。
また、本実施の形態では、ビデオデコーダ116(図1)として、ハードウェアデコーダを採用することとしたが、ビデオデコーダ116としては、ソフトウェアデコーダを採用することも可能である。オーディオデコーダ117(図1)についても、同様である。
さらに、本実施の形態では、字幕デコーダとして、ソフトウェアデコーダを採用することとしたが、字幕デコーダとしては、ハードウェアデコーダを採用することも可能である。
本発明を適用したディスク装置の一実施の形態のハードウェア構成例を示すブロック図である。 CPU112が実行するソフトウェアモジュール群の構成例を示すブロック図である。 バッファ制御モジュール215の構成例を示すブロック図である。 ディスク101におけるディレクトリ構成例を示す図である。 "PLAYLIST.DAT"ファイルのシンタクスを示す図である。 PlayItem()のシンタクスを示す図である。 PlayListMark()のシンタクスを示す図である。 mark_typeの値と、Mark()のタイプとの関係を示す図である。 PlayList(),PlayItem()、クリップ、およびクリップストリームファイルに格納されたプログラムストリームの関係を示す図である。 クリップ情報ファイルClip()のシンタクスを示す図である。 エレメンタリストリームを識別するstream_idおよびprivate_stream_idと、エレメンタリストリームとの関係を示す図である。 StaticInfo()のシンタクスを示す図である。 DynamicInfo()のシンタクスを示す図である。 EP_map()のシンタクスを示す図である。 MPEG-2 Systemのプログラムストリーム、プログラムストリームパック、およびプログラムストリームパックヘッダのシンタクスを示す図である。 MPEG-2 SystemのPESパケットのシンタクスを示す図である。 MPEG-2 SystemのPESパケットのシンタクスを示す図である。 MPEG-2 SystemのPESパケットのシンタクスを示す図である。 MPEG-2 SystemにおけるPES_packet()のstream_idに記述される値と、エレメンタリストリームの属性(種類)との関係を示す図である。 ディスク装置が採用するstream_idを示す図である。 private_stream1_PES_payload()のシンタクスを示す図である。 private_stream_idの値と、private_payload()に格納されるエレメンタリストリームの属性との関係を示す図である。 private_stream2_PES_payload()のシンタクスを示す図である。 au_information()のシンタクスを示す図である。 "PLAYLIST.DAT"ファイルの具体例を示す図である。 クリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"の具体例を示す図である。 クリップ情報ファイル"00001.CLP"の中のEP_map()の具体例を示す図である。 PlayList #0とPlayList #1の中のPlayListMark()の具体例を示す図である。 再生前処理を説明するフローチャートである。 再生処理を説明するフローチャートである。 PlayItem乗り換え処理を説明するフローチャートである。 タイムコード表示処理を説明するフローチャートである。 ストリーム切り替え処理を説明するフローチャートである。 バッファ制御モジュール215の処理を説明するフローチャートである。 バッファ制御モジュール215の処理を説明するフローチャートである。 ビデオストリームの読み出しの処理を説明するフローチャートである。 オーディオストリームの読み出しの処理を説明するフローチャートである。 字幕ストリームの読み出しの処理を説明するフローチャートである。 再同期処理を説明するフローチャートである。 マーク処理を説明するフローチャートである。 出力属性の制御処理を説明するフローチャートである。 クリップ情報ファイル"00003.CLP"に記述されているpts_change_pointとDynamicInfo()とのセットの具体例を示す図である。 字幕表示制御処理を説明するフローチャートである。 キャプチャ制御処理とバックグラウンド/スクリーンセーバ処理を説明するフローチャートである。 private_stream2_PES_payload()の他のシンタクスを示す図である。 au_information()の他のシンタクスを示す図である。
符号の説明
101 ディスク, 102 ディスクドライブ, 111 バス, 112 CPU, 113 メモリ, 114 ドライブインターフェース, 115 入力インターフェース, 116 ビデオデコーダ, 117 オーディオデコーダ, 118 ビデオ出力インターフェース, 119 オーディオ出力インターフェース, 120 ビデオ出力端子, 121 オーディオ出力端子, 201 オペレーティングシステム, 210 ビデオコンテンツ再生プログラム, 211 スクリプト制御モジュール, 212 プレイヤ制御モジュール, 213 コンテンツデータ供給モジュール, 214 デコード制御モジュール, 214A 計時部, 215 バッファ制御モジュール, 215A バッファ, 216 ビデオデコーダ制御モジュール, 217 オーディオデコーダ制御モジュール, 218 字幕デコーダ制御モジュール, 219 グラフィクス処理モジュール, 220 ビデオ出力モジュール, 220A FIFO, 221 オーディオ出力モジュール, 221A FIFO, 231 データ先頭ポインタ記憶部, 232 データ書き込みポインタ記憶部, 233 ビデオ読み出し機能部, 234 オーディオ読み出し機能部, 235 字幕読み出し機能部, 241 ビデオ読み出しポインタ記憶部, 242 stream_idレジスタ, 243 au_information()レジスタ243, 251 オーディオ読み出しポインタ記憶部, 252 stream_idレジスタ, 253 private_stream_idレジスタ, 261 字幕読み出し機能フラグ記憶部261, 262 字幕読み出しポインタ記憶部, 263 stream_idレジスタ, 264 private_stream_idレジスタ

Claims (7)

  1. 符号化データを処理するデータ処理装置において、
    前記符号化データは、
    所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
    前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報と
    を含み、
    前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報を含み、
    前記符号化データから、前記利用情報を探索する探索手段と、
    前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給手段と
    を備えることを特徴とするデータ処理装置。
  2. 前記利用情報は、その利用情報から次の利用情報までの間に配置されている前記アクセスユニットの数を表す数情報を、さらに含み、
    前記供給手段は、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給することを、前記利用情報に含まれる前記数情報が表す数だけ繰り返す
    ことを特徴とする請求項1に記載のデータ処理装置。
  3. 所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータは、可変長のデータである
    ことを特徴とする請求項1に記載のデータ処理装置。
  4. 符号化データを処理するデータ処理方法において、
    前記符号化データは、
    所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
    前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報と
    を含み、
    前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報(例えば、図24のAU_length)を含み、
    前記符号化データから、前記利用情報を探索する探索ステップと、
    前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給ステップと
    を含むことを特徴とするデータ処理方法。
  5. 符号化データを処理するデータ処理を、コンピュータに行わせるプログラムにおいて、
    前記符号化データは、
    所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
    前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報と
    を含み、
    前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報を含み、
    前記符号化データから、前記利用情報を探索する探索ステップと、
    前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給ステップと
    を含むことを特徴とするプログラム。
  6. 符号化データを処理するデータ処理を、コンピュータに行わせるプログラムが記録されているプログラム記録媒体において、
    前記符号化データは、
    所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
    前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報と
    を含み、
    前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報を含み、
    前記符号化データから、前記利用情報を探索する探索ステップと、
    前記符号化ビデオデータをデコードするビデオデコーダを制御するビデオデコーダ制御手段からの要求に応じて、前記利用情報に含まれる前記サイズ情報に基づき、前記符号化データから前記アクセスユニット単位で前記符号化ビデオデータを読み出し、前記ビデオデコーダに供給する供給ステップと
    を含むことを特徴とするプログラムが記録されているプログラム記録媒体。
  7. 符号化データが記録されているデータ記録媒体において、
    前記符号化データは、
    所定の単位のビデオデータを符号化して得られる、アクセスユニット単位の符号化ビデオデータと、
    前記アクセスユニット単位の符号化ビデオデータにおける1以上のデコード開始可能点それぞれの直前に配置される、前記符号化ビデオデータのデコードに利用される利用情報と
    を含み、
    前記利用情報は、その利用情報から次の利用情報までの間に配置されている1以上の前記アクセスユニットそれぞれのサイズを表すサイズ情報を含む
    ことを特徴とするデータ記録媒体。
JP2004174548A 2004-06-11 2004-06-11 データ処理装置およびデータ処理方法、並びに、プログラムおよびプログラム記録媒体 Expired - Fee Related JP4586429B2 (ja)

Priority Applications (9)

Application Number Priority Date Filing Date Title
JP2004174548A JP4586429B2 (ja) 2004-06-11 2004-06-11 データ処理装置およびデータ処理方法、並びに、プログラムおよびプログラム記録媒体
BRPI0511918-9A BRPI0511918A (pt) 2004-06-11 2005-05-24 aparelho de processamento de dados e programa para permitir que um computador execute processamento de dados para processar dados codificados, meio de gravação de programa, meio de gravação de dados, e estrutura de dados de dados codificados
EP05743603A EP1768403A4 (en) 2004-06-11 2005-05-24 DATA PROCESSING DEVICE, DATA PROCESSING METHOD, PROGRAM, PROGRAM RECORDING MEDIUM, DATA RECORDING MEDIUM, AND DATA STRUCTURE
PCT/JP2005/009435 WO2005122570A1 (ja) 2004-06-11 2005-05-24 データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、データ記録媒体並びにデータ構造
CN2005800272857A CN101002467B (zh) 2004-06-11 2005-05-24 数据处理设备和方法
US11/629,078 US8213781B2 (en) 2004-06-11 2005-05-24 Data processing device, data processing method, program, program recording medium, data recording medium, and data structure
HK08107869.5A HK1112778A1 (en) 2004-06-11 2005-05-24 A detecting method for memory
TW094117303A TW200606827A (en) 2004-06-11 2005-05-26 Data processing apparatus and data processing method, program and program recording medium, and data recording medium
HK07109878.1A HK1101950A1 (en) 2004-06-11 2007-09-12 Data processing device and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004174548A JP4586429B2 (ja) 2004-06-11 2004-06-11 データ処理装置およびデータ処理方法、並びに、プログラムおよびプログラム記録媒体

Publications (2)

Publication Number Publication Date
JP2005354520A true JP2005354520A (ja) 2005-12-22
JP4586429B2 JP4586429B2 (ja) 2010-11-24

Family

ID=35503507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004174548A Expired - Fee Related JP4586429B2 (ja) 2004-06-11 2004-06-11 データ処理装置およびデータ処理方法、並びに、プログラムおよびプログラム記録媒体

Country Status (8)

Country Link
US (1) US8213781B2 (ja)
EP (1) EP1768403A4 (ja)
JP (1) JP4586429B2 (ja)
CN (1) CN101002467B (ja)
BR (1) BRPI0511918A (ja)
HK (2) HK1112778A1 (ja)
TW (1) TW200606827A (ja)
WO (1) WO2005122570A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8559789B2 (en) * 2007-06-06 2013-10-15 Panasonic Corporation Reproducing apparatus that uses continuous memory area
KR20110106465A (ko) * 2009-01-28 2011-09-28 노키아 코포레이션 비디오 코딩 및 디코딩을 위한 방법 및 장치
CN102222077A (zh) * 2010-04-14 2011-10-19 中兴通讯股份有限公司 一种语音频数据的存储方法和装置
WO2015067993A1 (en) * 2013-11-08 2015-05-14 Freescale Semiconductor, Inc. Processing system with stack management and method for stack management
JP6855348B2 (ja) * 2017-07-31 2021-04-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびダウンロード処理方法
US11206244B2 (en) * 2018-12-21 2021-12-21 ARRIS Enterprise LLC Method to preserve video data obfuscation for video frames
CN110246467B (zh) * 2019-06-19 2021-06-15 深圳市康冠商用科技有限公司 一种液晶显示器屏幕保护方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09200695A (ja) * 1995-12-11 1997-07-31 Samsung Electron Co Ltd 高速再生のためのビデオデータの復号化方法及びその装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0176134B1 (ko) * 1995-10-25 1999-05-01 김광호 압축 부호화 비디오 데이타 재생방법
JP3060919B2 (ja) 1995-11-16 2000-07-10 松下電器産業株式会社 圧縮動画像復号・表示装置および圧縮動画像簡易編集装置
JPH10322665A (ja) * 1997-05-07 1998-12-04 Lsi Logic Corp Gopデータの反復読出し制御方法および装置
KR100247978B1 (ko) * 1997-08-08 2000-03-15 윤종용 픽쳐 디코딩 동기화 회로 및 그 방법
KR100750520B1 (ko) * 1997-09-25 2007-08-21 소니 가부시끼 가이샤 부호화 스트림 생성 장치 및 방법, 데이터 전송 시스템 및 방법, 편집 시스템 및 방법
KR100308034B1 (ko) * 1998-12-31 2001-11-02 구자홍 포맷변환장치
US6771196B2 (en) * 1999-12-14 2004-08-03 Broadcom Corporation Programmable variable-length decoder
ITTO20010525A1 (it) 2001-06-01 2002-12-01 Telecom Italia Lab Spa Procedimento di trasmissione, ad esempio per la trasmissione ripartita di flussi audiovisivi o multimediali, sistema di trasmissione, trasme
WO2004008747A2 (en) 2002-07-16 2004-01-22 Thomson Licensing S.A. Interleaving of base and enhancement layers for hd-dvd
CN100369481C (zh) * 2003-02-04 2008-02-13 松下电器产业株式会社 代码变换方法及其装置
JPWO2005043915A1 (ja) * 2003-10-31 2007-05-10 株式会社Kddiメディアウィル 映像解析装置及び映像障害検出装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09200695A (ja) * 1995-12-11 1997-07-31 Samsung Electron Co Ltd 高速再生のためのビデオデータの復号化方法及びその装置

Also Published As

Publication number Publication date
CN101002467B (zh) 2010-05-26
EP1768403A1 (en) 2007-03-28
HK1112778A1 (en) 2008-09-12
EP1768403A4 (en) 2010-04-28
HK1101950A1 (en) 2007-11-02
TWI330357B (ja) 2010-09-11
US20080292285A1 (en) 2008-11-27
US8213781B2 (en) 2012-07-03
WO2005122570A1 (ja) 2005-12-22
CN101002467A (zh) 2007-07-18
JP4586429B2 (ja) 2010-11-24
TW200606827A (en) 2006-02-16
BRPI0511918A (pt) 2008-01-15

Similar Documents

Publication Publication Date Title
KR101104507B1 (ko) 데이터 처리 장치 및 데이터 처리 방법, 프로그램 기록 매체, 데이터 기록 매체
EP1818933B1 (en) DVD Recording device for recording for each scene change a priority level as metadata for both subtitles streams and data stream.
KR101118430B1 (ko) 데이터 처리 장치, 데이터 처리 방법, 프로그램 기록 매체, 및 데이터 기록 매체
EP1761057A1 (en) Data processing device, data processing method, program, program recording medium, data recording medium, and data structure
JP4575129B2 (ja) データ処理装置およびデータ処理方法、並びにプログラムおよびプログラム記録媒体
TWI330357B (ja)
KR101118823B1 (ko) 데이터 처리 장치, 데이터 처리 방법 및 기록 매체
JP4536497B2 (ja) データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体
KR20070028410A (ko) 데이터 처리 장치 및 데이터 처리 방법, 프로그램 및프로그램 기록 매체, 데이터 기록 매체 및 데이터 구조
AU2005253423B2 (en) Data processing device, data processing method, program, program recording medium, data recording medium, and data structure
KR101169488B1 (ko) 데이터 처리 장치, 데이터 처리 방법, 프로그램 기록 매체 및 데이터 기록 매체
KR20070020503A (ko) 데이터 처리 장치 및 데이터 처리 방법, 프로그램 및프로그램 기록 매체, 데이터 기록 매체, 및, 데이터 구조

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100810

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100823

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees