多重化分離装置および多重化分離方法
【課題】 CPUにかかる負荷を軽減する。
【解決手段】 バッファ制御手段2は、供給される多重化ストリームを無限ループ状にデータを記憶するリングバッファ1のデータ書き込みポインタの指す位置から書き込む。ES1読み出し制御手段3は、ES1読み出し要求を受けると、リングバッファ1において最も古いES1が記憶されている領域を検索するための起点となる読み出しポインタをES1読み出しポインタ蓄積部13から取り出し、ES1読み出しポインタの指す位置を起点としてES1を検索して読み出し、要求元へ転送する。その後、ES1読み出しポインタとデータ先頭ポインタを更新する。
【解決手段】 バッファ制御手段2は、供給される多重化ストリームを無限ループ状にデータを記憶するリングバッファ1のデータ書き込みポインタの指す位置から書き込む。ES1読み出し制御手段3は、ES1読み出し要求を受けると、リングバッファ1において最も古いES1が記憶されている領域を検索するための起点となる読み出しポインタをES1読み出しポインタ蓄積部13から取り出し、ES1読み出しポインタの指す位置を起点としてES1を検索して読み出し、要求元へ転送する。その後、ES1読み出しポインタとデータ先頭ポインタを更新する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は多重化分離装置および多重化分離方法に関し、特にエレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置および多重化分離方法に関する。
【背景技術】
【0002】
従来、エレメンタリストリームが時分割多重化された多重化ストリームは、多重化分離装置によって多重分離された後、デコーダに送られて復号される。
図9は、従来の多重化分離装置の一例を示したブロック図である。
【0003】
多重化分離装置500は、例えばディスク装置に組み込まれ、ディスクから読み出された多重化ストリームを一時記憶し、ビデオ、オーディオおよび字幕の各エレメンタリストリームに分解してデコーダ部560に供給する。
【0004】
多重化ストリーム蓄積部510は、ディスクから読み出されたデータなどの多重化ストリームを一時蓄積する。構文解析機能部520は、多重化ストリーム蓄積部510に蓄積された多重化ストリームからビデオストリーム、オーディオストリーム、字幕ストリームを分離し、ビデオストリーム蓄積部530、オーディオストリーム蓄積部540、字幕ストリーム蓄積部550に供給する。各エレメンタリストリーム蓄積部には、供給されたエレメンタリストリームが蓄積される。デコーダ部560には、ビデオデコーダ制御モジュール、オーディオデコーダ制御モジュールおよび字幕デコーダ制御モジュールが具備され、対応するビデオストリーム蓄積部530、オーディオストリーム蓄積部540、字幕ストリーム蓄積部550にデータが蓄積され始めると、蓄積された各エレメンタリストリームを要求し、供給されたデータのデコード処理を行う。すなわち、従来の多重化分離装置500では、〔1〕外部から入力した多重化ストリームの多重化ストリーム蓄積部510へのコピー(データ移動)、〔2〕構文解析機能部520を介して多重化ストリーム蓄積部510から各エレメンタリストリーム蓄積部(ビデオストリーム蓄積部530、オーディオストリーム蓄積部540および字幕ストリーム蓄積部550)へのデータ移動、〔3〕各エレメンタリストリーム蓄積部から対応する各デコーダへのデータ供給(データ移動)の、3回のデータ移動が発生する。
【0005】
ここで、各ストリーム蓄積部の構成について説明する。
図10は、従来の多重化ストリーム蓄積部の構成図である。多重化ストリーム蓄積部510は、メモリ上に構築され、多重化ストリームを一時記憶させるバッファ510a、データ先頭ポインタを一時記憶させるデータ先頭ポインタ蓄積部511およびデータ書き込みポインタを一時記憶するデータ書き込みポインタ蓄積部512を具備する。そして、図示しないバッファ制御手段によって、データ先頭ポインタ蓄積部511およびデータ書き込みポインタ蓄積部512に格納されるポインタに基づき、多重化ストリームのバッファ501aへの書き込みが制御される。
【0006】
バッファ510aは、例えば、リングバッファであり、入力されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形で、最新データを、いわば無限ループ状に記憶していく。データ先頭ポインタ蓄積部511は、バッファ510aに記憶されたデータのうち、まだ読み出されていない最も古いデータが記憶されている位置を示すデータ先頭ポインタを記憶する。データ書き込みポインタ蓄積部512は、ディスクから読み出された最新のデータが書き込まれるバッファ510aの位置を指すデータ書き込みポインタを記憶する。従って、データ先頭ポインタが指す位置から時計回りに、データ書き込みポインタが指す位置までの領域(図中斜線部)に記憶されているデータが有効なデータである。
【0007】
図11は、従来のビデオストリーム蓄積部の構成図である。ビデオストリーム蓄積部530は、メモリ上に構築され、ビデオストリームを一時記憶させるビデオバッファ530a、ビデオストリーム先頭ポインタを一時記憶させるビデオストリーム先頭ポインタ蓄積部531、ビデオストリーム書き込みポインタを一時記憶させるビデオストリーム書き込みポインタ蓄積部532および付属データを記憶するための付属情報FIFO(First In First Out)部533を具備する。そして、図示しないビデオバッファ制御手段によって、ビデオストリーム先頭ポインタ蓄積部531およびビデオストリーム書き込みポインタ蓄積部532に格納されるポインタに基づき、構文解析機能部520より供給されるビデオストリームのビデオバッファ530aへの書き込みが制御される。
【0008】
多重化ストリーム蓄積部510のバッファ510aと同様、ビデオバッファ530aは、リングバッファであり、構文解析機能部520から供給されるビデオストリームを無限ループ状に記憶していく。ビデオストリーム先頭ポインタ蓄積部531は、ビデオストリーム先頭ポインタを記憶し、ビデオストリーム書き込みポインタ蓄積部532は、ビデオストリーム書き込みポインタを記憶する。いずれのポインタが指す位置も時計回りに更新され、ビデオストリーム先頭ポインタが指す位置から時計回りに、ビデオストリーム書き込みポインタが指す位置までの領域(図中斜線部)に記憶されているデータが有効なデータである。また、付属情報FIFO部533には、構文解析機能部520で分離されたタイムスタンプなどの付属情報が記憶される。
【0009】
オーディオストリーム蓄積部540および字幕ストリーム蓄積部550は、ビデオストリーム蓄積部530と同様の構成であり、リングバッファ、先頭ポインタと書き込みポインタの蓄積部および付属情報FIFO部を備える。
【0010】
以上の構成の多重化分離装置500におけるストリーム蓄積部間のデータの移動について説明する。なお、バッファ制御手段やビデオバッファ制御手段など、多重化分離装置500の各バッファへの書き込み制御を行う制御手段は、図示しないCPU(Central Processing Unit)が、各制御手段の処理内容を記述したプログラムを実行することによって実現される。
【0011】
まず、第1の多重化ストリーム蓄積部へのデータ移動について説明する。バッファ制御手段は、供給された多重化ストリームを多重化ストリーム蓄積部510のデータ書き込みポインタ蓄積部512に登録されたデータ書き込みポインタが指すバッファ510aの位置から書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
【0012】
次に、第2の多重化ストリーム蓄積部から各エレメンタリストリーム蓄積部へのデータ移動について、ビデオストリームの場合で説明する。構文解析機能部520は、バッファ510aから多重化ストリームを読み出し、再生対象のエレメンタリストリームを識別(特定)するための識別情報として取得しているIDを使用して多重分離を行う。データ先頭ポインタ蓄積部511に登録されたデータ先頭ポインタが指すバッファ510aの位置から読み出しを開始し、読み出したデータのサイズだけデータ先頭ポインタをインクリメントする。また、分離されたビデオストリームと、関連する付属情報はビデオストリーム蓄積部530に渡され、ビデオストリームはビデオバッファ530aに一時的に蓄積される。この際、ビデオストリーム書き込みポインタ蓄積部532に登録されたビデオストリーム書き込みポインタが指すビデオバッファ530aの位置から書き込み、書き込んだデータのサイズだけビデオストリーム書き込みポインタをインクリメントする。また、付属情報は、付属情報FIFO部533に一時的に蓄積される。同様に、分離されたオーディオストリームおよび付属情報は、オーディオストリーム蓄積部540に渡され、それぞれオーディオバッファと付属情報FIFO部に一時的に蓄積される。また、分離された字幕ストリームおよび付属情報は、字幕ストリーム蓄積部550に渡され、それぞれ字幕バッファと付属情報FIFO部に一時的に蓄積される。
【0013】
次に、第3の各エレメンタリストリーム蓄積部から各デコーダへのデータ移動について、ビデオストリームの場合で説明する。ビデオストリーム蓄積部530のビデオバッファ530aにデータが蓄積され始めると、デコーダ部560のビデオデコーダ制御手段がビデオバッファ530aからのデータの読み出しを開始し、1つのビデオアクセスユニット、そのビデオアクセスユニットに付加されているタイムスタンプ、付加情報などを取得し、デコード処理を行う。なお、オーディオストリームおよび字幕ストリームの場合も同様の処理が行われる。
【0014】
また、多重化ストリームから分離した各ストリームを専用のメモリに転送して記憶させずに、直接デコーダのバッファに転送するストリーム再生方法が提案されている(例えば、特許文献1参照)。
【特許文献1】特開2003−61045号公報
【発明の開示】
【発明が解決しようとする課題】
【0015】
しかし、従来の多重化分離装置および多重化分離方法では、データ移動によりCPUの処理能力が低下するという問題点があった。
上記の説明のように、従来の多重化分離装置および多重化分離方法では、多重化ストリーム蓄積部510への書き込み、多重化ストリーム蓄積部510から各エレメンタリストリーム蓄積部へのデータ移動、各エレメンタリストリーム蓄積部からデコーダ部560へのデータ移動の3回のデータ移動が発生する。多重化分離装置500の各処理手段はソフトウェアで構成されるが、CPUとメモリなどで構成されたコンピュータシステムではデータ移動時にCPUの処理能力が大幅に低下し、全体の処理能力を低下させてしまう。
【0016】
また、3回のデータ転送を行うために、それぞれのデータ転送用の読み出しポインタ及び書き込みポインタを用意しなければならず、多数のポインタを記憶するためのバッファが必要となるという問題点もある。さらに、ポインタの数が多いことによってバッファの制御が複雑になり、CPUに負荷がかかる。
【0017】
本発明はこのような点に鑑みてなされたものであり、CPUにかかる負荷を軽減することによって、処理能力の向上を図る多重化分離装置および多重化分離方法を提供することを目的とする。
【課題を解決するための手段】
【0018】
本発明では上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、リングバッファ、データ先頭ポインタ蓄積手段、データ書き込みポインタ蓄積手段、バッファ制御手段、読み出しポインタ蓄積手段および読み出し制御手段を具備することを特徴とする多重化分離装置が提供される。
【0019】
リングバッファは、多重化ストリームのデータを順次記憶し、記憶容量分を超えると最も古い多重化ストリームのデータに上書きして無限ループ状に記憶する。データ先頭ポインタ蓄積手段は、リングバッファの最も古いデータが記憶された位置を指すデータ先頭ポインタを格納し、データ書き込みポインタは、最新の多重化ストリームのデータを書き込む位置を指すデータ書き込みポインタを格納する。バッファ制御手段は、多重化ストリームが供給されると、データ書き込みポインタの指すリングバッファの位置から入力された多重化ストリームを書き込むとともに、書き込みサイズに応じてデータ書き込みポインタを更新してデータ書き込みポインタ蓄積手段に格納する。読み出しポインタ蓄積手段は、読み出しを行うエレメンタリストリームごとに、まだリングバッファより読み出していない対象のエレメンタリストリームのデータについての読み出し処理の起点を指す読み出しポインタを格納する。読み出し制御手段は、読み出し要求されたエレメンタリストリームの読み出しポインタを読み出しポインタ蓄積手段から取り出し、読み出しポインタの指すリングバッファの位置から対象のエレメンタリストリームを検索して読み出し、読み出しサイズに応じて対象のエレメンタリストリームの読み出しポインタとデータ先頭ポインタを更新する。
【0020】
このような多重化分離装置によれば、バッファ制御手段は、多重化ストリームが供給されると、データ書き込みポインタ蓄積手段からデータ書き込みポインタを取り出し、データ書き込みポインタの指す位置から順次多重化ストリームのデータを格納して、データ書き込みポインタを更新する。このとき、データ先頭ポインタを参照し、データ先頭ポインタの指す位置を超えて書き込みを行わないようにする。読み出し制御手段は、所定のエレメンタリストリームの読み出し要求を受けると、そのエレメンタリストリームに関する読み出しポインタを読み出しポインタ蓄積手段から取り出し、その読み出しポインタの指す位置を起点として対象のエレメンタリストリームを検索し、検索されたエレメンタリストリームのデータを読み出して要求先へ転送する。そして、読み出しサイズに応じて読み出しポインタとデータ先頭ポインタを更新する。
【0021】
また、上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離方法において、バッファ制御手段が、前記多重化ストリームが供給されると、前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファの最新のデータ書き込み位置を指すデータ書き込みポインタに基づき、前記データ書き込みポインタの指す前記リングバッファの位置に供給された前記多重化ストリームを順次書き込むとともに、書き込みサイズに応じて前記データ書き込みポインタを更新し、読み出し制御手段が、所定の前記エレメンタリストリームの読み出し要求を受けると、前記エレメンタリストリームごとの読み出し処理の起点となる読み出しポインタが格納される読み出しポインタ蓄積手段から要求された前記エレメンタリストリームに関する前記読み出しポインタを取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを更新する、ことを特徴とする多重化分離方法、が提供される。
【0022】
このような多重化分離方法では、多重化ストリームが供給されると、リングバッファの最新のデータ書き込み位置を示すデータ書き込みポインタが指す位置から多重化ストリームが順次書き込まれる。書き込みは、データ先頭ポインタの指す位置を超えないように行われる。一方、多重化ストリームを構成する各エレメンタリストリームの読み出し要求があると、エレメンタリストリームごとに格納された読み出し処理の起点となるリングバッファの位置を指す読み出しポインタが取り出され、読み出しポインタの指す位置から要求された対象のエレメンタリストリームが検索される。対象のエレメンタリストリームのデータが検索されると、そのデータが読み出されて要求先へ転送される。そして、転送後に読み出しサイズに応じて読み出しポインタとデータ先頭ポインタが更新される。
【0023】
また、上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、少なくとも第1及び第2のエレメンタリストリームを記憶するリングバッファと、前記リングバッファから、前記第1のエレメンタリストリームを読み出し制御する第1の読み出し制御手段と、前記リングバッファから、前記第2のエレメンタリストリームを読み出し制御する第2の読み出し制御手段と、を具備し、前記多重化ストリームのうちの一のエレメンタリストリームの読み出し要求に応じて、該エレメンタリストリームに対応する前記第1の読み出し制御手段または前記第2の読み出し制御手段により、前記第1のエレメンタリストリームまたは前記第2のエレメンタリストリームを読み出す、ことを特徴とする多重化分離装置、が提供される。
【0024】
このような構成の多重化分離装置では、リングバッファには、少なくとも第1及び第2のエレメンタリストリームを含む多重化ストリームが記憶される。多重化ストリームの一のエレメンタリストリームの読み出し要求を受けると、読み出し要求のあったエレメンタリストリームに対応する読み出し制御手段が起動し、該エレメンタリストリームの読み出しを行う。たとえば、第1の読み出し制御手段は、第1のエレメンタリストリームの読み出し要求を受けると、リングバッファに記憶される第1のエレメンタリストリームを検索して読み出す。第2の読み出し制御手段は、第2のエレメンタリストリームの読み出し要求を受けると、リングバッファに記憶される第2のエレメンタリストリームを検索して読み出す。
【発明の効果】
【0025】
本発明の多重化分離装置および多重化分離方法では、時分割多重が施された多重化ストリームを無限ループ状にデータを記憶するリングバッファに順次記憶しておく。そして、多重化ストリームを構成するエレメンタリストリームのデータ要求があった場合、エレメンタリストリームごとの読み出しポインタを用いて、要求された対象のエレメンタリストリームのデータが格納されるリングバッファの位置を検索し、対象のエレメンタリストリームのデータを抽出して要求先に供給する。このように、多重化ストリームの分離処理を行いながら要求先にデータ転送することができるため、データの転送回数を削減することが可能となり、CPUの処理負荷を軽減させることができるという利点がある。
【0026】
また、データ転送回数を削減することにより、データ転送に用いるポインタが少なくなり、バッファの容量を削減するとともに、バッファ制御が容易になる。
【発明を実施するための最良の形態】
【0027】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。
【0028】
本発明に係るデータ多重化分離装置は、エレメンタリストリーム1(以下、エレメンタリストリームをESと表記する)と、ES2が時分割多重された多重化ストリームを無限ループ状に記憶していくリングバッファ1、多重化ストリームのリングバッファ1への書き込みを制御するバッファ制御手段2、リングバッファ1から各ESを読み出す読み出し制御手段を構成するES1読み出し制御手段3とES2読み出し制御手段4、および各種管理情報蓄積部を具備する。管理情報蓄積部は、バッファ制御手段2がリングバッファ1へのデータ書き込み時に参照するデータ先頭ポインタ蓄積部11とデータ書き込みポインタ蓄積部12、および各ESの読み出し制御手段が参照するES1読み出しポインタ蓄積部13とES2読み出しポインタ蓄積部14から成る。
【0029】
リングバッファ1は、バッファ制御手段2によって書き込まれる多重化ストリームを無限ループ状に記憶する。すなわち、入力されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形でデータを記憶していく。リングバッファ1は、データ先頭ポインタ蓄積部11に格納されたデータ先頭ポインタとデータ書き込みポインタ蓄積部12に格納されたデータ書き込みポインタによって管理されており、図1の場合では、データ書き込みポインタが指す位置は、リングバッファ1にデータが記憶されるごとに、バッファ制御手段2によって時計回りに更新される。また、データ先頭ポインタが指す位置は、リングバッファ1からの各ESデータの読み出しに応じてES1読み出し制御手段3およびES2読み出し制御手段4によって時計回りに更新されていく。
【0030】
バッファ制御手段2は、リングバッファ1への多重化ストリーム書き込み制御を行う。多重化ストリームが供給されると、バッファ制御手段2では、データ先頭ポインタ蓄積部11とデータ書き込みポインタ蓄積部12とからそれぞれデータ先頭ポインタとデータ書き込みポインタを取り出し、データ書き込みポインタの指すリングバッファ1の位置から順次データの書き込みを行う。そして、データ書き込みポインタを時計回りにデータサイズ分インクリメントして更新し、データ書き込みポインタ蓄積部12に格納する。なお、データの書き込みがデータ先頭ポインタの指す位置を超えてしまう場合には、データ書き込みを遅延する。
【0031】
ES1読み出し制御手段3およびES2読み出し制御手段4は、それぞれのESをリングバッファ1から抽出して読み出す多重化分離機能を備える。
ES1読み出し制御手段3は、ES1の読み出し要求を受けると、ES1読み出しポインタ蓄積部13からES1読み出しポインタを取り出し、ES1読み出しポインタの指すリングバッファ1の位置を起点としてES1を検索し、検索されたES1のデータの読み出しを行い、読み出したデータを要求先に転送する。ES1読み出しポインタは、読み出されたデータが記憶されたリングバッファ1の次の位置を指すように更新される。また、必要に応じて、データ先頭ポインタも更新する。例えば、ES1読み出しポインタの指す位置が他のESの読み出しポインタより古いデータが記憶されている位置を指している場合、これより古いデータの読み出しを終了しているので、データ先頭ポインタをES1読み出しポインタと同じ位置に更新する。
【0032】
ES2読み出し制御手段4は、ES2の読み出し要求を受けると、ES2読み出しポインタ蓄積部14からES2読み出しポインタを取り出し、ES2読み出しポインタの指すリングバッファ1の位置を起点としてES2を検索し、検索されたES2のデータの読み出しを行い、読み出したデータを要求先に転送する。ES2読み出しポインタは、読み出されたデータが記憶された次の位置を指すように更新される。また、ES1読み出し制御手段3と同様に、必要に応じてデータ先頭ポインタも更新する。
【0033】
データ先頭ポインタ蓄積部11は、データ先頭ポインタを格納し、データ書き込みポインタ蓄積部12はデータ書き込みポインタを格納する。ES1読み出しポインタ蓄積部13は、ES1読み出しポインタを格納し、ES2読み出しポインタ蓄積部14は、ES2読み出しポインタを格納する。
【0034】
このような構成の多重化分離装置の動作および多重化分離方法について説明する。本発明に係る多重化分離装置では、入力された時分割多重化ストリームをリングバッファ1に書き込むとともに、読み出し要求に応じて、要求されたESをリングバッファ1から抽出(分離)して出力する制御を行っている。
【0035】
詳しくは、多重化分離装置に多重化ストリームが供給されると、バッファ制御手段2は、データ先頭ポインタ蓄積部11とデータ書き込みポインタ蓄積部12からそれぞれデータ先頭ポインタとデータ書き込みポインタを取り出し、データ書き込みポインタが指すリングバッファ1の位置から入力された多重化ストリームのデータを書き込む。図1の場合では、時計回りにデータが順次書き込まれていく。このとき、データ書き込みポインタがデータ先頭ポインタを追い越さないように、データの書き込みを制御する。書き込み終了後、データ書き込みポインタは、リングバッファ1のデータの書き込みが終了した次の位置を指すように更新される。
【0036】
そして、デコーダなどから多重化ストリームを構成する各ES(図1の場合では、ES1とES2)の読み出し要求を受けると、要求されたESに対応するES1読み出し制御手段3もしくはES2読み出し制御手段4が、それぞれの読み出しポインタを格納するES1読み出しポインタ蓄積部13もしくはES2読み出しポインタ蓄積部14からES1読み出しポインタもしくはES2読み出しポインタを取り出す。そして、ES1読み出しポインタもしくはES2読み出しポインタが指すリングバッファ1の位置を起点としてリングバッファ1を時計回りに検索し、対象のES1もしくはES2が検出されるとこのデータを読み出し、要求先へ転送する。読み出しが行われたES1読み出しポインタもしくはES2読み出しポインタは、読み出したサイズに応じて更新される。すなわち、読み出しが終了したリングバッファ1の次の位置(まだ読み出されていない最も古いESを含むデータが格納されている領域)を指すように更新される。さらに、データ先頭ポインタは、ES1読み出しポインタもしくはES2読み出しポインタのうち、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
【0037】
このような多重化分離装置によれば、各ESの読み出し要求があった場合に多重化ストリームから対象のESを分離して要求先に供給することができる。このため、予め多重化ストリームを分離してそれぞれのESバッファに格納し、読み出し要求時にはバッファに格納されたESを供給する場合に比べて、データの転送回数を少なくすることができる。すなわち、リングバッファへの書き込み、ESバッファへの書き込みおよび読み出し要求先への転送の3回のデータ移動を、リングバッファの書き込みと読み出し要求先への転送の2回に削減する。この結果、CPUの負荷を軽減させ、処理能力の向上を図ることができる。また、データ転送に用いるポインタを削減することができ、ポインタを記憶するためのバッファ容量が少なくて済むとともに、ポインタの数が少ないため、バッファの制御が簡単になる。
【0038】
以下、実施の形態をディスク装置に適用した場合を例に図面を参照して詳細に説明する。なお、ディスク装置の他、多重化ストリームの分離処理を行う、たとえば、ディジタル放送データの多重化ストリーム分離装置にも適用することができる。
【0039】
図2は、本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。図2のディスク装置は、例えば、ディスクプレーヤや、ゲーム装置、カーナビゲーションシステムその他に適用することができる。また、多重化分離される多重化ストリームは、ビデオストリーム、オーディオストリームおよび字幕ストリームが時分割多重されている。
【0040】
ディスク101は、例えば、DVDなどの光ディスク、あるいは光磁気ディスク、磁気ディスクなどであり、ビデオデータや、オーディオデータ、字幕データなどのコンテンツデータ、さらには、コンテンツデータを再生するのに必要なデータが記録されている。
【0041】
ディスクドライブ102は、図示せぬインタフェースを内蔵し、そのインタフェースを通じて、ドライブインタフェース114に接続されている。ディスクドライブ102は、そこに装着されたディスク101を駆動し、ドライブインタフェース114からの読み出し等の命令に従って、ディスク101からデータを読み出して、ドライブインタフェース114に供給する等の処理を行う。
【0042】
バス111には、CPU112、メモリ113、ドライブインタフェース114、入力インタフェース115、ビデオデコーダ116、オーディオデコーダ117、ビデオ出力インタフェース118、オーディオ出力インタフェース119が接続されている。
【0043】
CPU112およびメモリ113は、コンピュータシステムを形成している。すなわち、CPU112は、メモリ113に記憶されたプログラムである、後述するソフトウェアモジュール群を実行し、ディスク装置全体を制御するとともに、後述する各種の処理を行う。メモリ113は、CPU112が実行するソフトウェアモジュール群を記憶している。また、メモリ113は、CPU112の動作上必要なデータを一時記憶する。なお、メモリ113は、不揮発性メモリのみ、または揮発性メモリと不揮発性メモリとの組み合わせで構成することが可能である。また、図2のディスク装置に、ハードディスクを設け、そのハードディスクに、CPU112が実行するソフトウェアモジュール群を記録(インストール)しておく場合には、メモリ113は、揮発性メモリのみで構成することが可能である。
【0044】
ここで、CPU112が実行するプログラム(ソフトウェアモジュール群)は、ディスク装置に内蔵されている記録媒体としてのメモリ113に予め記録しておく(記憶させておく)ことができる。あるいはまた、プログラムは、ディスク101、さらには、ディスク101以外のフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical)ディスク、磁気ディスク、メモリカードなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【0045】
なお、プログラムは、メモリ113にあらかじめ記憶させておくこと、あるいは、上述したようなリムーバブル記録媒体からディスク装置にインストールすることができる。また、プログラムは、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、ディスク装置に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、ディスク装置に有線で転送し、ディスク装置では、そのようにして転送されてくるプログラムを、入力インタフェース115で受信し、内蔵するメモリ113にインストールすることができる。
【0046】
さらに、プログラムは、1のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
ドライブインタフェース114は、CPU112の制御の下、ディスクドライブ102を制御し、これにより、ディスクドライブ102がディスク101から読み出したデータを、バス111を介して、CPU112や、メモリ113、ビデオデコーダ116、オーディオデコーダ117などに供給する。
【0047】
入力インタフェース115は、図示せぬキー(ボタン)や、リモコン(リモートコントローラ)がユーザに操作されることによって供給される信号を受信し、バス111を介して、CPU112に供給する。なお、入力インタフェース115は、その他、通信インタフェースとしても機能する。
【0048】
ビデオデコーダ116は、ディスクドライブ102によってディスク101から読み出され、ドライブインタフェース114およびバス111を介して供給される、ビデオデータの符号化データ(符号化ビデオデータ)をデコードし、その結果得られるビデオデータを、バス111を介して、CPU112やビデオ出力インタフェース118に供給する。
【0049】
オーディオデコーダ117は、ビデオデコーダ116と同様に、ディスク101から読み出されて供給される、オーディオデータの符号化データ(符号化オーディオデータ)をデコードし、その結果得られるオーディオデータを、バス111を介して、CPU112やオーディオ出力インタフェース119に供給する。
【0050】
ビデオ出力インタフェース118は、バス111を介して供給されるビデオデータに必要な処理を施し、ビデオ出力端子120から出力する。オーディオ出力インタフェース119は、バス111を介して供給されるオーディオデータに必要な処理を施し、オーディオ出力端子121から出力する。
【0051】
ビデオ出力端子120は、図示せぬCRT(Cathode Ray Tube)や、液晶パネル等のビデオ出力装置に接続されており、ビデオ出力装置にビデオデータを供給する。オーディオ出力端子121は、図示せぬスピーカやアンプなどのオーディオ出力装置に接続されており、オーディオ出力装置にオーディオデータを供給する。なお、ディスク装置から、ビデオ出力装置とオーディオ出力装置へのビデオデータとオーディオデータの供給は、有線または無線のいずれによって行うことも可能である。
【0052】
次に、ソフトウェアモジュール群の構成について説明する。図3は、本実施の形態のソフトウェアモジュール群の構成例を示している。
CPU112が実行するソフトウェアモジュール群は、オペレーティングシステム(OS)201と、アプリケーションプログラムとしてのビデオコンテンツ再生プログラム210に大別される。
【0053】
オペレーティングシステム201は、ディスク装置の電源が投入されると最初に起動し(CPU112がオペレーティングシステム201を実行し)、初期設定等の必要な処理を行い、アプリケーションプログラムであるビデオコンテンツ再生プログラム210を呼び出す。
【0054】
ビデオコンテンツ再生プログラム210は、スクリプト制御モジュール211、プレイヤ制御モジュール212、コンテンツデータ供給モジュール213、デコード制御モジュール214、バッファ制御モジュール215、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218、グラフィックス処理モジュール219、ビデオ出力モジュール220、およびオーディオ出力モジュール221で構成されている。
【0055】
スクリプト制御モジュール211は、ディスク101に記録されたスクリプトファイルに記述されているスクリプトプログラム(スクリプト)を解釈して実行する。
プレイヤ制御モジュール212は、ディスク101に記録されているメタデータ(データベース情報)等を参照し、コンテンツの再生に関する制御を行う。また、プレイヤ制御モジュール212は、スクリプト制御モジュール211や入力インタフェース115からの指示に従い、再生対象のストリームを切り替える。
【0056】
コンテンツデータ供給モジュール213は、プレイヤ制御モジュール212の制御に従い、あるいは、バッファ制御モジュール215に蓄積されたデータの量に基づき、ディスク101からのコンテンツのデータやメタデータ等の読み出しを、オペレーティングシステム201に要求する。
【0057】
なお、オペレーティングシステム201が、コンテンツデータ供給モジュール213からの要求に応じてディスク101から読み出したメタデータ等は、必要なモジュールに供給される。また、オペレーティングシステム201が、コンテンツデータ供給モジュール213からの要求に応じてディスク101から読み出したコンテンツのデータは、バッファ制御モジュール215に供給される。
【0058】
デコード制御モジュール214は、プレイヤ制御モジュール212からの制御に従い、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218の動作を制御する。また、デコード制御モジュール214は、時刻を計時する計時部214Aを内蔵し、ビデオデコーダ制御モジュール216の制御によって出力されるビデオデータの出力と、そのビデオデータと同期して出力されるべきデータ(出力データ)の出力、すなわち、ここでは、オーディオデコーダ制御モジュール217の制御によって出力されるオーディオデータの出力との同期を管理する。
【0059】
バッファ制御モジュール215は、図2のメモリ113の記憶領域の一部であるバッファ215Aを内蔵しており、そのバッファ215Aに、コンテンツデータ供給モジュール213がオペレーティングシステム201に要求を行うことによってディスク101から読み出されたコンテンツのデータを一時記憶する。また、バッファ制御モジュール215は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218の要求に従って、バッファ215Aに記憶されたデータを、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218に供給する。バッファ制御モジュール215の詳細については、後述する。
【0060】
ビデオデコーダ制御モジュール216は、ビデオアクセスユニット単位で、バッファ制御モジュール215のバッファ215Aからビデオデータを符号化したデータ(ビデオ符号化データ)を読み出し、ビデオデコーダ116に供給し、デコード処理を実行させる。そして、デコードの結果得られるビデオデータを、グラフィックス処理モジュール219に供給する。ここで、ビデオアクセスユニットとは、例えば、ビデオデータの1ピクチャ(1フレームまたは1フィールド)分である。
【0061】
オーディオデコーダ制御モジュール217は、オーディオアクセスユニット単位で、バッファ制御モジュール215のバッファ215Aからオーディオデータを符号化したデータ(オーディオ符号化データ)を読み出し、オーディオデコーダ117に供給し、デコード処理を実行させる。そして、デコードの結果得られるオーディオデータを、オーディオ出力モジュール221に供給する。ここで、オーディオアクセスユニットとは、オーディオデータの所定のデータ量分(例えば、1ピクチャに同期して出力される分)である。
【0062】
字幕デコーダ制御モジュール218は、内部に、図示せぬ字幕デコードソフトウェアを備えており、バッファ215Aから読み出したデータをデコードし、そのデコードの結果得られる字幕データ(字幕の画像データ)を、グラフィックス処理モジュール219に供給する。ここで、字幕アクセスユニットとは、字幕データの所定のデータ量分(例えば、1ピクチャに同期して出力される分)である。本実施の形態では、字幕アクセスユニットのサイズは、例えば、その字幕アクセスユニットの先頭に記述されていることとする。
【0063】
グラフィックス処理モジュール219は、プレイヤ制御モジュール212の制御(指示)に従い、字幕デコーダ制御モジュール218からの字幕データの拡大や縮小を行い、ビデオデコーダ制御モジュール216からのビデオデータと加算(オーバーレイ)する。さらに、グラフィックス処理モジュール219は、字幕データとの加算後のビデオデータのサイズ(画枠)を、ビデオ出力端子120に接続されたビデオ出力装置の表示画面にあわせるための拡大または縮小等を行い、その結果得られるビデオデータを、ビデオ出力モジュール220に出力する。
【0064】
ビデオ出力モジュール220は、メモリ113の一部を排他的に占有してFIFO220A(バッファ)として使用し、グラフィックス処理モジュール219からのビデオデータを一時的に記憶し、また、そのFIFO220Aに記憶されたビデオデータを適宜読み出して、ビデオ出力端子120に出力する。
【0065】
オーディオ出力モジュール221は、メモリ113の一部を排他的に占有してFIFO221A(バッファ)として使用し、オーディオデコーダ制御モジュール217(オーディオデコーダ117)からのオーディオデータを一時的に記憶し、また、そのFIFO221Aに記憶されたオーディオデータを適宜読み出して、オーディオ出力端子121に出力する。
【0066】
以下、バッファ制御モジュール215について説明する。図4は、本実施の形態のバッファ制御モジュールの構成図である。
バッファ制御モジュール215は、バッファ215Aにディスク101から読み出されたデータを一時記憶させるとともに、このデータを読み出して、図3のビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218に供給する。
【0067】
このため、バッファ制御モジュール215は、内部モジュールとして、バッファ書き込み機能部310、ビデオ読み出し機能部320、オーディオ読み出し機能部330および字幕読み出し機能部340を有する。なお、図4では、便宜上、各機能部の参照する記憶部およびレジスタを各機能部を表すブロック内に示したが、これらの記憶部およびレジスタは各機能部が処理を実行するために必要な情報を一時格納する記憶領域で、各機能部内もしくはメモリ113上に確保される。
【0068】
バッファ215Aは、リングバッファであり、ディスク101から読み出されたデータを無限ループ状に記憶していく。
バッファ書き込み機能部310は、メモリ113の一部に用意されるデータ先頭ポインタ記憶部311とデータ書き込みポインタ記憶部312を用いて、双方の記憶部に記憶されたポインタの指すバッファ215Aのアドレスを参照して、バッファ制御モジュール215に入力されるデータのバッファ215Aへの書き込みを制御する。データ先頭ポインタ記憶部311は、バッファ215Aに記憶されたデータのうち、まだ、バッファ215Aから読み出されていない最も古いデータが記憶されている位置(アドレス)を指すデータ先頭ポインタを記憶し、データ書き込みポインタ記憶部312は、ディスク101から読み出された最新のデータが書き込まれるバッファ215Aの位置(アドレス)を指す書き込みポインタを記憶する。そして、ディスク101から読み出されたデータをデータ書き込みポインタの指すバッファ215Aの位置から順次書き込み、書き込み終了で書き込みポインタを更新する。
【0069】
ビデオ読み出し機能部320は、ビデオデコーダ制御モジュール216からの要求に応じて、ビデオ読み出しポインタ記憶部321に格納されたポインタの指すバッファ215Aのアドレスを起点としてビデオストリーム(ビデオデータに関するエレメンタリストリーム)を検索し、読み出したビデオストリームをビデオデコーダ制御モジュール216に供給する。オーディオ読み出し機能部330は、オーディオデコーダ制御モジュール217からの要求に応じて、オーディオ読み出しポインタ記憶部331に格納されたポインタの指すバッファ215Aのアドレスを起点としてオーディオストリーム(オーディオデータに関するエレメンタリストリーム)を検索し、読み出したオーディオストリームをオーディオデコーダ制御モジュール217に供給する。字幕読み出し機能部340は、字幕デコーダ制御モジュール218からの要求に応じて、字幕読み出しポインタ記憶部342に格納されたポインタの指すバッファ215Aのアドレスを起点として字幕ストリーム(字幕データに関するエレメンタリストリーム)を検索し、読み出した字幕ストリームを字幕デコーダ制御モジュール218に供給する。
【0070】
ここで、ディスク101には、例えば、MPEG2(Moving Picture Experts Group 2)の規格に準拠したプログラムストリーム(MPEG2-System Program Stream)が記録されており、バッファ215Aには、ディスク101から読み出されたプログラムストリームが記憶される。このプログラムストリームは、ビデオストリームや、オーディオストリーム、字幕ストリーム等の1以上のエレメンタリストリームが時分割多重されている。
【0071】
ビデオ読み出し機能部320は、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、ビデオストリームを分離して読み出す。同様に、オーディオ読み出し機能部330も、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、オーディオストリームを分離して読み出す。字幕読み出し機能部340も、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、字幕ストリームを分離して読み出す。
【0072】
ここで、ビデオ読み出し機能部320は、図2のメモリ113の一部にビデオ読み出しポインタ記憶部321およびstream_idレジスタ322を有している。
ビデオ読み出しポインタ記憶部321は、バッファ215Aの、ビデオデコーダ制御モジュール216がまだ読み出していない領域の先頭位置(アドレス)を指すビデオ読み出しポインタを記憶し、ビデオ読み出し機能部320は、バッファ215Aの、ビデオ読み出しポインタが指す位置を起点として、ビデオストリームを検索して読み出す。stream_idレジスタ322は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すビデオストリームを識別(特定)するために後述するstream_idを記憶する。
【0073】
オーディオ読み出し機能部330は、図2のメモリ113の一部にオーディオ読み出しポインタ記憶部331、stream_idレジスタ332、およびprivate_stream_idレジスタ333を有している。
【0074】
オーディオ読み出しポインタ記憶部331は、バッファ215Aの、オーディオデコーダ制御モジュール217がまだ読み出していない領域の先頭位置(アドレス)を指すオーディオ読み出しポインタを記憶し、オーディオ読み出し機能部330は、バッファ215Aの、オーディオ読み出しポインタが指す位置を起点として、オーディオストリームを検索して読み出す。stream_idレジスタ332とprivate_stream_idレジスタ333は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すオーディオストリームを識別するために後述するstream_idとprivate_stream_idを、それぞれ記憶する。
【0075】
字幕読み出し機能部340は、図2のメモリ113の一部に字幕読み出し機能フラグ記憶部341、字幕読み出しポインタ記憶部342、stream_idレジスタ343、およびprivate_stream_idレジスタ344を有している。
【0076】
字幕読み出し機能フラグ記憶部341は、字幕読み出し機能フラグを記憶する。字幕読み出し機能フラグ記憶部341に記憶された字幕読み出し機能フラグが、例えば0である場合、字幕読み出し機能部340は機能動作せず、字幕読み出し機能フラグ記憶部341に記憶された字幕読み出し機能フラグが、例えば1である場合、字幕読み出し機能部340は機能する。このように、多重化ストリームに含まれないエレメンタリストリームの読み出し処理を停止させることにより、CPUに余分な処理を実行させない。字幕読み出しポインタ記憶部342は、バッファ215Aの、字幕デコーダ制御モジュール218がまだ読み出していない領域の先頭位置(アドレス)を指す字幕読み出しポインタを記憶し、字幕読み出し機能部340は、バッファ215Aの、字幕読み出しポインタが指す位置を起点として、字幕ストリームを検索して読み出す。stream_idレジスタ343とprivate_stream_idレジスタ344は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出す字幕ストリームを識別するために後述するstream_idとprivate_stream_idを、それぞれ記憶する。
【0077】
ここで、ディスク101に記録されたデータのデータフォーマットについて説明する。
図5は、ディスクのディレクトリ構造を模式的に示している。
ディスク101のファイルシステムとしては、例えば、ISO(International Organization for Standardization)-9660や、UDF(Universal Disk Format:http://www.osta.org/specs/)などで規定されたファイルシステムが用いられており、ディスク101に記録されたデータのファイルはディレクトリ構造により階層的に管理されている。ここで、ファイルシステムは、上述したファイルシステムに限定されるものではない。
【0078】
図5では、ファイルシステムの基点を示すルート(root)ディレクトリに、"VIDEO"ディレクトリが置かれ、"VIDEO"ディレクトリには、"CLIP"ディレクトリと、"STREAM"ディレクトリとの2つのディレクトリが置かれている。
【0079】
"VIDEO"ディレクトリには、"CLIP"ディレクトリと"STREAM"ディレクトリとの2つのディレクトリの他に、"SCRIPT.DAT"ファイルと、"PLAYLIST.DAT"ファイルの2つのデータファイルが置かれている。
【0080】
"SCRIPT.DAT"ファイルは、スクリプトプログラムが記述されたスクリプトファイルである。すなわち、"SCRIPT.DAT"ファイルには、ディスク101の再生形態をインタラクティブなものとするために使用するスクリプトプログラムが記述されている。この"SCRIPT.DAT"ファイルに記述されたスクリプトプログラムは、図3のスクリプト制御モジュール211によって解釈、実行される。
【0081】
"PLAYLIST.DAT"ファイルには、ディスク101に記録されたビデオデータ等のコンテンツの再生手順が記述されたプレイリストが1以上格納されている。
"CLIP"ディレクトリには、1以上のクリップ情報ファイルが置かれ、"STREAM"ディレクトリには、1以上のクリップストリームファイルが置かれる。すなわち、図5では、"CLIP"ディレクトリには、3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"が置かれており、"STREAM"ディレクトリには、3つのクリップストリームファイル"00001.PS","00002.PS","00003.PS"が置かれている。
【0082】
クリップストリームファイルには、ビデオデータ、オーディオデータ、字幕データなどの1以上のデータ(ストリーム)を圧縮、符号化して得られる1以上のエレメンタリストリームを時分割多重化したプログラムストリームが格納されている。
【0083】
クリップ情報ファイルには、対応するクリップストリームファイルの性質等の、クリップストリームに関する(ファイル)メタデータが記述されている。
クリップストリームファイルとクリップ情報ファイルとは、1対1に対応しており、図5の場合では、"CLIP"ディレクトリに置かれた3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"は、"STREAM"ディレクトリに置かれたクリップストリームファイル"00001.PS","00002.PS","00003.PS"の性質等を示すメタデータが格納されている。メタデータの中には、クリップストリームに関するストリーム情報(以下、StreamInfo()とする)が多重化されているストリームの本数分存在する。StreamInfo()の先頭には、length(16ビット)が配置され、このlengthは、それを含むStreamInfo()のサイズを表す。lengthに続いては、stream_id(8ビット)とprivate_stream_id(8ビット)が配置されており、このstream_idとprivate_stream_idによって、StreamInfo()に関連付けるエレメンタリストリームが特定(識別)される。
【0084】
ここで、図6は、エレメンタリストリームを識別するstream_idおよびprivate_stream_idと、エレメンタリストリームとの関係を示している。
stream_idは、MPEG2-System規格において規定されているのと同一のものであり、その値は、MPEG2-System規格において、エレメンタリストリーム(データ)の属性(種類)ごとに、あらかじめ決められている。従って、MPEG2-System規格で定義されている属性のエレメンタリストリームは、stream_idだけで特定することができる。
【0085】
本実施の形態では、MPEG2-System規格において規定されていない属性のエレメンタリストリームも扱うことが可能になっており、private_stream_idは、MPEG2-System規格において規定されていない属性のエレメンタリストリームを識別するための情報である。図6では、MPEGで規定されている符号化(復号)方式でエンコードされたビデオのエレメンタリストリーム、ATRAC(Adaptive TRansform Acoustic Coding)方式でエンコードされたオーディオのエレメンタリストリーム(以下、適宜、ATRACオーディオストリームという)、LPCM(Linear Pulse Code Modulation)方式でエンコードされたオーディオのエレメンタリストリーム(以下、適宜、LPCMオーディオストリームという)、字幕のエレメンタリストリーム(以下、適宜、字幕ストリームという)の4つの属性のエレメンタリストリームについて、stream_idおよびprivate_stream_idとの関係を示している。
【0086】
MPEG2-System規格では、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームは、0xE0乃至0xEFの範囲の値を(0xは、その後に続く文字列が16進数であることを表す)、エレメンタリストリームを識別するstream_idとして用いて多重化することが規定されている。従って、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームについては、0xE0乃至0xEFの範囲の値のstream_idで識別することができる16本のビデオのエレメンタリストリームを、プログラムストリームに多重化することができる。
【0087】
なお、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を採用し、さらに、図6に示すように、private_stream_idを用いて識別(特定)を行うこととしている。
【0088】
次に、上記の説明のプログラムストリームの再生処理を行うディスク装置の動作について、バッファ制御モジュール215の処理を中心に説明する。以下の説明では、対象のクリップストリームファイル"00001.PS"に、1本のビデオストリーム、1本のATRACオーディオストリームおよび2本の字幕ストリームが多重化されているとする。
【0089】
ディスク101がディスクドライブ102に挿入され、オペレーティングシステム201を経由して通知されると、ビデオコンテンツ再生プログラム210による再生処理が開始される。
【0090】
再生処理では、まず、再生前処理が行われ、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"に格納されたプログラムストリームの、バッファ制御モジュール215への供給が開始される前に、バッファ制御モジュール215を初期化する。
【0091】
「再生前処理」
具体的には、バッファ制御モジュール215では、データ先頭ポインタ記憶部311に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部312に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部321に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部331に記憶されるオーディオ読み出しポインタ、字幕読み出しポインタ記憶部342に記憶される字幕読み出しポインタに、同じ値が代入される。これにより、データ先頭ポインタ記憶部311に記憶されたデータ先頭ポインタと、データ書き込みポインタ記憶部312に記憶されたデータ書き込みポインタとは、バッファ制御モジュール215のバッファ215Aの同一の位置を指す。これは、バッファ215Aに、有効なデータが蓄積されていない状態を表す。
【0092】
さらに、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームを識別(特定)するため、識別情報として対象のクリップストリームファイル“00001.PS”に対応するクリップ情報ファイル”0001.CLP”から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に供給する。
【0093】
バッファ制御モジュール215では、ビデオ読み出し機能部320が、プレイヤ制御モジュール212からの、ビデオストリームについての0xE0となっているstream_idを、stream_idレジスタ322に記憶させる。また、オーディオ読み出し機能部330が、プレイヤ制御モジュール212からの、0xBDとなっているstream_idと、0x00となっているprivate_stream_idを、stream_idレジスタ332とprivate_stream_idレジスタ333に、それぞれ記憶させる。さらに、字幕読み出し機能部340が、プレイヤ制御モジュール212からの、0xBDとなっているstream_idと、0x80となっているprivate_stream_idを、stream_idレジスタ343とprivate_stream_idレジスタ344に、それぞれ記憶させる。
【0094】
プレイヤ制御モジュール212は、バッファ制御モジュール215の初期化として、さらに、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに応じた値の字幕読み出し機能フラグを、字幕読み出し機能フラグ記憶部341にセットする。すなわち、いまの場合、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"には、字幕ストリームが含まれるため、字幕読み出し機能部340を機能させるために、値が1の字幕読み出し機能フラグが、字幕読み出し機能フラグ記憶部341にセットされる。なお、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに字幕ストリームが含まれていない場合、字幕読み出し機能フラグ記憶部341には、値が0の字幕読み出し機能フラグがセットされる。この場合、字幕読み出し機能部340は機能しない(特に処理を行わない)。
【0095】
「データ読み込み開始」
その後、プレイヤ制御モジュール212は、コンテンツデータ供給モジュール213を制御し、これにより、コンテンツデータ供給モジュール213は、オペレーティングシステム201の機能を使用して、再生対象のエレメンタリストリームが多重化されたプログラムストリームが格納されたクリップストリームファイルを読み出す。また、コンテンツデータ供給モジュール213は、ディスク101から読み出したデータを、バッファ制御モジュール215に供給するように指定する。これにより、ディスク101からの、クリップストリームファイル"00001.PS"に格納されたプログラムストリームの読み出しが開始され、そのプログラムストリームは、バッファ制御モジュール215に供給される。
【0096】
バッファ制御モジュール215は、ディスク101から読み出されて供給されたプログラムストリームを、バッファ215Aのデータ書き込みポインタ記憶部312のデータ書き込みポインタが指す位置に書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
【0097】
以下、特に断らない限り、コンテンツデータ供給モジュール213は、バッファ制御モジュール215のバッファ215Aに空きがあれば、ディスク101からデータを読み出し、バッファ制御モジュール215のバッファ215Aに供給して記憶させることとする。従って、バッファ215Aには、常時、十分なデータが蓄積されているとする。
【0098】
「デコーダ制御開始」
以上のようにして、ディスク101からのデータの読み出しが開始され、そのデータがバッファ制御モジュール215のバッファ215Aに蓄積され始めると、デコード制御モジュール214は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218を制御し、デコード動作の前段階として、バッファ215Aからのデータの読み出しを開始させる。
【0099】
「バッファ制御モジュールの処理」
次に、図7および図8を参照して、バッファ制御モジュール215の処理、すなわち、バッファ215Aへのデータの書き込みと、バッファ215Aからのデータの読み出しについて説明する。図7および図8は、バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図である。図7は、更新前のオーディオ読み出しポインタの指す位置を示し、図8は、更新後のオーディオ読み出しポインタの指す位置を示している。
【0100】
バッファ制御モジュール215は、図4で説明したように、バッファ215Aに対するデータの読み書きを行うための5つのポインタを有している。
すなわち、図7および図8に示すように、バッファ制御モジュール215は、データ先頭ポインタ記憶部311に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部312に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部321に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部331に記憶されるオーディオ読み出しポインタ、および字幕読み出しポインタ記憶部342に記憶される字幕読み出しポインタを有している。
【0101】
なお、図7および図8では、図3におけるビデオ読み出し機能部320のstream_idレジスタ322、オーディオ読み出し機能部330のstream_idレジスタ332およびprivate_stream_idレジスタ333、並びに字幕読み出し機能部340の字幕読み出し機能フラグ記憶部341、stream_idレジスタ343、およびprivate_stream_idレジスタ344の図示は、省略してある。
【0102】
データ先頭ポインタ記憶部311に記憶されたデータ先頭ポインタは、バッファ215Aに残る最も古いデータ(読み出す必要があるデータであって、まだ読み出されていないデータのうちの最も古いデータ)の位置を表す。データ書き込みポインタ記憶部312に記憶されたデータ書き込みポインタは、バッファ215Aへのデータの書き込みの位置を示し、この位置は、バッファ215Aで最も新しいデータが書き込まれる位置である。
【0103】
ビデオ読み出しポインタ記憶部321に記憶されたビデオ読み出しポインタは、バッファ215Aから読み出すビデオストリームの位置を表す。また、オーディオ読み出しポインタ記憶部331に記憶されたオーディオ読み出しポインタは、バッファ215Aから読み出すオーディオストリームの位置を表し、字幕読み出しポインタ記憶部342に記憶された字幕読み出しポインタは、バッファ215Aから読み出す字幕ストリームの位置を表す。
【0104】
さらに、本実施の形態では、データ先頭ポインタは、図8に示すように、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように、常時更新されるものとする。ここで、図8では、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうち、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、そのオーディオ読み出しポインタと一致している。
【0105】
以上のようなデータ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタを有するバッファ制御モジュール215では、データ書き込みポインタは、ディスク101から新たなデータが読み出され、バッファ215Aに書き込まれると、その書き込まれた新たなデータの直後の位置を指すように、右回りに更新される。
【0106】
さらに、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタは、バッファ215Aから、ビデオストリーム、オーディオストリーム、または字幕ストリームが読み出されると、その読み出し量に応じた分だけ、それぞれ、右回りに更新される。ここで読み出し量に応じた分とは、実際に読み出したビデオ、オーディオ、字幕のデータに対応する部分と、読み出したデータの間に含まれており、読み出しの際には読み飛ばしを行った、他のストリームのデータの部分をあわせたものとなる。
【0107】
また、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されると、そのビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
【0108】
ここで、バッファ制御モジュール215は、バッファ215Aへのデータの書き込みについては、データ書き込みポインタがデータ先頭ポインタを追い越さないように、バッファ215Aへのデータの書き込みを制御する。
【0109】
すなわち、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しない限り、バッファ制御モジュール215では、ディスク101から読み出されたデータが、データ書き込みポインタが指すバッファ215Aの位置に書き込まれ、データ書き込みポインタが更新されていく。一方、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しそうになると、バッファ制御モジュール215では、コンテンツデータ供給モジュール213に対して、ディスク101からのデータの読み出しの停止(中断)が要求され、さらに、バッファ215Aへのデータの書き込みが停止される。これにより、バッファ215Aのオーバーフローを防止することができる。
【0110】
以上のように、ディスク101から読み出されたデータの、バッファ215Aへの書き込みは、データ先頭ポインタとデータ書き込みポインタとの2つのポインタの位置関係だけで制御される。
【0111】
一方、バッファ制御モジュール215は、バッファ215Aからのデータの読み出しについては、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタ、ひいては、データ先頭ポインタが、データ書き込みポインタを追い越さないように、バッファ215Aからのデータの読み出しを制御する。
【0112】
すなわち、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しない限り、バッファ制御モジュール215では、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218からの要求に応じて、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指すバッファ215Aの位置からデータの読み出し処理が開始され、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されるとともに、データ先頭ポインタが更新される。一方、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しそうになると、バッファ制御モジュール215では、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218からの要求が、例えば凍結され、十分なデータが用意されるまで待たされる。これにより、バッファ215Aのアンダーフローを防止することができる。
【0113】
以上から、バッファ215Aには、データ先頭ポインタが指す位置から、右回りに、データ書き込みポインタが指す位置までの範囲(図7および図8の斜線部)に、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218に供給すべきデータが記憶されており、さらに、その範囲内に、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタは存在する。
【0114】
なお、上述の場合には、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指している位置のうちの、最も古いデータの位置を指すように更新することとしたが、その他、データ先頭ポインタの更新は、例えば、その最も古いデータの位置から、所定の時間(例えば、1秒)分だけ過去のデータの位置を指すように行うことが可能である。
【0115】
すなわち、一般には、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、ビデオ読み出しポインタやオーディオ読み出しポインタが、最も古いデータの位置を指すことが多いと予想される。
【0116】
従って、データ先頭ポインタを、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から、例えば、1秒分だけ過去のデータの位置を指すように更新した場合、図7に示すように、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から過去1秒分のデータを、バッファ215Aに残しておくことができる。ここで、図7では、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、その位置から1秒分だけ過去のデータの位置を指している。
【0117】
以上のように、1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新することにより、ディスク装置の応答性を向上させることができる。
すなわち、図8に示したように、オーディオ読み出しポインタが指している最も古いデータの位置を指すように、データ先頭ポインタを更新する場合には、例えば、リバース方向への特殊再生が指示されたときに、バッファ215Aからの読み出しが終了したデータを、ディスク101から再度読み出す必要があるため、特殊再生が指示されてから、その特殊再生が可能となるまでに、ある程度の時間がかかる。
【0118】
これに対して、図7に示したように、オーディオ読み出しポインタが指している最も古いデータの位置から1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合には、リバース方向への特殊再生が指示されたときに、その特殊再生を開始するのに必要なデータが、バッファ215Aに記憶されている1秒分だけ過去のデータであれば、上述したようなディスク101からのデータの再読み出しを行わずに、即座に、特殊再生を開始することが可能となる。
【0119】
なお、オーディオ読み出しポインタが指している最も古いデータの位置から1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合であっても、特殊再生を開始するのに必要なデータが、バッファ215Aに記憶されていないことがあり得る。この場合には、特殊再生を開始するのに必要なデータが、ディスク101から再度読み出される。
【0120】
次に、バッファ215Aからのビデオストリーム、オーディオストリーム、字幕ストリームそれぞれの読み出しの詳細について説明する。
クリップストリームファイルの再生が開始されるときに、バッファ制御モジュール215においては、データ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、字幕読み出しポインタが、すべて、バッファ215A上の同じ位置を指すように初期化される。
【0121】
そして、ディスク101からクリップストリームファイルに格納されたプログラムストリーム(MPEG2-System Program Stream)が読み出され、バッファ制御モジュール215に供給されると、バッファ制御モジュール215では、そのプログラムストリームが、バッファ215Aのデータ書き込みポインタが指す位置に記憶されるとともに、データ書き込みポインタが、右回りに更新されていく。
【0122】
バッファ制御モジュール215では、ビデオ読み出し機能部320が、stream_idレジスタ322に記録された情報を用いて、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、ビデオデコーダ制御モジュール216からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、ビデオストリーム(ビデオアクセスユニット)を抽出(分離)して読み出し、ビデオデコーダ制御モジュール216に供給する。
【0123】
同様に、オーディオ読み出し機能部330も、stream_idレジスタ332およびprivate_stream_idレジスタ333に記録された情報を用いて、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、オーディオデコーダ制御モジュール217からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、オーディオストリーム(オーディオアクセスユニット)を抽出して読み出し、オーディオデコーダ制御モジュール217に供給する。字幕読み出し機能部340も、stream_idレジスタ343およびprivate_stream_idレジスタ344に記録された情報を用いて、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、字幕デコーダ制御モジュール218からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、字幕ストリーム(字幕アクセスユニット)を抽出して読み出し、字幕デコーダ制御モジュール218に供給する。
【0124】
このように、ビデオ読み出し機能部320、オーディオ読み出し機能部330および字幕読み出し機能部340によって、デマルチプレクスを行いながら各ESをデコーダへ供給することができる。これにより、データの移動を削減することができ、CPUの処理能力を向上させることができる。
【0125】
また、従来例では、各エレメンタリストリーム蓄積部が担っていたバッファ機能が、バッファ制御モジュール215に移動するので、バッファ制御モジュール215のバッファ215Aにはその分の容量追加が必要となる。例えば、MPEG2−System各エレメンタリストリーム蓄積部でのディレイは1秒以内などと規定されているため、1秒分の多重化ストリームが蓄積されるだけの容量が必要となる。すなわち、MPEG2−Systemのプログラムストリームにおいては、STDでのディレイの値(STD_Delay)に、多重化レート(program_mux_rate)を乗じた積の分の容量を追加で持てばよいことになる。
【図面の簡単な説明】
【0126】
【図1】実施の形態に適用される発明の概念図である。
【図2】本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。
【図3】本実施の形態のソフトウェアモジュール群の構成例を示している。
【図4】本実施の形態のバッファ制御モジュールの構成図である。
【図5】ディスクのディレクトリ構造を模式的に示している。
【図6】エレメンタリストリームを識別するstream_idおよびprivate_stream_idと、エレメンタリストリームとの関係を示している。
【図7】バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図(ポインタ更新前)である。
【図8】バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図(ポインタ更新後)である。
【図9】従来の多重化分離装置の一例を示したブロック図である。
【図10】従来の多重化ストリーム蓄積部の構成図である。
【図11】従来のビデオストリーム蓄積部の構成図である。
【符号の説明】
【0127】
1……リングバッファ、2……バッファ制御手段、3……ES1読み出し制御手段、4……ES2読み出し制御手段、11……データ先頭ポインタ蓄積部、12……データ書き込みポインタ蓄積部、13……ES1読み出しポインタ蓄積部、14……ES2読み出しポインタ蓄積部
【技術分野】
【0001】
本発明は多重化分離装置および多重化分離方法に関し、特にエレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置および多重化分離方法に関する。
【背景技術】
【0002】
従来、エレメンタリストリームが時分割多重化された多重化ストリームは、多重化分離装置によって多重分離された後、デコーダに送られて復号される。
図9は、従来の多重化分離装置の一例を示したブロック図である。
【0003】
多重化分離装置500は、例えばディスク装置に組み込まれ、ディスクから読み出された多重化ストリームを一時記憶し、ビデオ、オーディオおよび字幕の各エレメンタリストリームに分解してデコーダ部560に供給する。
【0004】
多重化ストリーム蓄積部510は、ディスクから読み出されたデータなどの多重化ストリームを一時蓄積する。構文解析機能部520は、多重化ストリーム蓄積部510に蓄積された多重化ストリームからビデオストリーム、オーディオストリーム、字幕ストリームを分離し、ビデオストリーム蓄積部530、オーディオストリーム蓄積部540、字幕ストリーム蓄積部550に供給する。各エレメンタリストリーム蓄積部には、供給されたエレメンタリストリームが蓄積される。デコーダ部560には、ビデオデコーダ制御モジュール、オーディオデコーダ制御モジュールおよび字幕デコーダ制御モジュールが具備され、対応するビデオストリーム蓄積部530、オーディオストリーム蓄積部540、字幕ストリーム蓄積部550にデータが蓄積され始めると、蓄積された各エレメンタリストリームを要求し、供給されたデータのデコード処理を行う。すなわち、従来の多重化分離装置500では、〔1〕外部から入力した多重化ストリームの多重化ストリーム蓄積部510へのコピー(データ移動)、〔2〕構文解析機能部520を介して多重化ストリーム蓄積部510から各エレメンタリストリーム蓄積部(ビデオストリーム蓄積部530、オーディオストリーム蓄積部540および字幕ストリーム蓄積部550)へのデータ移動、〔3〕各エレメンタリストリーム蓄積部から対応する各デコーダへのデータ供給(データ移動)の、3回のデータ移動が発生する。
【0005】
ここで、各ストリーム蓄積部の構成について説明する。
図10は、従来の多重化ストリーム蓄積部の構成図である。多重化ストリーム蓄積部510は、メモリ上に構築され、多重化ストリームを一時記憶させるバッファ510a、データ先頭ポインタを一時記憶させるデータ先頭ポインタ蓄積部511およびデータ書き込みポインタを一時記憶するデータ書き込みポインタ蓄積部512を具備する。そして、図示しないバッファ制御手段によって、データ先頭ポインタ蓄積部511およびデータ書き込みポインタ蓄積部512に格納されるポインタに基づき、多重化ストリームのバッファ501aへの書き込みが制御される。
【0006】
バッファ510aは、例えば、リングバッファであり、入力されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形で、最新データを、いわば無限ループ状に記憶していく。データ先頭ポインタ蓄積部511は、バッファ510aに記憶されたデータのうち、まだ読み出されていない最も古いデータが記憶されている位置を示すデータ先頭ポインタを記憶する。データ書き込みポインタ蓄積部512は、ディスクから読み出された最新のデータが書き込まれるバッファ510aの位置を指すデータ書き込みポインタを記憶する。従って、データ先頭ポインタが指す位置から時計回りに、データ書き込みポインタが指す位置までの領域(図中斜線部)に記憶されているデータが有効なデータである。
【0007】
図11は、従来のビデオストリーム蓄積部の構成図である。ビデオストリーム蓄積部530は、メモリ上に構築され、ビデオストリームを一時記憶させるビデオバッファ530a、ビデオストリーム先頭ポインタを一時記憶させるビデオストリーム先頭ポインタ蓄積部531、ビデオストリーム書き込みポインタを一時記憶させるビデオストリーム書き込みポインタ蓄積部532および付属データを記憶するための付属情報FIFO(First In First Out)部533を具備する。そして、図示しないビデオバッファ制御手段によって、ビデオストリーム先頭ポインタ蓄積部531およびビデオストリーム書き込みポインタ蓄積部532に格納されるポインタに基づき、構文解析機能部520より供給されるビデオストリームのビデオバッファ530aへの書き込みが制御される。
【0008】
多重化ストリーム蓄積部510のバッファ510aと同様、ビデオバッファ530aは、リングバッファであり、構文解析機能部520から供給されるビデオストリームを無限ループ状に記憶していく。ビデオストリーム先頭ポインタ蓄積部531は、ビデオストリーム先頭ポインタを記憶し、ビデオストリーム書き込みポインタ蓄積部532は、ビデオストリーム書き込みポインタを記憶する。いずれのポインタが指す位置も時計回りに更新され、ビデオストリーム先頭ポインタが指す位置から時計回りに、ビデオストリーム書き込みポインタが指す位置までの領域(図中斜線部)に記憶されているデータが有効なデータである。また、付属情報FIFO部533には、構文解析機能部520で分離されたタイムスタンプなどの付属情報が記憶される。
【0009】
オーディオストリーム蓄積部540および字幕ストリーム蓄積部550は、ビデオストリーム蓄積部530と同様の構成であり、リングバッファ、先頭ポインタと書き込みポインタの蓄積部および付属情報FIFO部を備える。
【0010】
以上の構成の多重化分離装置500におけるストリーム蓄積部間のデータの移動について説明する。なお、バッファ制御手段やビデオバッファ制御手段など、多重化分離装置500の各バッファへの書き込み制御を行う制御手段は、図示しないCPU(Central Processing Unit)が、各制御手段の処理内容を記述したプログラムを実行することによって実現される。
【0011】
まず、第1の多重化ストリーム蓄積部へのデータ移動について説明する。バッファ制御手段は、供給された多重化ストリームを多重化ストリーム蓄積部510のデータ書き込みポインタ蓄積部512に登録されたデータ書き込みポインタが指すバッファ510aの位置から書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
【0012】
次に、第2の多重化ストリーム蓄積部から各エレメンタリストリーム蓄積部へのデータ移動について、ビデオストリームの場合で説明する。構文解析機能部520は、バッファ510aから多重化ストリームを読み出し、再生対象のエレメンタリストリームを識別(特定)するための識別情報として取得しているIDを使用して多重分離を行う。データ先頭ポインタ蓄積部511に登録されたデータ先頭ポインタが指すバッファ510aの位置から読み出しを開始し、読み出したデータのサイズだけデータ先頭ポインタをインクリメントする。また、分離されたビデオストリームと、関連する付属情報はビデオストリーム蓄積部530に渡され、ビデオストリームはビデオバッファ530aに一時的に蓄積される。この際、ビデオストリーム書き込みポインタ蓄積部532に登録されたビデオストリーム書き込みポインタが指すビデオバッファ530aの位置から書き込み、書き込んだデータのサイズだけビデオストリーム書き込みポインタをインクリメントする。また、付属情報は、付属情報FIFO部533に一時的に蓄積される。同様に、分離されたオーディオストリームおよび付属情報は、オーディオストリーム蓄積部540に渡され、それぞれオーディオバッファと付属情報FIFO部に一時的に蓄積される。また、分離された字幕ストリームおよび付属情報は、字幕ストリーム蓄積部550に渡され、それぞれ字幕バッファと付属情報FIFO部に一時的に蓄積される。
【0013】
次に、第3の各エレメンタリストリーム蓄積部から各デコーダへのデータ移動について、ビデオストリームの場合で説明する。ビデオストリーム蓄積部530のビデオバッファ530aにデータが蓄積され始めると、デコーダ部560のビデオデコーダ制御手段がビデオバッファ530aからのデータの読み出しを開始し、1つのビデオアクセスユニット、そのビデオアクセスユニットに付加されているタイムスタンプ、付加情報などを取得し、デコード処理を行う。なお、オーディオストリームおよび字幕ストリームの場合も同様の処理が行われる。
【0014】
また、多重化ストリームから分離した各ストリームを専用のメモリに転送して記憶させずに、直接デコーダのバッファに転送するストリーム再生方法が提案されている(例えば、特許文献1参照)。
【特許文献1】特開2003−61045号公報
【発明の開示】
【発明が解決しようとする課題】
【0015】
しかし、従来の多重化分離装置および多重化分離方法では、データ移動によりCPUの処理能力が低下するという問題点があった。
上記の説明のように、従来の多重化分離装置および多重化分離方法では、多重化ストリーム蓄積部510への書き込み、多重化ストリーム蓄積部510から各エレメンタリストリーム蓄積部へのデータ移動、各エレメンタリストリーム蓄積部からデコーダ部560へのデータ移動の3回のデータ移動が発生する。多重化分離装置500の各処理手段はソフトウェアで構成されるが、CPUとメモリなどで構成されたコンピュータシステムではデータ移動時にCPUの処理能力が大幅に低下し、全体の処理能力を低下させてしまう。
【0016】
また、3回のデータ転送を行うために、それぞれのデータ転送用の読み出しポインタ及び書き込みポインタを用意しなければならず、多数のポインタを記憶するためのバッファが必要となるという問題点もある。さらに、ポインタの数が多いことによってバッファの制御が複雑になり、CPUに負荷がかかる。
【0017】
本発明はこのような点に鑑みてなされたものであり、CPUにかかる負荷を軽減することによって、処理能力の向上を図る多重化分離装置および多重化分離方法を提供することを目的とする。
【課題を解決するための手段】
【0018】
本発明では上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、リングバッファ、データ先頭ポインタ蓄積手段、データ書き込みポインタ蓄積手段、バッファ制御手段、読み出しポインタ蓄積手段および読み出し制御手段を具備することを特徴とする多重化分離装置が提供される。
【0019】
リングバッファは、多重化ストリームのデータを順次記憶し、記憶容量分を超えると最も古い多重化ストリームのデータに上書きして無限ループ状に記憶する。データ先頭ポインタ蓄積手段は、リングバッファの最も古いデータが記憶された位置を指すデータ先頭ポインタを格納し、データ書き込みポインタは、最新の多重化ストリームのデータを書き込む位置を指すデータ書き込みポインタを格納する。バッファ制御手段は、多重化ストリームが供給されると、データ書き込みポインタの指すリングバッファの位置から入力された多重化ストリームを書き込むとともに、書き込みサイズに応じてデータ書き込みポインタを更新してデータ書き込みポインタ蓄積手段に格納する。読み出しポインタ蓄積手段は、読み出しを行うエレメンタリストリームごとに、まだリングバッファより読み出していない対象のエレメンタリストリームのデータについての読み出し処理の起点を指す読み出しポインタを格納する。読み出し制御手段は、読み出し要求されたエレメンタリストリームの読み出しポインタを読み出しポインタ蓄積手段から取り出し、読み出しポインタの指すリングバッファの位置から対象のエレメンタリストリームを検索して読み出し、読み出しサイズに応じて対象のエレメンタリストリームの読み出しポインタとデータ先頭ポインタを更新する。
【0020】
このような多重化分離装置によれば、バッファ制御手段は、多重化ストリームが供給されると、データ書き込みポインタ蓄積手段からデータ書き込みポインタを取り出し、データ書き込みポインタの指す位置から順次多重化ストリームのデータを格納して、データ書き込みポインタを更新する。このとき、データ先頭ポインタを参照し、データ先頭ポインタの指す位置を超えて書き込みを行わないようにする。読み出し制御手段は、所定のエレメンタリストリームの読み出し要求を受けると、そのエレメンタリストリームに関する読み出しポインタを読み出しポインタ蓄積手段から取り出し、その読み出しポインタの指す位置を起点として対象のエレメンタリストリームを検索し、検索されたエレメンタリストリームのデータを読み出して要求先へ転送する。そして、読み出しサイズに応じて読み出しポインタとデータ先頭ポインタを更新する。
【0021】
また、上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離方法において、バッファ制御手段が、前記多重化ストリームが供給されると、前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファの最新のデータ書き込み位置を指すデータ書き込みポインタに基づき、前記データ書き込みポインタの指す前記リングバッファの位置に供給された前記多重化ストリームを順次書き込むとともに、書き込みサイズに応じて前記データ書き込みポインタを更新し、読み出し制御手段が、所定の前記エレメンタリストリームの読み出し要求を受けると、前記エレメンタリストリームごとの読み出し処理の起点となる読み出しポインタが格納される読み出しポインタ蓄積手段から要求された前記エレメンタリストリームに関する前記読み出しポインタを取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを更新する、ことを特徴とする多重化分離方法、が提供される。
【0022】
このような多重化分離方法では、多重化ストリームが供給されると、リングバッファの最新のデータ書き込み位置を示すデータ書き込みポインタが指す位置から多重化ストリームが順次書き込まれる。書き込みは、データ先頭ポインタの指す位置を超えないように行われる。一方、多重化ストリームを構成する各エレメンタリストリームの読み出し要求があると、エレメンタリストリームごとに格納された読み出し処理の起点となるリングバッファの位置を指す読み出しポインタが取り出され、読み出しポインタの指す位置から要求された対象のエレメンタリストリームが検索される。対象のエレメンタリストリームのデータが検索されると、そのデータが読み出されて要求先へ転送される。そして、転送後に読み出しサイズに応じて読み出しポインタとデータ先頭ポインタが更新される。
【0023】
また、上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、少なくとも第1及び第2のエレメンタリストリームを記憶するリングバッファと、前記リングバッファから、前記第1のエレメンタリストリームを読み出し制御する第1の読み出し制御手段と、前記リングバッファから、前記第2のエレメンタリストリームを読み出し制御する第2の読み出し制御手段と、を具備し、前記多重化ストリームのうちの一のエレメンタリストリームの読み出し要求に応じて、該エレメンタリストリームに対応する前記第1の読み出し制御手段または前記第2の読み出し制御手段により、前記第1のエレメンタリストリームまたは前記第2のエレメンタリストリームを読み出す、ことを特徴とする多重化分離装置、が提供される。
【0024】
このような構成の多重化分離装置では、リングバッファには、少なくとも第1及び第2のエレメンタリストリームを含む多重化ストリームが記憶される。多重化ストリームの一のエレメンタリストリームの読み出し要求を受けると、読み出し要求のあったエレメンタリストリームに対応する読み出し制御手段が起動し、該エレメンタリストリームの読み出しを行う。たとえば、第1の読み出し制御手段は、第1のエレメンタリストリームの読み出し要求を受けると、リングバッファに記憶される第1のエレメンタリストリームを検索して読み出す。第2の読み出し制御手段は、第2のエレメンタリストリームの読み出し要求を受けると、リングバッファに記憶される第2のエレメンタリストリームを検索して読み出す。
【発明の効果】
【0025】
本発明の多重化分離装置および多重化分離方法では、時分割多重が施された多重化ストリームを無限ループ状にデータを記憶するリングバッファに順次記憶しておく。そして、多重化ストリームを構成するエレメンタリストリームのデータ要求があった場合、エレメンタリストリームごとの読み出しポインタを用いて、要求された対象のエレメンタリストリームのデータが格納されるリングバッファの位置を検索し、対象のエレメンタリストリームのデータを抽出して要求先に供給する。このように、多重化ストリームの分離処理を行いながら要求先にデータ転送することができるため、データの転送回数を削減することが可能となり、CPUの処理負荷を軽減させることができるという利点がある。
【0026】
また、データ転送回数を削減することにより、データ転送に用いるポインタが少なくなり、バッファの容量を削減するとともに、バッファ制御が容易になる。
【発明を実施するための最良の形態】
【0027】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。
【0028】
本発明に係るデータ多重化分離装置は、エレメンタリストリーム1(以下、エレメンタリストリームをESと表記する)と、ES2が時分割多重された多重化ストリームを無限ループ状に記憶していくリングバッファ1、多重化ストリームのリングバッファ1への書き込みを制御するバッファ制御手段2、リングバッファ1から各ESを読み出す読み出し制御手段を構成するES1読み出し制御手段3とES2読み出し制御手段4、および各種管理情報蓄積部を具備する。管理情報蓄積部は、バッファ制御手段2がリングバッファ1へのデータ書き込み時に参照するデータ先頭ポインタ蓄積部11とデータ書き込みポインタ蓄積部12、および各ESの読み出し制御手段が参照するES1読み出しポインタ蓄積部13とES2読み出しポインタ蓄積部14から成る。
【0029】
リングバッファ1は、バッファ制御手段2によって書き込まれる多重化ストリームを無限ループ状に記憶する。すなわち、入力されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形でデータを記憶していく。リングバッファ1は、データ先頭ポインタ蓄積部11に格納されたデータ先頭ポインタとデータ書き込みポインタ蓄積部12に格納されたデータ書き込みポインタによって管理されており、図1の場合では、データ書き込みポインタが指す位置は、リングバッファ1にデータが記憶されるごとに、バッファ制御手段2によって時計回りに更新される。また、データ先頭ポインタが指す位置は、リングバッファ1からの各ESデータの読み出しに応じてES1読み出し制御手段3およびES2読み出し制御手段4によって時計回りに更新されていく。
【0030】
バッファ制御手段2は、リングバッファ1への多重化ストリーム書き込み制御を行う。多重化ストリームが供給されると、バッファ制御手段2では、データ先頭ポインタ蓄積部11とデータ書き込みポインタ蓄積部12とからそれぞれデータ先頭ポインタとデータ書き込みポインタを取り出し、データ書き込みポインタの指すリングバッファ1の位置から順次データの書き込みを行う。そして、データ書き込みポインタを時計回りにデータサイズ分インクリメントして更新し、データ書き込みポインタ蓄積部12に格納する。なお、データの書き込みがデータ先頭ポインタの指す位置を超えてしまう場合には、データ書き込みを遅延する。
【0031】
ES1読み出し制御手段3およびES2読み出し制御手段4は、それぞれのESをリングバッファ1から抽出して読み出す多重化分離機能を備える。
ES1読み出し制御手段3は、ES1の読み出し要求を受けると、ES1読み出しポインタ蓄積部13からES1読み出しポインタを取り出し、ES1読み出しポインタの指すリングバッファ1の位置を起点としてES1を検索し、検索されたES1のデータの読み出しを行い、読み出したデータを要求先に転送する。ES1読み出しポインタは、読み出されたデータが記憶されたリングバッファ1の次の位置を指すように更新される。また、必要に応じて、データ先頭ポインタも更新する。例えば、ES1読み出しポインタの指す位置が他のESの読み出しポインタより古いデータが記憶されている位置を指している場合、これより古いデータの読み出しを終了しているので、データ先頭ポインタをES1読み出しポインタと同じ位置に更新する。
【0032】
ES2読み出し制御手段4は、ES2の読み出し要求を受けると、ES2読み出しポインタ蓄積部14からES2読み出しポインタを取り出し、ES2読み出しポインタの指すリングバッファ1の位置を起点としてES2を検索し、検索されたES2のデータの読み出しを行い、読み出したデータを要求先に転送する。ES2読み出しポインタは、読み出されたデータが記憶された次の位置を指すように更新される。また、ES1読み出し制御手段3と同様に、必要に応じてデータ先頭ポインタも更新する。
【0033】
データ先頭ポインタ蓄積部11は、データ先頭ポインタを格納し、データ書き込みポインタ蓄積部12はデータ書き込みポインタを格納する。ES1読み出しポインタ蓄積部13は、ES1読み出しポインタを格納し、ES2読み出しポインタ蓄積部14は、ES2読み出しポインタを格納する。
【0034】
このような構成の多重化分離装置の動作および多重化分離方法について説明する。本発明に係る多重化分離装置では、入力された時分割多重化ストリームをリングバッファ1に書き込むとともに、読み出し要求に応じて、要求されたESをリングバッファ1から抽出(分離)して出力する制御を行っている。
【0035】
詳しくは、多重化分離装置に多重化ストリームが供給されると、バッファ制御手段2は、データ先頭ポインタ蓄積部11とデータ書き込みポインタ蓄積部12からそれぞれデータ先頭ポインタとデータ書き込みポインタを取り出し、データ書き込みポインタが指すリングバッファ1の位置から入力された多重化ストリームのデータを書き込む。図1の場合では、時計回りにデータが順次書き込まれていく。このとき、データ書き込みポインタがデータ先頭ポインタを追い越さないように、データの書き込みを制御する。書き込み終了後、データ書き込みポインタは、リングバッファ1のデータの書き込みが終了した次の位置を指すように更新される。
【0036】
そして、デコーダなどから多重化ストリームを構成する各ES(図1の場合では、ES1とES2)の読み出し要求を受けると、要求されたESに対応するES1読み出し制御手段3もしくはES2読み出し制御手段4が、それぞれの読み出しポインタを格納するES1読み出しポインタ蓄積部13もしくはES2読み出しポインタ蓄積部14からES1読み出しポインタもしくはES2読み出しポインタを取り出す。そして、ES1読み出しポインタもしくはES2読み出しポインタが指すリングバッファ1の位置を起点としてリングバッファ1を時計回りに検索し、対象のES1もしくはES2が検出されるとこのデータを読み出し、要求先へ転送する。読み出しが行われたES1読み出しポインタもしくはES2読み出しポインタは、読み出したサイズに応じて更新される。すなわち、読み出しが終了したリングバッファ1の次の位置(まだ読み出されていない最も古いESを含むデータが格納されている領域)を指すように更新される。さらに、データ先頭ポインタは、ES1読み出しポインタもしくはES2読み出しポインタのうち、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
【0037】
このような多重化分離装置によれば、各ESの読み出し要求があった場合に多重化ストリームから対象のESを分離して要求先に供給することができる。このため、予め多重化ストリームを分離してそれぞれのESバッファに格納し、読み出し要求時にはバッファに格納されたESを供給する場合に比べて、データの転送回数を少なくすることができる。すなわち、リングバッファへの書き込み、ESバッファへの書き込みおよび読み出し要求先への転送の3回のデータ移動を、リングバッファの書き込みと読み出し要求先への転送の2回に削減する。この結果、CPUの負荷を軽減させ、処理能力の向上を図ることができる。また、データ転送に用いるポインタを削減することができ、ポインタを記憶するためのバッファ容量が少なくて済むとともに、ポインタの数が少ないため、バッファの制御が簡単になる。
【0038】
以下、実施の形態をディスク装置に適用した場合を例に図面を参照して詳細に説明する。なお、ディスク装置の他、多重化ストリームの分離処理を行う、たとえば、ディジタル放送データの多重化ストリーム分離装置にも適用することができる。
【0039】
図2は、本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。図2のディスク装置は、例えば、ディスクプレーヤや、ゲーム装置、カーナビゲーションシステムその他に適用することができる。また、多重化分離される多重化ストリームは、ビデオストリーム、オーディオストリームおよび字幕ストリームが時分割多重されている。
【0040】
ディスク101は、例えば、DVDなどの光ディスク、あるいは光磁気ディスク、磁気ディスクなどであり、ビデオデータや、オーディオデータ、字幕データなどのコンテンツデータ、さらには、コンテンツデータを再生するのに必要なデータが記録されている。
【0041】
ディスクドライブ102は、図示せぬインタフェースを内蔵し、そのインタフェースを通じて、ドライブインタフェース114に接続されている。ディスクドライブ102は、そこに装着されたディスク101を駆動し、ドライブインタフェース114からの読み出し等の命令に従って、ディスク101からデータを読み出して、ドライブインタフェース114に供給する等の処理を行う。
【0042】
バス111には、CPU112、メモリ113、ドライブインタフェース114、入力インタフェース115、ビデオデコーダ116、オーディオデコーダ117、ビデオ出力インタフェース118、オーディオ出力インタフェース119が接続されている。
【0043】
CPU112およびメモリ113は、コンピュータシステムを形成している。すなわち、CPU112は、メモリ113に記憶されたプログラムである、後述するソフトウェアモジュール群を実行し、ディスク装置全体を制御するとともに、後述する各種の処理を行う。メモリ113は、CPU112が実行するソフトウェアモジュール群を記憶している。また、メモリ113は、CPU112の動作上必要なデータを一時記憶する。なお、メモリ113は、不揮発性メモリのみ、または揮発性メモリと不揮発性メモリとの組み合わせで構成することが可能である。また、図2のディスク装置に、ハードディスクを設け、そのハードディスクに、CPU112が実行するソフトウェアモジュール群を記録(インストール)しておく場合には、メモリ113は、揮発性メモリのみで構成することが可能である。
【0044】
ここで、CPU112が実行するプログラム(ソフトウェアモジュール群)は、ディスク装置に内蔵されている記録媒体としてのメモリ113に予め記録しておく(記憶させておく)ことができる。あるいはまた、プログラムは、ディスク101、さらには、ディスク101以外のフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical)ディスク、磁気ディスク、メモリカードなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【0045】
なお、プログラムは、メモリ113にあらかじめ記憶させておくこと、あるいは、上述したようなリムーバブル記録媒体からディスク装置にインストールすることができる。また、プログラムは、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、ディスク装置に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、ディスク装置に有線で転送し、ディスク装置では、そのようにして転送されてくるプログラムを、入力インタフェース115で受信し、内蔵するメモリ113にインストールすることができる。
【0046】
さらに、プログラムは、1のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
ドライブインタフェース114は、CPU112の制御の下、ディスクドライブ102を制御し、これにより、ディスクドライブ102がディスク101から読み出したデータを、バス111を介して、CPU112や、メモリ113、ビデオデコーダ116、オーディオデコーダ117などに供給する。
【0047】
入力インタフェース115は、図示せぬキー(ボタン)や、リモコン(リモートコントローラ)がユーザに操作されることによって供給される信号を受信し、バス111を介して、CPU112に供給する。なお、入力インタフェース115は、その他、通信インタフェースとしても機能する。
【0048】
ビデオデコーダ116は、ディスクドライブ102によってディスク101から読み出され、ドライブインタフェース114およびバス111を介して供給される、ビデオデータの符号化データ(符号化ビデオデータ)をデコードし、その結果得られるビデオデータを、バス111を介して、CPU112やビデオ出力インタフェース118に供給する。
【0049】
オーディオデコーダ117は、ビデオデコーダ116と同様に、ディスク101から読み出されて供給される、オーディオデータの符号化データ(符号化オーディオデータ)をデコードし、その結果得られるオーディオデータを、バス111を介して、CPU112やオーディオ出力インタフェース119に供給する。
【0050】
ビデオ出力インタフェース118は、バス111を介して供給されるビデオデータに必要な処理を施し、ビデオ出力端子120から出力する。オーディオ出力インタフェース119は、バス111を介して供給されるオーディオデータに必要な処理を施し、オーディオ出力端子121から出力する。
【0051】
ビデオ出力端子120は、図示せぬCRT(Cathode Ray Tube)や、液晶パネル等のビデオ出力装置に接続されており、ビデオ出力装置にビデオデータを供給する。オーディオ出力端子121は、図示せぬスピーカやアンプなどのオーディオ出力装置に接続されており、オーディオ出力装置にオーディオデータを供給する。なお、ディスク装置から、ビデオ出力装置とオーディオ出力装置へのビデオデータとオーディオデータの供給は、有線または無線のいずれによって行うことも可能である。
【0052】
次に、ソフトウェアモジュール群の構成について説明する。図3は、本実施の形態のソフトウェアモジュール群の構成例を示している。
CPU112が実行するソフトウェアモジュール群は、オペレーティングシステム(OS)201と、アプリケーションプログラムとしてのビデオコンテンツ再生プログラム210に大別される。
【0053】
オペレーティングシステム201は、ディスク装置の電源が投入されると最初に起動し(CPU112がオペレーティングシステム201を実行し)、初期設定等の必要な処理を行い、アプリケーションプログラムであるビデオコンテンツ再生プログラム210を呼び出す。
【0054】
ビデオコンテンツ再生プログラム210は、スクリプト制御モジュール211、プレイヤ制御モジュール212、コンテンツデータ供給モジュール213、デコード制御モジュール214、バッファ制御モジュール215、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218、グラフィックス処理モジュール219、ビデオ出力モジュール220、およびオーディオ出力モジュール221で構成されている。
【0055】
スクリプト制御モジュール211は、ディスク101に記録されたスクリプトファイルに記述されているスクリプトプログラム(スクリプト)を解釈して実行する。
プレイヤ制御モジュール212は、ディスク101に記録されているメタデータ(データベース情報)等を参照し、コンテンツの再生に関する制御を行う。また、プレイヤ制御モジュール212は、スクリプト制御モジュール211や入力インタフェース115からの指示に従い、再生対象のストリームを切り替える。
【0056】
コンテンツデータ供給モジュール213は、プレイヤ制御モジュール212の制御に従い、あるいは、バッファ制御モジュール215に蓄積されたデータの量に基づき、ディスク101からのコンテンツのデータやメタデータ等の読み出しを、オペレーティングシステム201に要求する。
【0057】
なお、オペレーティングシステム201が、コンテンツデータ供給モジュール213からの要求に応じてディスク101から読み出したメタデータ等は、必要なモジュールに供給される。また、オペレーティングシステム201が、コンテンツデータ供給モジュール213からの要求に応じてディスク101から読み出したコンテンツのデータは、バッファ制御モジュール215に供給される。
【0058】
デコード制御モジュール214は、プレイヤ制御モジュール212からの制御に従い、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218の動作を制御する。また、デコード制御モジュール214は、時刻を計時する計時部214Aを内蔵し、ビデオデコーダ制御モジュール216の制御によって出力されるビデオデータの出力と、そのビデオデータと同期して出力されるべきデータ(出力データ)の出力、すなわち、ここでは、オーディオデコーダ制御モジュール217の制御によって出力されるオーディオデータの出力との同期を管理する。
【0059】
バッファ制御モジュール215は、図2のメモリ113の記憶領域の一部であるバッファ215Aを内蔵しており、そのバッファ215Aに、コンテンツデータ供給モジュール213がオペレーティングシステム201に要求を行うことによってディスク101から読み出されたコンテンツのデータを一時記憶する。また、バッファ制御モジュール215は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218の要求に従って、バッファ215Aに記憶されたデータを、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218に供給する。バッファ制御モジュール215の詳細については、後述する。
【0060】
ビデオデコーダ制御モジュール216は、ビデオアクセスユニット単位で、バッファ制御モジュール215のバッファ215Aからビデオデータを符号化したデータ(ビデオ符号化データ)を読み出し、ビデオデコーダ116に供給し、デコード処理を実行させる。そして、デコードの結果得られるビデオデータを、グラフィックス処理モジュール219に供給する。ここで、ビデオアクセスユニットとは、例えば、ビデオデータの1ピクチャ(1フレームまたは1フィールド)分である。
【0061】
オーディオデコーダ制御モジュール217は、オーディオアクセスユニット単位で、バッファ制御モジュール215のバッファ215Aからオーディオデータを符号化したデータ(オーディオ符号化データ)を読み出し、オーディオデコーダ117に供給し、デコード処理を実行させる。そして、デコードの結果得られるオーディオデータを、オーディオ出力モジュール221に供給する。ここで、オーディオアクセスユニットとは、オーディオデータの所定のデータ量分(例えば、1ピクチャに同期して出力される分)である。
【0062】
字幕デコーダ制御モジュール218は、内部に、図示せぬ字幕デコードソフトウェアを備えており、バッファ215Aから読み出したデータをデコードし、そのデコードの結果得られる字幕データ(字幕の画像データ)を、グラフィックス処理モジュール219に供給する。ここで、字幕アクセスユニットとは、字幕データの所定のデータ量分(例えば、1ピクチャに同期して出力される分)である。本実施の形態では、字幕アクセスユニットのサイズは、例えば、その字幕アクセスユニットの先頭に記述されていることとする。
【0063】
グラフィックス処理モジュール219は、プレイヤ制御モジュール212の制御(指示)に従い、字幕デコーダ制御モジュール218からの字幕データの拡大や縮小を行い、ビデオデコーダ制御モジュール216からのビデオデータと加算(オーバーレイ)する。さらに、グラフィックス処理モジュール219は、字幕データとの加算後のビデオデータのサイズ(画枠)を、ビデオ出力端子120に接続されたビデオ出力装置の表示画面にあわせるための拡大または縮小等を行い、その結果得られるビデオデータを、ビデオ出力モジュール220に出力する。
【0064】
ビデオ出力モジュール220は、メモリ113の一部を排他的に占有してFIFO220A(バッファ)として使用し、グラフィックス処理モジュール219からのビデオデータを一時的に記憶し、また、そのFIFO220Aに記憶されたビデオデータを適宜読み出して、ビデオ出力端子120に出力する。
【0065】
オーディオ出力モジュール221は、メモリ113の一部を排他的に占有してFIFO221A(バッファ)として使用し、オーディオデコーダ制御モジュール217(オーディオデコーダ117)からのオーディオデータを一時的に記憶し、また、そのFIFO221Aに記憶されたオーディオデータを適宜読み出して、オーディオ出力端子121に出力する。
【0066】
以下、バッファ制御モジュール215について説明する。図4は、本実施の形態のバッファ制御モジュールの構成図である。
バッファ制御モジュール215は、バッファ215Aにディスク101から読み出されたデータを一時記憶させるとともに、このデータを読み出して、図3のビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218に供給する。
【0067】
このため、バッファ制御モジュール215は、内部モジュールとして、バッファ書き込み機能部310、ビデオ読み出し機能部320、オーディオ読み出し機能部330および字幕読み出し機能部340を有する。なお、図4では、便宜上、各機能部の参照する記憶部およびレジスタを各機能部を表すブロック内に示したが、これらの記憶部およびレジスタは各機能部が処理を実行するために必要な情報を一時格納する記憶領域で、各機能部内もしくはメモリ113上に確保される。
【0068】
バッファ215Aは、リングバッファであり、ディスク101から読み出されたデータを無限ループ状に記憶していく。
バッファ書き込み機能部310は、メモリ113の一部に用意されるデータ先頭ポインタ記憶部311とデータ書き込みポインタ記憶部312を用いて、双方の記憶部に記憶されたポインタの指すバッファ215Aのアドレスを参照して、バッファ制御モジュール215に入力されるデータのバッファ215Aへの書き込みを制御する。データ先頭ポインタ記憶部311は、バッファ215Aに記憶されたデータのうち、まだ、バッファ215Aから読み出されていない最も古いデータが記憶されている位置(アドレス)を指すデータ先頭ポインタを記憶し、データ書き込みポインタ記憶部312は、ディスク101から読み出された最新のデータが書き込まれるバッファ215Aの位置(アドレス)を指す書き込みポインタを記憶する。そして、ディスク101から読み出されたデータをデータ書き込みポインタの指すバッファ215Aの位置から順次書き込み、書き込み終了で書き込みポインタを更新する。
【0069】
ビデオ読み出し機能部320は、ビデオデコーダ制御モジュール216からの要求に応じて、ビデオ読み出しポインタ記憶部321に格納されたポインタの指すバッファ215Aのアドレスを起点としてビデオストリーム(ビデオデータに関するエレメンタリストリーム)を検索し、読み出したビデオストリームをビデオデコーダ制御モジュール216に供給する。オーディオ読み出し機能部330は、オーディオデコーダ制御モジュール217からの要求に応じて、オーディオ読み出しポインタ記憶部331に格納されたポインタの指すバッファ215Aのアドレスを起点としてオーディオストリーム(オーディオデータに関するエレメンタリストリーム)を検索し、読み出したオーディオストリームをオーディオデコーダ制御モジュール217に供給する。字幕読み出し機能部340は、字幕デコーダ制御モジュール218からの要求に応じて、字幕読み出しポインタ記憶部342に格納されたポインタの指すバッファ215Aのアドレスを起点として字幕ストリーム(字幕データに関するエレメンタリストリーム)を検索し、読み出した字幕ストリームを字幕デコーダ制御モジュール218に供給する。
【0070】
ここで、ディスク101には、例えば、MPEG2(Moving Picture Experts Group 2)の規格に準拠したプログラムストリーム(MPEG2-System Program Stream)が記録されており、バッファ215Aには、ディスク101から読み出されたプログラムストリームが記憶される。このプログラムストリームは、ビデオストリームや、オーディオストリーム、字幕ストリーム等の1以上のエレメンタリストリームが時分割多重されている。
【0071】
ビデオ読み出し機能部320は、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、ビデオストリームを分離して読み出す。同様に、オーディオ読み出し機能部330も、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、オーディオストリームを分離して読み出す。字幕読み出し機能部340も、プログラムストリームのデマルチプレクスの機能を有し、バッファ215Aに記憶されたプログラムストリームから、字幕ストリームを分離して読み出す。
【0072】
ここで、ビデオ読み出し機能部320は、図2のメモリ113の一部にビデオ読み出しポインタ記憶部321およびstream_idレジスタ322を有している。
ビデオ読み出しポインタ記憶部321は、バッファ215Aの、ビデオデコーダ制御モジュール216がまだ読み出していない領域の先頭位置(アドレス)を指すビデオ読み出しポインタを記憶し、ビデオ読み出し機能部320は、バッファ215Aの、ビデオ読み出しポインタが指す位置を起点として、ビデオストリームを検索して読み出す。stream_idレジスタ322は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すビデオストリームを識別(特定)するために後述するstream_idを記憶する。
【0073】
オーディオ読み出し機能部330は、図2のメモリ113の一部にオーディオ読み出しポインタ記憶部331、stream_idレジスタ332、およびprivate_stream_idレジスタ333を有している。
【0074】
オーディオ読み出しポインタ記憶部331は、バッファ215Aの、オーディオデコーダ制御モジュール217がまだ読み出していない領域の先頭位置(アドレス)を指すオーディオ読み出しポインタを記憶し、オーディオ読み出し機能部330は、バッファ215Aの、オーディオ読み出しポインタが指す位置を起点として、オーディオストリームを検索して読み出す。stream_idレジスタ332とprivate_stream_idレジスタ333は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すオーディオストリームを識別するために後述するstream_idとprivate_stream_idを、それぞれ記憶する。
【0075】
字幕読み出し機能部340は、図2のメモリ113の一部に字幕読み出し機能フラグ記憶部341、字幕読み出しポインタ記憶部342、stream_idレジスタ343、およびprivate_stream_idレジスタ344を有している。
【0076】
字幕読み出し機能フラグ記憶部341は、字幕読み出し機能フラグを記憶する。字幕読み出し機能フラグ記憶部341に記憶された字幕読み出し機能フラグが、例えば0である場合、字幕読み出し機能部340は機能動作せず、字幕読み出し機能フラグ記憶部341に記憶された字幕読み出し機能フラグが、例えば1である場合、字幕読み出し機能部340は機能する。このように、多重化ストリームに含まれないエレメンタリストリームの読み出し処理を停止させることにより、CPUに余分な処理を実行させない。字幕読み出しポインタ記憶部342は、バッファ215Aの、字幕デコーダ制御モジュール218がまだ読み出していない領域の先頭位置(アドレス)を指す字幕読み出しポインタを記憶し、字幕読み出し機能部340は、バッファ215Aの、字幕読み出しポインタが指す位置を起点として、字幕ストリームを検索して読み出す。stream_idレジスタ343とprivate_stream_idレジスタ344は、バッファ215Aに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出す字幕ストリームを識別するために後述するstream_idとprivate_stream_idを、それぞれ記憶する。
【0077】
ここで、ディスク101に記録されたデータのデータフォーマットについて説明する。
図5は、ディスクのディレクトリ構造を模式的に示している。
ディスク101のファイルシステムとしては、例えば、ISO(International Organization for Standardization)-9660や、UDF(Universal Disk Format:http://www.osta.org/specs/)などで規定されたファイルシステムが用いられており、ディスク101に記録されたデータのファイルはディレクトリ構造により階層的に管理されている。ここで、ファイルシステムは、上述したファイルシステムに限定されるものではない。
【0078】
図5では、ファイルシステムの基点を示すルート(root)ディレクトリに、"VIDEO"ディレクトリが置かれ、"VIDEO"ディレクトリには、"CLIP"ディレクトリと、"STREAM"ディレクトリとの2つのディレクトリが置かれている。
【0079】
"VIDEO"ディレクトリには、"CLIP"ディレクトリと"STREAM"ディレクトリとの2つのディレクトリの他に、"SCRIPT.DAT"ファイルと、"PLAYLIST.DAT"ファイルの2つのデータファイルが置かれている。
【0080】
"SCRIPT.DAT"ファイルは、スクリプトプログラムが記述されたスクリプトファイルである。すなわち、"SCRIPT.DAT"ファイルには、ディスク101の再生形態をインタラクティブなものとするために使用するスクリプトプログラムが記述されている。この"SCRIPT.DAT"ファイルに記述されたスクリプトプログラムは、図3のスクリプト制御モジュール211によって解釈、実行される。
【0081】
"PLAYLIST.DAT"ファイルには、ディスク101に記録されたビデオデータ等のコンテンツの再生手順が記述されたプレイリストが1以上格納されている。
"CLIP"ディレクトリには、1以上のクリップ情報ファイルが置かれ、"STREAM"ディレクトリには、1以上のクリップストリームファイルが置かれる。すなわち、図5では、"CLIP"ディレクトリには、3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"が置かれており、"STREAM"ディレクトリには、3つのクリップストリームファイル"00001.PS","00002.PS","00003.PS"が置かれている。
【0082】
クリップストリームファイルには、ビデオデータ、オーディオデータ、字幕データなどの1以上のデータ(ストリーム)を圧縮、符号化して得られる1以上のエレメンタリストリームを時分割多重化したプログラムストリームが格納されている。
【0083】
クリップ情報ファイルには、対応するクリップストリームファイルの性質等の、クリップストリームに関する(ファイル)メタデータが記述されている。
クリップストリームファイルとクリップ情報ファイルとは、1対1に対応しており、図5の場合では、"CLIP"ディレクトリに置かれた3つのクリップ情報ファイル"00001.CLP","00002.CLP","00003.CLP"は、"STREAM"ディレクトリに置かれたクリップストリームファイル"00001.PS","00002.PS","00003.PS"の性質等を示すメタデータが格納されている。メタデータの中には、クリップストリームに関するストリーム情報(以下、StreamInfo()とする)が多重化されているストリームの本数分存在する。StreamInfo()の先頭には、length(16ビット)が配置され、このlengthは、それを含むStreamInfo()のサイズを表す。lengthに続いては、stream_id(8ビット)とprivate_stream_id(8ビット)が配置されており、このstream_idとprivate_stream_idによって、StreamInfo()に関連付けるエレメンタリストリームが特定(識別)される。
【0084】
ここで、図6は、エレメンタリストリームを識別するstream_idおよびprivate_stream_idと、エレメンタリストリームとの関係を示している。
stream_idは、MPEG2-System規格において規定されているのと同一のものであり、その値は、MPEG2-System規格において、エレメンタリストリーム(データ)の属性(種類)ごとに、あらかじめ決められている。従って、MPEG2-System規格で定義されている属性のエレメンタリストリームは、stream_idだけで特定することができる。
【0085】
本実施の形態では、MPEG2-System規格において規定されていない属性のエレメンタリストリームも扱うことが可能になっており、private_stream_idは、MPEG2-System規格において規定されていない属性のエレメンタリストリームを識別するための情報である。図6では、MPEGで規定されている符号化(復号)方式でエンコードされたビデオのエレメンタリストリーム、ATRAC(Adaptive TRansform Acoustic Coding)方式でエンコードされたオーディオのエレメンタリストリーム(以下、適宜、ATRACオーディオストリームという)、LPCM(Linear Pulse Code Modulation)方式でエンコードされたオーディオのエレメンタリストリーム(以下、適宜、LPCMオーディオストリームという)、字幕のエレメンタリストリーム(以下、適宜、字幕ストリームという)の4つの属性のエレメンタリストリームについて、stream_idおよびprivate_stream_idとの関係を示している。
【0086】
MPEG2-System規格では、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームは、0xE0乃至0xEFの範囲の値を(0xは、その後に続く文字列が16進数であることを表す)、エレメンタリストリームを識別するstream_idとして用いて多重化することが規定されている。従って、MPEGで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームについては、0xE0乃至0xEFの範囲の値のstream_idで識別することができる16本のビデオのエレメンタリストリームを、プログラムストリームに多重化することができる。
【0087】
なお、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を採用し、さらに、図6に示すように、private_stream_idを用いて識別(特定)を行うこととしている。
【0088】
次に、上記の説明のプログラムストリームの再生処理を行うディスク装置の動作について、バッファ制御モジュール215の処理を中心に説明する。以下の説明では、対象のクリップストリームファイル"00001.PS"に、1本のビデオストリーム、1本のATRACオーディオストリームおよび2本の字幕ストリームが多重化されているとする。
【0089】
ディスク101がディスクドライブ102に挿入され、オペレーティングシステム201を経由して通知されると、ビデオコンテンツ再生プログラム210による再生処理が開始される。
【0090】
再生処理では、まず、再生前処理が行われ、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"に格納されたプログラムストリームの、バッファ制御モジュール215への供給が開始される前に、バッファ制御モジュール215を初期化する。
【0091】
「再生前処理」
具体的には、バッファ制御モジュール215では、データ先頭ポインタ記憶部311に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部312に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部321に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部331に記憶されるオーディオ読み出しポインタ、字幕読み出しポインタ記憶部342に記憶される字幕読み出しポインタに、同じ値が代入される。これにより、データ先頭ポインタ記憶部311に記憶されたデータ先頭ポインタと、データ書き込みポインタ記憶部312に記憶されたデータ書き込みポインタとは、バッファ制御モジュール215のバッファ215Aの同一の位置を指す。これは、バッファ215Aに、有効なデータが蓄積されていない状態を表す。
【0092】
さらに、プレイヤ制御モジュール212は、再生対象のエレメンタリストリームを識別(特定)するため、識別情報として対象のクリップストリームファイル“00001.PS”に対応するクリップ情報ファイル”0001.CLP”から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に供給する。
【0093】
バッファ制御モジュール215では、ビデオ読み出し機能部320が、プレイヤ制御モジュール212からの、ビデオストリームについての0xE0となっているstream_idを、stream_idレジスタ322に記憶させる。また、オーディオ読み出し機能部330が、プレイヤ制御モジュール212からの、0xBDとなっているstream_idと、0x00となっているprivate_stream_idを、stream_idレジスタ332とprivate_stream_idレジスタ333に、それぞれ記憶させる。さらに、字幕読み出し機能部340が、プレイヤ制御モジュール212からの、0xBDとなっているstream_idと、0x80となっているprivate_stream_idを、stream_idレジスタ343とprivate_stream_idレジスタ344に、それぞれ記憶させる。
【0094】
プレイヤ制御モジュール212は、バッファ制御モジュール215の初期化として、さらに、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに応じた値の字幕読み出し機能フラグを、字幕読み出し機能フラグ記憶部341にセットする。すなわち、いまの場合、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"には、字幕ストリームが含まれるため、字幕読み出し機能部340を機能させるために、値が1の字幕読み出し機能フラグが、字幕読み出し機能フラグ記憶部341にセットされる。なお、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに字幕ストリームが含まれていない場合、字幕読み出し機能フラグ記憶部341には、値が0の字幕読み出し機能フラグがセットされる。この場合、字幕読み出し機能部340は機能しない(特に処理を行わない)。
【0095】
「データ読み込み開始」
その後、プレイヤ制御モジュール212は、コンテンツデータ供給モジュール213を制御し、これにより、コンテンツデータ供給モジュール213は、オペレーティングシステム201の機能を使用して、再生対象のエレメンタリストリームが多重化されたプログラムストリームが格納されたクリップストリームファイルを読み出す。また、コンテンツデータ供給モジュール213は、ディスク101から読み出したデータを、バッファ制御モジュール215に供給するように指定する。これにより、ディスク101からの、クリップストリームファイル"00001.PS"に格納されたプログラムストリームの読み出しが開始され、そのプログラムストリームは、バッファ制御モジュール215に供給される。
【0096】
バッファ制御モジュール215は、ディスク101から読み出されて供給されたプログラムストリームを、バッファ215Aのデータ書き込みポインタ記憶部312のデータ書き込みポインタが指す位置に書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
【0097】
以下、特に断らない限り、コンテンツデータ供給モジュール213は、バッファ制御モジュール215のバッファ215Aに空きがあれば、ディスク101からデータを読み出し、バッファ制御モジュール215のバッファ215Aに供給して記憶させることとする。従って、バッファ215Aには、常時、十分なデータが蓄積されているとする。
【0098】
「デコーダ制御開始」
以上のようにして、ディスク101からのデータの読み出しが開始され、そのデータがバッファ制御モジュール215のバッファ215Aに蓄積され始めると、デコード制御モジュール214は、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、字幕デコーダ制御モジュール218を制御し、デコード動作の前段階として、バッファ215Aからのデータの読み出しを開始させる。
【0099】
「バッファ制御モジュールの処理」
次に、図7および図8を参照して、バッファ制御モジュール215の処理、すなわち、バッファ215Aへのデータの書き込みと、バッファ215Aからのデータの読み出しについて説明する。図7および図8は、バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図である。図7は、更新前のオーディオ読み出しポインタの指す位置を示し、図8は、更新後のオーディオ読み出しポインタの指す位置を示している。
【0100】
バッファ制御モジュール215は、図4で説明したように、バッファ215Aに対するデータの読み書きを行うための5つのポインタを有している。
すなわち、図7および図8に示すように、バッファ制御モジュール215は、データ先頭ポインタ記憶部311に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部312に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部321に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部331に記憶されるオーディオ読み出しポインタ、および字幕読み出しポインタ記憶部342に記憶される字幕読み出しポインタを有している。
【0101】
なお、図7および図8では、図3におけるビデオ読み出し機能部320のstream_idレジスタ322、オーディオ読み出し機能部330のstream_idレジスタ332およびprivate_stream_idレジスタ333、並びに字幕読み出し機能部340の字幕読み出し機能フラグ記憶部341、stream_idレジスタ343、およびprivate_stream_idレジスタ344の図示は、省略してある。
【0102】
データ先頭ポインタ記憶部311に記憶されたデータ先頭ポインタは、バッファ215Aに残る最も古いデータ(読み出す必要があるデータであって、まだ読み出されていないデータのうちの最も古いデータ)の位置を表す。データ書き込みポインタ記憶部312に記憶されたデータ書き込みポインタは、バッファ215Aへのデータの書き込みの位置を示し、この位置は、バッファ215Aで最も新しいデータが書き込まれる位置である。
【0103】
ビデオ読み出しポインタ記憶部321に記憶されたビデオ読み出しポインタは、バッファ215Aから読み出すビデオストリームの位置を表す。また、オーディオ読み出しポインタ記憶部331に記憶されたオーディオ読み出しポインタは、バッファ215Aから読み出すオーディオストリームの位置を表し、字幕読み出しポインタ記憶部342に記憶された字幕読み出しポインタは、バッファ215Aから読み出す字幕ストリームの位置を表す。
【0104】
さらに、本実施の形態では、データ先頭ポインタは、図8に示すように、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように、常時更新されるものとする。ここで、図8では、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうち、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、そのオーディオ読み出しポインタと一致している。
【0105】
以上のようなデータ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタを有するバッファ制御モジュール215では、データ書き込みポインタは、ディスク101から新たなデータが読み出され、バッファ215Aに書き込まれると、その書き込まれた新たなデータの直後の位置を指すように、右回りに更新される。
【0106】
さらに、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタは、バッファ215Aから、ビデオストリーム、オーディオストリーム、または字幕ストリームが読み出されると、その読み出し量に応じた分だけ、それぞれ、右回りに更新される。ここで読み出し量に応じた分とは、実際に読み出したビデオ、オーディオ、字幕のデータに対応する部分と、読み出したデータの間に含まれており、読み出しの際には読み飛ばしを行った、他のストリームのデータの部分をあわせたものとなる。
【0107】
また、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されると、そのビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
【0108】
ここで、バッファ制御モジュール215は、バッファ215Aへのデータの書き込みについては、データ書き込みポインタがデータ先頭ポインタを追い越さないように、バッファ215Aへのデータの書き込みを制御する。
【0109】
すなわち、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しない限り、バッファ制御モジュール215では、ディスク101から読み出されたデータが、データ書き込みポインタが指すバッファ215Aの位置に書き込まれ、データ書き込みポインタが更新されていく。一方、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しそうになると、バッファ制御モジュール215では、コンテンツデータ供給モジュール213に対して、ディスク101からのデータの読み出しの停止(中断)が要求され、さらに、バッファ215Aへのデータの書き込みが停止される。これにより、バッファ215Aのオーバーフローを防止することができる。
【0110】
以上のように、ディスク101から読み出されたデータの、バッファ215Aへの書き込みは、データ先頭ポインタとデータ書き込みポインタとの2つのポインタの位置関係だけで制御される。
【0111】
一方、バッファ制御モジュール215は、バッファ215Aからのデータの読み出しについては、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタ、ひいては、データ先頭ポインタが、データ書き込みポインタを追い越さないように、バッファ215Aからのデータの読み出しを制御する。
【0112】
すなわち、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しない限り、バッファ制御モジュール215では、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218からの要求に応じて、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指すバッファ215Aの位置からデータの読み出し処理が開始され、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されるとともに、データ先頭ポインタが更新される。一方、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しそうになると、バッファ制御モジュール215では、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、または字幕デコーダ制御モジュール218からの要求が、例えば凍結され、十分なデータが用意されるまで待たされる。これにより、バッファ215Aのアンダーフローを防止することができる。
【0113】
以上から、バッファ215Aには、データ先頭ポインタが指す位置から、右回りに、データ書き込みポインタが指す位置までの範囲(図7および図8の斜線部)に、ビデオデコーダ制御モジュール216、オーディオデコーダ制御モジュール217、および字幕デコーダ制御モジュール218に供給すべきデータが記憶されており、さらに、その範囲内に、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタは存在する。
【0114】
なお、上述の場合には、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指している位置のうちの、最も古いデータの位置を指すように更新することとしたが、その他、データ先頭ポインタの更新は、例えば、その最も古いデータの位置から、所定の時間(例えば、1秒)分だけ過去のデータの位置を指すように行うことが可能である。
【0115】
すなわち、一般には、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、ビデオ読み出しポインタやオーディオ読み出しポインタが、最も古いデータの位置を指すことが多いと予想される。
【0116】
従って、データ先頭ポインタを、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から、例えば、1秒分だけ過去のデータの位置を指すように更新した場合、図7に示すように、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から過去1秒分のデータを、バッファ215Aに残しておくことができる。ここで、図7では、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、その位置から1秒分だけ過去のデータの位置を指している。
【0117】
以上のように、1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新することにより、ディスク装置の応答性を向上させることができる。
すなわち、図8に示したように、オーディオ読み出しポインタが指している最も古いデータの位置を指すように、データ先頭ポインタを更新する場合には、例えば、リバース方向への特殊再生が指示されたときに、バッファ215Aからの読み出しが終了したデータを、ディスク101から再度読み出す必要があるため、特殊再生が指示されてから、その特殊再生が可能となるまでに、ある程度の時間がかかる。
【0118】
これに対して、図7に示したように、オーディオ読み出しポインタが指している最も古いデータの位置から1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合には、リバース方向への特殊再生が指示されたときに、その特殊再生を開始するのに必要なデータが、バッファ215Aに記憶されている1秒分だけ過去のデータであれば、上述したようなディスク101からのデータの再読み出しを行わずに、即座に、特殊再生を開始することが可能となる。
【0119】
なお、オーディオ読み出しポインタが指している最も古いデータの位置から1秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合であっても、特殊再生を開始するのに必要なデータが、バッファ215Aに記憶されていないことがあり得る。この場合には、特殊再生を開始するのに必要なデータが、ディスク101から再度読み出される。
【0120】
次に、バッファ215Aからのビデオストリーム、オーディオストリーム、字幕ストリームそれぞれの読み出しの詳細について説明する。
クリップストリームファイルの再生が開始されるときに、バッファ制御モジュール215においては、データ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、字幕読み出しポインタが、すべて、バッファ215A上の同じ位置を指すように初期化される。
【0121】
そして、ディスク101からクリップストリームファイルに格納されたプログラムストリーム(MPEG2-System Program Stream)が読み出され、バッファ制御モジュール215に供給されると、バッファ制御モジュール215では、そのプログラムストリームが、バッファ215Aのデータ書き込みポインタが指す位置に記憶されるとともに、データ書き込みポインタが、右回りに更新されていく。
【0122】
バッファ制御モジュール215では、ビデオ読み出し機能部320が、stream_idレジスタ322に記録された情報を用いて、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、ビデオデコーダ制御モジュール216からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、ビデオストリーム(ビデオアクセスユニット)を抽出(分離)して読み出し、ビデオデコーダ制御モジュール216に供給する。
【0123】
同様に、オーディオ読み出し機能部330も、stream_idレジスタ332およびprivate_stream_idレジスタ333に記録された情報を用いて、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、オーディオデコーダ制御モジュール217からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、オーディオストリーム(オーディオアクセスユニット)を抽出して読み出し、オーディオデコーダ制御モジュール217に供給する。字幕読み出し機能部340も、stream_idレジスタ343およびprivate_stream_idレジスタ344に記録された情報を用いて、バッファ215Aに記憶されたプログラムストリームの構文解析を行い、字幕デコーダ制御モジュール218からの要求に応じて、バッファ215Aに記憶されたプログラムストリームから、字幕ストリーム(字幕アクセスユニット)を抽出して読み出し、字幕デコーダ制御モジュール218に供給する。
【0124】
このように、ビデオ読み出し機能部320、オーディオ読み出し機能部330および字幕読み出し機能部340によって、デマルチプレクスを行いながら各ESをデコーダへ供給することができる。これにより、データの移動を削減することができ、CPUの処理能力を向上させることができる。
【0125】
また、従来例では、各エレメンタリストリーム蓄積部が担っていたバッファ機能が、バッファ制御モジュール215に移動するので、バッファ制御モジュール215のバッファ215Aにはその分の容量追加が必要となる。例えば、MPEG2−System各エレメンタリストリーム蓄積部でのディレイは1秒以内などと規定されているため、1秒分の多重化ストリームが蓄積されるだけの容量が必要となる。すなわち、MPEG2−Systemのプログラムストリームにおいては、STDでのディレイの値(STD_Delay)に、多重化レート(program_mux_rate)を乗じた積の分の容量を追加で持てばよいことになる。
【図面の簡単な説明】
【0126】
【図1】実施の形態に適用される発明の概念図である。
【図2】本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。
【図3】本実施の形態のソフトウェアモジュール群の構成例を示している。
【図4】本実施の形態のバッファ制御モジュールの構成図である。
【図5】ディスクのディレクトリ構造を模式的に示している。
【図6】エレメンタリストリームを識別するstream_idおよびprivate_stream_idと、エレメンタリストリームとの関係を示している。
【図7】バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図(ポインタ更新前)である。
【図8】バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図(ポインタ更新後)である。
【図9】従来の多重化分離装置の一例を示したブロック図である。
【図10】従来の多重化ストリーム蓄積部の構成図である。
【図11】従来のビデオストリーム蓄積部の構成図である。
【符号の説明】
【0127】
1……リングバッファ、2……バッファ制御手段、3……ES1読み出し制御手段、4……ES2読み出し制御手段、11……データ先頭ポインタ蓄積部、12……データ書き込みポインタ蓄積部、13……ES1読み出しポインタ蓄積部、14……ES2読み出しポインタ蓄積部
【特許請求の範囲】
【請求項1】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、
前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファと、
前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを格納するデータ先頭ポインタ蓄積手段と、
最新の前記多重化ストリームのデータを書き込む位置を指すデータ書き込みポインタを格納するデータ書き込みポインタ蓄積手段と、
前記多重化ストリームが供給されると、前記データ書き込みポインタの指す前記リングバッファの位置から書き込み、書き込みサイズに応じて前記データ書き込みポインタを更新するバッファ制御手段と、
読み出しを行う前記エレメンタリストリームごとに、前記リングバッファからそれぞれの前記エレメンタリストリームの読み出し処理の起点となる位置を指す読み出しポインタを格納する読み出しポインタ蓄積手段と、
読み出し要求された前記エレメンタリストリームに関する前記読み出しポインタを前記読み出しポインタ蓄積手段から取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記データ先頭ポインタを更新する読み出し制御手段と、
を具備することを特徴とする多重化分離装置。
【請求項2】
前記読み出し制御手段は、複数の前記読み出しポインタのうち最も古いデータが格納されている位置を指している前記読み出しポインタを、前記データ先頭ポインタに代入することを特徴とする請求項1記載の多重化分離装置。
【請求項3】
前記読み出し制御手段は、読み出された前記エレメンタリストリームの読み出しポインタと、前記多重化ストリームを再生する他の前記エレメンタリストリームの読み出しポインタとを比較し、読み出された前記エレメンタリストリームの読み出しポインタが最も古いデータが格納されている位置を指している場合に、前記データ先頭ポインタに、読み出された前記エレメンタリストリームの読み出しポインタを代入することを特徴とする請求項2記載の多重化分離装置。
【請求項4】
前記読み出し制御手段は、所定のエレメンタリストリームが読み出された後に、前記所定のエレメンタリストリームの読み出しポインタを読み出しが終了した前記リングバッファの位置から前に所定の期間分の前記エレメンタリストリームのデータが格納される領域分ずらした位置に前記リングバッファの前記データ先頭ポインタを設定することを特徴とする請求項1記載の多重化分離装置。
【請求項5】
前記読み出し制御手段は、前記読み出しポインタが指す読み出し起点から順に前記リングバッファに格納されているエレメンタリストリームパケットを解析し、読み出し要求された前記エレメンタリストリームを検索し、検索された前記エレメンタリストリームの読み出しを行うことを特徴とする請求項1記載の多重化分離装置。
【請求項6】
前記読み出し制御手段は、前記エレメンタリストリームパケットに含まれる前記エレメンタリストリームの種別を識別する識別情報に基づいて符号化ビデオデータを検索することを特徴とする請求項5記載の多重化分離装置。
【請求項7】
所定のエレメンタリストリームが該多重化ストリームに含まれているか否かを判断する判断手段と、
前記所定のエレメンタリストリームが前記多重化ストリームに含まれていないと判断された場合に、前記所定のエレメンタリストリームに対応する前記読み出し制御手段の動作を止めることを特徴とする請求項1記載の多重化分離装置。
【請求項8】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離方法において、
バッファ制御手段が、前記多重化ストリームが供給されると、前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファの最新のデータ書き込み位置を指すデータ書き込みポインタに基づき、前記データ書き込みポインタの指す前記リングバッファの位置に供給された前記多重化ストリームを順次書き込むとともに、書き込みサイズに応じて前記データ書き込みポインタを更新し、
読み出し制御手段が、所定の前記エレメンタリストリームの読み出し要求を受けると、前記エレメンタリストリームごとの読み出し処理の起点となる読み出しポインタが格納される読み出しポインタ蓄積手段から要求された前記エレメンタリストリームに関する前記読み出しポインタを取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを更新する、
ことを特徴とする多重化分離方法。
【請求項9】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、
少なくとも第1及び第2のエレメンタリストリームを記憶するリングバッファと、
前記リングバッファから、前記第1のエレメンタリストリームを読み出し制御する第1の読み出し制御手段と、
前記リングバッファから、前記第2のエレメンタリストリームを読み出し制御する第2の読み出し制御手段と、
を具備し、
前記多重化ストリームのうちの一のエレメンタリストリームの読み出し要求に応じて、該エレメンタリストリームに対応する前記第1の読み出し制御手段または前記第2の読み出し制御手段により、前記第1のエレメンタリストリームまたは前記第2のエレメンタリストリームを読み出す、
ことを特徴とする多重化分離装置。
【請求項10】
前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを格納するデータ先頭ポインタ蓄積手段と、
読み出しを行う前記エレメンタリストリームごとに、前記リングバッファからそれぞれの前記エレメンタリストリームの読み出し処理の起点となる位置を指す読み出しポインタを格納する読み出しポインタ蓄積手段とを備え、
前記第1の読み出し制御手段または前記第2の読み出し制御手段は、読み出し要求に応じて、前記読み出しポインタが指す読み出し起点から順に前記リングバッファに格納されているエレメンタリストリームパケットを解析し、読み出し要求された前記エレメンタリストリームを検索し、検索された前記エレメンタリストリームの読み出しを行うことを特徴とする請求項9記載の多重化分離装置。
【請求項11】
前記第1の読み出し制御手段及び前記第2の読み出し制御手段は、前記エレメンタリストリームパケットに含まれる前記エレメンタリストリームの種別を識別する識別情報に基づいて符号化ビデオデータを検索することを特徴とする請求項10記載の多重化分離装置。
【請求項1】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、
前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファと、
前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを格納するデータ先頭ポインタ蓄積手段と、
最新の前記多重化ストリームのデータを書き込む位置を指すデータ書き込みポインタを格納するデータ書き込みポインタ蓄積手段と、
前記多重化ストリームが供給されると、前記データ書き込みポインタの指す前記リングバッファの位置から書き込み、書き込みサイズに応じて前記データ書き込みポインタを更新するバッファ制御手段と、
読み出しを行う前記エレメンタリストリームごとに、前記リングバッファからそれぞれの前記エレメンタリストリームの読み出し処理の起点となる位置を指す読み出しポインタを格納する読み出しポインタ蓄積手段と、
読み出し要求された前記エレメンタリストリームに関する前記読み出しポインタを前記読み出しポインタ蓄積手段から取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記データ先頭ポインタを更新する読み出し制御手段と、
を具備することを特徴とする多重化分離装置。
【請求項2】
前記読み出し制御手段は、複数の前記読み出しポインタのうち最も古いデータが格納されている位置を指している前記読み出しポインタを、前記データ先頭ポインタに代入することを特徴とする請求項1記載の多重化分離装置。
【請求項3】
前記読み出し制御手段は、読み出された前記エレメンタリストリームの読み出しポインタと、前記多重化ストリームを再生する他の前記エレメンタリストリームの読み出しポインタとを比較し、読み出された前記エレメンタリストリームの読み出しポインタが最も古いデータが格納されている位置を指している場合に、前記データ先頭ポインタに、読み出された前記エレメンタリストリームの読み出しポインタを代入することを特徴とする請求項2記載の多重化分離装置。
【請求項4】
前記読み出し制御手段は、所定のエレメンタリストリームが読み出された後に、前記所定のエレメンタリストリームの読み出しポインタを読み出しが終了した前記リングバッファの位置から前に所定の期間分の前記エレメンタリストリームのデータが格納される領域分ずらした位置に前記リングバッファの前記データ先頭ポインタを設定することを特徴とする請求項1記載の多重化分離装置。
【請求項5】
前記読み出し制御手段は、前記読み出しポインタが指す読み出し起点から順に前記リングバッファに格納されているエレメンタリストリームパケットを解析し、読み出し要求された前記エレメンタリストリームを検索し、検索された前記エレメンタリストリームの読み出しを行うことを特徴とする請求項1記載の多重化分離装置。
【請求項6】
前記読み出し制御手段は、前記エレメンタリストリームパケットに含まれる前記エレメンタリストリームの種別を識別する識別情報に基づいて符号化ビデオデータを検索することを特徴とする請求項5記載の多重化分離装置。
【請求項7】
所定のエレメンタリストリームが該多重化ストリームに含まれているか否かを判断する判断手段と、
前記所定のエレメンタリストリームが前記多重化ストリームに含まれていないと判断された場合に、前記所定のエレメンタリストリームに対応する前記読み出し制御手段の動作を止めることを特徴とする請求項1記載の多重化分離装置。
【請求項8】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離方法において、
バッファ制御手段が、前記多重化ストリームが供給されると、前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファの最新のデータ書き込み位置を指すデータ書き込みポインタに基づき、前記データ書き込みポインタの指す前記リングバッファの位置に供給された前記多重化ストリームを順次書き込むとともに、書き込みサイズに応じて前記データ書き込みポインタを更新し、
読み出し制御手段が、所定の前記エレメンタリストリームの読み出し要求を受けると、前記エレメンタリストリームごとの読み出し処理の起点となる読み出しポインタが格納される読み出しポインタ蓄積手段から要求された前記エレメンタリストリームに関する前記読み出しポインタを取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを更新する、
ことを特徴とする多重化分離方法。
【請求項9】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、
少なくとも第1及び第2のエレメンタリストリームを記憶するリングバッファと、
前記リングバッファから、前記第1のエレメンタリストリームを読み出し制御する第1の読み出し制御手段と、
前記リングバッファから、前記第2のエレメンタリストリームを読み出し制御する第2の読み出し制御手段と、
を具備し、
前記多重化ストリームのうちの一のエレメンタリストリームの読み出し要求に応じて、該エレメンタリストリームに対応する前記第1の読み出し制御手段または前記第2の読み出し制御手段により、前記第1のエレメンタリストリームまたは前記第2のエレメンタリストリームを読み出す、
ことを特徴とする多重化分離装置。
【請求項10】
前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを格納するデータ先頭ポインタ蓄積手段と、
読み出しを行う前記エレメンタリストリームごとに、前記リングバッファからそれぞれの前記エレメンタリストリームの読み出し処理の起点となる位置を指す読み出しポインタを格納する読み出しポインタ蓄積手段とを備え、
前記第1の読み出し制御手段または前記第2の読み出し制御手段は、読み出し要求に応じて、前記読み出しポインタが指す読み出し起点から順に前記リングバッファに格納されているエレメンタリストリームパケットを解析し、読み出し要求された前記エレメンタリストリームを検索し、検索された前記エレメンタリストリームの読み出しを行うことを特徴とする請求項9記載の多重化分離装置。
【請求項11】
前記第1の読み出し制御手段及び前記第2の読み出し制御手段は、前記エレメンタリストリームパケットに含まれる前記エレメンタリストリームの種別を識別する識別情報に基づいて符号化ビデオデータを検索することを特徴とする請求項10記載の多重化分離装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2006−164333(P2006−164333A)
【公開日】平成18年6月22日(2006.6.22)
【国際特許分類】
【出願番号】特願2004−350362(P2004−350362)
【出願日】平成16年12月2日(2004.12.2)
【出願人】(000002185)ソニー株式会社 (34,172)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】
【公開日】平成18年6月22日(2006.6.22)
【国際特許分類】
【出願日】平成16年12月2日(2004.12.2)
【出願人】(000002185)ソニー株式会社 (34,172)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】
[ Back to top ]