(57)【要約】【課題】複数のファイルを同時に記録する際、記録準備時間を増やすことなく、記録中の管理情報の書込み速度の低下を防ぐことが出来る記録装置及びその制御方法、並びにプログラムを提供する。【解決手段】デジタルカメラ１００において、ＦＡＴファイルシステムで管理される記録媒体１０９に複数のファイルを記録する際、ＣＰＵ１０５は、複数のファイルのディレクトリエントリを同じセクタに記録するよう制御する。【選択図】図１
2020077245.tif 000002
【特許請求の範囲】
【請求項１】
複数のページを含むブロックから構成され、データの書き込みはページ単位で可能であり、データの消去はブロック単位で行われる記録媒体であって、セクタ番号が割り振られており、セクタ番号を指定してアクセス可能な記録媒体に、複数のファイルを記録する記録手段と、
前記複数のファイルのディレクトリエントリを、前記記録媒体の指定したセクタに記録するように制御する制御手段と、を有し、
前記記録手段により前記複数のファイルを記録する場合、前記制御手段は、前記複数のファイルのディレクトリエントリを同じセクタに記録するように制御することを特徴とする記録装置。
【請求項２】
前記制御手段は、前記複数のファイルのディレクトリエントリの一部しか前記記録すべきセクタに記録できない場合に、当該セクタの次にディレクトリエントリを記録すべきセクタに前記複数のファイルのディレクトリエントリを記録するように制御することを特徴とする請求項１記載の記録装置。
【請求項３】
前記制御手段は、前記複数のファイルのディレクトリエントリの一部しか前記記録すべきセクタに記録できない場合に、当該セクタの内の空きエントリを削除済みエントリに変換する変換手段を備えることを特徴とする請求項１又は２記載の記録装置。
【請求項４】
前記制御手段は、前記複数のファイルを同一のディレクトリに記録する場合に、前記複数のファイルのディレクトリエントリを同じセクタに記録するように制御することを特徴とする請求項３記載の記録装置。
【請求項５】
前記記録手段は、撮像手段により撮影された動画を前記複数のファイルとして記録し、
前記制御手段は、前記動画のビットレートまたは前記動画のモードに応じて、前記変換手段をを実行するか否かを切り替えることを特徴とする請求項３記載の記録装置。
【請求項６】
前記制御手段は、前記変換手段を実行した後、当該セクタの次にディレクトリエントリを記録すべきセクタに前記複数のファイルのディレクトリエントリを記録するように制御することを特徴とする請求項３記載の記録装置。
【請求項７】
前記変換手段は、記録可能なディレクトリエントリの検索を開始するセクタのセクタ番号、及び前記検索を開始するセクタの先頭からのオフセットをヒント位置として格納する格納手段を備えることを特徴とする請求項３記載の記録装置。
【請求項８】
前記複数のファイルの数が閾値より多い場合、前記変換手段は、前記記録すべきセクタの先頭を前記ヒント位置に設定し、前記記録可能なディレクトリエントリの検索を開始することを特徴とする請求項７記載の記録装置。
【請求項９】
前記ディレクトリエントリの書込み速度が前記複数のファイルの記録に影響を及ぼさない場合、前記変換手段は、前記記録すべきセクタの先頭を前記ヒント位置に設定し、前記記録可能なディレクトリエントリの検索を開始することを特徴とする請求項７記載の記録装置。
【請求項１０】
複数のページを含むブロックから構成され、データの書き込みはページ単位で可能であり、データの消去はブロック単位で行われる記録媒体であって、セクタ番号が割り振られており、セクタ番号を指定してアクセス可能な記録媒体に、複数のファイルを記録する記録ステップと、
前記複数のファイルのディレクトリエントリを、前記記録媒体の指定したセクタに記録するように制御する制御ステップと、を有し、
前記記録ステップにおいて前記複数のファイルを記録する場合、前記制御ステップにおいて、前記複数のファイルのディレクトリエントリが同じセクタに記録されるように制御されることを特徴とする記録装置の制御方法。
【請求項１１】
請求項１０記載の制御方法を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録装置及びその制御方法、並びにプログラムに関し、特にＦＡＴファイルシステムを用いてストリームデータの記録を行う記録装置及びその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年では、デジタルカメラなどの組込み機器の記録媒体にはＳＤカードなどの着脱可能な小型記録媒体が用いられることが多い。一方、小型記録媒体のファイルシステムのフォーマットにはＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムが多く用いられている。
【０００３】
ＦＡＴファイルシステムは大きく分類するとシステム情報領域とデータ記憶領域とからなる。データ記憶領域はクラスタと呼ばれる単位で構成され、動画や静止画などの実データを保持するファイルや、メタデータを管理するためのディレクトリなどが記録される。また、ディレクトリで管理するメタデータを記録する領域はディレクトリエントリと呼ばれる。ここで、ディレクトリには、ファイルのメタデータを管理するサブディレクトリと、サブディレクトリのメタデータを管理するルートディレクトリが存在する。すなわち、ディレクトリエントリは、ファイルやサブディレクトリ一つにつき一つ存在する。ディレクトリエントリにはファイルやサブディレクトリの名前、属性、タイムスタンプ、開始クラスタ番号等が記録される。システム情報領域は記録媒体そのものの情報を記録する領域や、各クラスタの連結状況や使用中、未使用などの状態を管理するＦＡＴなどから構成される。ＦＡＴファイルシステムではデータ記憶領域中のファイルやディレクトリの管理はクラスタ単位で行われる。すなわち、データ記憶領域中のファイルやディレクトリは少なくとも１つのクラスタで構成される。
【０００４】
ＦＡＴやディレクトリなどのＦＡＴファイルシステムの管理情報は、小型記録媒体に実データが書き込まれる毎に更新される。そのため管理情報は、その更新に必要な情報量は書きこまれる実データ自体の情報量よりも少ないが、その更新頻度は実データの書き込み頻度よりも多いという特徴がある。
【０００５】
一方、ＳＤカード等で一般に用いられているＮＡＮＤ型フラッシュメモリにおいて、一回の書込み要求で書き換え可能な最小単位はページと呼ばれている。書込み済のページの上書きには事前に消去を行う必要があり、消去はページよりも大きなブロックと呼ばれる単位でしか行えない。そのため、ディレクトリエントリ等のＦＡＴファイルシステムの管理情報の更新をフラッシュメモリにおいて行う場合、ブロック単位での読み出し、１ページの内容の変更、ブロックの消去、書き戻しという動作が必要となる。そのため、動画などのブロック単位でフラッシュメモリに書込みが実施できる実データの書込みが行われた場合、実データの書込み速度より管理情報の更新速度の方が低くなる。さらに近年のフラッシュメモリの大容量化に伴うブロックサイズの拡大によって、管理情報の更新速度のようにブロック単位より小さな単位での内容変更を伴う動作の速度はますます低下する傾向にある。
【０００６】
このような管理情報の更新速度の低下はストリームデータの記録の様に記録媒体へ継続して書込みを行う必要のある場合において特に問題となる。ストリームデータのビットレートより記録媒体への書込みの平均レートが下回ると記録を続行できなくなってしまうためである。
【０００７】
このような問題に対して、特許文献１では、まず、記録媒体へのデータの書込み要求に付加された書き込み開始アドレス、そのデータサイズ、およびその書き込み開始アドレスが過去に書き込まれたことがあるアドレスか否かを検出する。その後、これらの検出結果により、今回の書込み要求はディレクトリエントリの更新要求であると記録媒体側で判断した場合、検出したアドレスを含むページへのデータ書込みを、上述した書込み済のページの上書きとは異なる制御で行う。これにより、高速なデータ書込みを実現している。
【０００８】
しかし、特許文献１に記載のデータ書込み方法を用いたとしても、複数のストリームデータを同時に記録する場合に問題となる。複数のストリームデータのディレクトリエントリが同じページに記録されるとは限らず、上述の各検出を行ってもその検出結果により今回の書込み要求がディレクトリエントリの更新要求であるか否かを記録媒体側で判断することが出来なくなるためである。
【０００９】
この問題に対し、特許文献２では複数のストリームデータを記録する前に新たに一つのディレクトリを作成し、作成したディレクトリにストリームデータのディレクトリエントリを全て格納する方法について開示されている。これにより、複数のストリームデータのディレクトリエントリを同一ページに格納することが出来る。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−０１８４７１号公報
【特許文献２】特開２０１６−０１５０５７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献２に記載の方法では複数のストリームデータを記録する毎に新たに一つのディレクトリの作成が必要となる。新たに作成するディレクトリは予約エントリ以外全て０が記録されている必要があるため、ディレクトリ作成時には最低でも１クラスタ分のサイズを０で埋めたデータを記録媒体に書き込む必要がある。さらに、近年のフラッシュメモリはクラスタのサイズも大きくなってきているため、新たに一つのディレクトリを作成するためにかかる時間も増大している。
【００１２】
その結果、特許文献２に記載の方法ではストリームデータ記録の準備のための時間が増えてしまうという問題が残る。
【００１３】
本発明は以上のような問題に鑑みてなされたもので、複数のファイルを同時に記録する際、記録準備時間を増やすことなく、記録中の管理情報の書込み速度の低下を防ぐことが出来る記録装置及びその制御方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の請求項１に係る記録装置は、複数のページを含むブロックから構成され、データの書き込みはページ単位で可能であり、データの消去はブロック単位で行われる記録媒体であって、セクタ番号が割り振られており、セクタ番号を指定してアクセス可能な記録媒体に、複数のファイルを記録する記録手段と、前記複数のファイルのディレクトリエントリを、前記記録媒体の指定したセクタに記録するように制御する制御手段と、を有し、前記記録手段により前記複数のファイルを記録する場合、前記制御手段は、前記複数のファイルのディレクトリエントリを同じセクタに記録するように制御することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数のファイルを同時に記録する際に、記録準備時間を増やすことなく、記録中の管理情報の書込み速度の低下を防ぐことが出来る。
【図面の簡単な説明】
【００１６】
【図１】実施例１に係る記録装置としての記録媒体制御部を含むデジタルカメラの内部ハードウェア構成の概略を示すブロック図である。
【図２】ＦＡＴファイルシステムで管理されている場合の、図１における記録媒体のデータ配置の例を示す図である。
【図３】図２におけるディレクトリに記録されるディレクトリエントリの構成の概要図である。
【図４】図２におけるディレクトリに記録される各ディレクトリエントリの種別を説明するための図である。
【図５】図４における有効エントリを新しく作成する際に利用するヒント位置格納領域のブロック図である。
【図６】実施例１に係る同一セクタ記録可能判断処理の手順を示すフローチャートである。
【図７】図６のステップＳ６０７のディレクトリエントリ作成処理の手順を示すフローチャートである。
【図８】図６のステップＳ６０３の記録可能セクタ特定処理の手順を示すフローチャートである。
【図９】図６のステップＳ６０５の削除済エントリ変換処理の手順を示すフローチャートである。
【図１０】実施例２に係る同一セクタ記録可能判断処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
［実施例１］
本発明の実施例１に係る記録装置としての記録媒体制御部を含むデジタルカメラ１００について図１から図９を用いて説明する。デジタルカメラ１００は記録媒体１０９に対して撮影した動画データを記録することが出来る。
【００１８】
図１は、本実施例に係るデジタルカメラ１００の内部ハードウェア構成の概略を示すブロック図である。
【００１９】
デジタルカメラ１００は、撮像部１０１、操作部１０２、表示部１０３、ＣＰＵ１０５、ＲＯＭ１０６、ＲＡＭ１０７、及び記録媒体制御部１０８から構成されている。これらは図１に示すように内部バス１０４によって相互に接続されている。
【００２０】
ＣＰＵ１０５は、ＲＯＭ１０６またはＲＡＭ１０７に格納されているプログラムによって動作し、デジタルカメラ１００の各種挙動を制御する。
【００２１】
ＲＯＭ１０６はデジタルカメラ１００を制御するプログラムや記録媒体１０９上のデータを管理するためのＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムのプログラムを予め格納した不揮発性メモリである。
【００２２】
ＲＡＭ１０７はＲＯＭ１０６などから供給されるプログラムやデータを一時的に記憶する領域である。また、ＲＡＭ１０７は記録媒体１０９に記録されているデータをＣＰＵ１０５から操作するためのバッファリング領域としても利用される。
【００２３】
記録媒体制御部１０８は記録媒体１０９と物理的かつ電気的に接続され、デジタル画像データやその管理データなどのデータの記録媒体１０９に対する読み書きを制御する。ここで、記録媒体１０９は、前述の通り記録媒体制御部１０８によりデータの読み書きが制御されるメディアであれば、その形態は特に限定されない。例えば、ＳＤカードの様にデジタルカメラ１００からの取り外し可能なリムーバブルメディアであってもよいし、Ｅ・ＭＭＣの様にデジタルカメラ１００に固定されたメディアであってもよい。
【００２４】
ＣＰＵ１０５はＲＯＭ１０６に格納されているＦＡＴファイルシステムのプログラムを実行することで、記録媒体制御部１０８を介して記録媒体１０９上のデータを管理する。ＦＡＴファイルシステムの最小のアクセス単位であるセクタは、記録媒体１０９への一回の書込み要求により書き換え可能な最小単位のページに対応している。セクタには記録媒体１０９全体にわたって０番から一意のセクタ番号が割り振られている。ＣＰＵ１０５は任意のセクタ番号を記録媒体制御部１０８に指定することにより、記録媒体１０９の特定のページにアクセス可能となる。これにより、ＣＰＵ１０５は、ページ単位でデータの書き込み（記録）を行うことが出来る。一方、ＣＰＵ１０５による記録媒体１０９のデータの消去は、複数のページを含むブロック単位で行われる。
【００２５】
ＣＰＵ１０５は、記録媒体１０９を管理するため、同時に記録する複数のファイルのディレクトリエントリの全てを同じディレクトリの、同じセクタ番号で特定されるページ（以下、単に「同じセクタ」という。）に記録できるかを判断する。この判断の結果、同時に記録する複数のファイルのディレクトリエントリの一部しか同じディレクトリの同じセクタに記録できない場合、同じディレクトリではあるが異なる新しいセクタにこれから記録するファイルのディレクトリエントリを記録する。そのため、ＣＰＵ１０５は、ディレクトリの新しいセクタにおける未記録領域を再利用可能な種別のディレクトリエントリに変換する。
【００２６】
図２は、ＦＡＴファイルシステムで管理されている場合の図１における記録媒体１０９のデータ配置の例を示す図である。ＦＡＴファイルシステムはブートセクタ２０３とＦＡＴ２０２を含むシステム情報領域２０４と、クラスタ単位で管理されているデータ記憶領域２０１で構成されている。データ記憶領域２０１を構成する各クラスタに対しては、一意に決まる管理番号（クラスタ番号）が割り当てられている。各クラスタには「２」から順番にクラスタ番号が割り当てられ、ＦＡＴ２０２にその割り当てられたクラスタ番号毎に対応するＦＡＴエントリを持つ。データ記憶領域２０１には動画等の実データのファイル２１１や、ファイル２１１のメタデータを記録するディレクトリ２１０が記録される。ディレクトリ２１０、ファイル２１１ともに複数のクラスタを連結して構成することが可能で、その場合はＦＡＴ２０２を用いてその複数のクラスタの連結状況を表す。具体的には、その複数のクラスタの先頭のクラスタに割り当てられたクラスタ番号に対応するＦＡＴエントリには、そのクラスタの次に続くクラスタに割り当てられたクラスタ番号の値が記録される。同様に、その複数のクラスタの終端のクラスタ以外のクラスタに割り当てられたクラスタ番号に対応するＦＡＴエントリにも、そのクラスとの次に続くクラスタに割り当てられたクラスタ番号の値が記録される。一方、その複数のクラスタの終端のクラスタに割り当てられたクラスタ番号に対応するＦＡＴエントリには終端であることを示す値が記録される。
【００２７】
クラスタに有効なデータが記録されていない場合、そのクラスタに対応するＦＡＴエントリには「０」が記録されている。よって、新しいデータやディレクトリを記録する場合は、対応するＦＡＴエントリに「０」が記録されているクラスタ（空きクラスタ）を検索し、その検索されたクラスタを使用する。
【００２８】
図３は、図２におけるディレクトリ２１０に記録されるディレクトリエントリの構成の概要図である。
【００２９】
ディレクトリ２１０には、記録媒体１０９上に存在する、ファイル２１１や図２において不図示の他のディレクトリのメタデータを記録する領域であるディレクトリエントリが複数記録される。夫々のディレクトリエントリはファイルやディレクトリの一つに対応する。
【００３０】
以下、ディレクトリ２１０に複数記録されるディレクトリエントリのうち、ファイル２１１のメタデータを記録するディレクトリエントリ３０１を例に、ディレクトリ２１０に記録されるディレクトリエントリの構成を説明する。
【００３１】
ディレクトリエントリ３０１には、ファイル２１１の名前３０２、属性３０３、最終変更時刻（タイムスタンプ）３０５、開始クラスタ番号３０４、ファイル２１１のサイズ３０６が記録される。ＦＡＴファイルシステムにおいて、一つのディレクトリエントリは最低３２バイトで構成される。
【００３２】
図４は、図２におけるディレクトリ２１０に記録される各ディレクトリエントリの種別を説明するための図である。
【００３３】
ディレクトリ２１０に記録可能なディレクトリエントリには、図３で例示したディレクトリエントリ３０１の他にも記録される内容によりいくつか種別がある。具体的には、ディレクトリエントリには有効エントリ、削除済エントリ、空きエントリの３種類が存在する。
【００３４】
削除済エントリは、図４のディレクトリエントリ４０１に示すように、その先頭４０２が「０ｘＥ５」であるディレクトリエントリで、無効なディレクトリエントリである。削除済エントリはディレクトリエントリの先頭に「０ｘＥ５」を記録することで作成することが出来る。ディレクトリエントリ内のその他の領域はどのような値でも良い。
【００３５】
空きエントリは、図４のディレクトリエントリ４０３ａに示すように、その先頭４０４ａが「０ｘ００」であるディレクトリエントリで、まだ一度も利用されたことがない未使用且つ無効なディレクトリエントリである。
【００３６】
削除済エントリ、空きエントリ以外のディレクトリエントリが有効エントリ４００で、図３のディレクトリエントリ３０１のように、記録媒体１０９上に存在するファイルやディレクトリのメタデータが記録されている。削除エントリと空きエントリは有効エントリに変換された場合にメタデータの記録が可能となるディレクトリエントリである。また、ディレクトリ中の空きエントリ以降には有効エントリは存在しないよう構成される。すなわち、図４のように複数の空きエントリのディレクトリエントリ４０３ａ，４０３ｂが存在する場合、ディレクトリエントリ４０３ａから先にメタデータの記録が行われる。
【００３７】
図５は、図４における有効エントリ４００を新しく作成する際に利用するヒント位置格納領域のブロック図である。
【００３８】
ヒント位置格納領域５００は後述のディレクトリエントリ作成処理で、メタデータを記録可能なディレクトリエントリの検索を開始する際に利用されるヒント位置を格納する。
【００３９】
ヒント位置格納領域５００はＲＡＭ１０７に確保され、ＣＰＵ１０５によって操作、参照される。ヒント位置格納領域５００はデータ記憶領域２０１にあるディレクトリ２１０を含む各ディレクトリに対して確保され、セクタ番号格納領域５０１とオフセット格納領域５０２から構成される。
【００４０】
セクタ番号格納領域５０１には記録可能なディレクトリエントリの検索を開始するセクタのセクタ番号が記憶される。
【００４１】
オフセット格納領域５０２には記録可能なディレクトリエントリの検索を開始するセクタの先頭からのオフセットがヒント位置としてバイト単位で記憶される。
【００４２】
セクタ番号格納領域５０１の値が「０」の場合は、ヒント位置の情報が無効であることを示す。ヒント位置の情報が無効な場合はディレクトリの先頭のセクタから記録可能なディレクトリエントリの検索を開始する。セクタ番号格納領域５０１の値が「０」ではない場合、すなわち、ヒント位置の情報が有効である場合は、セクタ番号格納領域５０１に記憶されているヒント位置から記録可能なディレクトリエントリの検索を開始する。
【００４３】
記録媒体１０９にファイル２１１を記録する場合、ＣＰＵ１０５は、ファイル２１１のメタデータを記録するディレクトリエントリ３０１を作成する前に、下記の同一セクタ記録可能判断処理によって新しいセクタを利用するか否かを判断する。
【００４４】
同一セクタ記録可能判断処理に関して、図６のフローチャートを用いて説明する。
【００４５】
ステップＳ６０１でこれから同時に記録媒体１０９に記録するファイルが２つ以上であるかを判別する。ステップＳ６０１で同時に記録するファイルが１つであると判別された場合は、ステップＳ６０６に進む。ステップＳ６０１で同時に記録するファイルが２つ以上である判別された場合は、ステップＳ６０２に進む。
【００４６】
ステップＳ６０２で同時に記録するファイルのディレクトリエントリの記録先は全て同じディレクトリ（以下、ディレクトリ２１０という）か否かを判別する。ステップＳ６０２で同時に記録するファイルの一つでもディレクトリ２１０とは異なるディレクトリがディレクトリエントリの記録先であるファイルがあると判別された場合はステップＳ６０６に進む。ステップＳ６０２で同時に記録するファイルが全て同じディレクトリ２１０がディレクトリエントリの記録先であると判別された場合はステップＳ６０３に進む。
【００４７】
ステップＳ６０３で図８を用いて後述する記録可能セクタ特定処理を実行し、ディレクトリ２１０中の記録済のセクタの中から、これから同時に記録するファイルのディレクトリエントリを全て記録できるセクタを特定する。
【００４８】
ステップＳ６０４で記録可能セクタ特定処理によってセクタが特定できたか、すなわち、同時に記録するファイルのディレクトリエントリを全て同じセクタに記録できるかを判別する。ステップＳ６０４でセクタを特定できたと判別された場合はステップＳ６０６に進む。ステップＳ６０４でセクタを特定できなかったと判別された場合はステップＳ６０５に進む。
【００４９】
ステップＳ６０５で図９を用いて後述する削除済エントリ変換処理を実行し、これから同時に記録するファイルのディレクトリエントリを全て記録できるセクタを生成した後、ステップＳ６０６に進む。
【００５０】
ステップＳ６０６で全てのファイルのディレクトリエントリを作成が終了したかを判別する。ステップＳ６０６で全てのファイルのディレクトリエントリの作成が終了したと判別された場合は本処理を終了する。ステップＳ６０６でディレクトリエントリが作成されていないファイルが一つでもあると判別された場合はステップＳ６０７に進む。
【００５１】
ステップＳ６０７で図７を用いて後述するディレクトリエントリ作成処理にてＣＰＵ１０５は１つのファイルのディレクトリエントリを作成し、ステップＳ６０６に戻る。例えば、ステップＳ６０６でディレクトリエントリが作成されていないファイルが２１１である場合、ＣＰＵ１０５はディレクトリエントリ作成処理で記録媒体１０９上のディレクトリ２１０に新しくディレクトリエントリ３０１を作成する。
【００５２】
以上で、図６の同一セクタ記録可能判断処理に関する説明を終わる。
【００５３】
次に、図６のステップＳ６０７のディレクトリエントリ作成処理について図７のフローチャートを用いて説明する。以下、ステップＳ６０６でディレクトリエントリが作成されていないファイルがファイル２１１である場合について説明する。
【００５４】
ステップＳ７０１で新しく記録するファイル２１１のパス情報からディレクトリエントリ３０１を作成するディレクトリ２１０を特定する。
【００５５】
ステップＳ７０２でステップＳ７０１において特定したディレクトリ２１０に対応するヒント位置格納領域５００を参照し、ヒント位置の情報が有効であるかを判別する。すなわち、ディレクトリ２１０に対応するヒント位置格納領域５００のセクタ番号格納領域５０１に「０」以外の値のセクタ番号が記憶されているかを判別する。ステップＳ７０２でヒント位置の情報が有効であると判別された場合はステップＳ７０３に進む。ステップＳ７０２でヒント位置の情報が無効であると判別された場合はステップＳ７０４に進む。
【００５６】
ステップＳ７０３で記録可能なディレクトリエントリの検索を開始する位置（以下、「検索開始エントリ位置」という。）をヒント位置格納領域５００に格納されているヒント位置に設定する。その後、ステップＳ７０５に進む。
【００５７】
ステップＳ７０４で検索開始エントリ位置をディレクトリ２１０の先頭のセクタの先頭にあるディレクトリエントリに設定する。その後、ステップＳ７０５に進む。
【００５８】
ステップＳ７０５で現在の記録可能なディレクトリエントリを検索する位置（以下、「検索エントリ位置」）のディレクトリエントリが削除済エントリ又は空きエントリのいずれかであるかを判別する。ステップＳ７０５で削除済エントリ又は空きエントリのいずれかであると判別された場合ステップＳ７０６に進む。ステップＳ７０５で削除済エントリでも空きエントリでもないと判別された場合ステップＳ７０７に進む。
【００５９】
ステップＳ７０６で、現在の検索エントリ位置のディレクトリエントリを記録可能なディレクトリエントリであると判断し、このディレクトリエントリに新しく記録するファイルのメタデータを記録し、本処理を終了する。
【００６０】
ステップＳ７０７で検索エントリ位置を次のディレクトリエントリに設定する。
【００６１】
ステップＳ７０８で検索エントリ位置がセクタの終端に達したかを判別する。ステップＳ７０８でセクタの終端に達していないと判別された場合ステップＳ７０５に進む。ステップＳ７０８でセクタの終端に達したと判別された場合ステップＳ７０９に進む。
【００６２】
ステップＳ７０９で検索エントリ位置がクラスタの終端に達したかを判別する。ステップＳ７０９でクラスタの終端に達していないと判別された場合ステップＳ７１０に進む。ステップＳ７０９でクラスタの終端に達したと判別された場合ステップＳ７１１に進む。
【００６３】
ステップＳ７１０で検索エントリ位置を次のセクタの先頭にあるディレクトリエントリに設定し、ステップＳ７０５に進む。
【００６４】
ステップＳ７１１でＦＡＴを参照し次のクラスタがあるかを判別する。ステップＳ７１１で次のクラスタが無いと判別された場合（すなわち、現在のクラスタに割り当てられたＦＡＴエントリに終端であることを示す値が記録されている場合）ステップＳ７１２に進む。ステップＳ７１１で次のクラスタがあると判別された場合ステップＳ７１３に進む。
【００６５】
ステップＳ７１２でデータ記憶領域２０１において１クラスタ分のサイズの領域を確保し、確保した領域に全て０で書き込んで次のクラスタとしたのちにステップＳ７１３に進む。この際、現在のクラスタに割り当てられたＦＡＴエントリの値を、その次のクラスタに割り当てられたクラスタ番号の値に変更し、次のクラスタに割り当てられたＦＡＴエントリに終端であることを示す値を記録する。
【００６６】
ステップＳ７１３で検索エントリ位置を次のクラスタの先頭のディレクトリエントリに設定し、ステップＳ７０５に進む。
【００６７】
以上で図７のディレクトリエントリ作成処理に関する説明を終わる。
【００６８】
次に、図６のステップＳ６０３の記録可能セクタ特定処理について図８のフローチャートを用いて説明する。
【００６９】
ステップＳ８０１にて、ディレクトリ２１０中の空きエントリを含むセクタの調査が終了したか、すなわち次の調査対象のセクタが空きエントリを含むセクタの次のセクタであるかを否かを判別する。ステップＳ８０１で空きエントリを含むセクタの調査が終了した（すなわち、次の調査対象のセクタが空きエントリを含むセクタの次のセクタである）と判別された場合は、本処理を終了する。この場合は記録済のセクタの中にはこれから記録するファイルを全て記録可能なセクタが存在しなかったことになる。ステップＳ８０１で空きエントリを含むセクタの調査が終了していないと判別された場合はステップＳ８０２に進む。
【００７０】
ステップＳ８０２で記録可能なディレクトリエントリの数をカウントするカウンタを０で初期化する。
【００７１】
ステップＳ８０３で後述するステップＳ８０５の調査対象となるディレクトリエントリ（以下、「調査エントリ」という。）の位置をセクタの先頭に設定する。
【００７２】
ステップＳ８０４で調査エントリの位置がセクタの終端に達したかを判別する。ステップＳ８０４でセクタの終端に達したと判別された場合はステップＳ８０８に進む。ステップＳ８０４でセクタの終端に達していないと判別された場合はステップＳ８０５に進む。
【００７３】
ステップＳ８０５で調査エントリが削除済エントリ又は空きエントリのいずれかであるか否かを判別する。ステップＳ８０６で調査エントリが削除済エントリ又は空きエントリのいずれかであると判別された場合はステップＳ８０６に進む。ステップＳ８０５で調査エントリが削除済エントリでも空きエントリでもないと判別された場合はステップＳ８０７に進む。
【００７４】
ステップＳ８０６でカウンタを１加算する。
【００７５】
ステップＳ８０７で調査エントリを次のディレクトリエントリの位置に移動し、ステップＳ８０４に戻る。
【００７６】
ステップＳ８０８でカウンタの値がこれから同時に記録媒体１０９に記録するファイルの数以上であることを判別する。ステップＳ８０８でカウンタの値が同時に記録するファイルの数以上であると判別された場合はステップＳ８０９に進む。ステップＳ８０８で同時に記録するファイルの数より少ないと判別された場合はステップＳ８１０に進む。
【００７７】
ステップＳ８０９でヒント位置格納領域５００に現在の調査対象のセクタのセクタ番号を設定して、本処理を終了する。
【００７８】
ステップＳ８１０で次のセクタを調査対象に設定し、ステップＳ８０１に戻る。
【００７９】
以上で図８の記録可能セクタ特定処理に関する説明を終わる。
【００８０】
以上説明したように、同一セクタ記録可能判断処理において、全てのファイルのディレクトリエントリを記録可能なセクタが存在しない場合（ステップＳ６０４でＮＯ）、削除済エントリ変換処理（ステップＳ６０５）を実施する。すなわち、この削除済エントリ変換処理を実施することで、全てのファイルのディレクトリエントリを同一のディレクトリに記録することが可能な新しいセクタが生成される。これにより、生成された新しいセクタの先頭からこれから記録する全てのファイルのディレクトリエントリを記録することが可能となる。
【００８１】
図６のステップＳ６０５の削除済エントリ変換処理について、図９のフローチャートを用いて説明する。
【００８２】
ステップＳ９０１で空きエントリを含むセクタの先頭のディレクトリエントリを調査エントリに設定する。
【００８３】
ステップＳ９０２で調査エントリが空きエントリかを判別する。ステップＳ９０２で調査セントリが空きエントリと判別された場合はステップＳ９０４に進む。ステップＳ９０２で調査エントリが空きエントリではないと判別された場合はステップＳ９０３に進む。
【００８４】
ステップＳ９０３で調査エントリの位置を次のディレクトリエントリに設定し、ステップＳ９０２に戻る。
【００８５】
ステップＳ９０４で調査エントリの位置がセクタの先頭かを判別する。ステップＳ９０４で調査エントリの位置がセクタの先頭であると判別された場合はステップＳ９０９に進む。ステップＳ９０４で調査エントリの位置がセクタの先頭ではないと判別された場合はステップＳ９０５に進む。
【００８６】
ステップＳ９０５で調査エントリの位置がセクタの終端に達したかを判別する。ステップＳ９０５でセクタの終端に達したと判別された場合はステップＳ９０８に進む。ステップＳ９０５でセクタの終端に達していないと判別された場合はステップＳ９０６に進む。
【００８７】
ステップＳ９０６で調査エントリの先頭に「０ｘＥ５」を記録し、空きエントリを削除済エントリに変換する。
【００８８】
ステップＳ９０７で調査エントリを次のディレクトリエントリに設定し、ステップＳ９０５に進む。
【００８９】
ステップＳ９０８で調査エントリを次のセクタの先頭のディレクトリエントリに設定する。
【００９０】
ステップＳ９０９で調査エントリのあるセクタのセクタ番号をヒント位置格納領域５００のセクタ番号格納領域５０１に設定し、本処理を終了する。
【００９１】
以上で図９の削除済エントリ変換処理に関する説明を終わる。
【００９２】
以上、本実施例によれば、同時に複数のファイルを記録する際に、その複数のファイルのディレクトリエントリを記録するために更新するディレクトリのセクタを一つに抑えることが出来る。その結果、同時に複数のファイルを記録している間に更新する記録媒体１０９上のページを一つに抑えることが可能になり、ディレクトリエントリ等のＦＡＴファイルシステムの管理情報の書込み速度の低下を抑制することが出来るようになる。
【００９３】
また上述の通り、削除済エントリ変換処理ではステップＳ９０６で未記録領域である空きエントリを削除済エントリに変換したが、再利用可能なディレクトリエントリであれば削除済エントリでなくても良い。再利用可能とは変換により新しく有効なディレクトリエントリを作成出来るディレクトリエントリであること、変換後にそのディレクトリエントリより後方のディレクトリエントリが検索可能となること、を満たすディレクトリエントリである。
【００９４】
［実施例２］
実施例２では、実施例１よりも同じディレクトリの同じセクタへの記録を実施する状況を限定する。これにより必要かつ可能な場合のみ、ディレクトリエントリを一つのセクタに収めることができる。
【００９５】
また、実施例１の同一セクタ記録可能判断処理では、同時に記録する全てのファイルのディレクトリエントリを同じディレクトリの同じセクタに記録できない場合、まず、ヒント位置格納領域５００に記憶されるヒント位置を利用して新しいセクタを生成する。その後、そのセクタにディレクトリエントリを作成する。これに対し実施例２の同一セクタ記録可能判断処理では、同時に記録する全てのファイルのディレクトリエントリを同じディレクトリの同じセクタに記録できない場合、必ずディレクトリの先頭から記録可能なディレクトリエントリを検索する。これにより、ディレクトリをより効率よく利用することができる。
【００９６】
実施例２では、実施例１と同様のハードウェア構成からなるため、同一の構成には同一の符号を付し重複した説明は省略する。また、記録媒体１０９内の実データのファイルは実施例１と同様にＦＡＴファイルシステムで管理される。よって、実施例１におけるディレクトリエントリ作成処理（図７）、削除済エントリ変換処理（図９）、ヒント位置格納領域５００は実施例２においてそのまま実行・利用される。
【００９７】
実施例２における同一セクタ記録可能判断処理に関して、図１０のフローチャートを用いて説明する。
【００９８】
ステップＳ１００１でこれから同時に記録するファイルが２つ以上であるかを判別する。ステップＳ１００１で同時に記録するファイルが１つであると判別された場合はステップＳ１０１０に進む。ステップＳ１００１で同時に記録するファイルが２つ以上であると判別された場合はステップＳ１００２に進む。
【００９９】
ステップＳ１０１０でヒント位置格納領域５００に記憶されるヒント位置を記録先のディレクトリの先頭に設定し、ステップＳ１００７に進む。
【０１００】
ステップＳ１００２でディレクトリエントリの更新速度（ビットレート）が予め決められた速度より低速度であってもファイルの記録が継続できる撮影モードか、すなわち管理情報の書込み速度がファイルの記録に影響を及ぼさない撮影モードかを判別する。ステップＳ１００２でディレクトリエントリの更新速度が低速度であっても記録が継続できる撮影モードであると判別された場合はステップＳ１０１０に進む。すなわち、これから作成するファイルが撮影中の動画を実データとして含むファイルであっても、その撮影が、短い時間で終了する撮影モードで行われる場合や、長い時間かかるが撮影時のビットレートが低い撮影モードの場合、ステップＳ１０１０に進む。ステップＳ１００２で記録中のディレクトリエントリの更新が低速度では記録の継続が不可能な撮影モードであると判別された場合はステップＳ１００３に進む。
【０１０１】
ステップＳ１００３で同時に記録するファイルの数がＲＯＭ１０６で予め保持している閾値以下であることを判別する。ＲＯＭ１０６が予め保持している閾値は、１セクタに記録することができる最大のディレクトリエントリの数で、ＦＡＴファイルシステムの場合は１６である。この閾値より多くの数のディレクトリエントリを１つのセクタに収めることはＦＡＴファイルシステムの規格上不可能である。よって、ステップＳ１００３で同時に記録するファイルの数が閾値以下であると判別された場合はステップＳ１００４に進む。ステップＳ１００３で同時に記録するファイルの数が閾値より多いと判別された場合は、ステップＳ１０１０に進む。
【０１０２】
ステップＳ１００４で同時に記録するファイルのディレクトリエントリの記録先は全て同じディレクトリ（以下、ディレクトリ２１０という）か否かを判別する。ステップＳ１００４で同時に記録するファイルの一つでもディレクトリ２１０とは異なるディレクトリがディレクトリエントリの記録先であるファイルがあると判別された場合はステップＳ１０１０に進む。ステップＳ１００４で同時に記録するファイルが全て同じディレクトリ２１０がディレクトリエントリの記録先であると判別された場合はステップＳ１００５に進む。
【０１０３】
ステップＳ１００５で実施例１に記載の記録可能セクタ特定処理（図８）を実行する。
【０１０４】
ステップＳ１００６で前記記録可能セクタ特定処理によってセクタが特定できたか、すなわち、同時に記録するファイルのディレクトリエントリを全て同じセクタに記録できるかを判別する。ステップＳ１００６でセクタを特定できたと判別された場合はステップＳ１００７に進む。ステップＳ１００６でセクタを特定できなかったと判別された場合はステップＳ１００９に進む。
【０１０５】
ステップＳ１００９で実施例１に記載の削除済エントリ変換処理（図９）を実行し、ステップＳ１００７に進む。
【０１０６】
ステップＳ１００７で全てのファイルのディレクトリエントリの作成が終了したかを判別する。ステップＳ１００７で全てのファイルのディレクトリエントリの作成が終了したと判別された場合は本処理を終了する。ステップＳ１００７でディレクトリエントリが作成されていないファイルが一つでもあると判別された場合はステップＳ１００８に進む。
【０１０７】
ステップＳ１００８で実施例１に記載のディレクトリエントリ作成処理（図７）を実行してディレクトリエントリを作成し、ステップＳ１００７に戻る。
【０１０８】
以上で、図１０の実施例２における同一セクタ記録可能判断処理に関する説明を終わる。
【０１０９】
以上、本実施例によれば、必要でかつ可能な場合のみディレクトリエントリをひとつのセクタに収めることができる。
【０１１０】
また、削除済エントリ変換処理で削除済エントリに変換した空きエントリは、同一セクタ記録可能判断処理によって同一セクタへの記録が不要と判断されたファイルのディレクトリエントリとして優先的に利用することができる。すなわち、ディレクトリをより効率よく利用することが可能になる。
【０１１１】
［その他の実施例］
本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、装置に供給することによっても、達成されることは言うまでもない。このとき、供給された装置の制御部を含むコンピュータ（またはＣＰＵやＭＰＵ）は、記憶媒体に格納されたプログラムコードを読み出し実行する。
【０１１２】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１１３】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１１４】
また、上述のプログラムコードの指示に基づき、装置上で稼動しているＯＳ（基本システムやオペレーティングシステム）などが処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１１５】
さらに、記憶媒体から読み出されたプログラムコードが、装置に挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれ、前述した実施例の機能が実現される場合も含まれることは言うまでもない。このとき、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行う。
【符号の説明】
【０１１６】
１００  デジタルカメラ
１０１  撮像部
１０２  操作部
１０３  表示部
１０５  ＣＰＵ
１０６  ＲＯＭ
１０７  ＲＡＭ
１０８  記録媒体制御部
２０１  データ記憶領域
２０２  ＦＡＴ
２０３  ブートセクタ
２０４  システム情報領域
２１０  ディレクトリ
２１１  ファイル
【図１】
2020077245.tif 000003
【図２】
2020077245.tif 000004
【図３】
2020077245.tif 000005
【図４】
2020077245.tif 000006
【図５】
2020077245.tif 000007
【図６】
2020077245.tif 000008
【図７】
2020077245.tif 000009
【図８】
2020077245.tif 000010
【図９】
2020077245.tif 000011
【図１０】
2020077245.tif 000012