(57)【要約】【構成】ハードディスク３４上に形成されたＭＰＥＧファイルには、Ｉピクチャが間欠的に挿入されたＭＰＥＧ−ＰＳが循環的に書き込まれる。また、ハードディスク上に形成されたＩＮＤＥＸファイルには、少なくともＩピクチャを特定できるインデックスデータが循環的に書き込まれる。ＣＰＵ５４は、ＩＮＤＥＸファイルに格納されたインデックスデータに基づいてＭＰＥＧ−ＰＳの先頭部分からＩピクチャを検出し、検出したＩピクチャからＭＰＥＧ−ＰＳを再生する。【効果】書き込みが循環的に行われるＭＰＥＧファイルに格納されたＭＰＥＧ−ＰＳを先頭部分から再生することができる。【選択図】　図１
2004032009.tif 000002
【特許請求の範囲】
【請求項１】
第１ファイルに循環的に書き込まれたかつ基準画面が間欠的に定義された映像コンテンツを第２ファイルに循環的に書き込まれた前記基準画面のインデックス情報に基づいて再生するコンテンツ再生装置において、
前記インデックス情報に基づいて前記映像コンテンツの先頭部分から前記基準画面を特定する特定手段、および
前記特定手段によって特定された基準画面から前記映像コンテンツを再生する再生手段を備えることを特徴とする、コンテンツ再生装置。
【請求項２】
前記インデックス情報は前記映像コンテンツの先頭から各々の基準画面までのオフセット値を含み、
前記特定手段は、前記第１ファイルに残存する映像コンテンツの先頭位置を検出する先頭位置検出手段、前記第２ファイルから前記オフセット値を検出するオフセット値検出手段、および前記先頭位置検出手段によって検出された先頭位置と前記オフセット検出手段によって検出されたオフセット値とに基づいて前記基準画面の特定を行う基準画面特定手段を含む、請求項１記載のコンテンツ再生装置。
【請求項３】
前記映像コンテンツはデータ長が可変のコンテンツである、請求項１記載のコンテンツ再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンテンツ記録装置に関し、特にたとえばハードディスクビデオレコーダに適用され、第１ファイルに循環的に記録されたかつ基準画面が間欠的に定義された映像コンテンツを第２ファイルに循環的に記録された前記基準画面のインデックス情報に基づいて再生する、コンテンツ再生装置に関する。
【０００２】
【従来技術】
従来のこの種のハードディスクレコーダでは、受信した番組映像信号および番組音声信号がＭＰＥＧフォーマットに従ってビデオＥＳおよびオーディオＥＳ（ＥＳ：　Ｅｌｅｍｅｎｔａｒｙ　Ｓｔｒｅａｍ）に符号化され、ビデオＥＳおよびオーディオＥＳはパケット化によってビデオＰＥＳおよびオーディオＰＥＳ（ＰＥＳ：　Ｐａｃｋｅｔｉｚｅｄ　Ｅｌｅｍｅｎｔａｒｙ　Ｓｔｒｅａｍ）に変換される。ビデオＰＥＳおよびオーディオＰＥＳの多重化によってＭＰＥＧ−ＰＳ（ＰＳ：　Ｐｒｏｇｒａｍ　Ｓｔｒｅａｍ）が生成されると、当該ＭＰＥＧ−ＰＳを含むＭＰＥＧファイルがハードディスクに記録される。また、ビデオＥＳを形成するＩピクチャ，ＢピクチャおよびＰピクチャを特定できるように、各々のピクチャのインデックス情報（フレームサイズ，フレームタイプ，先頭からのオフセット，タイムスタンプ）が作成され、当該インデックス情報を含むインデックスファイルがハードディスクに記録される。
【０００３】
【発明が解決しようとする課題】
しかし、ＭＰＥＧフォーマットがＶＢＲ方式（ＶＢＲ：　Ｖａｒｉａｂｌｅ　Ｂｉｔ　Ｒａｔｅ）を採用する場合、ＭＰＥＧ−ＰＳのデータサイズは番組映像の性質に応じて変動する。これに対して、インデックス情報のデータサイズは固定である。したがって、ＭＰＥＧファイルおよびインデックスファイルのファイルサイズを予め規定し、ＭＰＥＧ−ＰＳおよびインデックス情報をＭＰＥＧファイル内およびインデックスファイル内でリング状に更新するようにすると、ＭＰＥＧ−ＰＳの先頭とインデックス情報の先頭とが互いに対応しなくなり、ＭＰＥＧ−ＰＳを先頭部分から再生できない可能性がある。
【０００４】
それゆえに、この発明の主たる目的は、ファイルに格納された映像コンテンツを先頭部分から再生することができる、コンテンツ再生装置を提供することである。
【０００５】
【課題を解決するための手段】
この発明は、第１ファイルに循環的に書き込まれたかつ基準画面が間欠的に定義された映像コンテンツを第２ファイルに循環的に書き込まれた基準画面のインデックス情報に基づいて再生するコンテンツ再生装置において、インデックス情報に基づいて映像コンテンツの先頭部分から基準画面を特定する特定手段、および特定手段によって特定された基準画面から映像コンテンツを再生する再生手段を備えることを特徴とする、コンテンツ再生装置である。
【０００６】
【作用】
第１ファイルには、基準画面が間欠的に定義された映像コンテンツが循環的に書き込まれている。また、第２ファイルには、基準画面のインデックス情報が循環的に書き込まれている。特定手段は、第２ファイルのインデックス情報に基づいて映像コンテンツの先頭部分から基準画面を特定し、再生手段は、特定された基準画面から映像コンテンツを再生する。
【０００７】
インデックス情報は、好ましくは、映像コンテンツの先頭から各々の基準画面までのオフセット値を含む。このとき、特定手段は、第１ファイルに残存する映像コンテンツの先頭位置を検出し、第２ファイルからオフセット値を検出し、そして検出された先頭位置とオフセット値とに基づいて映像コンテンツの先頭部分から基準画面を特定する。
【０００８】
【発明の効果】
この発明によれば、第２ファイルのインデックス情報に基づいて映像コンテンツの先頭部分から基準画面を特定するようにしたため、書き込みが循環的に行われる第１ファイルに格納された映像コンテンツを先頭部分から再生することができる。
【０００９】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００１０】
【実施例】
図１を参照して、この実施例のハードディスクビデオレコーダ１０は、アナログ受信機１２を含む。アナログ受信機１２は、アンテナ（図示せず）から高周波テレビジョン信号を受け、所望のチャネルのコンポジットビデオ信号およびオーディオ信号を出力する。コンポジットビデオ信号はＮＴＳＣデコーダ１４に与えられ、オーディオ信号はＡ／Ｄ変換器２２に与えられる。
【００１１】
ＮＴＳＣデコーダ１４は、与えられたコンポジットビデオ信号をデコードしてビデオデータを出力する。デコードされたビデオデータは、ＭＰＥＧビデオエンコーダ１６の符号化処理によってビデオＥＳに変換され、変換されたビデオＥＳは、パケット化回路２６のパケット化処理によってビデオＰＥＳに変換される。一方、Ａ／Ｄ変換器２０は、オーディオ信号にＡ／Ｄ変換を施し、オーディオデータをＭＰＥＧオーディオエンコーダ２２に与える。オーディオデータは、ＭＰＥＧオーディオエンコーダ２２の符号化によってオーディオＥＳに変換され、オーディオＥＳはパケット化回路２４のパケット化によってオーディオＰＥＳに変換される。
【００１２】
マルチプレクサ２６は、パケット化回路１８および２４から出力されたビデオＰＥＳおよびオーディオＰＥＳを多重してＭＰＥＧ−ＰＳを生成するとともに、ＭＰＥＧ−ＰＳに含まれるビデオフレームのインデックスデータを生成する。ＭＰＥＧ−ＰＳおよびインデックスデータは、ＭＰＥＧバッファ２８およびＩＮＤＥＸバッファ３０を介してＨＤＤ３２に与えられる。ＨＤＤ３２は、ＭＰＥＧ−ＰＳが格納されたＭＰＥＧファイルおよびインデックスデータが格納されたＩＮＤＥＸファイルをハードディスク３４上に作成する。こうして、所望の番組の映像と音声とがハードディスク３４に記録される。
【００１３】
ハードディスク３４に記録されたＭＰＥＧファイルからＨＤＤ３２によってＭＰＥＧ−ＰＳが再生されると、当該ＭＰＥＧ−ＰＳはＭＰＥＧバッファ３６を介してデマルチプレクサ３８に与えられる。デマルチプレクサ３８は、与えられたＭＰＥＧ−ＰＳからビデオＰＥＳパケットおよびオーディオＰＥＳパケットを抽出し、ビデオＰＥＳパケットを非パケット化回路４０に、オーディオＰＥＳパケットを非パケット化回路４６にそれぞれ与える。非パケット化回路４０および４６はそれぞれ、ビデオＰＥＳおよびオーディオＰＥＳをビデオＥＳおよびオーディオＥＳに変換し、変換したビデオＥＳおよびオーディオＥＳをＭＰＥＧビデオデコーダ４２およびＭＰＥＧオーディオデコーダ４８に与える。
【００１４】
ＭＰＥＧビデオデコーダ４２は、与えられたビデオＥＳをデコードしてビデオデータを生成し、生成したビデオデータをＮＴＳＣエンコーダ４４に与える。ビデオデータは、ＮＴＳＣエンコーダ４４によってコンポジットビデオ信号に変換され、変換されたコンポジットビデオ信号はテレビジョン受像機５２に出力される。この結果、所望の番組の再生映像が、テレビジョン受像機５２のモニタ画面に表示される。
【００１５】
ＭＰＥＧオーディオエンコーダ４８は、与えられたオーディオＥＳをデコードしてオーディオデータを生成する。生成されたオーディオデータはＤ／Ａ変換器５０によってアナログオーディオ信号に変換され、変換されたオーディオ信号はテレビジョン受像機５２に出力される。この結果、所望の番組の再生音声が、テレビジョン受像機５２のスピーカから出力される。
【００１６】
ＭＰＥＧ−ＰＳおよびインデックスデータは、図２に示すようなデータ構造を有する。図２によれば、ＭＰＥＧ−ＰＳは複数のパックによって形成され、各々のパックにはパックヘッダ，システムヘッダ，ビデオＰＥＳパケットおよびオーディオＰＥＳパケットが含まれる。
【００１７】
ＭＰＥＧフォーマットでは、Ｉピクチャ，ＢピクチャおよびＰピクチャの３つのフレームタイプが規定されており、１つのピクチャを形成するビデオＰＥＳパケットが異なるパックに跨ることはない。つまり、ある画面のＩピクチャを形成する複数のビデオＰＥＳパケットは同じパックに含まれ、ある画面のＢピクチャを形成する複数のビデオＰＥＳパケットは同じパックに含まれ、そしてある画面のＰピクチャを形成する複数のビデオＰＥＳパケットは同じパックに含まれる。
【００１８】
また、ＭＰＥＧ−ＰＳを形成する最初のパックにのみシステムヘッダを付加すれば、ＭＰＥＧフォーマットの条件は満たされる。しかし、この実施例のＭＰＥＧビデオエンコーダ２４はＶＢＲ方式を採用しており、ビットレートはピクチャ毎に変動する。このため、いずれのパックにもシステムヘッダが割り当てられ、このシステムヘッダにビットレート情報が埋め込まれる。
【００１９】
なお、オーディオＰＥＳパケットは、再生映像と再生音声との間で互いに同期がとられるように、ビデオＰＥＳパケットの間に間欠的に挿入される。
【００２０】
インデックスデータは、各々のピクチャに２４バイトずつ割り当てられる。この２４バイトによって、対応するピクチャのフレームサイズ値，ＭＰＥＧ−ＰＳの先頭からのオフセット値，フレームタイプおよび時間情報が表現される。
【００２１】
この実施例のハードディスクビデオレコーダ１０は、常時録画機能を有する。この機能をオン状態にすると、電源の投入と同時に番組録画が開始される。常時録画時にハードディスク３４上に作成されるＭＰＥＧファイルおよびＩＮＤＥＸファイルには、それぞれ“ＲＩＮＧＢＵＦＦ．ｍｐｇ”および“ＲＩＮＧＢＵＦＦ．ｎｄｘ”のファイル名が割り当てられる。
【００２２】
ただし、常時録画によって作成されるＭＰＥＧファイルのサイズは予め規定されており、取り込まれたＭＰＥＧ−ＰＳのサイズがこの規定サイズを超えると、先行するＭＰＥＧ−ＰＳは、後続のＭＰＥＧ−ＰＳによって上書きされる。つまり、ＭＰＥＧ−ＰＳのサイズが規定サイズを超えた時点で、ＭＰＥＧファイルはいわゆるリングファイルとなる。ＭＰＥＧファイルがリングファイルとなると、ＩＮＤＥＸファイルもまたリングファイルとなり、ＩＮＤＥＸファイルに書き込まれたインデックスデータは、後続のインデックスデータによって上書きされる。
【００２３】
常時録画が行われている途中で、操作パネル５６に設けられた録画開始キー５６ｃが操作されると、常時録画によって作成されたＭＰＥＧファイルとＩＮＤＥＸファイルとに終端揃え処理が施される。つまり、ＭＰＥＧファイルに格納されたＭＰＥＧ−ＰＳの末尾フレームとＩＮＤＥＸデータに格納されたインデックスデータの末尾２４ビットの対応関係が確保されるように、不足データがＭＰＥＧファイルまたはＩＮＤＥＸファイルに補充される。
【００２４】
終端揃え処理が完了すると、ＭＰＥＧファイルおよびＩＮＤＥＸファイルがクローズされ、各々のファイルのリング状態を特定するためのリング情報ファイルがハードディスク３４上に作成される。リング情報ファイルには、ファイル名“ＲＩＮＧＢＵＦＦ．ｌｏｏｐ”が割り当てられる。常時録画によって作成されたＭＰＥＧファイル，ＩＮＤＥＸファイルおよびリング情報ファイルは、正規保存のためにファイル名の変更を施される。具体的には、ＭＰＥＧファイルのファイル名が“ＲＩＮＧＢＵＦＦ．ｍｐｇ”から“ＳＡＮ＊＊＊＊．ｍｐｇ”に変更され、ＩＮＤＥＸファイルのファイル名が“ＲＩＮＧＢＵＦＦ．ｎｄｘ”から“ＳＡＮ＊＊＊＊．ｎｄｘ”に変更され、そしてリング情報ファイルのファイル名が“ＲＩＮＧＢＵＦＦ．ｌｏｏｐ”から“ＳＡＮ＊＊＊＊．ｌｏｏｐ”に変更される（＊＊＊＊：ファイル番号）。ファイル名の変更によって、ＭＰＥＧファイル，ＩＮＤＥＸファイルおよびリング情報ファイルの各々は、テンポラリファイルから正規ファイルに変化する。
【００２５】
ファイル名の変更が完了すると、正規録画が開始される。正規録画によって作成されるＭＰＥＧファイルおよびＩＮＤＥＸファイルには、正規ファイル名である“ＳＡＮ＊＊＊＊．ｍｐｇ”および“ＳＡＮ＊＊＊＊．ｎｄｘ”が割り当てられる。なお、正規録画によって作成されるＭＰＥＧファイルおよびＩＮＤＥＸファイルにおいては、ＭＰＥＧ−ＰＳおよびインデックスデータがリング状に上書きされることはない。
【００２６】
正規録画が開始された後に操作パネル５６の録画停止キー５６ｄが操作されると、正規録画によって作成されたＭＰＥＧファイルおよびＩＮＤＥＸファイルについて上述と同様の終端揃え処理が実行され、その後、当該ＭＰＥＧファイルおよびインデックスファイルがクローズされる。ファイルクローズが完了すると、録画モードは正規録画から常時録画に移行する。
【００２７】
なお、常時録画または正規録画の途中で、操作パネル５６に設けられたメニューキー５６ａによって任意のＭＰＥＧファイルが選択され、かつ再生キー５６ｂが操作されると、当該ＭＰＥＧファイルが録画処理と並行して再生される。
【００２８】
ＣＰＵ５４は、電源の投入によってシステム全体が起動したとき、ＲＯＭ５８に記憶された制御プログラムに基づいて、図３〜図１０に示すフロー図を処理する。なお、システム全体の起動によって、マルチプレクサ２６からＭＰＥＧ−ＰＳおよびインデックスデータが出力され、ＭＰＥＧ−ＰＳはＭＰＥＧバッファ２８に、インデックスデータはＩＮＤＥＸバッファ３０に、それぞれ蓄積されていく。
【００２９】
図３に示すステップＳ１では、常時録画用のファイルを作成するとともに、作成されたファイルをオープンする。具体的には、ファイル名が“ＲＩＮＧＢＵＦＦ．ｍｐｇ”のＭＰＥＧファイルとファイル名が“ＲＩＮＧＢＵＦＦ．ｎｄｘ”のＩＮＤＥＸファイルとをハードディスク３４上に新規に作成し、作成したＭＰＥＧファイルおよびＩＮＤＥＸファイルをオープンする。
【００３０】
続くステップＳ３では、常時録画用の変数を設定する。具体的には、ＭＰＥＧファイルに関して、書込位置を示す変数ＷＰｍ，ＭＰＥＧファイルの上書き回数（リング回数）を示す変数ＲＮＧｍ，および記録されたＭＰＥＧ−ＰＳのサイズを示す変数ＲＭＳを“０”に設定し、ファイルサイズを示す変数ＦＳｍを所定値ＴＲＳに設定し、そしてＭＰＥＧ−ＰＳの１回あたりの書き込みサイズを示す変数ＭＳを１２８Ｋバイトに設定する。また、ＩＮＤＥＸファイルについて、書込位置を示す変数ＷＰｉ，上書き回数を示す変数ＲＮＧｉ，およびファイルサイズを示す変数ＦＳｉを“０”に設定する。
【００３１】
なお、変数ＲＭＳは、詳しくは、ＭＰＥＧファイルに記録されたＭＰＥＧ−ＰＳの積算値である。したがって、数値は、書き込みに伴って増加し続け、ＭＰＥＧファイルの上書きによって減少することはない。
【００３２】
ステップＳ５ではＭＰＥＧファイル録画を行い、ステップＳ７ではＩＮＤＥＸファイル録画を行う。これによって、ＭＰＥＧバッファ２８に蓄積されたＭＰＥＧ−ＰＳおよびＩＮＤＥＸバッファ３０に蓄積されたインデックスデータがＨＤＤ３２に与えられ、ステップＳ１で作成されたＭＰＥＧファイルおよびＩＮＤＥＸファイルにそれぞれ書き込まれる。また、ＭＰＥＧ−ＰＳの書き込みに伴って、変数ＷＰｍおよびＲＭＳが更新され、かつ必要に応じて変数ＲＮＧｍが更新される。さらに、インデックスデータの書き込みに伴って、変数ＷＰｉが更新され、かつ必要に応じて変数ＲＮＧｉおよびＦＳｉが更新される。
【００３３】
ステップＳ９では、オペレータによって任意に選択されたＭＰＥＧファイルの再生を行う。ここで、選択可能なＭＰＥＧファイルには、現時点で常時録画が行われているＭＰＥＧファイルも含まれる。ステップＳ１１では録画開始キー５６ｃの操作の有無を判別し、ＮＯであればステップＳ５〜Ｓ９の処理を繰り返すが、ＹＥＳであればステップＳ１３〜Ｓ２７で終端揃え処理を実行する。
【００３４】
まずステップＳ１３でＩＮＤＥＸファイルに格納された最新２４バイトのインデックスデータからオフセット値およびフレームサイズ値を取得する。この最新２４バイトは、変数ＷＰｉに先行する２４バイトである。また、取得されるオフセット値は、取り込まれたＭＰＥＧ−ＰＳの先頭から最新２４バイトのインデックスデータに対応するピクチャの先頭までの距離であり、取得されるフレームサイズ値は、最新２４バイトのインデックスデータに対応するピクチャのサイズである。ステップＳ１５ではこのようなオフセット値およびフレームサイズ値を加算して加算値ＣＲＭＳを求め、ステップＳ１７およびＳ１９では加算値ＣＲＭＳを変数ＲＭＳと比較する。
【００３５】
変数ＲＭＳはＭＰＥＧファイルに記録されたＭＰＥＧ−ＰＳの積算値であり、ＭＰＥＧファイルに書き込まれた最終フレームとＩＮＤＥＸファイルに書き込まれた最新２４バイトのインデックスデータとの対応関係が確保されると、加算値ＣＲＭＳと変数ＲＭＳとが互いに一致する。換言すれば、変数ＲＭＳが加算値ＣＲＭＳを下回るときは図１６（Ａ）に示すようにＭＰＥＧ−ＰＳが不足し、変数ＲＭＳが加算値ＣＲＭＳを上回るときは図１６（Ｂ）に示すようにインデックスデータが不足する。
【００３６】
このため、ＲＭＳ＞ＣＲＭＳの条件が成立すれば、ステップＳ１９でＮＯと判断し、ステップＳ２１でＩＮＤＥＸファイル録画を実行する。ステップＳ２１の処理が完了すると、ステップＳ１３に戻る。
【００３７】
一方、ＲＭＳ＜ＣＲＭＳの条件が成立すれば、ステップＳ１９でＹＥＳと判断し、ステップＳ２３で加算値ＣＲＭＳと変数ＲＭＳとの差分値“ＣＲＭＳ−ＲＭＳ”が１２８Ｋバイト未満であるかどうか判断する。そして、１２８Ｋバイト以上であればそのままステップＳ２７に進むが、１２８Ｋバイト未満であれば、ステップＳ２５で変数ＭＳを差分値“ＣＲＭＳ−ＲＭＳ”に更新してからステップＳ２７に進む。ステップＳ２７ではＭＰＥＧファイル録画処理を行い、処理が完了するとステップＳ１７に戻る。
【００３８】
かかる処理によって不足データが補充され、変数ＲＭＳが加算値ＣＲＭＳと一致すると、ステップＳ１７からステップＳ２９に進み、図１に示すＭＰＥＧビデオエンコーダ１６およびＭＰＥＧオーディオエンコーダ２２を停止する。この停止処理の結果、マルチプレクサ２６からのＭＰＥＧ−ＰＳの出力が中断される。
【００３９】
ステップＳ３１およびＳ３３では常時録画用のＭＰＥＧファイルおよびＩＮＤＥＸファイルをクローズする。ステップＳ３５では、ＭＰＥＧファイルおよびＩＮＤＥＸファイルがリングファイルである場合に、上述の変数ＦＳｍ，ＷＰｍ，ＲＮＧｍ，ＦＳｉ，ＷＰｉおよびＲＮＧｉが格納されたリング情報ファイルを作成する。作成されたリング情報ファイルには“ＲＩＮＧＢＵＦＦ．ｌｏｏｐ”のファイル名が割り当てられ、このリング情報ファイルはハードディスク３４に保存される。
【００４０】
ステップＳ３７では、常時録画用のＭＰＥＧファイルおよびＩＮＤＥＸファイルについて、ファイル名を“ＲＩＮＧＢＵＦＦ．ｍｐｇ”から“ＳＡＮ＊＊＊＊．ｍｐｇ”に変更するとともに、“ＲＩＮＧＢＵＦＦ．ｎｄｘ”から“ＳＡＮ＊＊＊＊．ｎｄｘ”に変更する。さらに、リング情報ファイルが作成されたときは、当該リング情報ファイルのファイル名を“ＲＩＮＧＢＵＦＦ．ｌｏｏｐ”から“ＳＡＮ＊＊＊＊．ｌｏｏｐ”に変更する。常時録画によって得られたＭＰＥＧファイル，ＩＮＤＥＸファイルおよびリング情報ファイルは、ファイル名の変更によってハードディスク３４に正規に保存されることとなる。
【００４１】
ステップＳ３９では正規録画用のファイルを作成し、かつ作成されたファイルをオープンする。具体的には、ファイル名が“ＳＡＮ＊＊＊＊．ｍｐｇ”のＭＰＥＧファイルとファイル名が“ＳＡＮ＊＊＊＊．ｎｄｘ”のＩＮＤＥＸファイルとをハードディスク３４上に新規に作成し、作成したＭＰＥＧファイルおよびＩＮＤＥＸファイルをオープンする。なお、新規に作成されたＭＰＥＧファイルおよびＩＮＤＥＸファイルのファイル名には、新規のファイル番号が割り当てられる。
【００４２】
続くステップＳ４１では、正規録画用の変数を設定する。具体的には、ＭＰＥＧファイルに関して、変数ＷＰｍ，ＲＮＧｍおよびＲＭＳを“０”に設定し、変数ＦＳｍを所定値ＲＲＳに設定し、そして変数ＭＳを１２８Ｋバイトに設定する。また、ＩＮＤＥＸファイルについて、変数ＷＰｉおよびＲＮＧｉを“０”に設定する。
【００４３】
ステップＳ３における変数設定と異なるのは、所定値ＴＲＳに代えて所定値ＲＲＳが変数ＦＳｍとして設定される点、およびＩＮＤＥＸファイルのサイズを示す変数ＦＳｉが不定とされる点である。なお、所定値ＲＲＳは所定値ＴＲＳよりも格段に大きく、正規録画用のＭＰＥＧファイルがリングファイルとなることはない。
【００４４】
ステップＳ４３〜Ｓ４７では、上述のステップＳ５〜Ｓ９と同様の処理を実行する。ただし、ステップＳ４３におけるＭＰＥＧ−ＰＳの書き込み先およびステップＳ４５におけるインデックスデータの書き込み先は、ステップＳ３９で作成されたＭＰＥＧファイルおよびＩＮＤＥＸファイルである。
【００４５】
ステップＳ４９では録画停止キー５６ｄの操作の有無を判別し、ＮＯであればステップＳ４３〜Ｓ４７の処理を繰り返す。これに対して、ＹＥＳと判断されれば、ステップＳ５１〜Ｓ６５で終端揃え処理を実行する。ただし、ステップＳ５１〜Ｓ６５の処理は、不足データの書き込み先が正規録画用のＭＰＥＧファイルまたはＩＮＤＥＸファイルである点を除き、上述のステップＳ１３〜Ｓ２７と同様であるため、重複した説明は省略する。
【００４６】
終端揃え処理が完了すると、ステップＳ６７およびＳ６９で正規録画用のＭＰＥＧファイルおよびＩＮＤＥＸファイルをクローズし、常時録画を再開すべくステップＳ１に戻る。
【００４７】
なお、前回の常時録画によって作成されたＭＰＥＧファイルおよびＩＮＤＥＸファイルはファイル名の変更によって正規に保存されたため、今回の常時録画用のＭＰＥＧファイルおよびＩＮＤＥＸファイルはステップＳ１で新規に作成される。
【００４８】
図３に示すステップＳ５または図６に示すステップＳ４３のＭＰＥＧファイル録画処理は、図８に示すフロー図に従う。まずステップＳ７１でＭＰＥＧバッファ３０に蓄積されたＭＰＥＧ−ＰＳのサイズを変数ＭＳと比較し、当該サイズが変数ＭＳ以上となったときにＹＥＳと判断する。ステップＳ７３およびＳ９１では、変数ＭＳおよびＷＰｍの加算値を変数ＦＳｍと比較する。具体的には、ＷＰｍ＋ＭＳ＞ＦＳｍの条件が成立するかどうかをステップＳ７３で判別し、ＷＰｍ＋ＭＳ＝ＦＳｍの条件が成立するかどうかをステップＳ９１で判別する。
【００４９】
図１３（Ａ）に示すように、変数ＭＳに相当するサイズのＭＰＥＧ−ＰＳをＭＰＥＧファイルの変数ＷＰｍに対応する位置以降に格納できないとき、ＷＰｍ＋ＭＳ＞ＦＳｍの条件が成立する。このときは、図８に示すステップＳ７３からステップＳ７５に進み、変数ＷＰｍに対応する位置から末尾位置までのファイルサイズＴＳｍ（＝ＦＳｍ−ＷＰｍ）を算出する。ステップＳ７７では算出されたサイズＴＳｍに相当するＭＰＥＧ−ＰＳをＭＰＥＧファイルの変数ＷＰｍに対応する位置以降に書き込み、ステップＳ７９では変数ＲＭＳに変数ＴＳｍを加算し、そしてステップＳ８１では変数ＷＰｍを“０”に設定する。ＭＰＥＧファイルの記録状態および変数ＷＰｍの位置は、図１３（Ａ）から図１３（Ｂ）に遷移する。
【００５０】
ステップＳ８３では変数ＲＮＧｍをインクリメントし、ステップＳ８５では“ＭＳ−ＴＳｍ”に相当するサイズのＭＰＥＧ−ＰＳをＭＰＥＧファイルに書き込む。変数ＷＰｍは“０”であるため、当該ＭＰＥＧ−ＰＳはＭＰＥＧファイルの先頭から上書きされる。ステップＳ８７では変数ＲＭＳに“ＭＳ−ＴＳｍ”を加算し、ステップＳ８９では変数ＷＰｍに“ＭＳ−ＴＳｍ”を加算する。ＭＰＥＧファイルの記録状態および変数ＷＰｍの位置は、図１３（Ｂ）から図１３（Ｃ）に遷移する。ステップＳ８９の処理が完了すると、上階層のルーチンに復帰する。
【００５１】
図１４（Ａ）に示すように、変数ＭＳに相当するサイズが変数ＷＰｍに対応するファイル位置からファイル末尾までの容量に等しいとき、ＷＰｍ＋ＭＳ＝ＦＳｍの条件が成立する。このときは、図８に示すステップＳ９１からステップＳ９３に進み、変数ＭＳに相当するサイズのＭＰＥＧ−ＰＳをＭＰＥＧファイルの変数ＷＰｍに対応する位置以降に書き込む。ステップＳ９５では変数ＲＭＳに変数ＭＳを加算し、ステップＳ９７では変数ＷＰｍを“０”とし、そしてステップＳ９９では変数ＲＮＧｍをインクリメントする。ＭＰＥＧファイルの記録状態および変数ＷＰｉの位置は、図１４（Ａ）から図１４（Ｂ）に遷移する。ステップＳ９９の処理が完了すると、上階層のルーチンに復帰する。
【００５２】
図１５（Ａ）に示すように、変数ＭＳに相当するサイズが変数ＷＰｍに対応するファイル位置からファイル末尾までの容量よりも小さいときは、ＷＰｍ＋ＭＳ＞ＦＳｍおよびＷＰｍ＋ＭＳ＝ＦＳｍのいずれの条件も成立しない。このときはステップＳ９１でＮＯと判断し、ステップＳ１０１およびＳ１０３でステップＳ９３およびＳ９５と同様の処理を実行し、ステップＳ１０５で変数ＷＰｍに変数ＭＳを加算する。ＭＰＥＧファイルの記録状態は、図１５（Ａ）から図１５（Ｂ）に遷移する。ステップＳ１０５の処理が完了すると、上階層のルーチンに復帰する。
【００５３】
なお、所定値ＲＲＳは、上述のように所定値ＴＲＳよりも格段に大きい。このため、図６に示すステップＳ４３から図８に示すサブルーチンに移行したときは、ステップＳ１０１〜Ｓ１０５が常に実行され、変数ＲＮＧｍが更新されることはない。
【００５４】
図３に示すステップＳ７または図６に示すステップＳ４５のＩＮＤＥＸファイル録画処理は、図９に示すサブルーチンに従う。まずステップＳ１１１およびＳ１１３で変数ＲＮＧｍの値を判別する。変数ＲＮＧｍが“０”であれば、ステップＳ１４１に進み、ＩＮＤＥＸバッファ３０に蓄積されたインデックスデータのサイズＩＳを取得し、ステップＳ１４３で当該サイズＩＳに相当するインデックスデータをＩＮＤＥＸファイルの変数ＷＰｉに対応する位置以降に書き込み、そしてステップＳ１４５で変数ＷＰｉにサイズＩＳを加算する。ステップＳ１４５の処理が完了すると、上階層のルーチンに復帰する。
【００５５】
変数ＲＮＧｍが“１”であれば、ステップＳ１１３でＹＥＳと判断し、ステップＳ１１５における変数ＦＳｉの更新処理を経てステップＳ１１７に進む。変数ＲＮＧｍが“２”以上であれば、ステップＳ１１３からステップＳ１１７に移行する。
【００５６】
ステップＳ１１５では、具体的には、“ＷＰｉ＋３６０バイト”を変数ＦＰｉとして設定する。変数ＲＮＧｍが“１”を示すのは、ＭＰＥＧファイルが１回目の上書きを施されるときであり、このとき、ＩＮＤＥＸファイルのサイズを“ＷＰｉ＋３６０バイト”に規定する。１フレームに相当するインデックスデータのサイズは２４バイトであるため、ステップＳ１１５の処理によって、現時点の変数ＷＰｉに１５フレーム（＝１ＧＯＰ）分のマージンを加算したサイズが、ＩＮＤＥＸファイルのサイズとなる。
【００５７】
ステップＳ１１７以降では、上述のＭＰＥＧ録画処理と同様の処理を行う。具体的には、ステップＳ１１９でＷＰｉ＋ＩＳ＞ＦＳｉの条件が成り立つかどうか判断し、ステップＳ１３３でＷＰｉ＋ＩＳ＝ＦＳｉの条件が成り立つかどうか判断し、各々の判断結果に応じて異なるステップに進む。
【００５８】
ステップＳ１１９でＹＥＳと判断されると、ステップＳ１２１で変数ＷＰｉに対応する位置から末尾位置までのファイルサイズＴＳｉ（＝ＦＳｉ−ＷＰｉ）を算出する。ステップＳ１２３では算出されたサイズＴＳｉに相当するインデックスデータをＩＮＤＥＸファイルの変数ＷＰｉに対応する位置以降に書き込み、ステップＳ１２５では変数ＷＰｉを“０”に設定する。ステップＳ１２７では変数ＲＮＧｉをインクリメントし、ステップＳ１２９では“ＩＳ−ＴＳｉ”に相当するサイズのインデックスデータをＩＮＤＥＸファイルに書き込む。変数ＷＰｉは“０”であるため、当該インデックスデータはＩＮＤＥＸファイルの先頭から上書きされる。ステップＳ１３１では変数ＷＰｉに“ＩＳ−ＴＳｉ”を加算し、その後上階層のルーチンに復帰する。
【００５９】
ステップＳ１３３でＹＥＳと判断されるとステップＳ１３５に進み、変数ＩＳに相当するサイズのインデックスデータをＩＮＤＥＸファイルの変数ＷＰｉに対応する位置以降に書き込む。ステップＳ１３７では変数ＷＰｉを“０”とし、ステップＳ１３９では変数ＲＮＧｍをインクリメントする。ステップＳ１３９の処理が完了すると、上階層のルーチンに復帰する。
【００６０】
ステップＳ１３３でＮＯと判断されると、ステップＳ１４３で変数ＩＳに相当するサイズのインデックスデータをＩＮＤＥＸファイルの変数ＷＰｉに対応する位置以降に書き込む。その後、ステップＳ１４５で変数ＷＰｉにサイズＩＳを加算し、上階層のルーチンに復帰する。
【００６１】
なお、所定値ＲＲＳは所定値ＴＲＳよりも格段に大きく、変数ＲＮＧｍが“０”以外の値をとることはないため、図６に示すステップＳ４５から図９に示すサブルーチンに移行したときは、ステップＳ１４１〜Ｓ１４５の処理が常に実行される。
【００６２】
図５に示すステップＳ３５のリング情報ファイル保存処理は、図１０に示すサブルーチンに従う。まずステップＳ１５１で変数ＲＮＧｍを“０”と比較し、ＲＮＧｍ＝０であれば、リング情報ファイルを作成することなく、上階層のルーチンに復帰する。一方、ＲＮＧｍ＞０であれば、ステップＳ１５３に進み、ファイル名が“ＲＩＮＧＢＵＦＦ．ｌｏｏｐ”のリング情報ファイルを作成し、かつ当該リング情報ファイルをオープンする。
【００６３】
ステップＳ１５５ではＭＰＥＧファイルに関連する変数ＦＳｍ，ＷＰｍおよびＲＮＧｍをリング情報ファイルに書き込み、ステップＳ１５７ではＩＮＤＥＸファイルに関連する変数ＦＳｉ，ＷＰｉおよびＲＮＧｉを同じリング情報ファイルに書き込む。変数書き込みが完了すると、ステップＳ１５９でリング情報ファイルをクローズし、上階層のルーチンに復帰する。
【００６４】
図３に示すステップＳ９または図６に示すステップＳ４７のＭＰＥＧファイル再生処理において、正規に保存されたＭＰＥＧファイルつまり“ＳＡＮ＊＊＊＊．ｍｐｇ”が選択された場合、ＣＰＵ５４は図１１に示すサブルーチンを実行する。
【００６５】
まずステップＳ１６１で、所望のＭＰＥＧファイルに対応するリング情報ファイルがハードディスク３４上に存在するかどうか判断する。ここでＮＯであればステップＳ１６３に進み、所望のＭＰＥＧファイルに対応するＩＮＤＥＸファイルの先頭値をインデックスデータの読み出し位置を示す変数ＲＰｉとして設定する。続くステップＳ１６５では、所望のＭＰＥＧファイルの先頭値をＭＰＥＧ−Ｓの読み出し位置を示す変数ＲＰｍとして設定する。
【００６６】
一方、ステップＳ１６１でＹＥＳと判断されたときは、ステップＳ１６７で図１２に示すサブルーチンを処理し、変数ＲＰｉおよびＲＰｍを決定する。
【００６７】
ステップＳ１６９では、ＨＤＤ３２を通してハードディスク３４にアクセスし、所望のＭＰＥＧファイルの変数ＲＰｍに対応する位置から１２８ＫバイトのＭＰＥＧ−ＰＳを読み出す。読み出されたＭＰＥＧ−ＰＳは、ＭＰＥＧバッファ３６に蓄積され、再生処理を施される。ステップＳ１７１では、変数ＲＰｍに１２８Ｋバイトを加算し、ステップＳ１７３およびＳ１７５ではキー操作の有無をそれぞれ判断する。具体的には、再生停止キー５６ｅの操作の有無をステップＳ１７３で判別し、特殊再生キー５６ｆの操作の有無をステップＳ１７５で判別する。
【００６８】
再生停止キー５６ｅおよび特殊再生キー５６ｆのいずれも操作されなかったときは、そのままステップＳ１６９に戻る。この結果、連続する再生映像および再生音声がテレビジョン受像機５２から出力される。
【００６９】
再生停止キー５６ｅが操作されたときは、ステップＳ１７３でＹＥＳと判断し、上階層のルーチンに復帰する。
【００７０】
特殊再生キー５６ｆが操作されたときは、ステップＳ１７７で変数ＲＰｉを更新し、ステップＳ１７８で更新後の変数ＲＰｉが示す位置以降の２４バイトのインデックスデータからオフセット値を取得する。ステップＳ１７９では取得したオフセット値を変数ＲＰｍとして設定し、設定が完了するとステップＳ１６９に戻る。この結果、早送り映像，巻き戻し映像，スチル映像などの特殊映像がテレビジョン受像機５２から出力される。
【００７１】
ステップＳ１６７から図１２に示すサブルーチンに移行すると、まずステップＳ１８１でリング情報ファイルをオープンする。ステップＳ１８３では、オープンされたリング情報ファイルに含まれる変数ＷＰｍおよびＷＰｉを変数ＲＰｍおよびＲＰｉとして設定する。ステップＳ１８５では、所望のＭＰＥＧファイルに対応するＩＮＤＥＸファイルを特定し、当該ＩＮＤＥＸファイルの変数ＲＰｍに対応する位置以降の２４バイトからオフセット値およびフレームタイプを取得する。
【００７２】
ステップＳ１８７では、リング情報ファイルに含まれる変数ＦＳｍおよびＲＮＧｍとステップＳ１８３で設定された変数ＲＰｍとステップＳ１８５で取得されたオフセット値との間で、数１に示す条件が満足されるかどうかを判断する。
【００７３】
【数１】
オフセット値≧ＲＰｍ＋ＦＳｍ＊ＲＮＧｍ
変数ＦＳｍは所望のＭＰＥＧファイルのサイズを示し、変数ＲＮＧｍは所望のＭＰＥＧファイルの上書き回数を示し、そして変数ＲＰｍ（＝ＷＰｍ）は所望のＭＰＥＧファイルの書込終了位置の次のバイトを示す。これらの変数はいずれもＭＰＥＧファイルの実際の記録状態を表す変数であり、“ＲＰｍ＋ＦＳｍ＊ＲＮＧｍ”は、上書きされることなくＭＰＥＧファイルに残っているＭＰＥＧ−ＰＳの先頭位置を示す。
【００７４】
一方、オフセット値は、ＩＮＤＥＸファイルから取得した情報である。ＭＰＥＧファイルおよびＩＮＤＥＸファイルのいずれもリングファイルであること、およびＭＰＥＧ−ＰＳのビットレートが可変であることを考慮すると、ステップＳ１６５で取得されたオフセット値から始まるフレームが後続のＭＰＥＧ−ＰＳによって上書きされている可能性がある。
【００７５】
そこで、取得されたオフセット値から始まるフレームがＭＰＥＧファイルに残っているかどうかをステップＳ１８７で判別するようにしている。
【００７６】
図１７に示す記録状態では、変数ＷＰｉ以降の２４バイトから取得されたオフセット値に対応するフレームが、上書きによって消失している。このときは数１の条件が満たされず、ステップＳ１８７でＮＯと判断される。
【００７７】
ステップＳ１８７でＮＯと判断されると、ステップＳ１９１で変数ＲＰｉに２４バイトを加算してからステップＳ１８５に戻る。ステップＳ１８５では、更新された変数ＲＰｉ以降の２４バイトからオフセット値およびフレームタイプを取得し、続くステップＳ１８７では、新規に取得したオフセット値およびフレームタイプを用いて、数１の条件が満たされるかどうかを判断する。
【００７８】
図１７の記録状態では、更新された変数ＲＰｉ（＝ＷＰｉ＋２４バイト）以降の２４バイトから取得されたオフセット値に対応するフレームがＭＰＥＧファイル上に存在する。このときは数１の条件が満たされ、ステップＳ１８７でＹＥＳと判断される。
【００７９】
ステップＳ１８７でＹＥＳと判断されると、直前のステップＳ１８５で取得されたフレームタイプを判別する。そして、フレームタイプが“Ｉ”でなければ、ステップＳ１９１で変数ＲＰｉを更新してからステップＳ１８５〜Ｓ１８９の処理を再度実行する。
【００８０】
図１７の記録状態では、再度更新された変数ＲＰｉ（＝ＷＰｉ＋４８バイト）以降の２４バイトから取得されたオフセット値に対応するフレームが、Ｉピクチャである。このため、２回目のステップＳ１８９の処理では、ＹＥＳと判断される。
【００８１】
ステップＳ１８９でＹＥＳと判断されるとステップＳ１９３に進み、直前のステップＳ１８５で取得されたオフセット値を変数ＲＰｍとして設定する。設定が完了すると、ステップＳ１９５でリング情報ファイルをクローズしてから上階層のルーチンに復帰する。
【００８２】
以上の説明から分かるように、ＭＰＥＧファイルには、Ｉピクチャが間欠的に挿入されたＭＰＥＧ−ＰＳが循環的に書き込まれる。また、ＩＮＤＥＸファイルには、少なくともＩピクチャを特定できるインデックスデータが循環的に書き込まれる。ＣＰＵ５４は、ＩＮＤＥＸファイルに格納されたインデックスデータに基づいてＭＰＥＧ−ＰＳの先頭部分からＩピクチャを検出し、検出したＩピクチャからＭＰＥＧ−ＰＳを再生する。このように、ＩＮＤＥＸファイルに格納されたインデックスデータに基づいてＭＰＥＧ−ＰＳの先頭部分からＩピクチャを特定するようにしたため、書き込みが循環的に行われるＭＰＥＧファイルに格納されたＭＰＥＧ−ＰＳを先頭部分から再生することができる。
【００８３】
また、終端部分においては、終端揃え処理によってＭＰＥＧ−ＰＳとインデックスデータとの対応関係が確保されるため、ＭＰＥＧ−ＰＳの終端部分から特殊再生を開始することができる。
【図面の簡単な説明】
【図１】この発明の一実施例を示すブロック図である。
【図２】インデックスデータおよびＭＰＥＧ−ＰＳのデータ構造の一例を示す図解図である。
【図３】図１実施例の動作の一部を示すフロー図である。
【図４】図１実施例の動作の他の一部を示すフロー図である。
【図５】図１実施例の動作のその他の一部を示すフロー図である。
【図６】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図７】図１実施例の動作の他の一部を示すフロー図である。
【図８】図１実施例の動作のその他の一部を示すフロー図である。
【図９】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図１０】図１実施例の動作の他の一部を示すフロー図である。
【図１１】図１実施例の動作のその他の一部を示すフロー図である。
【図１２】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図１３】図１実施例の動作の一部を示す図解図である。
【図１４】図１実施例の動作の他の一部を示す図解図である。
【図１５】図１実施例の動作のその他の一部を示す図解図である。
【図１６】図１実施例の動作のさらにその他の一部を示す図解図である。
【図１７】図１実施例の動作の他の一部を示す図解図である。
【符号の説明】
１０…ハードディスクビデオレコーダ
１６…ＭＰＥＧビデオエンコーダ
２２…ＭＰＥＧオーディオエンコーダ
２６…マルチプレクサ
２８，３６…ＭＰＥＧバッファ
３０…ＩＮＤＥＸバッファ
３２…ＨＤＤ
４２…ＭＰＥＧビデオデコーダ
４８…ＭＰＥＧオーディオデコーダ
【図１】
2004032009.tif 000003
【図２】
2004032009.tif 000004
【図３】
2004032009.tif 000005
【図４】
2004032009.tif 000006
【図５】
2004032009.tif 000007
【図６】
2004032009.tif 000008
【図７】
2004032009.tif 000009
【図８】
2004032009.tif 000010
【図９】
2004032009.tif 000011
【図１０】
2004032009.tif 000012
【図１１】
2004032009.tif 000013
【図１２】
2004032009.tif 000014
【図１３】
2004032009.tif 000015
【図１４】
2004032009.tif 000016
【図１５】
2004032009.tif 000017
【図１６】
2004032009.tif 000018
【図１７】
2004032009.tif 000019