(57)【要約】【課題】ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようにする。【解決手段】データの取得要求が入力された場合に、予め用意しておいた第１のアルゴリズム１０３３と第２のアルゴリズム１０３４とを切り替えて記憶部１０１からのデータの読み出しを行う。第１のアルゴリズム１０３３は、第１のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものであり、第２のアルゴリズム１０３４は、第２のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものである。第１のアルゴリズム１０３３と第２のアルゴリズム１０３４の切り替えは、データの取得要求中で指示されたファイルの格納位置情報に基づいて行う。【選択図】図２
2012221155.tif 000002
【特許請求の範囲】
【請求項１】
データが蓄積される記憶部と、
前記記憶部に蓄積された前記データの取得要求を生成する第１のプログラムと、前記記憶部に蓄積された前記データの取得要求を生成する、前記第１のプログラムとは種類の異なる第２のプログラムとを制御するプログラム制御部と、
前記記憶部に蓄積された前記データをファイル単位で管理し、前記プログラム制御部から前記データの取得要求が入力された場合に、前記第１のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第１のアルゴリズムと、前記第２のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第２のアルゴリズムのいずれか一方を、前記データの取得要求中で指示された前記ファイルの格納位置情報に基づいて選択し、前記選択した前記第１のアルゴリズムもしくは前記第２のアルゴリズムに基づいて、前記記憶部から前記データの読み出しを行う読み出し制御部とを備えた
再生装置。
【請求項２】
前記データの取得要求は、オペレーティングシステムにより標準で提供されるシステムコールによって行われる
請求項１に記載の再生装置。
【請求項３】
前記ファイルの格納位置情報とは、前記ファイルの格納位置までの経路が記されたパス名である
請求項２に記載の再生装置。
【請求項４】
前記第１のプログラムは、前記記憶部に蓄積された前記データを所定のアドレスから連続的に読み出すことを指示するものであり、前記第２のプログラムは、前記記憶部に蓄積された前記データを指定された特定のアドレスから読み出すことを指示するものである
請求項３に記載の再生装置。
【請求項５】
前記読み出し制御部は、前記第１のアルゴリズムを選択した場合には、前記第１のアルゴリズムに基づいて前記記憶部から読み出す前記データの量を大きく設定し、前記第２のアルゴリズムを選択した場合は、前記第２のアルゴリズムに基づいて前記記憶部から読み出す前記データの量を小さく設定する
請求項４に記載の再生装置。
【請求項６】
データを蓄積することと、
前記蓄積されたデータの取得要求を生成する第１のプログラムと、前記蓄積されたデータの取得要求を生成する、前記第１のプログラムとは種類の異なる第２のプログラムとを制御することと、
前記蓄積されたデータをファイル単位で管理することと、
前記データの取得要求が入力された場合に、前記第１のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第１のアルゴリズムと、前記第２のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第２のアルゴリズムのいずれか一方を、前記データの取得要求中で指示された前記ファイルの格納位置情報に基づいて選択し、前記選択した前記第１のアルゴリズムもしくは前記第２のアルゴリズムに基づいて、前記蓄積されたデータの読み出しを行うこととを含む
再生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、音声データおよび映像データを再生する再生装置およびその再生方法に関し、特に、ストレージからのデータを効率的に読み出す技術に関する。
【背景技術】
【０００２】
従来、ストレージに蓄積された例えば映像データや音声データ等のデータは、ファイルシステムによって「ファイル」という単位で管理される。ファイルシステムは、殆どのオペレーティングシステム（以下、「ＯＳ」と称する）に標準で装備されているため、ファイルシステムとしては、そのようなＯＳに標準的に装備されたものが使用されることが多い。
【０００３】
ところで、近年、ストレージに蓄積されるデータの種類や、そのデータの読み出しを指示するアプリケーションの種類が増えてきている。このため、ＯＳに標準で装備されたファイルシステムをそのまま使用すると、読み出し指示がされてから実際にデータが読み出されるまでのレスポンスが、求められるレスポンスよりも遅くなってしまったりするようなことも発生していた。
【０００４】
このような問題を解決する手法として、例えば特許文献１には、コンピュータ装置のＯＳの持つファイルシステムとは独立に、映像信号の記録再生を効率良く行えるファイルシステムを用いて、記録再生を制御することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−３１９５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
また、上述のような、用途に特化した専用のファイルシステムを複数設けた場合に、それらを切り替えて使用できるようにすることが求められていた。もしくは、ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようにすることが求められていた。
【０００７】
本開示はかかる点に鑑みてなされたものであり、ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本開示の再生装置は、記憶部と、プログラム制御部と、読み出し制御部とを備える構成とし、各部の構成及び機能を次のようにする。記憶部にはデータが蓄積される。プログラム制御部には、記憶部に蓄積されたデータの取得要求を請求する第１のプログラムと第２のプログラムが格納される。制御部は、記憶部に蓄積されたデータをファイル単位で管理する。そして、プログラム制御部からデータの取得要求が入力された場合に、予め用意しておいた第１のアルゴリズムと第２のアルゴリズムとを切り替えて記憶部からのデータの読み出しを行う。第１のアルゴリズムは、第１のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものであり、第２のアルゴリズムは、第２のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものである。第１のアルゴリズムと第２のアルゴリズムの切り替えは、データの取得要求中で指示されたファイルの格納位置情報に基づいて行う。
【０００９】
また、上記課題を解決するために、本開示の再生方法は、次の手順で行う。まずデータを蓄積する。また、蓄積されたデータの取得要求を生成する第１のプログラムと、蓄積されたデータの取得要求を生成する、第１のプログラムとは種類の異なる第２のプログラムとを制御する。さらに、蓄積されたデータをファイル単位で管理する。そして、データの取得要求が入力された場合に、予め用意しておいた第１のアルゴリズムと第２のアルゴリズムとを切り替えて記憶部からのデータの読み出しを行う。第１のアルゴリズムは、第１のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものであり、第２のアルゴリズムは、第２のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものである。第１のアルゴリズムと第２のアルゴリズムの切り替えは、データの取得要求中で指示されたファイルの格納位置情報に基づいて行う。
【００１０】
このように構成および処理することで、データ取得要求中で指定されたファイルの格納位置情報を判断材料として、第１のプログラム用の第１のアルゴリズムと、第２のプログラム用の第２のプログラムとを切り替えることができる。
【発明の効果】
【００１１】
本開示の再生装置および再生方法によれば、ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようになる。
【図面の簡単な説明】
【００１２】
【図１】本開示の一実施形態による再生装置の内部構成例を示すブロック図である。
【図２】本開示の一実施形態による読み出し制御部の構成例を示すブロック図である。
【図３】本開示の一実施形態によるキャッシュの領域の管理方法の例を示す説明図である。
【図４】本開示の一実施形態による、ｏｐｅｎシステムコール実行時の読み出し制御部の制御の例を示すフローチャートである。
【図５】本開示の一実施形態による、ＦＴＰリーダーが選択された場合の、読み出し制御部によるキャッシュからの読み出し処理の例を示すフローチャートである。
【図６】本開示の一実施形態による、ＦＴＰリーダーが選択された場合の、読み出し制御部によるストレージからの読み出し処理の例を示すフローチャートである。
【図７】本開示の一実施形態による、ｆｔｐｄによるデータ取得要求に応じて行われるデータ読み出し処理の例を示す説明図である。
【図８】本開示の一実施形態による、ＣＩＦＳリーダーが選択された場合の、読み出し制御部によるキャッシュからの読み出し処理の例を示すフローチャートである。
【図９】本開示の一実施形態による、ＣＩＦＳリーダーが選択された場合の、読み出し制御部によるキャッシュからの読み出し処理の例を示すフローチャートである。
【図１０】本開示の一実施形態による、Ｓａｍｂａによるデータ取得要求に応じて行われるデータ読み出し処理の例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下に、本開示の実施形態に係る再生装置及びその再生方法の例を、図面を参照しながら下記の順で説明する。ただし、本開示は下記の例に限定されない。
１．再生装置の構成例
２．読み出し制御部の構成例
３．読み出し制御部の処理の例
【００１４】
＜１．再生装置の構成例＞
図１は、本開示の一実施形態に係る再生装置の構成例を示すブロック図である。図１に示す再生装置１００は、記憶部としてのストレージ１０１を備え、ストレージ１０１には、デジタル化されたＡＶデータが蓄積される。ストレージ１０１は、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disc Drive）、光ディスクドライブ等で構成される。
【００１５】
また、再生装置１００は、ネットワークを介して、外部装置としての外部ＰＣ（Personal Computer）２００と接続されている。そして、ストレージ１０１を、外部ＰＣのネットワークドライブとしても使えるように構成している。ストレージ１０１を、外部ＰＣのネットワークドライブとしても使えるようにする構成は、例えば“Ｓａｍｂａ”等のアプリケーションによって実現される。Ｓａｍｂａを使って再生装置１００の任意のディレクトリにファイル共有の設定をしておくことで、外部ＰＣ２００が、そのディレクトリにアクセスしてファイルの読み書きを行えるようになる。
【００１６】
外部ＰＣ２００には、例えばノンリニア編集用のアプリケーションが搭載されており、そのアプリケーションによる編集作業に基づいて、再生装置１００に対するデータの取得要求が送信される。また、外部ＰＣ２００からは、ＦＴＰ（File Transfer Protocol）によるファイル転送要求も行われるものとする。
【００１７】
また、再生装置１００は、ストレージ制御部１０２と、読み出し制御部１０３と、ビデオデータ用キャッシュ１０４と、ＰＣ  ＩＦ（Interface）用キャッシュ１０５を備える。ストレージ制御部１０２は、デバイスドライバの機能を果たすものであり、実際のストレージ１０１を操作してストレージ１０１からのデータの読み出しを行う。読み出し制御部１０３は、ファイルシステムの機能を果たすものであり、データの取得が要求に応じてファイルの読み出しを指示する読み出し要求を生成し、生成した読み出し要求をストレージ制御部１０２に送信する。また、読み出し制御部１０３は、ストレージ制御部１０２によってストレージ１０１から読み出されたデータを、一旦ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃに書き込む。ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃに保持されたデータは、後述するデータ要求処理部１０８からのデータ取得要求に応じて読み出され、ビデオデータ用キャッシュ１０４または、ＰＣ  ＩＦ用キャッシュ１０５に出力される。
【００１８】
ビデオデータ用キャッシュ１０４には、外部ＰＣ２００からのデータ取得要求に応じてストレージ１０１から読み出されたデータが書き込まれる。ＰＣ  ＩＦ用キャッシュ１０５には、後述する操作パネル１０６を介して入力されたデータ取得要求に応じてストレージ１０１から読み出されたデータが書き込まれる。
【００１９】
なお、外部ＰＣ２００からは、データの取得要求やデータの転送要求だけでなく、データの書き込み要求も行われる。書き込みが要求されたデータは、図示せぬ書き込み制御部の制御に基づいてストレージ１０１に書き込まれる。このとき、Ｓａｍｂａの機能を使って書き込まれたデータは、“ＣＩＦＳ（Common Internet File System）”というディレクトリの配下にファイルとして保存される。“ＣＩＦＳ”とは、Ｓａｍｂａで採用されている、ファイル共有サービスを提供するプロトコルである。ＦＴＰによって書き込まれたデータは、“ＦＴＰ”というディレクトリの配下に保存される。
【００２０】
本開示の一実施形態による再生装置１００では、読み出し制御部１０３（ファイルシステム）によるストレージ１０１からのデータ読み出しの動作を、データ取得要求の送信元のアプリケーションに応じて切り替えることを行う。つまり、Ｓａｍｂａが提供する機能を用いてデータ取得要求が入力された場合と、ＦＴＰによってデータの転送要求がされた場合とで、ファイルシステムのデータ読み出し動作を切り替えている。読み出し制御部１０３の構成および動作の詳細については、図２以降を参照して説明する。
【００２１】
図１に示す再生装置１００の構成の説明を続けると、再生装置１００は、操作パネル１０６と、ビデオデータ再生用制御部１０７と、データ要求処理部１０８と、ビデオデータ再生処理部１０９とを備える。操作パネル１０６は、ユーザからの操作が入力されるボタン等の入力部と、メニュー等を表示する表示パネル等の表示部により構成される。ユーザからの操作入力を受け付けると、その内容を操作コマンドとしてビデオデータ再生用制御部１０７に送信する。ビデオデータ再生用制御部１０７は、操作パネル１０６から送られてきた操作コマンドを解釈して具体的な動作に置き換える。そして、置き換えた動作の内容に基づく、例えばデータの取得要求等の要求を生成してデータ要求処理部１０８に送信する。
【００２２】
データ要求処理部１０８は、ビデオデータ再生用制御部１０７から入力された要求と、後述するＰＣ  ＩＦ用制御部１１１から入力される要求とを調停して、読み出し制御部１０３に伝える。読み出し制御部１０３に送信される要求は、ＯＳによって標準で提供されているシステムコールを用いて行われる。具体的には、ｏｐｅｎシステムコールや、ｒｅａｄシステムコール、ｐｒｅａｄシステムコールを用いて行われる。ビデオデータ再生処理部１０９は、ビデオデータ用キャッシュ１０４に保持されたビデオデータまたは、読み出し制御部１０３の制御に基づいてストレージ１０１から直接読み出されたビデオデータをＤ／Ａ変換し、得られたビデオ信号を出力する。
【００２３】
さらに、再生装置１００は、ネットワーク制御部１１０と、ＰＣ  ＩＦ用制御部１１１とを備える。ネットワーク制御部１１０は、外部ＰＣ２００との間の通信を制御する。また、ネットワーク制御部１１０は、ＰＣ  ＩＦ用キャッシュ１０５に書き込まれたデータまたは、読み出し制御部１０３の制御に基づいてストレージ１０１から直接読み出されたデータを、外部ＰＣ２００に送信する。
【００２４】
ＰＣ  ＩＦ用制御部１１１には、ＦＴＰによるデータの転送を実現する“ｆｔｐｄ”というプログラム（第１のプログラム）と、ファイル共有サービスを提供するＳａｍｂａというプログラム（第２のプログラム）とが格納される。そして、ＰＣ  ＩＦ用制御部１１１は、ネットワークを介して外部ＰＣ２００から送られてきたコマンドを解釈して、具体的な動作に置き換える。そして、置き換えた動作の内容に基づく、例えばデータの取得要求やデータの転送要求等の要求を生成して、データ要求処理部１０８に送信する。また、ＰＣ  ＩＦ用制御部１１１は、読み出し制御部１０３の制御に基づいて実際にストレージ１０１から読み出されて、ＰＣ  ＩＦ用キャッシュ１０５に書き込まれたデータを読み出して、ネットワーク制御部１１０に出力する。
【００２５】
＜２．読み出し制御部の構成例＞
次に、図２を参照して、読み出し制御部１０３の構成例について説明する。読み出し制御部１０３には、仮想ファイルシステム１０３１（以下、ＶＦＳ１０３１と称する）と、ファイルシステム制御部１０３２と、ＦＴＰリーダー１０３３と、ＣＩＦＳリーダー１０３４とが含まれる。
【００２６】
ＶＦＳ１０３１は、ｆｔｐｄプログラムやＳａｍｂａプログラムからのデータ取得／転送要求に基づいて、データ要求処理部１０８（図１参照）によってシステムコールが生成された場合に、その内容をファイルシステム制御部１０３２に伝える。また、ＶＦＳ１０３１は、ｏｐｅｎシステムコールで呼び出されたファイルの情報を、取得したファイルディスクリプタの値と対応づけて管理する。以下、ファイルディスクリプタの値とファイル情報とを対応づけたものを「管理テーブル」と称する。管理テーブルで管理されるファイル情報の項目には、ファイル実体の格納位置情報や、ファイル名、ファイルのサイズ、ファイルの作成日時等の時間情報、ファイルに最後にアクセスがあった際のオフセットアドレス等がある。
【００２７】
「ファイル実体の格納位置情報」は、ルートディレクトリからの絶対パス名で管理される。例えば、Ｓａｍｂａによって提供されるファイル共有サービスを利用してストレージ１０１に記憶されたファイルの格納位置情報は、“／ＣＩＦＳ／ｃｌｉｐ１．ＭＸＦ”のように示される。ＦＴＰによるファイル転送によってストレージに書き込まれたファイルの格納位置情報は、“／ＦＴＰ／ｃｌｉｐ２．ＭＸＦ”のように示される。
【００２８】
「ファイルに最後にアクセスがあった際のオフセットアドレス」は、データ要求処理部１０８からのデータの読み出し要求に基づいて実際に読み出しが行われた際の、ファイルの論理的な位置を示す。
【００２９】
また、ファイル情報として、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃ（図１参照）上のファイルの書き込み位置（ライトポイント）と、読み出し位置（リードポイント）も管理される。「ライトポイント」とは、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃにファイルが書き込まれた際のバッファ上の書き込み位置を示すものである。このライトポイントに値が記入されているということは、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃに何かしらのファイルが書き込まれていることを意味する。「リードポイント」とは、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃからファイルが読み出された際のバッファ上の読み出し位置を示す。
【００３０】
この「ライトポイント」と「リードポイント」を、キャッシュへの書き込みもしくはキャッシュからの読み出し動作が行われる都度更新することで、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃにおける空き領域の管理を行えるようになる。図３は、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃのアドレス空間を示す図である。図３に示す例では、矩形で示したアドレス空間を、ライトポイントおよびリードポイントが、リング状の矢印で示した垂直方向に移動するイメージを示している。矩形で示したアドレス空間は、下端に行くにつれてアドレスが大きくなるものである。そして、実際に書き込みが行われたライトポイントを追いかけるように、実際に読み出しが行われたリードポイントも追従して移動する。
【００３１】
ライトポイントより下のアドレス空間Ａｓ１は、まだファイルの書き込みが行われていない空間、すなわち、空き領域として管理される。ライトポイントとリードポイントに挟まれた斜線で示したアドレス空間Ａｓ２は、ファイルが書き込まれているがまだ読み出されていない領域として管理される。リードポイントより上の網掛けで示したアドレス空間Ａｓ３は、実際にはデータが格納されていても、データが読み出されたものとして、空き領域として管理される。
【００３２】
図２に戻って説明を続ける。ファイル情報として管理される項目として、上述した各項目の他に、ストレージ１０１からの実際のデータの読み出し動作を定めるアルゴリズムの情報がある。アルゴリズムとしては、ＦＴＰによってデータの転送要求がされた場合用のアルゴリズム（第１のアルゴリズム）と、Ｓａｍｂａが提供する機能を用いてデータ取得要求が入力された場合用のアルゴリズム（第２のアルゴリズム）とが用意される。図２では、第１のアルゴリズムに基づいて実際のストレージ１０１からのデータの読み出しを行う機能を「ＦＴＰリーダー１０３３」と示している。また、第２のアルゴリズムに基づいてストレージ１０１からのデータの読み出しを行う機能を「ＣＩＦＳリーダー１０３４」としている。
【００３３】
ファイルシステム制御部１０３２は、ファイルシステムドライバとしての機能を果たすものである。つまり、データ要求処理部１０８（図１参照）から入力されたシステムコールに応じて、ファイルのストレージ１０１上での物理的なアドレスを指定した読み出し要求を生成し、ストレージ制御部１０２に供給する。具体的には、システムコール内で指定されたファイルの経路名（パス名）を判断材料として、ＦＴＰ用の第１のアルゴリズムとＳａｍｂａ用の第２アルゴリズムのいずれか一方を選択し、選択したアルゴリズムに基づく読み出し要求を生成する。例えば、システムコール内で指定されたパス名が“／ＣＩＦＳ／”で始まるものであった場合には、第１のアルゴリズムに基づく読み出しを行うＦＴＰリーダー１０３３を選択する。システムコール内で指定されたパス名が“／ＦＴＰ／”で始まるものであった場合には、第１のアルゴリズムに基づく読み出しを行うＦＴＰリーダー１０３３を選択する。
【００３４】
ＦＴＰリーダー１０３３によってストレージ１０１から読み出されたファイルはＦＴＰ用キャッシュ１０３ｃ１に書き込まれ、ＣＩＦＳリーダー１０３４によってストレージ１０１から読み出されたファイルは、ＣＩＦＳ用キャッシュ１０３ｃ２に書き込まれる。
【００３５】
＜３．読み出し制御部の処理の例＞
［３−１．ｏｐｅｎシステムコール実行時の処理］
次に、読み出し制御部１０３による処理の例について、図４〜図１０を参照して説明する。図４は、データ要求処理部１０８（図１参照）からｏｐｅｎシステムコールを受け付けた場合の読み出し制御部１０３の処理の例を示すフローチャートである。ｏｐｅｎシステムコールは、“ｆｄ＝ｏｐｅｎ（ファイルのパス名）”のように記述される。このｏｐｅｎシステムコールが実行されることにより、指定されたファイル名を持つファイルのファイルディスクリプタｆｄが取得される。
【００３６】
読み出し制御部１０３は、まず、ｏｐｅｎシステムコールを実行すると（ステップＳ１）、ファイルディスクリプタの割り当てを行う（ステップＳ２）。続いて、ファイルディスクリプタの割り当てを行えたか否かを判断し（ステップＳ３）、割り当てが行えなかった場合には、ファイルディスクリプタの値にエラー値を設定してリターンする（ステップＳ４）。
【００３７】
ステップＳ３で、ファイルディスクリプタの割り当てを行えたと判断した場合には、次に、ｏｐｅｎシステムコール中で指定されたパス名の判定を行う（ステップＳ５）。パス名に“ＣＩＦＳ”が含まれていた場合にはＣＩＦＳリーダー１０３４（図２参照）を起動し（ステップＳ６）、パス名に“ＦＴＰ”が含まれていた場合には、ＦＴＰリーダー１０３３を起動する（ステップＳ７）。そして、取得したファイルディスクリプタの値を変数ｆｄに設定してリターンする（ステップＳ８）。
【００３８】
また、図４のフローチャートには示していないが、読み出し制御部１０３は、ファイルディスクリプタを取得できた場合は、ｏｐｅｎシステムコール内のパス名で示されたファイルの情報をストレージ１０１から取得することも行う。そして、取得したファイル情報を、ステップＳ８で戻ってきたファイルディスクリプタと対応づけて、図示せぬ管理テーブルに書き込む。
【００３９】
［３−２．ＦＴＰによるデータ転送要求に基づくデータの読み出し処理］
図５は、データ要求処理部１０８（図１参照）から、ｏｐｅｎシステムコールに続いてｒｅａｄシステムコールがデータ入力された場合の、読み出し制御部１０３による処理の例を示すフローチャートである。図５に示す処理は、ｏｐｅｎシステムコールで指定されたパス名に“ＦＴＰ”が含まれていた場合の処理である。まず、読み出し制御部１０３は、ｒｅａｄシステムコールを実行すると（ステップＳ１１）、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ１２）。そして、得たファイル情報に基づいて、ＦＴＰ用キャッシュ１０３ｃ１（図２参照）にデータが格納されているか否かを判断する（ステップＳ１３）。具体的には、ファイル情報中の「リードポイント」と「ライトポイント」（図３参照）に基づいて判断する。
【００４０】
ＦＴＰ用キャッシュ１０３ｃ１にデータがないと判断した場合には、ステップＳ１３の判断を繰り返す。すなわち、ＦＴＰによって外部ＰＣ２００からデータが転送され、転送されたファイルがＦＴＰ用キャッシュ１０３ｃ１に書き込まれるまでの間、待機する。ＦＴＰ用キャッシュ１０３ｃ１にデータがあると判断した場合には、ＦＴＰ用キャッシュ１０３ｃ１からデータを読み出して（ステップＳ１４）、ファイル情報中の「リードポイント」の値を更新する（ステップＳ１５）。そして、読み出したデータを返り値としてリターンする（ステップＳ１６）。
【００４１】
続いて、図６を参照して、ＦＴＰリーダー１０３３（図２参照）によるファイルの読み出し処理の例について説明する。ＦＴＰリーダー１０３３は、まず、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ２１）。そして、取得したファイル情報に基づいて、ＦＴＰ用キャッシュ１０３ｃ１に空きがあるか否かを判断する（ステップＳ２２）。ＦＴＰ用キャッシュ１０３ｃ１に空きがないと判断した場合には、ステップＳ２２の判断を繰り返し行う。
【００４２】
ＦＴＰ用キャッシュ１０３ｃ１に空きがあると判断した場合には、ストレージ１０１からＦＴＰ用キャッシュ１０３ｃ１にデータを読み出し（ステップＳ２３）、読み出した位置に基づいてファイル情報中のライトポイントを更新する（ステップＳ２４）。続いて、ＦＴＰ用キャッシュ１０３に書き込みを行っている位置（ライトポイント）が、ファイルの終わりの位置に到達したか否かを判断する（ステップＳ２５）。ファイルの終わりの位置に到達したと判断した場合には、ファイル情報の「ライトポイント」を“Ｅｎｄ  Ｏｆ  ｆｉｌｅ”（以下、“ＥＯＦ”と称する）に更新して処理を終了する。ファイルの終わりの位置に到達していないと判断した場合には、ステップＳ２２に戻って判断を続ける。
【００４３】
つまり、ＦＴＰリーダー１０３３は、ｒｅａｄシステムコールの発行の有無に係わらず、ｏｐｅｎシステムコールの実行に続いてすぐにストレージ１０１からのファイルの読み出しを行い、ＦＴＰ用キャッシュ１０３ｃ１に書き込む。すなわち、ＦＴＰによるデータの転送依頼に基づくストレージ１０１からのデータの読み出しは、シーケンシャルアクセスによって行われる。
【００４４】
図７は、外部ＰＣ２００よりＦＴＰによるファイル転送の依頼があった場合の、データの読み出し処理の例を示したものである。図７の横軸は時間を示し、各処理ブロックにおいて示した長方形の四角は、各ブロックでの処理時間を示す。処理時間とは、例えば、上位のブロックから伝送されたデータの読み出し要求を、下位のブロックに対する読み出し要求に変換する時間や、下位のブロックから出力されたデータを上位のブロックに返す際に必要な処理の時間等を指す。矢印は、読み出し要求が下位ブロックに伝送される方向と、ストレージ１０１から読み出されたデータが上位ブロックに伝送される方向とを示している。
【００４５】
ＦＴＰによるファイル転送依頼に基づくストレージ１０１からのデータの読み出しは、上述したように、シーケンシャルアクセスによって行われる。したがって、先読みが有効となる。このため、図７に示すように、ストレージ１０１から読み出されるデータＤｔ１〜データＤｔ３のサイズを、比較的大きなサイズとしている。ストレージ１０１からは大きくデータを読み出し、ＰＣ  ＩＦ用制御部１１１からの読み出し要求が行われた際には、ＦＴＰ用キャッシュ１０３ｃ１から読み出すようにすることにより、読み出しのレスポンスが向上するためである。また、このように処理することにより、ストレージ１０１に対するアクセス回数も削減されるため、ストレージ１０１へのアクセスが行われていない時間は、マルチタスクとして実行される他のタスクがストレージ１０１にアクセスできるようになる。つまり、ストレージ１０１の利用効率が向上する。
【００４６】
また、読み出し制御部１０３内のファイルシステム制御部１０３２は、上位のＰＣ  ＩＦ用制御部１１１から読み出し要求がされていないときにも、ストレージ１０１からのデータの読み出しを指示する読み出し要求を生成する。そして、生成した読み出し要求をＦＴＰ用キャッシュ１０３ｃ１に送信する。この処理は、図７では、ファイルシステム制御部１０３２からＦＴＰ用キャッシュ１０３ｃ１に下向きに伸びる矢印のうち、左から２番目の矢印および３番目の矢印として示されている。つまり、先読み分としてストレージ１０１からＦＴＰ用キャッシュ１０３ｃ１にデータを読み出すことを指示している。このような、ＦＴＰによるファイル転送に適したデータの読み出しは、ＦＴＰリーダー１０３３（図２）により実行される。
【００４７】
なお、図７に示した例では、ストレージ１０１から読み出すデータのサイズをなるべく大きなサイズとすることが望ましいとしたが、初回の読み出しからいきなり大きなサイズとするのではなく、徐々にサイズを大きくしていくような手法をとってもよい。読み出し要求で読み出しが指示されたオフセットアドレスが、前回アクセスされたオフセットアドレスと連続していない場合には、そのような手法での読み出しを行う方がよい。オフセットアドレスが連続していない場合には、先読み用にＣＩＦＳ用キャッシュ１０３ｃ２に蓄積されているデータは、使用することができない。したがって、ストレージ１０１からデータを読み出す時間が、そのまま読み出しレスポンスの遅延時間となってしまう。ストレージ１０１からデータを読み出す時間はデータの大きさに比例するため、レスポンスを速くするためには、読み出しサイズを小さくする方がよい。
【００４８】
徐々に大きくしていく各読み出しサイズには、ＰＣ  ＩＦ用キャッシュ１０５（図１参照）が枯渇するまでの間にストレージ１０１から読み出せる最大のサイズを適用するとよい。読み出しサイズの算出方法としては、以下のような手法が考えられる。まず、データの読み出しサイズの算出にあたり、読み出し制御部１０３の読み出し速度を“ｘ”、読み出し制御部１０３が読み出すファイルのサイズを“Ｓ”、ネットワーク制御部１１０がサイズＳのデータを読み出す時間を“Ｔ”とする。また、読み出し制御部１０３がストレージ１０１からｎ回目にデータを読み出す場合のフレーム数を“ｊ”、ｎ−１回目に読み出したデータのフレーム数を“ｉ”とする。
【００４９】
このとき、ｎ回目に読み出すフレーム数ｊを、以下の２つの式を満足させる値に設定する。
Ｔ（ｊ）＜Ｓ（ｉ）／ｘ  …式１
ｊ＞ｉ  …式２
すなわち、式１によれば、ｎ回目に読み出すフレーム数ｊは、読み出し制御部１０３がｊフレームを読み出す時間Ｔ（ｊ）が、ｉフレーム分のデータＳ（ｉ）をネットワーク制御部１１０が読み出す時間ｘで除算した値よりも、小さくなる値に設定される。これにより、ＰＣ  ＩＦ用キャッシュ１０５に保持されたすべてのデータを読み出し制御部１０３が読み出すまでの間に、読み出し制御部１０３がストレージ１０１から読み出せるデータサイズが算出される。さらに、式２によれば、式１により求められたフレーム数ｊとして、既に読み出されたフレーム数ｉよりも大きなものが絞り込まれる。このようにして読み出しサイズを決定し、決定されたサイズでの読み出しを行うことで、ストレージ１０１から読み出すデータのサイズが、小さなサイズから徐々に大きなサイズになっていく。
【００５０】
［３−３．Ｓａｍｂａの機能を利用して行われたデータ転送要求に基づくデータの読み出し処理］
図８は、データ要求処理部１０８（図１参照）から、ｏｐｅｎシステムコールに続いてｒｅａｄシステムコールがデータ入力された場合の、読み出し制御部１０３による処理の例を示すフローチャートである。図８に示す処理は、ｏｐｅｎシステムコールで指定されたパス名に“ＣＩＦＳ”が含まれていた場合の処理である。
【００５１】
まず、読み出し制御部１０３は、ｒｅａｄシステムコールまたはｐｒｅａｄシステムコールを実行すると（ステップＳ３１）、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ３２）。そして、システムコール内でオフセットが指定されているか否かを判断する（ステップＳ３３）。つまり、実行されたシステムコールが、ｒｅａｄシステムコールだったのかｐｒｅａｄシステムコールであったかの判断が行われる。ｐｒｅａｄシステムコールとは、ファイルディスクリプタｆｄで管理されるファイルの先頭からのオフセットから、指定したバイト数分のデータをバッファに読み込むことを指示するシステムコールである。
【００５２】
オフセットが指定されていた場合、すなわち、ｐｒｅａｄシステムコールが実行された場合は、ファイルの先頭から指定されたオフセット分だけ移動した位置（以降、この位置を「指定オフセットアドレス」と称する）に移動する（ステップＳ３４）。オフセットが指定されていなかった場合、すなわち、ｒｅａｄシステムコールが実行された場合は、「オフセットアドレス」をファイル情報から取得する（ステップＳ３５）。
【００５３】
続いて、ＣＩＦＳ用キャッシュ１０３ｃ２にデータがあるか否かを判断し（ステップＳ３６）、データが蓄積されていない場合には、ストレージ１０１からのデータの読み出しをＣＩＦＳリーダー１０３４に要求する（ステップＳ３７）。ＣＩＦＳ用キャッシュ１０３ｃ２にデータがある場合には、ＣＩＦＳ用キャッシュ１０３ｃ２からデータを読み出し（ステップＳ３８）、読み出したデータを返り値としてリターンする（ステップＳ３９）。
【００５４】
図９は、ＣＩＦＳリーダー１０３４（図２参照）によるファイルの読み出し処理の例を示すフローチャートである。ＣＩＦＳリーダー１０３４は、まず、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ４１）。続いて、ファイルシステム制御部１０３２（図２参照）からデータの読み出し要求を受けたか否かを判断する（ステップＳ４２）。すなわち、ｒｅａｄシステムコールもしくはｐｒｅａｄシステムコールが実行されたか否かを判断する。
【００５５】
データの読み出し要求を受けたと判断した場合には、ＣＩＦＳ用キャッシュ１０３ｃ２上にあるデータを削除して（ステップＳ４３）、ストレージ１０１からＣＩＦＳ用キャッシュ１０３ｃ２にデータを読み出す（ステップＳ４４）。そして、ファイル情報内の「ライトポイント」を更新する（ステップＳ４５）。データの読み出し要求を受けていないと判断した場合には、ファイル情報が“ＥＯＦ”となっているか否かを判断する（ステップＳ４６）。すなわち、ＣＩＦＳ用キャッシュ１０３ｃ２上の「ライトポイント」が“ＥＯＦ”に達したか否かを判断する。
【００５６】
ファイル情報が“ＥＯＦ”になっている場合には、ステップＳ４２に戻って判断を続ける。ファイル情報が“ＥＯＦ”になっていない場合には、ＣＩＦＳ用キャッシュ１０３ｃ２に空きがあるか否かを判断する（ステップＳ４７）。ＣＩＦＳ用キャッシュ１０３ｃ２に空きがないと判断した場合には、ステップＳ４２に戻って判断を続ける。ＣＩＦＳ用キャッシュ１０３ｃ２に空きがあると判断した場合には、ストレージ１０１からＣＩＦＳ用キャッシュ１０３ｃ２にデータを読み出して（ステップＳ４８）、ファイル情報中の「ライトポイント」を更新する（ステップＳ４９）。ステップＳ４７以降の処理は、先読みによるＣＩＦＳ用キャッシュ１０３ｃ２へのデータの蓄積処理を説明したものである。
【００５７】
つまり、ＣＩＦＳリーダー１０３４は、データの読み出し要求を受けつけたタイミングで、ストレージ１０１からデータを読み出してＣＩＦＳ用キャッシュ１０３ｃ２に書き込む。この読み出し要求は、Ｓａｍｂａにより提供されるファイル共有サービスを介して行われるものであるため、読み出しが指定されるファイルは都度異なるものであると考えられる。したがって、ストレージ１０１からのデータの読み出しは、ランダムアクセスによって行われる。
【００５８】
図１０は、外部ＰＣ２００より、Ｓａｍｂａが提供するファイル共有サービスを介してファイル読み出しの依頼があった場合の、データの読み出し処理の例を示したものである。図１０の横軸は時間を示し、各処理ブロックにおいて示した長方形の四角は、各ブロックでの処理時間を示す。
【００５９】
Ｓａｍｂａが提供するファイル共有サービスを介してファイル読み出しの依頼があった場合の、データの読み出しは、上述したように、ランダムアクセスアクセスによって行われる。したがって、要求に対してデータが素早く読み出されること（レスポンスの早さ）が重要とされる。このため、図１０に示すように、ストレージ１０１から読み出されるデータＤｔ１〜データＤｔ３のサイズは、小さなサイズとしている。
【００６０】
また、ファイルシステム制御部１０３２からＣＩＦＳ用キャッシュ１０３ｃ２に向けて下向きに伸びる矢印のうち、左から２番目の矢印として示されるように、先読みによるＣＩＦＳ用キャッシュ１０３ｃ２へのデータの読み出し指示も行っている。しかし、次回アクセスが指示されるオフセットアドレスが、今回ＣＩＦＳ用キャッシュ１０３ｃ２に読み出したアドレスと連続していない可能性も高いため、先読みとして読み出すデータのサイズも小さなものとしている。このような、Ｓａｍｂａにより提供されるファイル共有サービスを介して行われるデータ読み出し要求に適したデータの読み出しは、ＣＩＦＳリーダー１０３４（図２）により実行される。
【００６１】
上述した実施の形態によれば、システムコール内で指定されたファイルのパス名を判断材料として、ＦＴＰ用の第１のアルゴリズムとＳａｍｂａ用の第２アルゴリズムのいずれか一方が選択され、選択されたアルゴリズムに従ってデータの読み出しが行われる。つまり、特定の用途向けに作られた、ファイルシステムによる読み出し動作を定める２つのアルゴリズムを、切り替えて使用できるようになる。
【００６２】
そして、このアルゴリズムの切り替えは、ＯＳによって標準で提供されるシステムコール内のパス名を判断材料として行われる。したがって、どのような読み出し動作が期待されているかをファイルシステムに対して伝えるための手段を新たに設けることなく、プログラム（アプリケーション）が求める要求を満たす方法で、読み出しを行えるようになる。
【００６３】
なお、上述した実施の形態では、Ｓａｍｂａとｆｔｐｄという２つのプログラムを例に挙げて説明したが、これらに限定されるものではない。他の様々なアプリケーションに対しても、それに応じたアルゴリズムを作成しておくことで、そのアプリケーションに最適な方法で読み出しを行うことができる。プログラムの数も、２つに限定されるものではない。
【００６４】
また、上述した実施の形態では、本開示の再生装置を、再生のみを行う再生装置に適用した例をあげたが、記録も行える記録再生装置に適用してもよい。
【００６５】
なお、本開示は以下のような構成も取ることができる。
（１）データが蓄積される記憶部と、
前記記憶部に蓄積された前記データの取得要求を生成する第１のプログラムと、前記記憶部に蓄積された前記データの取得要求を生成する、前記第１のプログラムとは種類の異なる第２のプログラムとを制御するプログラム制御部と、
前記記憶部に蓄積された前記データをファイル単位で管理し、前記プログラム制御部から前記データの取得要求が入力された場合に、前記第１のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第１のアルゴリズムと、前記第２のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第２のアルゴリズムのいずれか一方を、前記データの取得要求中で指示された前記ファイルの格納位置情報に基づいて選択し、前記選択した前記第１のアルゴリズムもしくは前記第２のアルゴリズムに基づいて、前記記憶部から前記データの読み出しを行う読み出し制御部とを備えた再生装置。
（２）前記データの取得要求は、オペレーティングシステムにより標準で提供されるシステムコールによって行われる（１）に記載の再生装置。
（３）前記ファイルの格納位置情報とは、前記ファイルの格納位置までの経路が記されたパス名である（１）または（２）に記載の再生装置。
（４）前記第１のプログラムは、前記記憶部に蓄積された前記データを所定のアドレスから連続的に読み出すことを指示するものであり、前記第２のプログラムは、前記記憶部に蓄積された前記データを指定された特定のアドレスから読み出すことを指示するものである（１）〜（３）のいずれかに記載の再生装置。
（５）前記読み出し制御部は、前記第１のアルゴリズムを選択した場合には、前記第１のアルゴリズムに基づいて前記記憶部から読み出す前記データの量を大きく設定し、前記第２のアルゴリズムを選択した場合は、前記第２のアルゴリズムに基づいて前記記憶部から読み出す前記データの量を小さく設定する（１）〜（４）のいずれかに記載の再生装置。
（６）データを蓄積することと、
前記蓄積されたデータの取得要求を生成する第１のプログラムと、前記蓄積されたデータの取得要求を生成する、前記第１のプログラムとは種類の異なる第２のプログラムとを制御することと、
前記蓄積されたデータをファイル単位で管理することと、
前記データの取得要求が入力された場合に、前記第１のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第１のアルゴリズムと、前記第２のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第２のアルゴリズムのいずれか一方を、前記データの取得要求中で指示された前記ファイルの格納位置情報に基づいて選択し、前記選択した前記第１のアルゴリズムもしくは前記第２のアルゴリズムに基づいて、前記蓄積されたデータの読み出しを行うこととを含む再生方法。
【符号の説明】
【００６６】
１００…再生装置、１０１…ストレージ、１０２…ストレージ制御部、１０３…読み出し制御部、１０３ｃ…ＦＴＰ用／ＣＩＦＳ用キャッシュ、１０３ｃ１…ＦＴＰ用キャッシュ、１０３ｃ２…ＣＩＦＳ用キャッシュ、１０４…ビデオデータ用キャッシュ、１０５…ＰＣ、ＩＦ用キャッシュ、１０６…操作パネル、１０７…ビデオデータ再生用制御部、１０８…データ要求処理部、１０９…ビデオデータ再生処理部、１１０…ネットワーク制御部、１１１…ＩＦ用制御部、２００…外部ＰＣ、１０３１…仮想ファイルシステム（ＶＦＳ）、１０３２…ファイルシステム制御部、１０３３…ＦＴＰリーダー、１０３４…ＣＩＦＳリーダー、Ａｓ１〜Ａｓ３…アドレス空間、２００…外部ＰＣ
【図１】
2012221155.tif 000003
【図２】
2012221155.tif 000004
【図３】
2012221155.tif 000005
【図４】
2012221155.tif 000006
【図５】
2012221155.tif 000007
【図６】
2012221155.tif 000008
【図７】
2012221155.tif 000009
【図８】
2012221155.tif 000010
【図９】
2012221155.tif 000011
【図１０】
2012221155.tif 000012
【手続補正書】
【提出日】平成23年4月12日(2011.4.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、音声データおよび映像データを再生する再生装置およびその再生方法に関し、特に、ストレージからのデータを効率的に読み出す技術に関する。
【背景技術】
【０００２】
従来、ストレージに蓄積された例えば映像データや音声データ等のデータは、ファイルシステムによって「ファイル」という単位で管理される。ファイルシステムは、殆どのオペレーティングシステム（以下、「ＯＳ」と称する）に標準で装備されているため、ファイルシステムとしては、そのようなＯＳに標準的に装備されたものが使用されることが多い。
【０００３】
ところで、近年、ストレージに蓄積されるデータの種類や、そのデータの読み出しを指示するアプリケーションの種類が増えてきている。このため、ＯＳに標準で装備されたファイルシステムをそのまま使用すると、読み出し指示がされてから実際にデータが読み出されるまでのレスポンスが、求められるレスポンスよりも遅くなってしまったりするようなことも発生していた。
【０００４】
このような問題を解決する手法として、例えば特許文献１には、コンピュータ装置のＯＳの持つファイルシステムとは独立に、映像信号の記録再生を効率良く行えるファイルシステムを用いて、記録再生を制御することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−３１９５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
また、上述のような、用途に特化した専用のファイルシステムを複数設けた場合に、それらを切り替えて使用できるようにすることが求められていた。もしくは、ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようにすることが求められていた。
【０００７】
本開示はかかる点に鑑みてなされたものであり、ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本開示の再生装置は、記憶部と、プログラム制御部と、読み出し制御部とを備える構成とし、各部の構成及び機能を次のようにする。記憶部にはデータが蓄積される。プログラム制御部には、記憶部に蓄積されたデータの取得要求を請求する第１のプログラムと第２のプログラムが格納される。制御部は、記憶部に蓄積されたデータをファイル単位で管理する。そして、プログラム制御部からデータの取得要求が入力された場合に、予め用意しておいた第１のアルゴリズムと第２のアルゴリズムとを切り替えて記憶部からのデータの読み出しを行う。第１のアルゴリズムは、第１のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものであり、第２のアルゴリズムは、第２のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものである。第１のアルゴリズムと第２のアルゴリズムの切り替えは、データの取得要求中で指示されたファイルの格納位置情報に基づいて行う。
【０００９】
また、上記課題を解決するために、本開示の再生方法は、次の手順で行う。まずデータを蓄積する。また、蓄積されたデータの取得要求を生成する第１のプログラムと、蓄積されたデータの取得要求を生成する、第１のプログラムとは種類の異なる第２のプログラムとを制御する。さらに、蓄積されたデータをファイル単位で管理する。そして、データの取得要求が入力された場合に、予め用意しておいた第１のアルゴリズムと第２のアルゴリズムとを切り替えて記憶部からのデータの読み出しを行う。第１のアルゴリズムは、第１のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものであり、第２のアルゴリズムは、第２のプログラムによるデータの読み出しに適した手法でファイルの読み出しを行うためのものである。第１のアルゴリズムと第２のアルゴリズムの切り替えは、データの取得要求中で指示されたファイルの格納位置情報に基づいて行う。
【００１０】
このように構成および処理することで、データ取得要求中で指定されたファイルの格納位置情報を判断材料として、第１のプログラム用の第１のアルゴリズムと、第２のプログラム用の第２のプログラムとを切り替えることができる。
【発明の効果】
【００１１】
本開示の再生装置および再生方法によれば、ファイルシステムによるストレージからのデータの読み出し動作を、用途に応じて切り替えられるようになる。
【図面の簡単な説明】
【００１２】
【図１】本開示の一実施形態による再生装置の内部構成例を示すブロック図である。
【図２】本開示の一実施形態による読み出し制御部の構成例を示すブロック図である。
【図３】本開示の一実施形態によるキャッシュの領域の管理方法の例を示す説明図である。
【図４】本開示の一実施形態による、ｏｐｅｎシステムコール実行時の読み出し制御部の制御の例を示すフローチャートである。
【図５】本開示の一実施形態による、ＦＴＰリーダーが選択された場合の、読み出し制御部によるキャッシュからの読み出し処理の例を示すフローチャートである。
【図６】本開示の一実施形態による、ＦＴＰリーダーが選択された場合の、読み出し制御部によるストレージからの読み出し処理の例を示すフローチャートである。
【図７】本開示の一実施形態による、ｆｔｐｄによるデータ取得要求に応じて行われるデータ読み出し処理の例を示す説明図である。
【図８】本開示の一実施形態による、ＣＩＦＳリーダーが選択された場合の、読み出し制御部によるキャッシュからの読み出し処理の例を示すフローチャートである。
【図９】本開示の一実施形態による、ＣＩＦＳリーダーが選択された場合の、読み出し制御部によるキャッシュからの読み出し処理の例を示すフローチャートである。
【図１０】本開示の一実施形態による、Ｓａｍｂａによるデータ取得要求に応じて行われるデータ読み出し処理の例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下に、本開示の実施形態に係る再生装置及びその再生方法の例を、図面を参照しながら下記の順で説明する。ただし、本開示は下記の例に限定されない。
１．再生装置の構成例
２．読み出し制御部の構成例
３．読み出し制御部の処理の例
【００１４】
＜１．再生装置の構成例＞
図１は、本開示の一実施形態に係る再生装置の構成例を示すブロック図である。図１に示す再生装置１００は、記憶部としてのストレージ１０１を備え、ストレージ１０１には、デジタル化されたＡＶデータが蓄積される。ストレージ１０１は、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disc Drive）、光ディスクドライブ等で構成される。
【００１５】
また、再生装置１００は、ネットワークを介して、外部装置としての外部ＰＣ（Personal Computer）２００と接続されている。そして、ストレージ１０１を、外部ＰＣのネットワークドライブとしても使えるように構成している。ストレージ１０１を、外部ＰＣのネットワークドライブとしても使えるようにする構成は、例えば“Ｓａｍｂａ”等のアプリケーションによって実現される。Ｓａｍｂａを使って再生装置１００の任意のディレクトリにファイル共有の設定をしておくことで、外部ＰＣ２００が、そのディレクトリにアクセスしてファイルの読み書きを行えるようになる。
【００１６】
外部ＰＣ２００には、例えばノンリニア編集用のアプリケーションが搭載されており、そのアプリケーションによる編集作業に基づいて、再生装置１００に対するデータの取得要求が送信される。また、外部ＰＣ２００からは、ＦＴＰ（File Transfer Protocol）によるファイル転送要求も行われるものとする。
【００１７】
また、再生装置１００は、ストレージ制御部１０２と、読み出し制御部１０３と、ビデオデータ用キャッシュ１０４と、ＰＣ  ＩＦ（Interface）用キャッシュ１０５を備える。ストレージ制御部１０２は、デバイスドライバの機能を果たすものであり、実際のストレージ１０１を操作してストレージ１０１からのデータの読み出しを行う。読み出し制御部１０３は、ファイルシステムの機能を果たすものであり、データの取得が要求に応じてファイルの読み出しを指示する読み出し要求を生成し、生成した読み出し要求をストレージ制御部１０２に送信する。また、読み出し制御部１０３は、ストレージ制御部１０２によってストレージ１０１から読み出されたデータを、一旦ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃに書き込む。ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃに保持されたデータは、後述するデータ要求処理部１０８からのデータ取得要求に応じて読み出され、ビデオデータ用キャッシュ１０４または、ＰＣ  ＩＦ用キャッシュ１０５に出力される。
【００１８】
ビデオデータ用キャッシュ１０４には、外部ＰＣ２００からのデータ取得要求に応じてストレージ１０１から読み出されたデータが書き込まれる。ＰＣ  ＩＦ用キャッシュ１０５には、後述する操作パネル１０６を介して入力されたデータ取得要求に応じてストレージ１０１から読み出されたデータが書き込まれる。
【００１９】
なお、外部ＰＣ２００からは、データの取得要求やデータの転送要求だけでなく、データの書き込み要求も行われる。書き込みが要求されたデータは、図示せぬ書き込み制御部の制御に基づいてストレージ１０１に書き込まれる。このとき、Ｓａｍｂａの機能を使って書き込まれたデータは、“ＣＩＦＳ（Common Internet File System）”というディレクトリの配下にファイルとして保存される。“ＣＩＦＳ”とは、Ｓａｍｂａで採用されている、ファイル共有サービスを提供するプロトコルである。ＦＴＰによって書き込まれたデータは、“ＦＴＰ”というディレクトリの配下に保存される。
【００２０】
本開示の一実施形態による再生装置１００では、読み出し制御部１０３（ファイルシステム）によるストレージ１０１からのデータ読み出しの動作を、データ取得要求の送信元のアプリケーションに応じて切り替えることを行う。つまり、Ｓａｍｂａが提供する機能を用いてデータ取得要求が入力された場合と、ＦＴＰによってデータの転送要求がされた場合とで、ファイルシステムのデータ読み出し動作を切り替えている。読み出し制御部１０３の構成および動作の詳細については、図２以降を参照して説明する。
【００２１】
図１に示す再生装置１００の構成の説明を続けると、再生装置１００は、操作パネル１０６と、ビデオデータ再生用制御部１０７と、データ要求処理部１０８と、ビデオデータ再生処理部１０９とを備える。操作パネル１０６は、ユーザからの操作が入力されるボタン等の入力部と、メニュー等を表示する表示パネル等の表示部により構成される。ユーザからの操作入力を受け付けると、その内容を操作コマンドとしてビデオデータ再生用制御部１０７に送信する。ビデオデータ再生用制御部１０７は、操作パネル１０６から送られてきた操作コマンドを解釈して具体的な動作に置き換える。そして、置き換えた動作の内容に基づく、例えばデータの取得要求等の要求を生成してデータ要求処理部１０８に送信する。
【００２２】
データ要求処理部１０８は、ビデオデータ再生用制御部１０７から入力された要求と、後述するＰＣ  ＩＦ用制御部１１１から入力される要求とを調停して、読み出し制御部１０３に伝える。読み出し制御部１０３に送信される要求は、ＯＳによって標準で提供されているシステムコールを用いて行われる。具体的には、ｏｐｅｎシステムコールや、ｒｅａｄシステムコール、ｐｒｅａｄシステムコールを用いて行われる。ビデオデータ再生処理部１０９は、ビデオデータ用キャッシュ１０４に保持されたビデオデータまたは、読み出し制御部１０３の制御に基づいてストレージ１０１から直接読み出されたビデオデータをＤ／Ａ変換し、得られたビデオ信号を出力する。
【００２３】
さらに、再生装置１００は、ネットワーク制御部１１０と、ＰＣ  ＩＦ用制御部１１１とを備える。ネットワーク制御部１１０は、外部ＰＣ２００との間の通信を制御する。また、ネットワーク制御部１１０は、ＰＣ  ＩＦ用キャッシュ１０５に書き込まれたデータまたは、読み出し制御部１０３の制御に基づいてストレージ１０１から直接読み出されたデータを、外部ＰＣ２００に送信する。
【００２４】
ＰＣ  ＩＦ用制御部１１１には、ＦＴＰによるデータの転送を実現する“ｆｔｐｄ”というプログラム（第１のプログラム）と、ファイル共有サービスを提供するＳａｍｂａというプログラム（第２のプログラム）とが格納される。そして、ＰＣ  ＩＦ用制御部１１１は、ネットワークを介して外部ＰＣ２００から送られてきたコマンドを解釈して、具体的な動作に置き換える。そして、置き換えた動作の内容に基づく、例えばデータの取得要求やデータの転送要求等の要求を生成して、データ要求処理部１０８に送信する。また、ＰＣ  ＩＦ用制御部１１１は、読み出し制御部１０３の制御に基づいて実際にストレージ１０１から読み出されて、ＰＣ  ＩＦ用キャッシュ１０５に書き込まれたデータを読み出して、ネットワーク制御部１１０に出力する。
【００２５】
＜２．読み出し制御部の構成例＞
次に、図２を参照して、読み出し制御部１０３の構成例について説明する。読み出し制御部１０３には、仮想ファイルシステム１０３１（以下、ＶＦＳ１０３１と称する）と、ファイルシステム制御部１０３２と、ＦＴＰリーダー１０３３と、ＣＩＦＳリーダー１０３４とが含まれる。
【００２６】
ＶＦＳ１０３１は、ｆｔｐｄプログラムやＳａｍｂａプログラムからのデータ取得／転送要求に基づいて、データ要求処理部１０８（図１参照）によってシステムコールが生成された場合に、その内容をファイルシステム制御部１０３２に伝える。また、ＶＦＳ１０３１は、ｏｐｅｎシステムコールで呼び出されたファイルの情報を、取得したファイルディスクリプタの値と対応づけて管理する。以下、ファイルディスクリプタの値とファイル情報とを対応づけたものを「管理テーブル」と称する。管理テーブルで管理されるファイル情報の項目には、ファイル実体の格納位置情報や、ファイル名、ファイルのサイズ、ファイルの作成日時等の時間情報、ファイルに最後にアクセスがあった際のオフセットアドレス等がある。
【００２７】
「ファイル実体の格納位置情報」は、ルートディレクトリからの絶対パス名で管理される。例えば、Ｓａｍｂａによって提供されるファイル共有サービスを利用してストレージ１０１に記憶されたファイルの格納位置情報は、“／ＣＩＦＳ／ｃｌｉｐ１．ＭＸＦ”のように示される。ＦＴＰによるファイル転送によってストレージに書き込まれたファイルの格納位置情報は、“／ＦＴＰ／ｃｌｉｐ２．ＭＸＦ”のように示される。
【００２８】
「ファイルに最後にアクセスがあった際のオフセットアドレス」は、データ要求処理部１０８からのデータの読み出し要求に基づいて実際に読み出しが行われた際の、ファイルの論理的な位置を示す。
【００２９】
また、ファイル情報として、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃ（図１参照）上のファイルの書き込み位置（ライトポイント）と、読み出し位置（リードポイント）も管理される。「ライトポイント」とは、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃにファイルが書き込まれた際のバッファ上の書き込み位置を示すものである。このライトポイントに値が記入されているということは、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃに何かしらのファイルが書き込まれていることを意味する。「リードポイント」とは、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃからファイルが読み出された際のバッファ上の読み出し位置を示す。
【００３０】
この「ライトポイント」と「リードポイント」を、キャッシュへの書き込みもしくはキャッシュからの読み出し動作が行われる都度更新することで、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃにおける空き領域の管理を行えるようになる。図３は、ＦＴＰ用／ＣＩＦＳ用キャッシュ１０３ｃのアドレス空間を示す図である。図３に示す例では、矩形で示したアドレス空間を、ライトポイントおよびリードポイントが、リング状の矢印で示した垂直方向に移動するイメージを示している。矩形で示したアドレス空間は、下端に行くにつれてアドレスが大きくなるものである。そして、実際に書き込みが行われたライトポイントを追いかけるように、実際に読み出しが行われたリードポイントも追従して移動する。
【００３１】
ライトポイントより下のアドレス空間Ａｓ１は、まだファイルの書き込みが行われていない空間、すなわち、空き領域として管理される。ライトポイントとリードポイントに挟まれた斜線で示したアドレス空間Ａｓ２は、ファイルが書き込まれているがまだ読み出されていない領域として管理される。リードポイントより上の網掛けで示したアドレス空間Ａｓ３は、実際にはデータが格納されていても、データが読み出されたものとして、空き領域として管理される。
【００３２】
図２に戻って説明を続ける。ファイル情報として管理される項目として、上述した各項目の他に、ストレージ１０１からの実際のデータの読み出し動作を定めるアルゴリズムの情報がある。アルゴリズムとしては、ＦＴＰによってデータの転送要求がされた場合用のアルゴリズム（第１のアルゴリズム）と、Ｓａｍｂａが提供する機能を用いてデータ取得要求が入力された場合用のアルゴリズム（第２のアルゴリズム）とが用意される。図２では、第１のアルゴリズムに基づいて実際のストレージ１０１からのデータの読み出しを行う機能を「ＦＴＰリーダー１０３３」と示している。また、第２のアルゴリズムに基づいてストレージ１０１からのデータの読み出しを行う機能を「ＣＩＦＳリーダー１０３４」としている。
【００３３】
ファイルシステム制御部１０３２は、ファイルシステムドライバとしての機能を果たすものである。つまり、データ要求処理部１０８（図１参照）から入力されたシステムコールに応じて、ファイルのストレージ１０１上での物理的なアドレスを指定した読み出し要求を生成し、ストレージ制御部１０２に供給する。具体的には、システムコール内で指定されたファイルの経路名（パス名）を判断材料として、ＦＴＰ用の第１のアルゴリズムとＳａｍｂａ用の第２アルゴリズムのいずれか一方を選択し、選択したアルゴリズムに基づく読み出し要求を生成する。例えば、システムコール内で指定されたパス名が“／ＣＩＦＳ／”で始まるものであった場合には、第１のアルゴリズムに基づく読み出しを行うＦＴＰリーダー１０３３を選択する。システムコール内で指定されたパス名が“／ＦＴＰ／”で始まるものであった場合には、第１のアルゴリズムに基づく読み出しを行うＦＴＰリーダー１０３３を選択する。
【００３４】
ＦＴＰリーダー１０３３によってストレージ１０１から読み出されたファイルはＦＴＰ用キャッシュ１０３ｃ１に書き込まれ、ＣＩＦＳリーダー１０３４によってストレージ１０１から読み出されたファイルは、ＣＩＦＳ用キャッシュ１０３ｃ２に書き込まれる。
【００３５】
＜３．読み出し制御部の処理の例＞
［３−１．ｏｐｅｎシステムコール実行時の処理］
次に、読み出し制御部１０３による処理の例について、図４〜図１０を参照して説明する。図４は、データ要求処理部１０８（図１参照）からｏｐｅｎシステムコールを受け付けた場合の読み出し制御部１０３の処理の例を示すフローチャートである。ｏｐｅｎシステムコールは、“ｆｄ＝ｏｐｅｎ（ファイルのパス名）”のように記述される。このｏｐｅｎシステムコールが実行されることにより、指定されたファイル名を持つファイルのファイルディスクリプタｆｄが取得される。
【００３６】
読み出し制御部１０３は、まず、ｏｐｅｎシステムコールを実行すると（ステップＳ１）、ファイルディスクリプタの割り当てを行う（ステップＳ２）。続いて、ファイルディスクリプタの割り当てを行えたか否かを判断し（ステップＳ３）、割り当てが行えなかった場合には、ファイルディスクリプタの値にエラー値を設定してリターンする（ステップＳ４）。
【００３７】
ステップＳ３で、ファイルディスクリプタの割り当てを行えたと判断した場合には、次に、ｏｐｅｎシステムコール中で指定されたパス名の判定を行う（ステップＳ５）。パス名に“ＣＩＦＳ”が含まれていた場合にはＣＩＦＳリーダー１０３４（図２参照）を起動し（ステップＳ６）、パス名に“ＦＴＰ”が含まれていた場合には、ＦＴＰリーダー１０３３を起動する（ステップＳ７）。そして、取得したファイルディスクリプタの値を変数ｆｄに設定してリターンする（ステップＳ８）。
【００３８】
また、図４のフローチャートには示していないが、読み出し制御部１０３は、ファイルディスクリプタを取得できた場合は、ｏｐｅｎシステムコール内のパス名で示されたファイルの情報をストレージ１０１から取得することも行う。そして、取得したファイル情報を、ステップＳ８で戻ってきたファイルディスクリプタと対応づけて、図示せぬ管理テーブルに書き込む。
【００３９】
［３−２．ＦＴＰによるデータ転送要求に基づくデータの読み出し処理］
図５は、データ要求処理部１０８（図１参照）から、ｏｐｅｎシステムコールに続いてｒｅａｄシステムコールがデータ入力された場合の、読み出し制御部１０３による処理の例を示すフローチャートである。図５に示す処理は、ｏｐｅｎシステムコールで指定されたパス名に“ＦＴＰ”が含まれていた場合の処理である。まず、読み出し制御部１０３は、ｒｅａｄシステムコールを実行すると（ステップＳ１１）、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ１２）。そして、得たファイル情報に基づいて、ＦＴＰ用キャッシュ１０３ｃ１（図２参照）にデータが格納されているか否かを判断する（ステップＳ１３）。具体的には、ファイル情報中の「リードポイント」と「ライトポイント」（図３参照）に基づいて判断する。
【００４０】
ＦＴＰ用キャッシュ１０３ｃ１にデータがないと判断した場合には、ステップＳ１３の判断を繰り返す。すなわち、ＦＴＰによって外部ＰＣ２００からデータが転送され、転送されたファイルがＦＴＰ用キャッシュ１０３ｃ１に書き込まれるまでの間、待機する。ＦＴＰ用キャッシュ１０３ｃ１にデータがあると判断した場合には、ＦＴＰ用キャッシュ１０３ｃ１からデータを読み出して（ステップＳ１４）、ファイル情報中の「リードポイント」の値を更新する（ステップＳ１５）。そして、読み出したデータを返り値としてリターンする（ステップＳ１６）。
【００４１】
続いて、図６を参照して、ＦＴＰリーダー１０３３（図２参照）によるファイルの読み出し処理の例について説明する。ＦＴＰリーダー１０３３は、まず、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ２１）。そして、取得したファイル情報に基づいて、ＦＴＰ用キャッシュ１０３ｃ１に空きがあるか否かを判断する（ステップＳ２２）。ＦＴＰ用キャッシュ１０３ｃ１に空きがないと判断した場合には、ステップＳ２２の判断を繰り返し行う。
【００４２】
ＦＴＰ用キャッシュ１０３ｃ１に空きがあると判断した場合には、ストレージ１０１からＦＴＰ用キャッシュ１０３ｃ１にデータを読み出し（ステップＳ２３）、読み出した位置に基づいてファイル情報中のライトポイントを更新する（ステップＳ２４）。続いて、ＦＴＰ用キャッシュ１０３に書き込みを行っている位置（ライトポイント）が、ファイルの終わりの位置に到達したか否かを判断する（ステップＳ２５）。ファイルの終わりの位置に到達したと判断した場合には、ファイル情報の「ライトポイント」を“Ｅｎｄ  Ｏｆ  ｆｉｌｅ”（以下、“ＥＯＦ”と称する）に更新して処理を終了する。ファイルの終わりの位置に到達していないと判断した場合には、ステップＳ２２に戻って判断を続ける。
【００４３】
つまり、ＦＴＰリーダー１０３３は、ｒｅａｄシステムコールの発行の有無に係わらず、ｏｐｅｎシステムコールの実行に続いてすぐにストレージ１０１からのファイルの読み出しを行い、ＦＴＰ用キャッシュ１０３ｃ１に書き込む。すなわち、ＦＴＰによるデータの転送依頼に基づくストレージ１０１からのデータの読み出しは、シーケンシャルアクセスによって行われる。
【００４４】
図７は、外部ＰＣ２００よりＦＴＰによるファイル転送の依頼があった場合の、データの読み出し処理の例を示したものである。図７の横軸は時間を示し、各処理ブロックにおいて示した長方形の四角は、各ブロックでの処理時間を示す。処理時間とは、例えば、上位のブロックから伝送されたデータの読み出し要求を、下位のブロックに対する読み出し要求に変換する時間や、下位のブロックから出力されたデータを上位のブロックに返す際に必要な処理の時間等を指す。矢印は、読み出し要求が下位ブロックに伝送される方向と、ストレージ１０１から読み出されたデータが上位ブロックに伝送される方向とを示している。
【００４５】
ＦＴＰによるファイル転送依頼に基づくストレージ１０１からのデータの読み出しは、上述したように、シーケンシャルアクセスによって行われる。したがって、先読みが有効となる。このため、図７に示すように、ストレージ１０１から読み出されるデータＤｔ１〜データＤｔ３のサイズを、比較的大きなサイズとしている。ストレージ１０１からは大きくデータを読み出し、ＰＣ  ＩＦ用制御部１１１からの読み出し要求が行われた際には、ＦＴＰ用キャッシュ１０３ｃ１から読み出すようにすることにより、読み出しのレスポンスが向上するためである。また、このように処理することにより、ストレージ１０１に対するアクセス回数も削減されるため、ストレージ１０１へのアクセスが行われていない時間は、マルチタスクとして実行される他のタスクがストレージ１０１にアクセスできるようになる。つまり、ストレージ１０１の利用効率が向上する。
【００４６】
また、読み出し制御部１０３内のファイルシステム制御部１０３２は、上位のＰＣ  ＩＦ用制御部１１１から読み出し要求がされていないときにも、ストレージ１０１からのデータの読み出しを指示する読み出し要求を生成する。そして、生成した読み出し要求をＦＴＰ用キャッシュ１０３ｃ１に送信する。この処理は、図７では、ファイルシステム制御部１０３２からＦＴＰ用キャッシュ１０３ｃ１に下向きに伸びる矢印のうち、左から２番目の矢印および３番目の矢印として示されている。つまり、先読み分としてストレージ１０１からＦＴＰ用キャッシュ１０３ｃ１にデータを読み出すことを指示している。このような、ＦＴＰによるファイル転送に適したデータの読み出しは、ＦＴＰリーダー１０３３（図２）により実行される。
【００４７】
［３−３．Ｓａｍｂａの機能を利用して行われたデータ転送要求に基づくデータの読み出し処理］
図８は、データ要求処理部１０８（図１参照）から、ｏｐｅｎシステムコールに続いてｒｅａｄシステムコールがデータ入力された場合の、読み出し制御部１０３による処理の例を示すフローチャートである。図８に示す処理は、ｏｐｅｎシステムコールで指定されたパス名に“ＣＩＦＳ”が含まれていた場合の処理である。
【００４８】
まず、読み出し制御部１０３は、ｒｅａｄシステムコールまたはｐｒｅａｄシステムコールを実行すると（ステップＳ３１）、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ３２）。そして、システムコール内でオフセットが指定されているか否かを判断する（ステップＳ３３）。つまり、実行されたシステムコールが、ｒｅａｄシステムコールだったのかｐｒｅａｄシステムコールであったかの判断が行われる。ｐｒｅａｄシステムコールとは、ファイルディスクリプタｆｄで管理されるファイルの先頭からのオフセットから、指定したバイト数分のデータをバッファに読み込むことを指示するシステムコールである。
【００４９】
オフセットが指定されていた場合、すなわち、ｐｒｅａｄシステムコールが実行された場合は、ファイルの先頭から指定されたオフセット分だけ移動した位置（以降、この位置を「指定オフセットアドレス」と称する）に移動する（ステップＳ３４）。オフセットが指定されていなかった場合、すなわち、ｒｅａｄシステムコールが実行された場合は、「オフセットアドレス」をファイル情報から取得する（ステップＳ３５）。
【００５０】
続いて、ＣＩＦＳ用キャッシュ１０３ｃ２にデータがあるか否かを判断し（ステップＳ３６）、データが蓄積されていない場合には、ストレージ１０１からのデータの読み出しをＣＩＦＳリーダー１０３４に要求する（ステップＳ３７）。ＣＩＦＳ用キャッシュ１０３ｃ２にデータがある場合には、ＣＩＦＳ用キャッシュ１０３ｃ２からデータを読み出し（ステップＳ３８）、読み出したデータを返り値としてリターンする（ステップＳ３９）。
【００５１】
図９は、ＣＩＦＳリーダー１０３４（図２参照）によるファイルの読み出し処理の例を示すフローチャートである。ＣＩＦＳリーダー１０３４は、まず、ｏｐｅｎシステムコールで取得したファイルディスクリプタと対応づけて管理されているファイル情報を取得する（ステップＳ４１）。続いて、ファイルシステム制御部１０３２（図２参照）からデータの読み出し要求を受けたか否かを判断する（ステップＳ４２）。すなわち、ｒｅａｄシステムコールもしくはｐｒｅａｄシステムコールが実行されたか否かを判断する。
【００５２】
データの読み出し要求を受けたと判断した場合には、ＣＩＦＳ用キャッシュ１０３ｃ２上にあるデータを削除して（ステップＳ４３）、ストレージ１０１からＣＩＦＳ用キャッシュ１０３ｃ２にデータを読み出す（ステップＳ４４）。そして、ファイル情報内の「ライトポイント」を更新する（ステップＳ４５）。データの読み出し要求を受けていないと判断した場合には、ファイル情報が“ＥＯＦ”となっているか否かを判断する（ステップＳ４６）。すなわち、ＣＩＦＳ用キャッシュ１０３ｃ２上の「ライトポイント」が“ＥＯＦ”に達したか否かを判断する。
【００５３】
ファイル情報が“ＥＯＦ”になっている場合には、ステップＳ４２に戻って判断を続ける。ファイル情報が“ＥＯＦ”になっていない場合には、ＣＩＦＳ用キャッシュ１０３ｃ２に空きがあるか否かを判断する（ステップＳ４７）。ＣＩＦＳ用キャッシュ１０３ｃ２に空きがないと判断した場合には、ステップＳ４２に戻って判断を続ける。ＣＩＦＳ用キャッシュ１０３ｃ２に空きがあると判断した場合には、ストレージ１０１からＣＩＦＳ用キャッシュ１０３ｃ２にデータを読み出して（ステップＳ４８）、ファイル情報中の「ライトポイント」を更新する（ステップＳ４９）。ステップＳ４７以降の処理は、先読みによるＣＩＦＳ用キャッシュ１０３ｃ２へのデータの蓄積処理を説明したものである。
【００５４】
つまり、ＣＩＦＳリーダー１０３４は、データの読み出し要求を受けつけたタイミングで、ストレージ１０１からデータを読み出してＣＩＦＳ用キャッシュ１０３ｃ２に書き込む。この読み出し要求は、Ｓａｍｂａにより提供されるファイル共有サービスを介して行われるものであるため、読み出しが指定されるファイルは都度異なるものであると考えられる。したがって、ストレージ１０１からのデータの読み出しは、ランダムアクセスによって行われる。
【００５５】
図１０は、外部ＰＣ２００より、Ｓａｍｂａが提供するファイル共有サービスを介してファイル読み出しの依頼があった場合の、データの読み出し処理の例を示したものである。図１０の横軸は時間を示し、各処理ブロックにおいて示した長方形の四角は、各ブロックでの処理時間を示す。
【００５６】
Ｓａｍｂａが提供するファイル共有サービスを介してファイル読み出しの依頼があった場合の、データの読み出しは、上述したように、ランダムアクセスアクセスによって行われる。したがって、要求に対してデータが素早く読み出されること（レスポンスの早さ）が重要とされる。このため、図１０に示すように、ストレージ１０１から読み出されるデータＤｔ１〜データＤｔ３のサイズは、小さなサイズとしている。
【００５７】
また、ファイルシステム制御部１０３２からＣＩＦＳ用キャッシュ１０３ｃ２に向けて下向きに伸びる矢印のうち、左から２番目の矢印として示されるように、先読みによるＣＩＦＳ用キャッシュ１０３ｃ２へのデータの読み出し指示も行っている。しかし、次回アクセスが指示されるオフセットアドレスが、今回ＣＩＦＳ用キャッシュ１０３ｃ２に読み出したアドレスと連続していない可能性も高いため、先読みとして読み出すデータのサイズも小さなものとしている。このような、Ｓａｍｂａにより提供されるファイル共有サービスを介して行われるデータ読み出し要求に適したデータの読み出しは、ＣＩＦＳリーダー１０３４（図２）により実行される。
【００５８】
上述した実施の形態によれば、システムコール内で指定されたファイルのパス名を判断材料として、ＦＴＰ用の第１のアルゴリズムとＳａｍｂａ用の第２アルゴリズムのいずれか一方が選択され、選択されたアルゴリズムに従ってデータの読み出しが行われる。つまり、特定の用途向けに作られた、ファイルシステムによる読み出し動作を定める２つのアルゴリズムを、切り替えて使用できるようになる。
【００５９】
そして、このアルゴリズムの切り替えは、ＯＳによって標準で提供されるシステムコール内のパス名を判断材料として行われる。したがって、どのような読み出し動作が期待されているかをファイルシステムに対して伝えるための手段を新たに設けることなく、プログラム（アプリケーション）が求める要求を満たす方法で、読み出しを行えるようになる。
【００６０】
なお、図１０に示した例では、ストレージ１０１から読み出すデータのサイズをなるべく大きなサイズとすることが望ましいとしたが、初回の読み出しからいきなり大きなサイズとするのではなく、徐々にサイズを大きくしていくような手法をとってもよい。読み出し要求で読み出しが指示されたオフセットアドレスが、前回アクセスされたオフセットアドレスと連続していない場合には、そのような手法での読み出しを行う方がよい。オフセットアドレスが連続していない場合には、先読み用にＣＩＦＳ用キャッシュ１０３ｃ２に蓄積されているデータは、使用することができない。したがって、ストレージ１０１からデータを読み出す時間が、そのまま読み出しレスポンスの遅延時間となってしまう。ストレージ１０１からデータを読み出す時間はデータの大きさに比例するため、レスポンスを速くするためには、読み出しサイズを小さくする方がよい。
【００６１】
徐々に大きくしていく各読み出しサイズには、ＰＣ  ＩＦ用キャッシュ１０５（図１参照）が枯渇するまでの間にストレージ１０１から読み出せる最大のサイズを適用するとよい。読み出しサイズの算出方法としては、以下のような手法が考えられる。まず、データの読み出しサイズの算出にあたり、読み出し制御部１０３の読み出し速度を“ｘ”、読み出し制御部１０３が読み出すファイルのサイズを“Ｓ”、ネットワーク制御部１１０がサイズＳのデータを読み出す時間を“Ｔ”とする。また、読み出し制御部１０３がストレージ１０１からｎ回目にデータを読み出す場合のフレーム数を“ｊ”、ｎ−１回目に読み出したデータのフレーム数を“ｉ”とする。
【００６２】
このとき、ｎ回目に読み出すフレーム数ｊを、以下の２つの式を満足させる値に設定する。
Ｔ（ｊ）＜Ｓ（ｉ）／ｘ  …式１
ｊ＞ｉ  …式２
すなわち、式１によれば、ｎ回目に読み出すフレーム数ｊは、読み出し制御部１０３がｊフレームを読み出す時間Ｔ（ｊ）が、ｉフレーム分のデータＳ（ｉ）をネットワーク制御部１１０が読み出す時間ｘで除算した値よりも、小さくなる値に設定される。これにより、ＰＣ  ＩＦ用キャッシュ１０５に保持されたすべてのデータを読み出し制御部１０３が読み出すまでの間に、読み出し制御部１０３がストレージ１０１から読み出せるデータサイズが算出される。さらに、式２によれば、式１により求められたフレーム数ｊとして、既に読み出されたフレーム数ｉよりも大きなものが絞り込まれる。このようにして読み出しサイズを決定し、決定されたサイズでの読み出しを行うことで、ストレージ１０１から読み出すデータのサイズが、小さなサイズから徐々に大きなサイズになっていく。
【００６３】
また、上述した実施の形態では、Ｓａｍｂａとｆｔｐｄという２つのプログラムを例に挙げて説明したが、これらに限定されるものではない。他の様々なアプリケーションに対しても、それに応じたアルゴリズムを作成しておくことで、そのアプリケーションに最適な方法で読み出しを行うことができる。プログラムの数も、２つに限定されるものではない。
【００６４】
また、上述した実施の形態では、本開示の再生装置を、再生のみを行う再生装置に適用した例をあげたが、記録も行える記録再生装置に適用してもよい。
【００６５】
なお、本開示は以下のような構成も取ることができる。
（１）データが蓄積される記憶部と、
前記記憶部に蓄積された前記データの取得要求を生成する第１のプログラムと、前記記憶部に蓄積された前記データの取得要求を生成する、前記第１のプログラムとは種類の異
なる第２のプログラムとを制御するプログラム制御部と、
前記記憶部に蓄積された前記データをファイル単位で管理し、前記プログラム制御部から前記データの取得要求が入力された場合に、前記第１のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第１のアルゴリズムと、前記第２のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第２のアルゴリズムのいずれか一方を、前記データの取得要求中で指示された前記ファイルの格納位置情報に基づいて選択し、前記選択した前記第１のアルゴリズムもしくは前記第２のアルゴリズムに基づいて、前記記憶部から前記データの読み出しを行う読み出し制御部とを備えた再生装置。
（２）前記データの取得要求は、オペレーティングシステムにより標準で提供されるシステムコールによって行われる（１）に記載の再生装置。
（３）前記ファイルの格納位置情報とは、前記ファイルの格納位置までの経路が記されたパス名である（１）または（２）に記載の再生装置。
（４）前記第１のプログラムは、前記記憶部に蓄積された前記データを所定のアドレスから連続的に読み出すことを指示するものであり、前記第２のプログラムは、前記記憶部に蓄積された前記データを指定された特定のアドレスから読み出すことを指示するものである（１）〜（３）のいずれかに記載の再生装置。
（５）前記読み出し制御部は、前記第１のアルゴリズムを選択した場合には、前記第１のアルゴリズムに基づいて前記記憶部から読み出す前記データの量を大きく設定し、前記第２のアルゴリズムを選択した場合は、前記第２のアルゴリズムに基づいて前記記憶部から読み出す前記データの量を小さく設定する（１）〜（４）のいずれかに記載の再生装置。
（６）データを蓄積することと、
前記蓄積されたデータの取得要求を生成する第１のプログラムと、前記蓄積されたデータの取得要求を生成する、前記第１のプログラムとは種類の異なる第２のプログラムとを制御することと、
前記蓄積されたデータをファイル単位で管理することと、
前記データの取得要求が入力された場合に、前記第１のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第１のアルゴリズムと、前記第２のプログラムによる前記データの読み出しに適した手法で前記ファイルの読み出しを行う第２のアルゴリズムのいずれか一方を、前記データの取得要求中で指示された前記ファイルの格納位置情報に基づいて選択し、前記選択した前記第１のアルゴリズムもしくは前記第２のアルゴリズムに基づいて、前記蓄積されたデータの読み出しを行うこととを含む再生方法。
【符号の説明】
【００６６】
１００…再生装置、１０１…ストレージ、１０２…ストレージ制御部、１０３…読み出
し制御部、１０３ｃ…ＦＴＰ用／ＣＩＦＳ用キャッシュ、１０３ｃ１…ＦＴＰ用キャッシ
ュ、１０３ｃ２…ＣＩＦＳ用キャッシュ、１０４…ビデオデータ用キャッシュ、１０５…
ＰＣ、ＩＦ用キャッシュ、１０６…操作パネル、１０７…ビデオデータ再生用制御部、１
０８…データ要求処理部、１０９…ビデオデータ再生処理部、１１０…ネットワーク制御
部、１１１…ＩＦ用制御部、２００…外部ＰＣ、１０３１…仮想ファイルシステム（ＶＦ
Ｓ）、１０３２…ファイルシステム制御部、１０３３…ＦＴＰリーダー、１０３４…ＣＩ
ＦＳリーダー、Ａｓ１〜Ａｓ３…アドレス空間、２００…外部ＰＣ