(57)【要約】【課題】  ＣＰＵにかかる負荷を軽減する。【解決手段】  バッファ制御手段２は、供給される多重化ストリームを無限ループ状にデータを記憶するリングバッファ１のデータ書き込みポインタの指す位置から書き込む。ＥＳ１読み出し制御手段３は、ＥＳ１読み出し要求を受けると、リングバッファ１において最も古いＥＳ１が記憶されている領域を検索するための起点となる読み出しポインタをＥＳ１読み出しポインタ蓄積部１３から取り出し、ＥＳ１読み出しポインタの指す位置を起点としてＥＳ１を検索して読み出し、要求元へ転送する。その後、ＥＳ１読み出しポインタとデータ先頭ポインタを更新する。【選択図】  図１
2006164333.tif 000002
【特許請求の範囲】
【請求項１】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、
前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファと、
前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを格納するデータ先頭ポインタ蓄積手段と、
最新の前記多重化ストリームのデータを書き込む位置を指すデータ書き込みポインタを格納するデータ書き込みポインタ蓄積手段と、
前記多重化ストリームが供給されると、前記データ書き込みポインタの指す前記リングバッファの位置から書き込み、書き込みサイズに応じて前記データ書き込みポインタを更新するバッファ制御手段と、
読み出しを行う前記エレメンタリストリームごとに、前記リングバッファからそれぞれの前記エレメンタリストリームの読み出し処理の起点となる位置を指す読み出しポインタを格納する読み出しポインタ蓄積手段と、
読み出し要求された前記エレメンタリストリームに関する前記読み出しポインタを前記読み出しポインタ蓄積手段から取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記データ先頭ポインタを更新する読み出し制御手段と、
を具備することを特徴とする多重化分離装置。
【請求項２】
前記読み出し制御手段は、複数の前記読み出しポインタのうち最も古いデータが格納されている位置を指している前記読み出しポインタを、前記データ先頭ポインタに代入することを特徴とする請求項１記載の多重化分離装置。
【請求項３】
前記読み出し制御手段は、読み出された前記エレメンタリストリームの読み出しポインタと、前記多重化ストリームを再生する他の前記エレメンタリストリームの読み出しポインタとを比較し、読み出された前記エレメンタリストリームの読み出しポインタが最も古いデータが格納されている位置を指している場合に、前記データ先頭ポインタに、読み出された前記エレメンタリストリームの読み出しポインタを代入することを特徴とする請求項２記載の多重化分離装置。
【請求項４】
前記読み出し制御手段は、所定のエレメンタリストリームが読み出された後に、前記所定のエレメンタリストリームの読み出しポインタを読み出しが終了した前記リングバッファの位置から前に所定の期間分の前記エレメンタリストリームのデータが格納される領域分ずらした位置に前記リングバッファの前記データ先頭ポインタを設定することを特徴とする請求項１記載の多重化分離装置。
【請求項５】
前記読み出し制御手段は、前記読み出しポインタが指す読み出し起点から順に前記リングバッファに格納されているエレメンタリストリームパケットを解析し、読み出し要求された前記エレメンタリストリームを検索し、検索された前記エレメンタリストリームの読み出しを行うことを特徴とする請求項１記載の多重化分離装置。
【請求項６】
前記読み出し制御手段は、前記エレメンタリストリームパケットに含まれる前記エレメンタリストリームの種別を識別する識別情報に基づいて符号化ビデオデータを検索することを特徴とする請求項５記載の多重化分離装置。
【請求項７】
所定のエレメンタリストリームが該多重化ストリームに含まれているか否かを判断する判断手段と、
前記所定のエレメンタリストリームが前記多重化ストリームに含まれていないと判断された場合に、前記所定のエレメンタリストリームに対応する前記読み出し制御手段の動作を止めることを特徴とする請求項１記載の多重化分離装置。
【請求項８】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離方法において、
バッファ制御手段が、前記多重化ストリームが供給されると、前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファの最新のデータ書き込み位置を指すデータ書き込みポインタに基づき、前記データ書き込みポインタの指す前記リングバッファの位置に供給された前記多重化ストリームを順次書き込むとともに、書き込みサイズに応じて前記データ書き込みポインタを更新し、
読み出し制御手段が、所定の前記エレメンタリストリームの読み出し要求を受けると、前記エレメンタリストリームごとの読み出し処理の起点となる読み出しポインタが格納される読み出しポインタ蓄積手段から要求された前記エレメンタリストリームに関する前記読み出しポインタを取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを更新する、
ことを特徴とする多重化分離方法。
【請求項９】
エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、
少なくとも第１及び第２のエレメンタリストリームを記憶するリングバッファと、
前記リングバッファから、前記第１のエレメンタリストリームを読み出し制御する第１の読み出し制御手段と、
前記リングバッファから、前記第２のエレメンタリストリームを読み出し制御する第２の読み出し制御手段と、
を具備し、
前記多重化ストリームのうちの一のエレメンタリストリームの読み出し要求に応じて、該エレメンタリストリームに対応する前記第１の読み出し制御手段または前記第２の読み出し制御手段により、前記第１のエレメンタリストリームまたは前記第２のエレメンタリストリームを読み出す、
ことを特徴とする多重化分離装置。
【請求項１０】
前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを格納するデータ先頭ポインタ蓄積手段と、
読み出しを行う前記エレメンタリストリームごとに、前記リングバッファからそれぞれの前記エレメンタリストリームの読み出し処理の起点となる位置を指す読み出しポインタを格納する読み出しポインタ蓄積手段とを備え、
前記第１の読み出し制御手段または前記第２の読み出し制御手段は、読み出し要求に応じて、前記読み出しポインタが指す読み出し起点から順に前記リングバッファに格納されているエレメンタリストリームパケットを解析し、読み出し要求された前記エレメンタリストリームを検索し、検索された前記エレメンタリストリームの読み出しを行うことを特徴とする請求項９記載の多重化分離装置。
【請求項１１】
前記第１の読み出し制御手段及び前記第２の読み出し制御手段は、前記エレメンタリストリームパケットに含まれる前記エレメンタリストリームの種別を識別する識別情報に基づいて符号化ビデオデータを検索することを特徴とする請求項１０記載の多重化分離装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は多重化分離装置および多重化分離方法に関し、特にエレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置および多重化分離方法に関する。
【背景技術】
【０００２】
従来、エレメンタリストリームが時分割多重化された多重化ストリームは、多重化分離装置によって多重分離された後、デコーダに送られて復号される。
図９は、従来の多重化分離装置の一例を示したブロック図である。
【０００３】
多重化分離装置５００は、例えばディスク装置に組み込まれ、ディスクから読み出された多重化ストリームを一時記憶し、ビデオ、オーディオおよび字幕の各エレメンタリストリームに分解してデコーダ部５６０に供給する。
【０００４】
多重化ストリーム蓄積部５１０は、ディスクから読み出されたデータなどの多重化ストリームを一時蓄積する。構文解析機能部５２０は、多重化ストリーム蓄積部５１０に蓄積された多重化ストリームからビデオストリーム、オーディオストリーム、字幕ストリームを分離し、ビデオストリーム蓄積部５３０、オーディオストリーム蓄積部５４０、字幕ストリーム蓄積部５５０に供給する。各エレメンタリストリーム蓄積部には、供給されたエレメンタリストリームが蓄積される。デコーダ部５６０には、ビデオデコーダ制御モジュール、オーディオデコーダ制御モジュールおよび字幕デコーダ制御モジュールが具備され、対応するビデオストリーム蓄積部５３０、オーディオストリーム蓄積部５４０、字幕ストリーム蓄積部５５０にデータが蓄積され始めると、蓄積された各エレメンタリストリームを要求し、供給されたデータのデコード処理を行う。すなわち、従来の多重化分離装置５００では、〔１〕外部から入力した多重化ストリームの多重化ストリーム蓄積部５１０へのコピー（データ移動）、〔２〕構文解析機能部５２０を介して多重化ストリーム蓄積部５１０から各エレメンタリストリーム蓄積部（ビデオストリーム蓄積部５３０、オーディオストリーム蓄積部５４０および字幕ストリーム蓄積部５５０）へのデータ移動、〔３〕各エレメンタリストリーム蓄積部から対応する各デコーダへのデータ供給（データ移動）の、３回のデータ移動が発生する。
【０００５】
ここで、各ストリーム蓄積部の構成について説明する。
図１０は、従来の多重化ストリーム蓄積部の構成図である。多重化ストリーム蓄積部５１０は、メモリ上に構築され、多重化ストリームを一時記憶させるバッファ５１０ａ、データ先頭ポインタを一時記憶させるデータ先頭ポインタ蓄積部５１１およびデータ書き込みポインタを一時記憶するデータ書き込みポインタ蓄積部５１２を具備する。そして、図示しないバッファ制御手段によって、データ先頭ポインタ蓄積部５１１およびデータ書き込みポインタ蓄積部５１２に格納されるポインタに基づき、多重化ストリームのバッファ５０１ａへの書き込みが制御される。
【０００６】
バッファ５１０ａは、例えば、リングバッファであり、入力されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形で、最新データを、いわば無限ループ状に記憶していく。データ先頭ポインタ蓄積部５１１は、バッファ５１０ａに記憶されたデータのうち、まだ読み出されていない最も古いデータが記憶されている位置を示すデータ先頭ポインタを記憶する。データ書き込みポインタ蓄積部５１２は、ディスクから読み出された最新のデータが書き込まれるバッファ５１０ａの位置を指すデータ書き込みポインタを記憶する。従って、データ先頭ポインタが指す位置から時計回りに、データ書き込みポインタが指す位置までの領域（図中斜線部）に記憶されているデータが有効なデータである。
【０００７】
図１１は、従来のビデオストリーム蓄積部の構成図である。ビデオストリーム蓄積部５３０は、メモリ上に構築され、ビデオストリームを一時記憶させるビデオバッファ５３０ａ、ビデオストリーム先頭ポインタを一時記憶させるビデオストリーム先頭ポインタ蓄積部５３１、ビデオストリーム書き込みポインタを一時記憶させるビデオストリーム書き込みポインタ蓄積部５３２および付属データを記憶するための付属情報ＦＩＦＯ（First In First Out）部５３３を具備する。そして、図示しないビデオバッファ制御手段によって、ビデオストリーム先頭ポインタ蓄積部５３１およびビデオストリーム書き込みポインタ蓄積部５３２に格納されるポインタに基づき、構文解析機能部５２０より供給されるビデオストリームのビデオバッファ５３０ａへの書き込みが制御される。
【０００８】
多重化ストリーム蓄積部５１０のバッファ５１０ａと同様、ビデオバッファ５３０ａは、リングバッファであり、構文解析機能部５２０から供給されるビデオストリームを無限ループ状に記憶していく。ビデオストリーム先頭ポインタ蓄積部５３１は、ビデオストリーム先頭ポインタを記憶し、ビデオストリーム書き込みポインタ蓄積部５３２は、ビデオストリーム書き込みポインタを記憶する。いずれのポインタが指す位置も時計回りに更新され、ビデオストリーム先頭ポインタが指す位置から時計回りに、ビデオストリーム書き込みポインタが指す位置までの領域（図中斜線部）に記憶されているデータが有効なデータである。また、付属情報ＦＩＦＯ部５３３には、構文解析機能部５２０で分離されたタイムスタンプなどの付属情報が記憶される。
【０００９】
オーディオストリーム蓄積部５４０および字幕ストリーム蓄積部５５０は、ビデオストリーム蓄積部５３０と同様の構成であり、リングバッファ、先頭ポインタと書き込みポインタの蓄積部および付属情報ＦＩＦＯ部を備える。
【００１０】
以上の構成の多重化分離装置５００におけるストリーム蓄積部間のデータの移動について説明する。なお、バッファ制御手段やビデオバッファ制御手段など、多重化分離装置５００の各バッファへの書き込み制御を行う制御手段は、図示しないＣＰＵ（Central Processing Unit）が、各制御手段の処理内容を記述したプログラムを実行することによって実現される。
【００１１】
まず、第１の多重化ストリーム蓄積部へのデータ移動について説明する。バッファ制御手段は、供給された多重化ストリームを多重化ストリーム蓄積部５１０のデータ書き込みポインタ蓄積部５１２に登録されたデータ書き込みポインタが指すバッファ５１０ａの位置から書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
【００１２】
次に、第２の多重化ストリーム蓄積部から各エレメンタリストリーム蓄積部へのデータ移動について、ビデオストリームの場合で説明する。構文解析機能部５２０は、バッファ５１０ａから多重化ストリームを読み出し、再生対象のエレメンタリストリームを識別（特定）するための識別情報として取得しているＩＤを使用して多重分離を行う。データ先頭ポインタ蓄積部５１１に登録されたデータ先頭ポインタが指すバッファ５１０ａの位置から読み出しを開始し、読み出したデータのサイズだけデータ先頭ポインタをインクリメントする。また、分離されたビデオストリームと、関連する付属情報はビデオストリーム蓄積部５３０に渡され、ビデオストリームはビデオバッファ５３０ａに一時的に蓄積される。この際、ビデオストリーム書き込みポインタ蓄積部５３２に登録されたビデオストリーム書き込みポインタが指すビデオバッファ５３０ａの位置から書き込み、書き込んだデータのサイズだけビデオストリーム書き込みポインタをインクリメントする。また、付属情報は、付属情報ＦＩＦＯ部５３３に一時的に蓄積される。同様に、分離されたオーディオストリームおよび付属情報は、オーディオストリーム蓄積部５４０に渡され、それぞれオーディオバッファと付属情報ＦＩＦＯ部に一時的に蓄積される。また、分離された字幕ストリームおよび付属情報は、字幕ストリーム蓄積部５５０に渡され、それぞれ字幕バッファと付属情報ＦＩＦＯ部に一時的に蓄積される。
【００１３】
次に、第３の各エレメンタリストリーム蓄積部から各デコーダへのデータ移動について、ビデオストリームの場合で説明する。ビデオストリーム蓄積部５３０のビデオバッファ５３０ａにデータが蓄積され始めると、デコーダ部５６０のビデオデコーダ制御手段がビデオバッファ５３０ａからのデータの読み出しを開始し、１つのビデオアクセスユニット、そのビデオアクセスユニットに付加されているタイムスタンプ、付加情報などを取得し、デコード処理を行う。なお、オーディオストリームおよび字幕ストリームの場合も同様の処理が行われる。
【００１４】
また、多重化ストリームから分離した各ストリームを専用のメモリに転送して記憶させずに、直接デコーダのバッファに転送するストリーム再生方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００３−６１０４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかし、従来の多重化分離装置および多重化分離方法では、データ移動によりＣＰＵの処理能力が低下するという問題点があった。
上記の説明のように、従来の多重化分離装置および多重化分離方法では、多重化ストリーム蓄積部５１０への書き込み、多重化ストリーム蓄積部５１０から各エレメンタリストリーム蓄積部へのデータ移動、各エレメンタリストリーム蓄積部からデコーダ部５６０へのデータ移動の３回のデータ移動が発生する。多重化分離装置５００の各処理手段はソフトウェアで構成されるが、ＣＰＵとメモリなどで構成されたコンピュータシステムではデータ移動時にＣＰＵの処理能力が大幅に低下し、全体の処理能力を低下させてしまう。
【００１６】
また、３回のデータ転送を行うために、それぞれのデータ転送用の読み出しポインタ及び書き込みポインタを用意しなければならず、多数のポインタを記憶するためのバッファが必要となるという問題点もある。さらに、ポインタの数が多いことによってバッファの制御が複雑になり、ＣＰＵに負荷がかかる。
【００１７】
本発明はこのような点に鑑みてなされたものであり、ＣＰＵにかかる負荷を軽減することによって、処理能力の向上を図る多重化分離装置および多重化分離方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明では上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、リングバッファ、データ先頭ポインタ蓄積手段、データ書き込みポインタ蓄積手段、バッファ制御手段、読み出しポインタ蓄積手段および読み出し制御手段を具備することを特徴とする多重化分離装置が提供される。
【００１９】
リングバッファは、多重化ストリームのデータを順次記憶し、記憶容量分を超えると最も古い多重化ストリームのデータに上書きして無限ループ状に記憶する。データ先頭ポインタ蓄積手段は、リングバッファの最も古いデータが記憶された位置を指すデータ先頭ポインタを格納し、データ書き込みポインタは、最新の多重化ストリームのデータを書き込む位置を指すデータ書き込みポインタを格納する。バッファ制御手段は、多重化ストリームが供給されると、データ書き込みポインタの指すリングバッファの位置から入力された多重化ストリームを書き込むとともに、書き込みサイズに応じてデータ書き込みポインタを更新してデータ書き込みポインタ蓄積手段に格納する。読み出しポインタ蓄積手段は、読み出しを行うエレメンタリストリームごとに、まだリングバッファより読み出していない対象のエレメンタリストリームのデータについての読み出し処理の起点を指す読み出しポインタを格納する。読み出し制御手段は、読み出し要求されたエレメンタリストリームの読み出しポインタを読み出しポインタ蓄積手段から取り出し、読み出しポインタの指すリングバッファの位置から対象のエレメンタリストリームを検索して読み出し、読み出しサイズに応じて対象のエレメンタリストリームの読み出しポインタとデータ先頭ポインタを更新する。
【００２０】
このような多重化分離装置によれば、バッファ制御手段は、多重化ストリームが供給されると、データ書き込みポインタ蓄積手段からデータ書き込みポインタを取り出し、データ書き込みポインタの指す位置から順次多重化ストリームのデータを格納して、データ書き込みポインタを更新する。このとき、データ先頭ポインタを参照し、データ先頭ポインタの指す位置を超えて書き込みを行わないようにする。読み出し制御手段は、所定のエレメンタリストリームの読み出し要求を受けると、そのエレメンタリストリームに関する読み出しポインタを読み出しポインタ蓄積手段から取り出し、その読み出しポインタの指す位置を起点として対象のエレメンタリストリームを検索し、検索されたエレメンタリストリームのデータを読み出して要求先へ転送する。そして、読み出しサイズに応じて読み出しポインタとデータ先頭ポインタを更新する。
【００２１】
また、上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離方法において、バッファ制御手段が、前記多重化ストリームが供給されると、前記多重化ストリームのデータを順次無限ループ状に記憶していくリングバッファの最新のデータ書き込み位置を指すデータ書き込みポインタに基づき、前記データ書き込みポインタの指す前記リングバッファの位置に供給された前記多重化ストリームを順次書き込むとともに、書き込みサイズに応じて前記データ書き込みポインタを更新し、読み出し制御手段が、所定の前記エレメンタリストリームの読み出し要求を受けると、前記エレメンタリストリームごとの読み出し処理の起点となる読み出しポインタが格納される読み出しポインタ蓄積手段から要求された前記エレメンタリストリームに関する前記読み出しポインタを取り出し、前記読み出しポインタによって指示された前記リングバッファの位置を起点として対象の前記エレメンタリストリームを検索して読み出し、読み出しサイズに応じて前記読み出しポインタを更新するとともに前記リングバッファの最も古い前記多重化ストリームのデータが記憶された位置を指すデータ先頭ポインタを更新する、ことを特徴とする多重化分離方法、が提供される。
【００２２】
このような多重化分離方法では、多重化ストリームが供給されると、リングバッファの最新のデータ書き込み位置を示すデータ書き込みポインタが指す位置から多重化ストリームが順次書き込まれる。書き込みは、データ先頭ポインタの指す位置を超えないように行われる。一方、多重化ストリームを構成する各エレメンタリストリームの読み出し要求があると、エレメンタリストリームごとに格納された読み出し処理の起点となるリングバッファの位置を指す読み出しポインタが取り出され、読み出しポインタの指す位置から要求された対象のエレメンタリストリームが検索される。対象のエレメンタリストリームのデータが検索されると、そのデータが読み出されて要求先へ転送される。そして、転送後に読み出しサイズに応じて読み出しポインタとデータ先頭ポインタが更新される。
【００２３】
また、上記課題を解決するために、エレメンタリストリームが時分割多重された多重化ストリームの分離処理を行う多重化分離装置において、少なくとも第１及び第２のエレメンタリストリームを記憶するリングバッファと、前記リングバッファから、前記第１のエレメンタリストリームを読み出し制御する第１の読み出し制御手段と、前記リングバッファから、前記第２のエレメンタリストリームを読み出し制御する第２の読み出し制御手段と、を具備し、前記多重化ストリームのうちの一のエレメンタリストリームの読み出し要求に応じて、該エレメンタリストリームに対応する前記第１の読み出し制御手段または前記第２の読み出し制御手段により、前記第１のエレメンタリストリームまたは前記第２のエレメンタリストリームを読み出す、ことを特徴とする多重化分離装置、が提供される。
【００２４】
このような構成の多重化分離装置では、リングバッファには、少なくとも第１及び第２のエレメンタリストリームを含む多重化ストリームが記憶される。多重化ストリームの一のエレメンタリストリームの読み出し要求を受けると、読み出し要求のあったエレメンタリストリームに対応する読み出し制御手段が起動し、該エレメンタリストリームの読み出しを行う。たとえば、第１の読み出し制御手段は、第１のエレメンタリストリームの読み出し要求を受けると、リングバッファに記憶される第１のエレメンタリストリームを検索して読み出す。第２の読み出し制御手段は、第２のエレメンタリストリームの読み出し要求を受けると、リングバッファに記憶される第２のエレメンタリストリームを検索して読み出す。
【発明の効果】
【００２５】
本発明の多重化分離装置および多重化分離方法では、時分割多重が施された多重化ストリームを無限ループ状にデータを記憶するリングバッファに順次記憶しておく。そして、多重化ストリームを構成するエレメンタリストリームのデータ要求があった場合、エレメンタリストリームごとの読み出しポインタを用いて、要求された対象のエレメンタリストリームのデータが格納されるリングバッファの位置を検索し、対象のエレメンタリストリームのデータを抽出して要求先に供給する。このように、多重化ストリームの分離処理を行いながら要求先にデータ転送することができるため、データの転送回数を削減することが可能となり、ＣＰＵの処理負荷を軽減させることができるという利点がある。
【００２６】
また、データ転送回数を削減することにより、データ転送に用いるポインタが少なくなり、バッファの容量を削減するとともに、バッファ制御が容易になる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態に適用される発明の概念図である。
【００２８】
本発明に係るデータ多重化分離装置は、エレメンタリストリーム１（以下、エレメンタリストリームをＥＳと表記する）と、ＥＳ２が時分割多重された多重化ストリームを無限ループ状に記憶していくリングバッファ１、多重化ストリームのリングバッファ１への書き込みを制御するバッファ制御手段２、リングバッファ１から各ＥＳを読み出す読み出し制御手段を構成するＥＳ１読み出し制御手段３とＥＳ２読み出し制御手段４、および各種管理情報蓄積部を具備する。管理情報蓄積部は、バッファ制御手段２がリングバッファ１へのデータ書き込み時に参照するデータ先頭ポインタ蓄積部１１とデータ書き込みポインタ蓄積部１２、および各ＥＳの読み出し制御手段が参照するＥＳ１読み出しポインタ蓄積部１３とＥＳ２読み出しポインタ蓄積部１４から成る。
【００２９】
リングバッファ１は、バッファ制御手段２によって書き込まれる多重化ストリームを無限ループ状に記憶する。すなわち、入力されたデータを順次記憶し、その記憶容量分のデータを記憶した後は、最も古いデータに上書きする形でデータを記憶していく。リングバッファ１は、データ先頭ポインタ蓄積部１１に格納されたデータ先頭ポインタとデータ書き込みポインタ蓄積部１２に格納されたデータ書き込みポインタによって管理されており、図１の場合では、データ書き込みポインタが指す位置は、リングバッファ１にデータが記憶されるごとに、バッファ制御手段２によって時計回りに更新される。また、データ先頭ポインタが指す位置は、リングバッファ１からの各ＥＳデータの読み出しに応じてＥＳ１読み出し制御手段３およびＥＳ２読み出し制御手段４によって時計回りに更新されていく。
【００３０】
バッファ制御手段２は、リングバッファ１への多重化ストリーム書き込み制御を行う。多重化ストリームが供給されると、バッファ制御手段２では、データ先頭ポインタ蓄積部１１とデータ書き込みポインタ蓄積部１２とからそれぞれデータ先頭ポインタとデータ書き込みポインタを取り出し、データ書き込みポインタの指すリングバッファ１の位置から順次データの書き込みを行う。そして、データ書き込みポインタを時計回りにデータサイズ分インクリメントして更新し、データ書き込みポインタ蓄積部１２に格納する。なお、データの書き込みがデータ先頭ポインタの指す位置を超えてしまう場合には、データ書き込みを遅延する。
【００３１】
ＥＳ１読み出し制御手段３およびＥＳ２読み出し制御手段４は、それぞれのＥＳをリングバッファ１から抽出して読み出す多重化分離機能を備える。
ＥＳ１読み出し制御手段３は、ＥＳ１の読み出し要求を受けると、ＥＳ１読み出しポインタ蓄積部１３からＥＳ１読み出しポインタを取り出し、ＥＳ１読み出しポインタの指すリングバッファ１の位置を起点としてＥＳ１を検索し、検索されたＥＳ１のデータの読み出しを行い、読み出したデータを要求先に転送する。ＥＳ１読み出しポインタは、読み出されたデータが記憶されたリングバッファ１の次の位置を指すように更新される。また、必要に応じて、データ先頭ポインタも更新する。例えば、ＥＳ１読み出しポインタの指す位置が他のＥＳの読み出しポインタより古いデータが記憶されている位置を指している場合、これより古いデータの読み出しを終了しているので、データ先頭ポインタをＥＳ１読み出しポインタと同じ位置に更新する。
【００３２】
ＥＳ２読み出し制御手段４は、ＥＳ２の読み出し要求を受けると、ＥＳ２読み出しポインタ蓄積部１４からＥＳ２読み出しポインタを取り出し、ＥＳ２読み出しポインタの指すリングバッファ１の位置を起点としてＥＳ２を検索し、検索されたＥＳ２のデータの読み出しを行い、読み出したデータを要求先に転送する。ＥＳ２読み出しポインタは、読み出されたデータが記憶された次の位置を指すように更新される。また、ＥＳ１読み出し制御手段３と同様に、必要に応じてデータ先頭ポインタも更新する。
【００３３】
データ先頭ポインタ蓄積部１１は、データ先頭ポインタを格納し、データ書き込みポインタ蓄積部１２はデータ書き込みポインタを格納する。ＥＳ１読み出しポインタ蓄積部１３は、ＥＳ１読み出しポインタを格納し、ＥＳ２読み出しポインタ蓄積部１４は、ＥＳ２読み出しポインタを格納する。
【００３４】
このような構成の多重化分離装置の動作および多重化分離方法について説明する。本発明に係る多重化分離装置では、入力された時分割多重化ストリームをリングバッファ１に書き込むとともに、読み出し要求に応じて、要求されたＥＳをリングバッファ１から抽出（分離）して出力する制御を行っている。
【００３５】
詳しくは、多重化分離装置に多重化ストリームが供給されると、バッファ制御手段２は、データ先頭ポインタ蓄積部１１とデータ書き込みポインタ蓄積部１２からそれぞれデータ先頭ポインタとデータ書き込みポインタを取り出し、データ書き込みポインタが指すリングバッファ１の位置から入力された多重化ストリームのデータを書き込む。図１の場合では、時計回りにデータが順次書き込まれていく。このとき、データ書き込みポインタがデータ先頭ポインタを追い越さないように、データの書き込みを制御する。書き込み終了後、データ書き込みポインタは、リングバッファ１のデータの書き込みが終了した次の位置を指すように更新される。
【００３６】
そして、デコーダなどから多重化ストリームを構成する各ＥＳ（図１の場合では、ＥＳ１とＥＳ２）の読み出し要求を受けると、要求されたＥＳに対応するＥＳ１読み出し制御手段３もしくはＥＳ２読み出し制御手段４が、それぞれの読み出しポインタを格納するＥＳ１読み出しポインタ蓄積部１３もしくはＥＳ２読み出しポインタ蓄積部１４からＥＳ１読み出しポインタもしくはＥＳ２読み出しポインタを取り出す。そして、ＥＳ１読み出しポインタもしくはＥＳ２読み出しポインタが指すリングバッファ１の位置を起点としてリングバッファ１を時計回りに検索し、対象のＥＳ１もしくはＥＳ２が検出されるとこのデータを読み出し、要求先へ転送する。読み出しが行われたＥＳ１読み出しポインタもしくはＥＳ２読み出しポインタは、読み出したサイズに応じて更新される。すなわち、読み出しが終了したリングバッファ１の次の位置（まだ読み出されていない最も古いＥＳを含むデータが格納されている領域）を指すように更新される。さらに、データ先頭ポインタは、ＥＳ１読み出しポインタもしくはＥＳ２読み出しポインタのうち、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
【００３７】
このような多重化分離装置によれば、各ＥＳの読み出し要求があった場合に多重化ストリームから対象のＥＳを分離して要求先に供給することができる。このため、予め多重化ストリームを分離してそれぞれのＥＳバッファに格納し、読み出し要求時にはバッファに格納されたＥＳを供給する場合に比べて、データの転送回数を少なくすることができる。すなわち、リングバッファへの書き込み、ＥＳバッファへの書き込みおよび読み出し要求先への転送の３回のデータ移動を、リングバッファの書き込みと読み出し要求先への転送の２回に削減する。この結果、ＣＰＵの負荷を軽減させ、処理能力の向上を図ることができる。また、データ転送に用いるポインタを削減することができ、ポインタを記憶するためのバッファ容量が少なくて済むとともに、ポインタの数が少ないため、バッファの制御が簡単になる。
【００３８】
以下、実施の形態をディスク装置に適用した場合を例に図面を参照して詳細に説明する。なお、ディスク装置の他、多重化ストリームの分離処理を行う、たとえば、ディジタル放送データの多重化ストリーム分離装置にも適用することができる。
【００３９】
図２は、本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。図２のディスク装置は、例えば、ディスクプレーヤや、ゲーム装置、カーナビゲーションシステムその他に適用することができる。また、多重化分離される多重化ストリームは、ビデオストリーム、オーディオストリームおよび字幕ストリームが時分割多重されている。
【００４０】
ディスク１０１は、例えば、ＤＶＤなどの光ディスク、あるいは光磁気ディスク、磁気ディスクなどであり、ビデオデータや、オーディオデータ、字幕データなどのコンテンツデータ、さらには、コンテンツデータを再生するのに必要なデータが記録されている。
【００４１】
ディスクドライブ１０２は、図示せぬインタフェースを内蔵し、そのインタフェースを通じて、ドライブインタフェース１１４に接続されている。ディスクドライブ１０２は、そこに装着されたディスク１０１を駆動し、ドライブインタフェース１１４からの読み出し等の命令に従って、ディスク１０１からデータを読み出して、ドライブインタフェース１１４に供給する等の処理を行う。
【００４２】
バス１１１には、ＣＰＵ１１２、メモリ１１３、ドライブインタフェース１１４、入力インタフェース１１５、ビデオデコーダ１１６、オーディオデコーダ１１７、ビデオ出力インタフェース１１８、オーディオ出力インタフェース１１９が接続されている。
【００４３】
ＣＰＵ１１２およびメモリ１１３は、コンピュータシステムを形成している。すなわち、ＣＰＵ１１２は、メモリ１１３に記憶されたプログラムである、後述するソフトウェアモジュール群を実行し、ディスク装置全体を制御するとともに、後述する各種の処理を行う。メモリ１１３は、ＣＰＵ１１２が実行するソフトウェアモジュール群を記憶している。また、メモリ１１３は、ＣＰＵ１１２の動作上必要なデータを一時記憶する。なお、メモリ１１３は、不揮発性メモリのみ、または揮発性メモリと不揮発性メモリとの組み合わせで構成することが可能である。また、図２のディスク装置に、ハードディスクを設け、そのハードディスクに、ＣＰＵ１１２が実行するソフトウェアモジュール群を記録（インストール）しておく場合には、メモリ１１３は、揮発性メモリのみで構成することが可能である。
【００４４】
ここで、ＣＰＵ１１２が実行するプログラム（ソフトウェアモジュール群）は、ディスク装置に内蔵されている記録媒体としてのメモリ１１３に予め記録しておく（記憶させておく）ことができる。あるいはまた、プログラムは、ディスク１０１、さらには、ディスク１０１以外のフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＭＯ(Magneto Optical)ディスク、磁気ディスク、メモリカードなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【００４５】
なお、プログラムは、メモリ１１３にあらかじめ記憶させておくこと、あるいは、上述したようなリムーバブル記録媒体からディスク装置にインストールすることができる。また、プログラムは、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、ディスク装置に無線で転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、ディスク装置に有線で転送し、ディスク装置では、そのようにして転送されてくるプログラムを、入力インタフェース１１５で受信し、内蔵するメモリ１１３にインストールすることができる。
【００４６】
さらに、プログラムは、１のＣＰＵにより処理されるものであっても良いし、複数のＣＰＵによって分散処理されるものであっても良い。
ドライブインタフェース１１４は、ＣＰＵ１１２の制御の下、ディスクドライブ１０２を制御し、これにより、ディスクドライブ１０２がディスク１０１から読み出したデータを、バス１１１を介して、ＣＰＵ１１２や、メモリ１１３、ビデオデコーダ１１６、オーディオデコーダ１１７などに供給する。
【００４７】
入力インタフェース１１５は、図示せぬキー（ボタン）や、リモコン（リモートコントローラ）がユーザに操作されることによって供給される信号を受信し、バス１１１を介して、ＣＰＵ１１２に供給する。なお、入力インタフェース１１５は、その他、通信インタフェースとしても機能する。
【００４８】
ビデオデコーダ１１６は、ディスクドライブ１０２によってディスク１０１から読み出され、ドライブインタフェース１１４およびバス１１１を介して供給される、ビデオデータの符号化データ（符号化ビデオデータ）をデコードし、その結果得られるビデオデータを、バス１１１を介して、ＣＰＵ１１２やビデオ出力インタフェース１１８に供給する。
【００４９】
オーディオデコーダ１１７は、ビデオデコーダ１１６と同様に、ディスク１０１から読み出されて供給される、オーディオデータの符号化データ（符号化オーディオデータ）をデコードし、その結果得られるオーディオデータを、バス１１１を介して、ＣＰＵ１１２やオーディオ出力インタフェース１１９に供給する。
【００５０】
ビデオ出力インタフェース１１８は、バス１１１を介して供給されるビデオデータに必要な処理を施し、ビデオ出力端子１２０から出力する。オーディオ出力インタフェース１１９は、バス１１１を介して供給されるオーディオデータに必要な処理を施し、オーディオ出力端子１２１から出力する。
【００５１】
ビデオ出力端子１２０は、図示せぬＣＲＴ(Cathode Ray Tube)や、液晶パネル等のビデオ出力装置に接続されており、ビデオ出力装置にビデオデータを供給する。オーディオ出力端子１２１は、図示せぬスピーカやアンプなどのオーディオ出力装置に接続されており、オーディオ出力装置にオーディオデータを供給する。なお、ディスク装置から、ビデオ出力装置とオーディオ出力装置へのビデオデータとオーディオデータの供給は、有線または無線のいずれによって行うことも可能である。
【００５２】
次に、ソフトウェアモジュール群の構成について説明する。図３は、本実施の形態のソフトウェアモジュール群の構成例を示している。
ＣＰＵ１１２が実行するソフトウェアモジュール群は、オペレーティングシステム（ＯＳ）２０１と、アプリケーションプログラムとしてのビデオコンテンツ再生プログラム２１０に大別される。
【００５３】
オペレーティングシステム２０１は、ディスク装置の電源が投入されると最初に起動し（ＣＰＵ１１２がオペレーティングシステム２０１を実行し）、初期設定等の必要な処理を行い、アプリケーションプログラムであるビデオコンテンツ再生プログラム２１０を呼び出す。
【００５４】
ビデオコンテンツ再生プログラム２１０は、スクリプト制御モジュール２１１、プレイヤ制御モジュール２１２、コンテンツデータ供給モジュール２１３、デコード制御モジュール２１４、バッファ制御モジュール２１５、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、字幕デコーダ制御モジュール２１８、グラフィックス処理モジュール２１９、ビデオ出力モジュール２２０、およびオーディオ出力モジュール２２１で構成されている。
【００５５】
スクリプト制御モジュール２１１は、ディスク１０１に記録されたスクリプトファイルに記述されているスクリプトプログラム（スクリプト）を解釈して実行する。
プレイヤ制御モジュール２１２は、ディスク１０１に記録されているメタデータ（データベース情報）等を参照し、コンテンツの再生に関する制御を行う。また、プレイヤ制御モジュール２１２は、スクリプト制御モジュール２１１や入力インタフェース１１５からの指示に従い、再生対象のストリームを切り替える。
【００５６】
コンテンツデータ供給モジュール２１３は、プレイヤ制御モジュール２１２の制御に従い、あるいは、バッファ制御モジュール２１５に蓄積されたデータの量に基づき、ディスク１０１からのコンテンツのデータやメタデータ等の読み出しを、オペレーティングシステム２０１に要求する。
【００５７】
なお、オペレーティングシステム２０１が、コンテンツデータ供給モジュール２１３からの要求に応じてディスク１０１から読み出したメタデータ等は、必要なモジュールに供給される。また、オペレーティングシステム２０１が、コンテンツデータ供給モジュール２１３からの要求に応じてディスク１０１から読み出したコンテンツのデータは、バッファ制御モジュール２１５に供給される。
【００５８】
デコード制御モジュール２１４は、プレイヤ制御モジュール２１２からの制御に従い、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、および字幕デコーダ制御モジュール２１８の動作を制御する。また、デコード制御モジュール２１４は、時刻を計時する計時部２１４Ａを内蔵し、ビデオデコーダ制御モジュール２１６の制御によって出力されるビデオデータの出力と、そのビデオデータと同期して出力されるべきデータ（出力データ）の出力、すなわち、ここでは、オーディオデコーダ制御モジュール２１７の制御によって出力されるオーディオデータの出力との同期を管理する。
【００５９】
バッファ制御モジュール２１５は、図２のメモリ１１３の記憶領域の一部であるバッファ２１５Ａを内蔵しており、そのバッファ２１５Ａに、コンテンツデータ供給モジュール２１３がオペレーティングシステム２０１に要求を行うことによってディスク１０１から読み出されたコンテンツのデータを一時記憶する。また、バッファ制御モジュール２１５は、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、または字幕デコーダ制御モジュール２１８の要求に従って、バッファ２１５Ａに記憶されたデータを、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、または字幕デコーダ制御モジュール２１８に供給する。バッファ制御モジュール２１５の詳細については、後述する。
【００６０】
ビデオデコーダ制御モジュール２１６は、ビデオアクセスユニット単位で、バッファ制御モジュール２１５のバッファ２１５Ａからビデオデータを符号化したデータ（ビデオ符号化データ）を読み出し、ビデオデコーダ１１６に供給し、デコード処理を実行させる。そして、デコードの結果得られるビデオデータを、グラフィックス処理モジュール２１９に供給する。ここで、ビデオアクセスユニットとは、例えば、ビデオデータの１ピクチャ（１フレームまたは１フィールド）分である。
【００６１】
オーディオデコーダ制御モジュール２１７は、オーディオアクセスユニット単位で、バッファ制御モジュール２１５のバッファ２１５Ａからオーディオデータを符号化したデータ（オーディオ符号化データ）を読み出し、オーディオデコーダ１１７に供給し、デコード処理を実行させる。そして、デコードの結果得られるオーディオデータを、オーディオ出力モジュール２２１に供給する。ここで、オーディオアクセスユニットとは、オーディオデータの所定のデータ量分（例えば、１ピクチャに同期して出力される分）である。
【００６２】
字幕デコーダ制御モジュール２１８は、内部に、図示せぬ字幕デコードソフトウェアを備えており、バッファ２１５Ａから読み出したデータをデコードし、そのデコードの結果得られる字幕データ（字幕の画像データ）を、グラフィックス処理モジュール２１９に供給する。ここで、字幕アクセスユニットとは、字幕データの所定のデータ量分（例えば、１ピクチャに同期して出力される分）である。本実施の形態では、字幕アクセスユニットのサイズは、例えば、その字幕アクセスユニットの先頭に記述されていることとする。
【００６３】
グラフィックス処理モジュール２１９は、プレイヤ制御モジュール２１２の制御（指示）に従い、字幕デコーダ制御モジュール２１８からの字幕データの拡大や縮小を行い、ビデオデコーダ制御モジュール２１６からのビデオデータと加算（オーバーレイ）する。さらに、グラフィックス処理モジュール２１９は、字幕データとの加算後のビデオデータのサイズ（画枠）を、ビデオ出力端子１２０に接続されたビデオ出力装置の表示画面にあわせるための拡大または縮小等を行い、その結果得られるビデオデータを、ビデオ出力モジュール２２０に出力する。
【００６４】
ビデオ出力モジュール２２０は、メモリ１１３の一部を排他的に占有してＦＩＦＯ２２０Ａ（バッファ）として使用し、グラフィックス処理モジュール２１９からのビデオデータを一時的に記憶し、また、そのＦＩＦＯ２２０Ａに記憶されたビデオデータを適宜読み出して、ビデオ出力端子１２０に出力する。
【００６５】
オーディオ出力モジュール２２１は、メモリ１１３の一部を排他的に占有してＦＩＦＯ２２１Ａ（バッファ）として使用し、オーディオデコーダ制御モジュール２１７（オーディオデコーダ１１７）からのオーディオデータを一時的に記憶し、また、そのＦＩＦＯ２２１Ａに記憶されたオーディオデータを適宜読み出して、オーディオ出力端子１２１に出力する。
【００６６】
以下、バッファ制御モジュール２１５について説明する。図４は、本実施の形態のバッファ制御モジュールの構成図である。
バッファ制御モジュール２１５は、バッファ２１５Ａにディスク１０１から読み出されたデータを一時記憶させるとともに、このデータを読み出して、図３のビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、または字幕デコーダ制御モジュール２１８に供給する。
【００６７】
このため、バッファ制御モジュール２１５は、内部モジュールとして、バッファ書き込み機能部３１０、ビデオ読み出し機能部３２０、オーディオ読み出し機能部３３０および字幕読み出し機能部３４０を有する。なお、図４では、便宜上、各機能部の参照する記憶部およびレジスタを各機能部を表すブロック内に示したが、これらの記憶部およびレジスタは各機能部が処理を実行するために必要な情報を一時格納する記憶領域で、各機能部内もしくはメモリ１１３上に確保される。
【００６８】
バッファ２１５Ａは、リングバッファであり、ディスク１０１から読み出されたデータを無限ループ状に記憶していく。
バッファ書き込み機能部３１０は、メモリ１１３の一部に用意されるデータ先頭ポインタ記憶部３１１とデータ書き込みポインタ記憶部３１２を用いて、双方の記憶部に記憶されたポインタの指すバッファ２１５Ａのアドレスを参照して、バッファ制御モジュール２１５に入力されるデータのバッファ２１５Ａへの書き込みを制御する。データ先頭ポインタ記憶部３１１は、バッファ２１５Ａに記憶されたデータのうち、まだ、バッファ２１５Ａから読み出されていない最も古いデータが記憶されている位置（アドレス）を指すデータ先頭ポインタを記憶し、データ書き込みポインタ記憶部３１２は、ディスク１０１から読み出された最新のデータが書き込まれるバッファ２１５Ａの位置（アドレス）を指す書き込みポインタを記憶する。そして、ディスク１０１から読み出されたデータをデータ書き込みポインタの指すバッファ２１５Ａの位置から順次書き込み、書き込み終了で書き込みポインタを更新する。  
【００６９】
ビデオ読み出し機能部３２０は、ビデオデコーダ制御モジュール２１６からの要求に応じて、ビデオ読み出しポインタ記憶部３２１に格納されたポインタの指すバッファ２１５Ａのアドレスを起点としてビデオストリーム（ビデオデータに関するエレメンタリストリーム）を検索し、読み出したビデオストリームをビデオデコーダ制御モジュール２１６に供給する。オーディオ読み出し機能部３３０は、オーディオデコーダ制御モジュール２１７からの要求に応じて、オーディオ読み出しポインタ記憶部３３１に格納されたポインタの指すバッファ２１５Ａのアドレスを起点としてオーディオストリーム（オーディオデータに関するエレメンタリストリーム）を検索し、読み出したオーディオストリームをオーディオデコーダ制御モジュール２１７に供給する。字幕読み出し機能部３４０は、字幕デコーダ制御モジュール２１８からの要求に応じて、字幕読み出しポインタ記憶部３４２に格納されたポインタの指すバッファ２１５Ａのアドレスを起点として字幕ストリーム（字幕データに関するエレメンタリストリーム）を検索し、読み出した字幕ストリームを字幕デコーダ制御モジュール２１８に供給する。
【００７０】
ここで、ディスク１０１には、例えば、ＭＰＥＧ２(Moving Picture Experts Group 2)の規格に準拠したプログラムストリーム（MPEG2-System Program Stream）が記録されており、バッファ２１５Ａには、ディスク１０１から読み出されたプログラムストリームが記憶される。このプログラムストリームは、ビデオストリームや、オーディオストリーム、字幕ストリーム等の１以上のエレメンタリストリームが時分割多重されている。
【００７１】
ビデオ読み出し機能部３２０は、プログラムストリームのデマルチプレクスの機能を有し、バッファ２１５Ａに記憶されたプログラムストリームから、ビデオストリームを分離して読み出す。同様に、オーディオ読み出し機能部３３０も、プログラムストリームのデマルチプレクスの機能を有し、バッファ２１５Ａに記憶されたプログラムストリームから、オーディオストリームを分離して読み出す。字幕読み出し機能部３４０も、プログラムストリームのデマルチプレクスの機能を有し、バッファ２１５Ａに記憶されたプログラムストリームから、字幕ストリームを分離して読み出す。
【００７２】
ここで、ビデオ読み出し機能部３２０は、図２のメモリ１１３の一部にビデオ読み出しポインタ記憶部３２１およびstream＿idレジスタ３２２を有している。
ビデオ読み出しポインタ記憶部３２１は、バッファ２１５Ａの、ビデオデコーダ制御モジュール２１６がまだ読み出していない領域の先頭位置（アドレス）を指すビデオ読み出しポインタを記憶し、ビデオ読み出し機能部３２０は、バッファ２１５Ａの、ビデオ読み出しポインタが指す位置を起点として、ビデオストリームを検索して読み出す。stream＿idレジスタ３２２は、バッファ２１５Ａに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すビデオストリームを識別（特定）するために後述するstream＿idを記憶する。
【００７３】
オーディオ読み出し機能部３３０は、図２のメモリ１１３の一部にオーディオ読み出しポインタ記憶部３３１、stream＿idレジスタ３３２、およびprivate＿stream＿idレジスタ３３３を有している。
【００７４】
オーディオ読み出しポインタ記憶部３３１は、バッファ２１５Ａの、オーディオデコーダ制御モジュール２１７がまだ読み出していない領域の先頭位置（アドレス）を指すオーディオ読み出しポインタを記憶し、オーディオ読み出し機能部３３０は、バッファ２１５Ａの、オーディオ読み出しポインタが指す位置を起点として、オーディオストリームを検索して読み出す。stream＿idレジスタ３３２とprivate＿stream＿idレジスタ３３３は、バッファ２１５Ａに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出すオーディオストリームを識別するために後述するstream＿idとprivate＿stream＿idを、それぞれ記憶する。
【００７５】
字幕読み出し機能部３４０は、図２のメモリ１１３の一部に字幕読み出し機能フラグ記憶部３４１、字幕読み出しポインタ記憶部３４２、stream＿idレジスタ３４３、およびprivate＿stream＿idレジスタ３４４を有している。
【００７６】
字幕読み出し機能フラグ記憶部３４１は、字幕読み出し機能フラグを記憶する。字幕読み出し機能フラグ記憶部３４１に記憶された字幕読み出し機能フラグが、例えば０である場合、字幕読み出し機能部３４０は機能動作せず、字幕読み出し機能フラグ記憶部３４１に記憶された字幕読み出し機能フラグが、例えば１である場合、字幕読み出し機能部３４０は機能する。このように、多重化ストリームに含まれないエレメンタリストリームの読み出し処理を停止させることにより、ＣＰＵに余分な処理を実行させない。字幕読み出しポインタ記憶部３４２は、バッファ２１５Ａの、字幕デコーダ制御モジュール２１８がまだ読み出していない領域の先頭位置（アドレス）を指す字幕読み出しポインタを記憶し、字幕読み出し機能部３４０は、バッファ２１５Ａの、字幕読み出しポインタが指す位置を起点として、字幕ストリームを検索して読み出す。stream＿idレジスタ３４３とprivate＿stream＿idレジスタ３４４は、バッファ２１５Ａに記憶されたプログラムストリームを解析し、そのプログラムストリームの中から読み出す字幕ストリームを識別するために後述するstream＿idとprivate＿stream＿idを、それぞれ記憶する。
【００７７】
ここで、ディスク１０１に記録されたデータのデータフォーマットについて説明する。
図５は、ディスクのディレクトリ構造を模式的に示している。
ディスク１０１のファイルシステムとしては、例えば、ＩＳＯ(International Organization for Standardization)-9660や、ＵＤＦ(Universal Disk Format:http://www.osta.org/specs/)などで規定されたファイルシステムが用いられており、ディスク１０１に記録されたデータのファイルはディレクトリ構造により階層的に管理されている。ここで、ファイルシステムは、上述したファイルシステムに限定されるものではない。
【００７８】
図５では、ファイルシステムの基点を示すルート(root)ディレクトリに、"VIDEO"ディレクトリが置かれ、"VIDEO"ディレクトリには、"CLIP"ディレクトリと、"STREAM"ディレクトリとの２つのディレクトリが置かれている。
【００７９】
"VIDEO"ディレクトリには、"CLIP"ディレクトリと"STREAM"ディレクトリとの２つのディレクトリの他に、"SCRIPT.DAT"ファイルと、"PLAYLIST.DAT"ファイルの２つのデータファイルが置かれている。
【００８０】
"SCRIPT.DAT"ファイルは、スクリプトプログラムが記述されたスクリプトファイルである。すなわち、"SCRIPT.DAT"ファイルには、ディスク１０１の再生形態をインタラクティブなものとするために使用するスクリプトプログラムが記述されている。この"SCRIPT.DAT"ファイルに記述されたスクリプトプログラムは、図３のスクリプト制御モジュール２１１によって解釈、実行される。
【００８１】
"PLAYLIST.DAT"ファイルには、ディスク１０１に記録されたビデオデータ等のコンテンツの再生手順が記述されたプレイリストが１以上格納されている。
"CLIP"ディレクトリには、１以上のクリップ情報ファイルが置かれ、"STREAM"ディレクトリには、１以上のクリップストリームファイルが置かれる。すなわち、図５では、"CLIP"ディレクトリには、３つのクリップ情報ファイル"00001.CLP"，"00002.CLP"，"00003.CLP"が置かれており、"STREAM"ディレクトリには、３つのクリップストリームファイル"00001.PS"，"00002.PS"，"00003.PS"が置かれている。
【００８２】
クリップストリームファイルには、ビデオデータ、オーディオデータ、字幕データなどの１以上のデータ（ストリーム）を圧縮、符号化して得られる１以上のエレメンタリストリームを時分割多重化したプログラムストリームが格納されている。
【００８３】
クリップ情報ファイルには、対応するクリップストリームファイルの性質等の、クリップストリームに関する（ファイル）メタデータが記述されている。
クリップストリームファイルとクリップ情報ファイルとは、１対１に対応しており、図５の場合では、"CLIP"ディレクトリに置かれた３つのクリップ情報ファイル"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()に関連付けるエレメンタリストリームが特定（識別）される。
【００８４】
ここで、図６は、エレメンタリストリームを識別するstream＿idおよびprivate＿stream＿idと、エレメンタリストリームとの関係を示している。
stream＿idは、MPEG2-System規格において規定されているのと同一のものであり、その値は、MPEG2-System規格において、エレメンタリストリーム（データ）の属性（種類）ごとに、あらかじめ決められている。従って、MPEG2-System規格で定義されている属性のエレメンタリストリームは、stream＿idだけで特定することができる。
【００８５】
本実施の形態では、MPEG2-System規格において規定されていない属性のエレメンタリストリームも扱うことが可能になっており、private＿stream＿idは、MPEG2-System規格において規定されていない属性のエレメンタリストリームを識別するための情報である。図６では、ＭＰＥＧで規定されている符号化（復号）方式でエンコードされたビデオのエレメンタリストリーム、ATRAC(Adaptive TRansform Acoustic Coding)方式でエンコードされたオーディオのエレメンタリストリーム（以下、適宜、ATRACオーディオストリームという）、LPCM(Linear Pulse Code Modulation)方式でエンコードされたオーディオのエレメンタリストリーム（以下、適宜、LPCMオーディオストリームという）、字幕のエレメンタリストリーム（以下、適宜、字幕ストリームという）の４つの属性のエレメンタリストリームについて、stream＿idおよびprivate＿stream＿idとの関係を示している。
【００８６】
MPEG2-System規格では、ＭＰＥＧで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームは、0xE0乃至0xEFの範囲の値を（0xは、その後に続く文字列が１６進数であることを表す）、エレメンタリストリームを識別するstream＿idとして用いて多重化することが規定されている。従って、ＭＰＥＧで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームについては、0xE0乃至0xEFの範囲の値のstream＿idで識別することができる１６本のビデオのエレメンタリストリームを、プログラムストリームに多重化することができる。
【００８７】
なお、ＭＰＥＧで規定されている符号化方式でエンコードされたビデオのエレメンタリストリームの識別は、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を採用し、さらに、図６に示すように、private＿stream＿idを用いて識別（特定）を行うこととしている。
【００８８】
次に、上記の説明のプログラムストリームの再生処理を行うディスク装置の動作について、バッファ制御モジュール２１５の処理を中心に説明する。以下の説明では、対象のクリップストリームファイル"00001.PS"に、１本のビデオストリーム、１本のＡＴＲＡＣオーディオストリームおよび２本の字幕ストリームが多重化されているとする。
【００８９】
ディスク１０１がディスクドライブ１０２に挿入され、オペレーティングシステム２０１を経由して通知されると、ビデオコンテンツ再生プログラム２１０による再生処理が開始される。
【００９０】
再生処理では、まず、再生前処理が行われ、プレイヤ制御モジュール２１２は、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"に格納されたプログラムストリームの、バッファ制御モジュール２１５への供給が開始される前に、バッファ制御モジュール２１５を初期化する。
【００９１】
「再生前処理」
具体的には、バッファ制御モジュール２１５では、データ先頭ポインタ記憶部３１１に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部３１２に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部３２１に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部３３１に記憶されるオーディオ読み出しポインタ、字幕読み出しポインタ記憶部３４２に記憶される字幕読み出しポインタに、同じ値が代入される。これにより、データ先頭ポインタ記憶部３１１に記憶されたデータ先頭ポインタと、データ書き込みポインタ記憶部３１２に記憶されたデータ書き込みポインタとは、バッファ制御モジュール２１５のバッファ２１５Ａの同一の位置を指す。これは、バッファ２１５Ａに、有効なデータが蓄積されていない状態を表す。
【００９２】
さらに、プレイヤ制御モジュール２１２は、再生対象のエレメンタリストリームを識別（特定）するため、識別情報として対象のクリップストリームファイル“00001.PS”に対応するクリップ情報ファイル”0001.CLP”からstream＿id、さらには、必要に応じて、private＿stream＿idを読み出し、バッファ制御モジュール２１５に供給する。すなわち、上述したように、再生対象のエレメンタリストリームのうちの、「ビデオストリーム」の属性のビデオストリームは、0xE0となっているstream＿idによって特定され、「オーディオストリーム」の属性のATRACオーディオストリームは、0xBDとなっているstream＿id、および0x00となっているprivate＿stream＿idによって特定され、「字幕ストリーム」の属性の字幕ストリームは、0xBDとなっているstream＿id、および0x80となっているprivate＿stream＿idによって特定される。プレイヤ制御モジュール２１２は、これらのstream＿idとprivate＿stream＿idを、バッファ制御モジュール２１５に供給する。 
【００９３】
バッファ制御モジュール２１５では、ビデオ読み出し機能部３２０が、プレイヤ制御モジュール２１２からの、ビデオストリームについての0xE0となっているstream＿idを、stream＿idレジスタ３２２に記憶させる。また、オーディオ読み出し機能部３３０が、プレイヤ制御モジュール２１２からの、0xBDとなっているstream＿idと、0x00となっているprivate＿stream＿idを、stream＿idレジスタ３３２とprivate＿stream＿idレジスタ３３３に、それぞれ記憶させる。さらに、字幕読み出し機能部３４０が、プレイヤ制御モジュール２１２からの、0xBDとなっているstream＿idと、0x80となっているprivate＿stream＿idを、stream＿idレジスタ３４３とprivate＿stream＿idレジスタ３４４に、それぞれ記憶させる。
【００９４】
プレイヤ制御モジュール２１２は、バッファ制御モジュール２１５の初期化として、さらに、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに応じた値の字幕読み出し機能フラグを、字幕読み出し機能フラグ記憶部３４１にセットする。すなわち、いまの場合、再生対象のエレメンタリストリームが多重化されているクリップストリームファイル"00001.PS"には、字幕ストリームが含まれるため、字幕読み出し機能部３４０を機能させるために、値が１の字幕読み出し機能フラグが、字幕読み出し機能フラグ記憶部３４１にセットされる。なお、再生対象のエレメンタリストリームが多重化されているクリップストリームファイルに字幕ストリームが含まれていない場合、字幕読み出し機能フラグ記憶部３４１には、値が０の字幕読み出し機能フラグがセットされる。この場合、字幕読み出し機能部３４０は機能しない（特に処理を行わない）。
【００９５】
「データ読み込み開始」
その後、プレイヤ制御モジュール２１２は、コンテンツデータ供給モジュール２１３を制御し、これにより、コンテンツデータ供給モジュール２１３は、オペレーティングシステム２０１の機能を使用して、再生対象のエレメンタリストリームが多重化されたプログラムストリームが格納されたクリップストリームファイルを読み出す。また、コンテンツデータ供給モジュール２１３は、ディスク１０１から読み出したデータを、バッファ制御モジュール２１５に供給するように指定する。これにより、ディスク１０１からの、クリップストリームファイル"00001.PS"に格納されたプログラムストリームの読み出しが開始され、そのプログラムストリームは、バッファ制御モジュール２１５に供給される。
【００９６】
バッファ制御モジュール２１５は、ディスク１０１から読み出されて供給されたプログラムストリームを、バッファ２１５Ａのデータ書き込みポインタ記憶部３１２のデータ書き込みポインタが指す位置に書き込み、書き込んだデータのサイズだけデータ書き込みポインタをインクリメントする。
【００９７】
以下、特に断らない限り、コンテンツデータ供給モジュール２１３は、バッファ制御モジュール２１５のバッファ２１５Ａに空きがあれば、ディスク１０１からデータを読み出し、バッファ制御モジュール２１５のバッファ２１５Ａに供給して記憶させることとする。従って、バッファ２１５Ａには、常時、十分なデータが蓄積されているとする。
【００９８】
「デコーダ制御開始」
以上のようにして、ディスク１０１からのデータの読み出しが開始され、そのデータがバッファ制御モジュール２１５のバッファ２１５Ａに蓄積され始めると、デコード制御モジュール２１４は、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、字幕デコーダ制御モジュール２１８を制御し、デコード動作の前段階として、バッファ２１５Ａからのデータの読み出しを開始させる。
【００９９】
「バッファ制御モジュールの処理」
次に、図７および図８を参照して、バッファ制御モジュール２１５の処理、すなわち、バッファ２１５Ａへのデータの書き込みと、バッファ２１５Ａからのデータの読み出しについて説明する。図７および図８は、バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図である。図７は、更新前のオーディオ読み出しポインタの指す位置を示し、図８は、更新後のオーディオ読み出しポインタの指す位置を示している。
【０１００】
バッファ制御モジュール２１５は、図４で説明したように、バッファ２１５Ａに対するデータの読み書きを行うための５つのポインタを有している。
すなわち、図７および図８に示すように、バッファ制御モジュール２１５は、データ先頭ポインタ記憶部３１１に記憶されるデータ先頭ポインタ、データ書き込みポインタ記憶部３１２に記憶されるデータ書き込みポインタ、ビデオ読み出しポインタ記憶部３２１に記憶されるビデオ読み出しポインタ、オーディオ読み出しポインタ記憶部３３１に記憶されるオーディオ読み出しポインタ、および字幕読み出しポインタ記憶部３４２に記憶される字幕読み出しポインタを有している。
【０１０１】
なお、図７および図８では、図３におけるビデオ読み出し機能部３２０のstream＿idレジスタ３２２、オーディオ読み出し機能部３３０のstream＿idレジスタ３３２およびprivate＿stream＿idレジスタ３３３、並びに字幕読み出し機能部３４０の字幕読み出し機能フラグ記憶部３４１、stream＿idレジスタ３４３、およびprivate＿stream＿idレジスタ３４４の図示は、省略してある。
【０１０２】
データ先頭ポインタ記憶部３１１に記憶されたデータ先頭ポインタは、バッファ２１５Ａに残る最も古いデータ（読み出す必要があるデータであって、まだ読み出されていないデータのうちの最も古いデータ）の位置を表す。データ書き込みポインタ記憶部３１２に記憶されたデータ書き込みポインタは、バッファ２１５Ａへのデータの書き込みの位置を示し、この位置は、バッファ２１５Ａで最も新しいデータが書き込まれる位置である。
【０１０３】
ビデオ読み出しポインタ記憶部３２１に記憶されたビデオ読み出しポインタは、バッファ２１５Ａから読み出すビデオストリームの位置を表す。また、オーディオ読み出しポインタ記憶部３３１に記憶されたオーディオ読み出しポインタは、バッファ２１５Ａから読み出すオーディオストリームの位置を表し、字幕読み出しポインタ記憶部３４２に記憶された字幕読み出しポインタは、バッファ２１５Ａから読み出す字幕ストリームの位置を表す。
【０１０４】
さらに、本実施の形態では、データ先頭ポインタは、図８に示すように、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように、常時更新されるものとする。ここで、図８では、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうち、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、そのオーディオ読み出しポインタと一致している。
【０１０５】
以上のようなデータ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタを有するバッファ制御モジュール２１５では、データ書き込みポインタは、ディスク１０１から新たなデータが読み出され、バッファ２１５Ａに書き込まれると、その書き込まれた新たなデータの直後の位置を指すように、右回りに更新される。
【０１０６】
さらに、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタは、バッファ２１５Ａから、ビデオストリーム、オーディオストリーム、または字幕ストリームが読み出されると、その読み出し量に応じた分だけ、それぞれ、右回りに更新される。ここで読み出し量に応じた分とは、実際に読み出したビデオ、オーディオ、字幕のデータに対応する部分と、読み出したデータの間に含まれており、読み出しの際には読み飛ばしを行った、他のストリームのデータの部分をあわせたものとなる。
【０１０７】
また、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されると、そのビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、最も古いデータの位置を指しているものと同一の位置を指すように更新される。
【０１０８】
ここで、バッファ制御モジュール２１５は、バッファ２１５Ａへのデータの書き込みについては、データ書き込みポインタがデータ先頭ポインタを追い越さないように、バッファ２１５Ａへのデータの書き込みを制御する。
【０１０９】
すなわち、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しない限り、バッファ制御モジュール２１５では、ディスク１０１から読み出されたデータが、データ書き込みポインタが指すバッファ２１５Ａの位置に書き込まれ、データ書き込みポインタが更新されていく。一方、データ書き込みポインタによるデータ先頭ポインタの追い越しが発生しそうになると、バッファ制御モジュール２１５では、コンテンツデータ供給モジュール２１３に対して、ディスク１０１からのデータの読み出しの停止（中断）が要求され、さらに、バッファ２１５Ａへのデータの書き込みが停止される。これにより、バッファ２１５Ａのオーバーフローを防止することができる。
【０１１０】
以上のように、ディスク１０１から読み出されたデータの、バッファ２１５Ａへの書き込みは、データ先頭ポインタとデータ書き込みポインタとの２つのポインタの位置関係だけで制御される。
【０１１１】
一方、バッファ制御モジュール２１５は、バッファ２１５Ａからのデータの読み出しについては、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタ、ひいては、データ先頭ポインタが、データ書き込みポインタを追い越さないように、バッファ２１５Ａからのデータの読み出しを制御する。
【０１１２】
すなわち、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しない限り、バッファ制御モジュール２１５では、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、または字幕デコーダ制御モジュール２１８からの要求に応じて、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指すバッファ２１５Ａの位置からデータの読み出し処理が開始され、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが更新されるとともに、データ先頭ポインタが更新される。一方、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタによるデータ書き込みポインタの追い越しが発生しそうになると、バッファ制御モジュール２１５では、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、または字幕デコーダ制御モジュール２１８からの要求が、例えば凍結され、十分なデータが用意されるまで待たされる。これにより、バッファ２１５Ａのアンダーフローを防止することができる。
【０１１３】
以上から、バッファ２１５Ａには、データ先頭ポインタが指す位置から、右回りに、データ書き込みポインタが指す位置までの範囲（図７および図８の斜線部）に、ビデオデコーダ制御モジュール２１６、オーディオデコーダ制御モジュール２１７、および字幕デコーダ制御モジュール２１８に供給すべきデータが記憶されており、さらに、その範囲内に、ビデオ読み出しポインタ、オーディオ読み出しポインタ、および字幕読み出しポインタは存在する。
【０１１４】
なお、上述の場合には、データ先頭ポインタは、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタが指している位置のうちの、最も古いデータの位置を指すように更新することとしたが、その他、データ先頭ポインタの更新は、例えば、その最も古いデータの位置から、所定の時間（例えば、１秒）分だけ過去のデータの位置を指すように行うことが可能である。
【０１１５】
すなわち、一般には、ビデオ読み出しポインタ、オーディオ読み出しポインタ、または字幕読み出しポインタのうちの、ビデオ読み出しポインタやオーディオ読み出しポインタが、最も古いデータの位置を指すことが多いと予想される。
【０１１６】
従って、データ先頭ポインタを、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から、例えば、１秒分だけ過去のデータの位置を指すように更新した場合、図７に示すように、ビデオ読み出しポインタまたはオーディオ読み出しポインタが指す最も古いデータの位置から過去１秒分のデータを、バッファ２１５Ａに残しておくことができる。ここで、図７では、オーディオ読み出しポインタが、最も古いデータの位置を指しており、データ先頭ポインタは、その位置から１秒分だけ過去のデータの位置を指している。
【０１１７】
以上のように、１秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新することにより、ディスク装置の応答性を向上させることができる。
すなわち、図８に示したように、オーディオ読み出しポインタが指している最も古いデータの位置を指すように、データ先頭ポインタを更新する場合には、例えば、リバース方向への特殊再生が指示されたときに、バッファ２１５Ａからの読み出しが終了したデータを、ディスク１０１から再度読み出す必要があるため、特殊再生が指示されてから、その特殊再生が可能となるまでに、ある程度の時間がかかる。
【０１１８】
これに対して、図７に示したように、オーディオ読み出しポインタが指している最も古いデータの位置から１秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合には、リバース方向への特殊再生が指示されたときに、その特殊再生を開始するのに必要なデータが、バッファ２１５Ａに記憶されている１秒分だけ過去のデータであれば、上述したようなディスク１０１からのデータの再読み出しを行わずに、即座に、特殊再生を開始することが可能となる。
【０１１９】
なお、オーディオ読み出しポインタが指している最も古いデータの位置から１秒分だけ過去のデータの位置を指すように、データ先頭ポインタを更新する場合であっても、特殊再生を開始するのに必要なデータが、バッファ２１５Ａに記憶されていないことがあり得る。この場合には、特殊再生を開始するのに必要なデータが、ディスク１０１から再度読み出される。
【０１２０】
次に、バッファ２１５Ａからのビデオストリーム、オーディオストリーム、字幕ストリームそれぞれの読み出しの詳細について説明する。
クリップストリームファイルの再生が開始されるときに、バッファ制御モジュール２１５においては、データ先頭ポインタ、データ書き込みポインタ、ビデオ読み出しポインタ、オーディオ読み出しポインタ、字幕読み出しポインタが、すべて、バッファ２１５Ａ上の同じ位置を指すように初期化される。
【０１２１】
そして、ディスク１０１からクリップストリームファイルに格納されたプログラムストリーム(MPEG2-System Program Stream)が読み出され、バッファ制御モジュール２１５に供給されると、バッファ制御モジュール２１５では、そのプログラムストリームが、バッファ２１５Ａのデータ書き込みポインタが指す位置に記憶されるとともに、データ書き込みポインタが、右回りに更新されていく。
【０１２２】
バッファ制御モジュール２１５では、ビデオ読み出し機能部３２０が、stream＿idレジスタ３２２に記録された情報を用いて、バッファ２１５Ａに記憶されたプログラムストリームの構文解析を行い、ビデオデコーダ制御モジュール２１６からの要求に応じて、バッファ２１５Ａに記憶されたプログラムストリームから、ビデオストリーム（ビデオアクセスユニット）を抽出（分離）して読み出し、ビデオデコーダ制御モジュール２１６に供給する。
【０１２３】
同様に、オーディオ読み出し機能部３３０も、stream＿idレジスタ３３２およびprivate＿stream＿idレジスタ３３３に記録された情報を用いて、バッファ２１５Ａに記憶されたプログラムストリームの構文解析を行い、オーディオデコーダ制御モジュール２１７からの要求に応じて、バッファ２１５Ａに記憶されたプログラムストリームから、オーディオストリーム（オーディオアクセスユニット）を抽出して読み出し、オーディオデコーダ制御モジュール２１７に供給する。字幕読み出し機能部３４０も、stream＿idレジスタ３４３およびprivate＿stream＿idレジスタ３４４に記録された情報を用いて、バッファ２１５Ａに記憶されたプログラムストリームの構文解析を行い、字幕デコーダ制御モジュール２１８からの要求に応じて、バッファ２１５Ａに記憶されたプログラムストリームから、字幕ストリーム（字幕アクセスユニット）を抽出して読み出し、字幕デコーダ制御モジュール２１８に供給する。
【０１２４】
このように、ビデオ読み出し機能部３２０、オーディオ読み出し機能部３３０および字幕読み出し機能部３４０によって、デマルチプレクスを行いながら各ＥＳをデコーダへ供給することができる。これにより、データの移動を削減することができ、ＣＰＵの処理能力を向上させることができる。
【０１２５】
また、従来例では、各エレメンタリストリーム蓄積部が担っていたバッファ機能が、バッファ制御モジュール２１５に移動するので、バッファ制御モジュール２１５のバッファ２１５Ａにはその分の容量追加が必要となる。例えば、ＭＰＥＧ２−Ｓｙｓｔｅｍ各エレメンタリストリーム蓄積部でのディレイは１秒以内などと規定されているため、１秒分の多重化ストリームが蓄積されるだけの容量が必要となる。すなわち、ＭＰＥＧ２−Ｓｙｓｔｅｍのプログラムストリームにおいては、ＳＴＤでのディレイの値（STD＿Delay）に、多重化レート（program＿mux＿rate）を乗じた積の分の容量を追加で持てばよいことになる。
【図面の簡単な説明】
【０１２６】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明を適用したディスク装置の一実施の形態のハードウェアの構成例を示すブロック図である。
【図３】本実施の形態のソフトウェアモジュール群の構成例を示している。
【図４】本実施の形態のバッファ制御モジュールの構成図である。
【図５】ディスクのディレクトリ構造を模式的に示している。
【図６】エレメンタリストリームを識別するstream＿idおよびprivate＿stream＿idと、エレメンタリストリームとの関係を示している。
【図７】バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図（ポインタ更新前）である。
【図８】バッファ制御モジュールのデータ読み出しによるポインタ更新の一例を示した図（ポインタ更新後）である。
【図９】従来の多重化分離装置の一例を示したブロック図である。
【図１０】従来の多重化ストリーム蓄積部の構成図である。
【図１１】従来のビデオストリーム蓄積部の構成図である。
【符号の説明】
【０１２７】
１……リングバッファ、２……バッファ制御手段、３……ＥＳ１読み出し制御手段、４……ＥＳ２読み出し制御手段、１１……データ先頭ポインタ蓄積部、１２……データ書き込みポインタ蓄積部、１３……ＥＳ１読み出しポインタ蓄積部、１４……ＥＳ２読み出しポインタ蓄積部
【図１】
2006164333.tif 000003
【図２】
2006164333.tif 000004
【図３】
2006164333.tif 000005
【図４】
2006164333.tif 000006
【図５】
2006164333.tif 000007
【図６】
2006164333.tif 000008
【図７】
2006164333.tif 000009
【図８】
2006164333.tif 000010
【図９】
2006164333.tif 000011
【図１０】
2006164333.tif 000012
【図１１】
2006164333.tif 000013