従来、例えば、デジタルカメラ(デジタルビデオカメラまたはデジタルスチルカメラ)、PC(Personal Computer)や携帯電話機、および据え置き型ビデオレコーダなどにおいては、ハードディスクなどのランダムアクセス可能な記録媒体に、静止画像、動画像、または音声(または音楽)といった各種のデータが、FAT(File Allocation Tables)やUDF(Universal Disk Format)などのファイルシステムによって、ファイルとして記録されるようになされている。
例えば、FATファイルシステムにおいてファイルが記録媒体としてのハードディスクに記録されている場合、そのファイルにアクセスするためには、まずファイルの名前や、ファイルの実際のデータ(以下、実データと称する)の格納場所等が格納されているディレクトリエントリを参照し、そのディレクトリエントリで指定されているクラスタ番号に対応するFAT領域を参照することにより、ファイルの実データが記録されている領域を特定し、アクセスする(例えば、特許文献1参照)。
図1乃至図9を参照して、従来のFATファイルシステムでハードディスクに記録されたファイルへのアクセスについて詳しく説明する。
図1は、FATファイルシステム(FAT32)によりフォーマットされているハードディスク1の種々の領域の構成の一例を示す図である。
図1に示すように、FATファイルシステム(FAT32)によりフォーマットされたハードディスク1は、ハードディスク1を構成するパーティションの位置やサイズなどが記録されているパーティションテーブルやアクティブなパーティションから起動用のプログラムを読み込むためのマスタブートコード(Master Boot Code)などが記録されているMBR(Master Boot Record)11と、空き領域12およびパーティション13とにより構成されている。
パーティション13には、1クラスタあたりのセクタ数など、ハードディスク1の物理的な属性が記録されるBPB(BIOS(Basic Input Output System) Parameter Block)21、空き容量を高速に計算するための空きクラスタ数が記録されるFSInfo22、後述するデータ領域25内の各クラスタに1対1に対応する領域(FATエントリ)で構成され、各クラスタについての情報が記録されるFAT領域23、およびFAT領域23のバックアップなどのために利用される予備の領域であるFAT領域24が設けられている。
ここで、クラスタは、FATファイルシステムにおけるデータを管理可能な最小単位であり、ハードディスク1に対する記録単位であるセクタ(1セクタのサイズ=512バイト)をn(n=1,2,4,・・・,64,128)個集めた記録単位である。なお、本明細書では、クラスタのサイズは、n=64としたときの32Kバイト(キロバイト)であるとする。
また、パーティション13には、ファイルのディレクトリエントリおよび実データが記録される領域であるデータ領域25が設けられている。
なお、FAT32の詳細は、「Microsoft Extensible Firmware Initiative FAT32 File System Specification」に開示されている。
図1に示すハードディスク1は、デジタルカメラ(デジタルビデオカメラまたはデジタルスチルカメラ)に搭載されており、ハードディスク1には、デジタルカメラで静止画の撮像が行われたときに作成されるファイル(画像ファイル)が記録されるものとする。
ここで、デジタルカメラで静止画の撮像が行われたときに作成されるファイルは、DCF(Design rule for Camera File system)の規格に準拠した、図2に示すファイル名の命名規則およびディレクトリ構成(階層構造)でハードディスク1に記録されるようになされている。
図2では、ハードディスク1のルート(Root)直下に、DCIMディレクトリ(フォルダ)が作成される。また、DCIMディレクトリの下の階層(以下、下層と称する)に「???MSDCF」のディレクトリ(サブディレクトリ)が作成される。
ここで、“???”には、ディレクトリが作成されるごとに、“101”から1ずつインクリメントされた数字が入力される。即ち、DCIMディレクトリの下層にディレクトリが作成されるごとに、「101MSDCF」,「102MSDCF」,「103MSDCF」・・・・というようにディレクトリの名前が付与される。なお、図2では、「101MSDCF」乃至「301MSDCF」のディレクトリが作成されている例が示されている。
従って、ハードディスク1では、DCIMディレクトリの下層に、「101MSDCF」乃至「999MSDCF」の、最大で899個のディレクトリを作成することが可能である。換言すれば、デジタルカメラに搭載されたハードディスク1では、作成されるディレクトリの最大個数が、899個に設定されている。
また、名前が「???MSDCF」とされる各ディレクトリには、最大で9999個のファイルを格納可能であることと設定し、そのファイル名として、ディレクトリごとに「DSC0####.JPG」の名前が付与される。ここで、“####”には、ファイルが作成されるごとに、0001から1ずつインクリメントされた数字が入力される。即ち、各ディレクトリに、ファイルが作成されるごとに、「DSC00001.JPG」,「DSC00002.JPG」,「DSC00003.JPG」,「DSC00004.JPG」・・・・の順にファイル名が付与される。
図2においては、「101MSDCF」のディレクトリに、9999個のファイル「DSC00001.JPG」乃至「DSC09999.JPG」が作成されており、「102MSDCF」のディレクトリに、199個のファイル「DSC00001.JPG」乃至「DSC00199.JPG」が作成されている例が示されている。また、図2では、「200MSDCF」のディレクトリには、222個のファイル「DSC00001.JPG」乃至「DSC00222.JPG」が作成されており、「301MSDCF」のディレクトリには、1450個のファイル「DSC00001.JPG」乃至「DSC01450.JPG」が作成されている例が示されている。
次に、図3のフローチャートを参照して、デジタルカメラで撮像された画像のファイルが即座に記録可能なように、ハードディスク1に対して行われる従来の記録準備処理について説明する。図3の記録準備処理は、例えば、デジタルカメラの工場出荷前などの、ハードディスク1をFATファイルシステムでフォーマット(初期化)した後などに実行される。
初めに、ステップS1において、デジタルカメラのCPUは、上述したDCFの規格に準拠した「DCIM」ディレクトリをハードディスク1に作成して、ステップS2に進む。
ステップS2において、デジタルカメラのCPUは、「DCIM」ディレクトリの下層に、「101MSCDF」ディレクトリを作成して、処理を終了する。
以上のように、記録準備処理によって、1個目のファイルが作成されるときに、そのファイルを保存(記録)する場所としての、「DCIM」ディレクトリおよび「101MSCDF」ディレクトリがハードディスク1に予め作成される。
図4は、図3の記録準備処理終了後の、ハードディスク1のデータ領域25(図1)の詳細な構成例を示している。
記録準備処理終了後のデータ領域25では、クラスタ番号2のクラスタに、上述したステップS1の「DCIM」ディレクトリの作成に対応する、「DCIM」ディレクトリのディレクトリエントリが記録されている。
また、クラスタ番号3のクラスタに、上述したステップS2の「101MSDCF」ディレクトリの作成に対応する、「101MSDCF」ディレクトリのディレクトリエントリが記録されている。
なお、「DCIM」ディレクトリおよび「101MSDCF」ディレクトリのディレクトリエントリそれぞれは、32バイトで構成されている。
また、「101MSDCF」ディレクトリのディレクトリエントリの前(クラスタ番号3のクラスタの先頭側)の、“.”は、「自分のディレクトリ」を表し、“..”は、「1つ上の階層のディレクトリ」を表すエントリである。
図5は、図3の記録準備処理終了後の、ハードディスク1のFAT領域23(図1)の詳細な構成例を示している。
「00000000h」または「00000001h」の(アドレスの)FATエントリには、「RSV」が格納されている。「RSV」は、そのクラスタ番号(「00000000h」または「00000001h」)のクラスタがWindows(登録商標)において使用される領域であることを表す。ここで、「00000000h」または「00000001h」の「h(hexadecimal number)」は、“00000000”または”00000001”が16進数で表現されていることを表している。以下、「h」が付加されている値は、同様に16進数で表現されていることを表す。
そして、「DCIM」ディレクトリのディレクトリエントリが記録されているクラスタ番号2のクラスタに対応する「00000002h」のFATエントリには、そのクラスタ(だけ)でデータの書き込みが終了していることを表す「EOF」が格納されている。また、「101MSDCF」ディレクトリのディレクトリエントリが記録されているクラスタ番号3のクラスタに対応する「00000003h」のFATエントリにも、同様に「EOF」が格納されている。ここで、「EOF」は、実際には、所定の数(FAT32では、0FFFFFFFhで、FAT16では、FFFFhなど)である。なお、図5において「−」で示されているFATエントリには、00000000hが格納されており、そのクラスタが「未使用」(空き領域)であることを表している。
図6を参照して、図1のようにフォーマットされたハードディスク1を搭載した従来のデジタルカメラで静止画の撮像が行われた場合に、その静止画の画像に対応するファイルをハードディスク1に記録する処理ついて説明する。
初めに、ファイルDSC00001.JPGがハードディスク1のデータ領域25に記録(作成)されるときに、記録準備処理後の図4に示したデータ領域25において空き領域となっているクラスタのうちの先頭のクラスタである、クラスタ番号4のクラスタに、ファイルDSC00001.JPGのディレクトリエントリが記録される。
そして、クラスタ番号4の次の、クラスタ番号5と6のクラスタを使用して、ファイルDSC00001.JPGの実データが記録される(ファイルDSC00001.JPGの実データが、クラスタ2つ分(64Kバイト)に相当するものとする)。
次に、ファイルDSC00002.JPGがデータ領域25に記録されるときには、クラスタ番号4のクラスタにディレクトリエントリを記録する空き領域があるため、ファイルDSC00001.JPGのディレクトリエントリの後ろに、ファイルDSC00002.JPGのディレクトリエントリが記録される。
以下、同様にして、クラスタ番号4のクラスタには、ディレクトリ101MSDCF内にあるファイルDSC00001.JPG乃至DSC01022.JPGのディレクトリエントリが記録されている。
ここで、1つのクラスタのサイズは、上述したように32Kバイトであり、1つのディレクトリエントリは32バイトで構成される(図7で後述)ため、1つのクラスタには、1024のディレクトリエントリが記録可能である。ただし、クラスタ番号4のクラスタには、“.”および“..”のエントリが記録されるため、1022個のファイルのディレクトリエントリとなる。
なお、以下では、ファイルのディレクトリエントリが記録されているクラスタをディレクトリエントリクラスタと称し、ディレクトリエントリクラスタの集まりをディレクトリエントリ領域と称する。
また、クラスタ番号5乃至1028のクラスタには、ファイルDSC00001.JPG乃至DSC01022.JPGの実データが記録されている。なお、以下では、ファイルの実データが記録されているクラスタの集まりを実データ領域とも称する。
次に、ファイルDSC01023.JPGが記録(作成)される時に、これまでディレクトリエントリを記録していたクラスタ番号4のクラスタであるディレクトリエントリクラスタ[1]には、ディレクトリエントリを記録する空き領域がないため、新たにディレクトリエントリクラスタ[2]として、クラスタ番号1029のクラスタが確保され、そこにファイルDSC01023.JPGのディレクトリエントリが記録される。なお、図6では、ディレクトリエントリクラスタの番号は、その番号の数字を丸で囲んで示してある(他の図も同様)。
同様にして、ディレクトリエントリクラスタ[2]には、ディレクトリ101MSDCF内にあるファイルDSC01024.JPG乃至DSC02046.JPGの1024個のファイルのディレクトリエントリが記録されている。
また、クラスタ番号1030乃至2054のクラスタには、ファイルDSC01023.JPG乃至DSC02046.JPGの実データが記録されている。
以下、クラスタ番号2055以降のクラスタについても、ディレクトリエントリクラスタおよび実データ領域が同様に確保され、そこにディレクトリエントリまたは実データが記録されている。
なお、ディレクトリ101MSDCF内に、1つのディレクトリ内に格納するファイルの最大ファイル数である9999個のファイルが格納される場合、ディレクトリエントリが記録されるクラスタとして、図6右側に示すように、10個のディレクトリエントリクラスタ[1]乃至[10]が必要となる。
そして、従来のFATファイルシステムにおけるハードディスク1へのファイルの記録では、そのディレクトリエントリクラスタ[1]乃至[10]は、それぞれが、図6に示すように、実データ領域に挟まれるように分散されて配置されることになる。
次に、図6に示したように記録されたファイルの1つを読み出す場合の処理について説明する。
図7は、データ領域25に記録されるファイルのディレクトリエントリの構造の例を示す図である。なお、図中の0(h)乃至1F(h)は、0を始点としてディレクトリエントリにおけるバイト数を表す16進数である。なお、ディレクトリエントリにおけるバイト数を、1を始点とする10進数で表した場合、0乃至1Fは、それぞれ、1乃至32で表される。
ディレクトリエントリの先頭に配置される、7バイトの名前31には、ファイル名が格納される。名前31に続く、3バイトの拡張名32には、いわゆる、ファイルの拡張子(例えば、MPEG2(Moving Picture Experts Group phase 2)フォーマットの場合は「mpg」、MP3(MPEG Audio Layer-3)フォーマットの場合は「mp3」)が格納される。また、拡張名32に続く、1バイトの属性33には、ファイルかディレクトリかを表す属性が格納される。属性33(のデータ)が20hである場合、ファイルを表し、属性33が10hである場合、ディレクトリを表す。属性33に続く、1バイトの予約領域34は、未使用とされる。
予約領域34に続く、3バイトの作成時刻35には、ファイルが作成された時刻が格納される。作成時刻35に続く、2バイトの作成日付36には、ファイルが作成された日付が格納される。作成日付36に続く、2バイトの最終アクセス日付37には、ファイルにアクセスされた最終の日付が格納される。
最終アクセス日付37に続く先頭クラスタ番号(High)38と、記録時刻39および記録日付40に続く先頭クラスタ番号(Low)41とには、ファイルが使用する最初のクラスタ番号(以下、先頭クラスタ番号と称する)が格納される。先頭クラスタ番号の上位2バイトが先頭クラスタ番号(High) 38に格納され、下位2バイトが先頭クラスタ番号(Low)41に格納される。
先頭クラスタ番号(High)38に続く、2バイトの記録時刻39には、ファイルが記録された時刻、すなわち、ファイルが最後に更新された時刻(最後に書き込まれた時刻)が格納される。記録時刻39に続く、2バイトの記録日付40には、ファイルが記録された日付、すなわち、ファイルが最後に更新された日付(最後に書き込まれた日付)が格納される。
記録時刻39に続いて、上述した先頭クラスタ番号(Low)41が配置され、その後のディレクトリエントリの最後の4バイトであるファイルサイズ42には、ファイルのファイルサイズが格納される。
以上のように構成されるディレクトリエントリにおいて、例えば、ファイルDSC00010.JPGのディレクトリエントリに格納されている先頭クラスタ番号が「0000001Bh」である場合、ファイルDSC00010.JPGの実データを抽出(検出)するために、FAT領域23の「0000001Bh」のアドレスのFATエントリが参照される。
そこで、図8は、図6のデータ領域25に対応するFAT領域23(の一部)を示している。
データ領域25に記録するファイルのデータサイズが1クラスタのサイズ(32Kバイト)以内であって、1つのクラスタだけでデータの書き込みが終了する場合、FAT領域23の各FATエントリには、上述したように、「EOF」が格納される。
一方、データ領域25に記録するファイルのデータサイズが1クラスタのサイズを超え、別のクラスタへとデータが続けて書き込まれている場合には、FAT領域23の各FATエントリに、次の(データが続く先の)クラスタ番号が格納される。
例えば、ファイルDSC00010.JPGのディレクトリエントリに書き込まれた先頭クラスタ番号の「0000001Bh」(のアドレス)のFATエントリには、図8に示すように、「00000011h」が格納されている。また、「00000011h」のFATエントリには「00000012h」が格納され、「00000012h」のFATエントリには「00000013h」が格納され、「00000013h」のFATエントリには「00000014h」が格納され、「00000014h」のFATエントリには「00000004h」が格納され、「00000004h」のFATエントリには、「EOF」が格納されている。
即ち、ファイルDSC00010.JPGの実データは、クラスタ番号が、「0000001Bh」のクラスタ、「00000011h」のクラスタ、「00000012h」のクラスタ、「00000013h」のクラスタ、「00000014h」のクラスタ、および「00000004h」のクラスタに、順に記録されていることを表している。
従って、FAT32などのファイルシステムにおいては、ファイルをハードディスク1から読み出す場合、そのファイルのディレクトリエントリが最初に検索される。そして、ディレクトリエントリ内に保持されている先頭クラスタの番号を基に、FAT領域23のFATエントリが参照され、参照されたFATエントリから、そのファイルの実データが記録されているクラスタ番号が順次読み出され、読み出されたクラスタ番号のクラスタから実データが読み出される。
一方、ファイルをハードディスク1に記録する場合、ファイルのディレクトリエントリを記録するクラスタ(ディレクトリエントリクラスタ)が最初に検索される。そして、検出されたクラスタにファイルのディレクトリエントリが記録(作成)されるとともに、ファイルの実データが、ディレクトリエントリが記録されたクラスタより後段の空き領域のクラスタに記録される。
以上から、ファイルを、ハードディスク1から読み出す場合およびハードディスク1に記録する場合のいずれにおいても、該当するディレクトリエントリクラスタ(読み出すファイルのディレクトリエントリが記録されたクラスタ、またはディレクトリエントリを記録する空き領域があるクラスタ)を検索する処理が最初に行われる。
図9を参照して、ルートディレクトリの下のディレクトリ101MSDCF内に作成された9999個目のファイルDSC09999.JPGのディレクトリエントリを検索する処理について説明する。
ファイルDSC09999.JPGのディレクトリエントリは、図6を参照して説明したように、10番目のディレクトリエントリクラスタ[10]に格納されている。
そして、図9において、ディレクトリエントリが格納(記録)されているディレクトリエントリクラスタ[1]乃至[10]は、図6を参照して説明したように、データ領域25内で分散されて配置されている。
従って、ファイルDSC09999.JPGのディレクトリエントリを検索する場合、デジタルカメラのCPUは、LBA(Logical Block Address)の小さい方から、ディレクトリエントリクラスタを検索する。即ち、CPUは、データ領域25内のディレクトリエントリクラスタ[1],[2],[3],・・・の順に検索し、ディレクトリクラスタ[10]において、ファイルDSC09999.JPGのディレクトリエントリを検出する。
この場合、CPUがディレクトリエントリクラスタ[10]に到達するまでに、ハードディスク1のドライブでは、9回のシーク動作が発生する。即ち、例えば、ディレクトリエントリクラスタ[1]とディレクトリエントリクラスタ[2]の間では、ファイルDSC00001.JPG乃至DSC01022.JPGの実データの総サイズの記録領域に相当するディスクの半径方向の距離X1のシーク動作が発生する。また、ディレクトリエントリクラスタ[2]とディレクトリエントリクラスタ[3]の間では、ファイルDSC01023.JPG乃至DSC02046.JPGの実データの総サイズの記録領域に相当するディスクの半径方向の距離X2のシーク動作が発生する。さらに、ディレクトリエントリクラスタ[3]とディレクトリエントリクラスタ[4]の間では、ファイルDSC02047.JPG乃至DSC03070.JPGの実データの総サイズの記録領域に相当するディスクの半径方向の距離X3のシーク動作が発生する。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加されたりする発明の存在を否定するものではない。
請求項1に記載の記録装置は、
所定のデータ単位(例えば、セクタ)が複数集められた記録単位(例えば、クラスタ)で管理されるデータ領域を有する記録媒体(例えば、図17のハードディスク191)にファイルを記録する記録装置(例えば、図10のデジタルカメラ100)において、
前記記録媒体に記録可能な最大ファイル数分の、前記ファイルの実際のデータを参照するための情報であるエントリ情報を記録するのに必要な記録単位数を算出する記録単位数算出手段(例えば、図17のクラスタ数算出部371)と、
前記記録単位数算出手段により算出された記録単位数だけ連続する前記記録単位を、前記データ領域内において確保する確保手段(例えば、図17のFAT制御部363)と
を備えることを特徴とする。
請求項4に記載の記録装置は、
前記ファイルのファイルサイズには、複数種類のファイルサイズがあり、
前記複数種類のファイルサイズのうちの最も小さなファイルサイズと、前記記録媒体全体の記録容量とから、前記記録媒体に記録可能な前記最大ファイル数を算出するファイル数算出手段(例えば、図17のファイル数算出手段371)をさらに備える
ことを特徴とする。
請求項5に記載の記録装置は、
前記確保手段により確保された前記記録単位に記録する、前記ファイルの前記エントリ情報を予め作成する作成手段(例えば、図17のディレクトリエントリ作成部373)をさらに備える
ことを特徴とする。
請求項7に記載の記録方法は、
所定のデータ単位が複数集められた記録単位で管理されるデータ領域を有する記録媒体にファイルを記録する記録方法において、
前記記録媒体に記録可能な最大ファイル数分の、前記ファイルの実際のデータを参照するための情報であるエントリ情報を記録するのに必要な記録単位数を算出する記録単位数算出ステップ(例えば、図22のステップS24の処理)と、
前記記録単位数算出ステップの処理により算出された記録単位数だけ連続する記録単位を、前記データ領域内において確保する確保ステップ(例えば、図22のステップS27の処理)と
を含むことを特徴とする。
請求項8に記載のプログラムの各ステップの具体例も、請求項7に記載の記録方法の各ステップの発明の実施の形態における具体例と同様である。
以下、図を参照して、本発明の実施の形態について説明する。
図10は、本発明を適用したデジタルカメラ100の一実施の形態の構成例を示すブロック図である。
CPU(Central Processing Unit)111は、例えば、組込型の汎用マイクロプロセッサなどからなり、デジタルカメラ100の全体を制御する。CPU111には、ROM(Read Only Memory)112およびRAM(Random Access Memory)113が接続されている。例えば、CPU111は、ROM112に記憶されているプログラム、または、ハードディスクドライブ(以下、HDDと称する)114や、後述するドライブ125に装着された磁気ディスク141、光ディスク142、光磁気ディスク143、若しくは半導体メモリ144などからRAM113にロードされたプログラムを実行することにより、デジタルカメラ100の全体の動作を制御する。RAM113にはまた、CPU111が各種の処理を実行する上において必要なデータなどが適宜記憶される。
CPU111にはまた、カメラ機能部115および画像信号処理部116が接続されている。カメラ機能部115は、専用のIC(Integrated Circuit)などからなり、CPU111の制御の下、光学レンズ部117を制御し、駆動する。例えば、カメラ機能部115は、光学レンズ部117による被写体151の撮影動作を開始させたり、終了させたりする他、光学レンズ部117のズーム率、取り込む光量などを適宜制御する。
光学レンズ部117は、光学レンズおよび絞りなどからなり、被写体151の画像を光電変換部118(の受光部)に結像させる。
CCD(Charge Coupled Device)またはC-MOS(Complementary-Metal Oxide Semiconductor)センサなどの撮像素子により構成される光電変換部118は、光学レンズ部117によって結像された画像を電気信号に変換して、生成されたアナログの電気信号(被写体151の画像に対応する電気信号)を画像信号処理部116に供給する。画像信号処理部116は、CPU111の制御の下、光電変換部118より供給された被写体151の画像に対応する電気信号に、所定の画像処理を適用する。以下、電気信号を単に信号と称する。
具体的には、例えば、デジタルカメラ100の画像信号処理部116は、被写体151の画像に対応するアナログの信号を、A/D(Analog to Digital)変換して、デジタルの画像データとし、その画像データに対して、例えば、ホワイトバランスの調整、欠陥画素の補間などの画像処理を適用した後、必要に応じてJPEG(Joint Photographic Experts Group)方式等で圧縮符号化する。
画像信号処理部116は、圧縮符号化された画像データをCPU111に供給する。
即ち、画像信号処理部116は、光電変換部118より供給された被写体151の画像に対応するアナログの信号を、所定のフォーマットにより圧縮符号化された画像データに変換して、CPU111に供給する。
CPU111は、画像信号処理部116より供給された画像データを、ファイルとして、HDD114、またはドライブ125に装着されている磁気ディスク141、光ディスク142、光磁気ディスク143、若しくは半導体メモリ144などに記録させる。
また、画像信号処理部116は、被写体151の画像に対応するアナログの信号を、A/D変換して、ホワイトバランスを調整し、または欠陥画素を補間した画像データを、液晶ディスプレイ119および画像入出部120に供給する。より具体的には、画像信号処理部116は、その画像データを、液晶ディスプレイ119の入力方式である、例えば、RGB(Red, Green, Blue)信号に変換して、液晶ディスプレイ119に供給する。液晶ディスプレイ119は、画像信号処理部116より供給されたRGB信号に対応する画像(例えば、被写体151の撮像により取得された画像)を表示する。同様に、画像信号処理部116は、RGB信号を画像入出部120にも供給する。
さらに、画像信号処理部116は、CPU111を介して、HDD114、または磁気ディスク141、光ディスク142、光磁気ディスク143、若しくは半導体メモリ144にファイルとして記録されている画像データを読み出して、読み出しされた画像データに対応する信号を液晶ディスプレイ119または画像入出力部120に供給する。
画像入出力部120は、例えばテレビジョン受像機などの外部の画像表示装置または画像記録再生装置などの機器に画像信号である信号を入力または出力するためのインタフェースである。
CPU111にはまた、音声処理部121が接続されている。音声処理部121は、CPU111から供給された、HDD114、または磁気ディスク141、光ディスク142、光磁気ディスク143、若しくは半導体メモリ144から読み出された音声データに対して、所定の音声処理を施す。また、音声処理部121は、音声入出力部122から供給された音声信号または音声データに対しても音声処理を施す。
音声処理部121は、音声処理を施した結果得られる音声データまたは音声信号をCPU111または音声入出力部122に供給する。
音声入出力部122は、マイクロフォン、スピーカ、および外部の機器とのインタフェースである。例えば、音声入出力部122は、音声処理部121より供給された音声信号を図示せぬテレビジョン受像機などの外部の機器に供給する。また、音声入出力部122は、図示せぬ機器から供給される音声信号を取得して、音声処理部121に供給する。
また、音声入出力部122は、例えば、光学レンズ部117や光電変換部118が被写体151を撮影している場合、その被写体151自身またはその周辺で発生された音声を取得し、音声信号に変換して音声処理部121に供給する。
音声信号処理部121は、音声入出力部122から供給された音声信号に、所定の音声処理を施し、その結果得られる音声データをCPU111の制御に基づいて、HDD114、または磁気ディスク141、光ディスク142、光磁気ディスク143、若しくは半導体メモリ144に供給し、記録させる。
CPU111にはさらにまた、操作入力部123、および通信部124が接続されている。
操作入力部123は、ボタン、スイッチ、もしくはリモートコントローラなどにより構成され、ユーザにより、所定の指令に対応する操作入力が行われた場合、その操作入力に対応する信号をCPU111に供給する。CPU111は、操作入力部123より供給された信号に対応する処理を実行する。
通信部124は、CPU111の制御に基づいて、図示せぬ他の装置との通信処理を実行する。すなわち、通信部124は、画像信号処理部116より出力された画像データ等の様々な情報を他の装置に送信するとともに、他の装置より送信された画像データ、またはプログラム等の様々な情報を受信する。例えば、通信部124が画像データを受信した場合、CPU111は、それをRAM113やHDD114、またはドライブ125に装着された磁気ディスク141、光ディスク142、光磁気ディスク143、若しくは半導体メモリ144に記憶させる。また、例えば、通信部124がプログラムを受信した場合、CPU111は、それをRAM113にロードしたり、HDD114に記憶させる。
なお、通信部124は、無線または有線による通信を行うものでもよいし、無線と有線の両方の通信が可能なものでもよい。さらに、その通信方式も特に限定されず、例えば、無線の場合、IEEE(The Institute of Electrical and Electronic Engineers)802.11a,802.11b、および802.11gなどの無線LAN(Local Area Network)、またはBluetooth等様々な無線通信方式が利用可能である。同様に、有線の場合も、Ethernet(登録商標)やUSB(Universal Serial Bus)等様々な有線通信方式が利用可能である。
ドライブ125は、CPU111の制御に基づいて、装着されている磁気ディスク141、光ディスク142、光磁気ディスク143、または半導体メモリ144に記録されているプログラムやデータなどを読み出し、CPU111に供給する。また、ドライブ125は、CPU111より供給されたデータを、ドライブ125に装着される磁気ディスク141、光ディスク142、光磁気ディスク143、または半導体メモリ144に記録させる。
電源126は、デジタルカメラ100の各部に必要な電力を供給する。
以上のように構成されるデジタルカメラ100では、撮像された被写体15の画像に対応する画像データが、ファイルとして、HDD114、または磁気ディスク141、光ディスク142、光磁気ディスク143、または半導体メモリ144に記録される。
以下では、撮像された被写体15の画像に対応する画像データが格納されたファイルが、HDD114に記録される場合について説明する。
HDD114には、撮像された被写体15の画像に対応するファイルが、DCF(Design rule for Camera File system)の規格に従って記録される。
また、撮像された被写体15の画像に対応するファイルのファイル名の命名規則や、ファイルが格納されるディレクトリの階層構造などは、図2を参照して上述した従来における場合と同様である。
即ち、HDD114内のハードディスク191(図11)のルート(Root)直下に、「DCIM」ディレクトリ(フォルダ)が作成される。また、「DCIM」ディレクトリの下層に「???MSDCF」のディレクトリが作成される。ここで、“???”には、ディレクトリが作成されるごとに、“101”から1ずつインクリメントされた数字が入力される。即ち、「DCIM」ディレクトリの下層にディレクトリが作成されるごとに、「101MSDCF」,「102MSDCF」,「103MSDCF」・・・・というようにディレクトリの名前が付与される。
従って、「DCIM」ディレクトリの下層には、「101MSDCF」乃至「999MSDCF」の、最大で899個のディレクトリを作成することが可能である。換言すれば、作成されるディレクトリの最大個数は、899個に設定されている。
また、「???MSDCF」とされる各ディレクトリには、最大で9999個のファイルを格納可能であることと設定し、そのファイル名としては、ディレクトリごとに「DSC0####.JPG」の名前が付与される。ここで、“####”には、ファイルが作成されるごとに、0001から1ずつインクリメントされた数字が入力される。即ち、各ディレクトリに、ファイルが作成されるごとに、「DSC00001.JPG」,「DSC00002.JPG」,「DSC00003.JPG」,「DSC00004.JPG」・・・・の順にファイル名が付与される。
図11は、HDD114に内蔵されているハードディスク(磁気ディスク)191に対してファイルの記録および読み出しを行う場合の、CPU111の機能的な構成例を示すブロック図である。
CPU111は、アプリケーションプログラム171およびオペレーティングシステム(以下、OSと称する)172により構成される。OS172には、ファイルシステム181およびデバイスドライバ182が少なくとも含まれている。
アプリケーションプログラム171は、各種の処理を実行して、ファイルの記録および読み出しをオペレーティングシステム172に要求する。オペレーティングシステム172は、いわゆる基本プログラムであり、例えば、デジタルカメラ100のハードウェアなどのリソースの取り扱いを制御する。
ファイルシステム181は、例えば、FATファイルシステム(FAT32)であり、ハードディスク191に記録されているデータを、クラスタ単位で管理する。デバイスドライバ182は、HDD114の動作に必要な情報をOS172に供給し、ハードディスク191へのデータの記録またはハードディスク191に記録されているデータの読み出しなど、HDD114の動作を制御する。
アプリケーションプログラム171は、OS172のファイルシステム181に対して、ファイル単位(レベル)でのアクセス(読み出しまたは書き込み)を要求(指示)する。
ファイルシステム181は、ファイルをクラスタ単位で管理しており、アプリケーションプログラム171からファイルへのアクセスが要求された場合、そのファイルの該当するクラスタ(以下、該当クラスタと称する)を検索する。例えば、アプリケーションプログラム171からファイルシステム181に対して、ファイルの読み出しが要求された場合、ファイルシステム181は、そのファイルの実データが記録されているクラスタを該当クラスタとして検索する。また例えば、アプリケーションプログラム171からファイルシステム181に対してファイルの書き込みが要求された場合、ファイルシステム181は、ファイルの実データを書き込み可能な空きクラスタを該当クラスタとして検索する。
そして、ファイルシステム181は、検索された該当クラスタをLBA(Logical Block Addressing)に変換し、デバイスドライバ182に対して、セクタ単位でアクセスを要求する。
デバイスドライバ182は、HDD114の動作を制御し、ファイルシステム181からアクセスが要求されたセクタにアクセスする。
HDD114は、デバイスドライバ182の制御の下で、内蔵するハードディスク191の要求されたセクタにアクセスする。またHDD114は、必要に応じて、アクセスの要求に対する応答を行う。例えば、HDD114は、デバイスドライバ182からセクタ単位での読み出しが要求された場合、セクタ毎に記録されているデータをデバイスドライバ182に供給する。
デバイスドライバ182は、ファイルシステム181に対し、セクタ単位でのアクセスの要求に対する応答を行う。例えば、デバイスドライバ182は、ハードディスク191から読み出されたデータを、セクタ単位でファイルシステム181に供給する。ファイルシステム181は、アプリケーションプログラム171に対して、ファイル単位でのアクセスの要求に対する応答を行う。例えば、ファイルシステム181は、複数のクラスタから読み出されたファイルの実データを、ファイル単位でアプリケーションプログラム171に供給する。
図12乃至図16を参照して、FATファイルシステムでフォーマットされたハードディスク191のデータ構成について説明する。
図12は、画像データを含む各種のデータが、FATファイルシステムでHDD114に記録される場合の、ハードディスク191上のデータの配置を示している。
ハードディスク191の先頭のセクタ221(LBA=0のセクタ)には、デジタルカメラ100を起動させる場合に、ハードディスク191に記録されているOS172を実行させるためのMBR(Master Boot Record)231が配置されている。
MBR231は、いわゆる、アクティブであるパーティションを示すコードなどを含む起動コード領域251、並びに各パーティション(後述するパーティション241乃至244)の先頭のLBA(図中の矢印で示す位置)および各パーティションのサイズなどを表すパーティションテーブル252により構成されている。
先頭セクタ221に続いて、所定の数のセクタからなる空き領域222が配置されている。
さらに、空き領域222に続いて、ファイルなどが記録されるデータ領域223が配置されている。データ領域223は、最大で4個のパーティションに区分することが可能であり、図12では、4つのパーティション241乃至244に区分されている。
図13は、図12のMBR231のさらに詳細な構成を示している。
MBR231は、512バイトからなり、446バイトの起動コード領域251、64バイトのパーティションテーブル252、および2バイトのブートシグニチャ261により構成されている。
起動コード領域251は、MBR231の先頭の0バイト目から445バイト目までの領域であり、アクティブなパーティションから起動用のプログラムを読み込むためのマスタブートコード(Master Boot Code(Initial Program Loaderとも呼ばれる))が記録されている。
パーティションテーブル252には、MBR231の先頭から数えて446バイト目から始まり、4つのパーティション241乃至244それぞれに対応するパーティションテーブル271乃至274が記録されている。
図14は、図13の4つのパーティションテーブル271乃至274のうちの、パーティションテーブル271の構成例を示している。なお、その他のパーティションテーブル272乃至274それぞれの構成も同様である。
パーティションテーブル271は、16バイトで構成されている。そして、パーティションテーブル271には、図14に示されるように、先頭から順に、1バイトのフラグ281,3バイトの開始セクタ(CHS(Cylinder/Head/Sector))282,1バイトのタイプ283,3バイトの終了セクタ(CHS)284,4バイトの開始セクタ(LBA)285、および4バイトのパーティションサイズ286が格納されている。
フラグ281は、パーティションがアクティブであるか否かを表す、いわゆる起動フラグである。例えば、フラグ281が“00h”である場合、そのパーティションがノンアクティブである(いわゆる起動パーティションでない)ことを表し、フラグ281が“80h”である場合、そのパーティションがアクティブである(いわゆる起動パーティションである)ことを表す。
開始セクタ282は、シリンダ/ヘッド/セクタという3つのパラメータで、パーティションの先頭のセクタのアドレスを表す。タイプ283は、そのパーティションがフォーマットされているファイルシステムの方式を表す。例えば、タイプ283が“80h”である場合、そのパーティションのファイルシステムは、FAT32であることを表している。
終了セクタ284は、シリンダ/ヘッド/セクタという3つのパラメータで、パーティションの最後のセクタのアドレスを表す。開始セクタ285は、LBAによる、パーティションの先頭のセクタのアドレスを表す。パーティションサイズ286は、パーティションに含まれるセクタの総数を表す。
以上のようにパーティションテーブル271では、パーティション241に関する情報が格納されている。
次に、図15を参照して、パーティション241の詳細な構成例について説明する。なお、以下では、説明を簡単にするため、図12のパーティションテーブル252に1つのパーティション(パーティション241)のみが登録されたものとする。
即ち、図15は、パーティションが(パーティション241の)1つの場合の、図12のハードディスク191上のデータの配置を示している。
パーティション241は、図15に示されるように、BPB301,FSInfo302,FAT領域303,FAT領域304、およびデータ領域305から構成されている。
BPB301,FSInfo302,FAT領域303,FAT領域304、およびデータ領域305のそれぞれは、図1で説明した、ハードディスク1のBPB21,FSInfo22,FAT領域23,FAT領域24、およびデータ領域25と同様であるので、その詳細な説明を省略する。
図16は、ハードディスク191がFAT16のFATファイルシステムでフォーマットされている場合の、ハードディスク191上のデータの配置を示している。なお、図16において、図15における場合と対応する部分については、同一の符号を付してあり、その説明を省略する。
即ち、FAT16のFATファイルシステムでハードディスク191がフォーマットされている場合、パーティション241は、図15で示したFAT32のパーティション241の構成と比較して、FSInfo302が削除され、ルートディレクトリエントリ領域331が新たに設けられている。
ルートディレクトリエントリ領域331には、ルートディレクトリ直下に作成されたディレクトリおよびファイルに関する情報(以下、適宜、ルートディレクトリの情報と称する)が記録される。図15に示したFAT32のFATファイルシステムでは、ルートディレクトリの情報は、データ領域305内に記録されるが、FAT16のFATファイルシステムでは、ルートディレクトリの情報が、データ領域305とは独立してFAT領域304とデータ領域305との間に設けられている。
図17は、図11のファイルシステム181のより詳細な構成例(機能的な構成例)を示すブロック図である。
ファイルシステム181は、記録制御部351およびメディア制御部352により構成されている。記録制御部351では、ハードディスク191にアクセスするデータがクラスタ単位で処理される。メディア制御部352では、ハードディスク191にアクセスするデータがセクタ単位で処理される。
記録制御部351は、ディレクトリエントリ制御部361、クラスタ制御部362、およびFAT制御部363により構成され、さらに、ディレクトリエントリ制御部361は、ファイル数算出部371、クラスタ数算出部372、およびディレクトリエントリ作成部373により構成されている。メディア制御部352は、位置算出部381により構成されている。
以下では、アプリケーションプログラム171からの要求に従い、ファイルシステム181がハードディスク191のフォーマットを実行する場合と、ファイルシステム181がフォーマット後のハードディスク191に対してアクセスする場合とに分けて、ファイルシステム181内の各ブロックについて説明する。
まず、ファイルシステム181がハードディスク191のフォーマットを実行する場合、ファイルシステム181は、図15に示した各領域を作成するとともに、デジタルカメラ100で撮像された画像のファイルが即座に記録可能なようにハードディスク191に対して記録準備処理を行う。
記録準備処理では、ファイル数算出部371が、デジタルカメラ100で作成される画像のファイルのファイルサイズのうちの最も小さなファイルサイズFsizeと、ハードディスク191の記録容量(記憶容量)MCAPとから、ハードディスク191に記録可能な最大ファイル数およびディレクトリ数を算出する。
RAM113(図10)には、デジタルカメラ100で作成可能な画像の解像度(画素数)と、その解像度でファイルを作成した場合のファイルサイズとが対応付けられたテーブルが記憶されている。例えば、画像の解像度としては、縦×横の画素数が、VGAサイズの640×480、1M(メガ)サイズの1280×960、2Mサイズの2048×1536などがあり、その各解像度に、ファイルを作成した場合のファイルサイズが対応付けられている。例えば、VGAサイズに対しては、ファイルサイズとして64KBが対応付けられている。従って、テーブルとして記憶されている複数種類のファイルサイズのうちの最も小さなファイルサイズFsizeは、最低画質(画素数)のVGAサイズで撮像し、ファイルを作成した場合であるので、最も小さなファイルサイズFsizeとして、64KBが採用される。
そして、ファイル数算出部371は、記録容量MCAPをファイルサイズFsizeで除算することにより、最大ファイル数FNUMmaxを算出する。また、「DCIM」ディレクトリの下層に作成される1つのディレクトリには、最大で9999個までのファイルしか格納することができないので、算出された最大ファイル数FNUMmaxから、「DCIM」ディレクトリの下層に必要なディレクトリ数iも得ることができる。
クラスタ数算出部372は、ファイル数算出部371で算出された最大ファイル数FNUMmax分の、ファイルの実際のデータを参照するための情報であるディレクトリエントリ(エントリ情報)を記録するのに必要なクラスタ数CNUMを算出する。また、クラスタ数算出部372は、クラスタを連続してデータ領域305内に確保する確保命令を、算出されたクラスタ数CNUMとともに、FAT制御部363に供給する。
FAT制御部363は、クラスタ数算出部372からの確保命令に従い、デバイスドライバ182を制御して、クラスタ数CNUMで指定された数だけ連続するクラスタをデータ領域305内に確保する。具体的には、FAT制御部363は、データ領域305をクラスタ単位で管理する場合のクラスタの管理情報が記録されるハードディスク191のFAT領域303(管理情報領域)内の連続するFATエントリに、クラスタが使用中であることを表す情報を記録することにより、データ領域305内の連続するクラスタを確保する。
次に、ファイルシステム181がフォーマット後のハードディスク191に対してアクセスする場合の、ファイルシステム181の各ブロックについて説明する。
ファイルシステム181において、アプリケーションプログラム171から、ファイル名とともに実データが供給され、ハードディスク191に対するファイルの書き込みが要求された場合、ディレクトリエントリ作成部373は、ファイルのディレクトリエントリや実データを記録するクラスタを検索させるクラスタ検索命令をFAT制御部363に供給する。そして、クラスタ検索命令に応答して、検索されたクラスタを表すクラスタ情報が、FAT制御部363からディレクトリエントリ作成部373に供給される。
ディレクトリエントリ作成部373は、図7で上述したディレクトリエントリの各種のデータを作成するとともに、FAT制御部363からのクラスタ情報に基づきクラスタを指定して、作成されたディレクトリエントリ(のデータ)と実データとをクラスタ制御部362に供給する。
クラスタ制御部362は、クラスタ番号とともに、そこに記録する記録データ(ディレクトリエントリおよび実データ)を位置算出部381に供給する。
位置算出部381は、クラスタ制御部362からのクラスタ番号をLBAに変換し、セクタ単位で、記録データをデバイスドライバ182に供給する。
次に、ファイルシステム181において、アプリケーションプログラム171から、ファイル名を指定して、ファイルの読み出しが要求された場合、ディレクトリエントリ作成部373は、読み出しが指定されたファイルのディレクトリエントリをクラスタ制御部362に検索させる。
クラスタ制御部362または位置算出部381は、それぞれ、クラスタ単位またはセクタ単位で、読み出しが指定されたファイルのディレクトリエントリを検索し、検出されたディレクトリエントリをディレクトリエントリ作成部373に供給する。
ディレクトリエントリ作成部373は、検出されたディレクトリエントリの先頭クラスタ番号をFAT制御部363に供給し、それに応答してFAT制御部363から供給されるクラスタ情報を取得する。ここで、取得されるクラスタ情報は、読み出しが指定されたファイルの実データの記録場所が先頭クラスタ番号で表されるクラスタのみである場合には、その旨を表す情報であり、読み出しが指定されたファイルの実データの記録場所が先頭クラスタ番号で表されるクラスタを含む複数のクラスタに記録されている場合には、その複数のクラスタを表す情報である。
ディレクトリエントリ作成部373は、FAT制御部363からのクラスタ情報に基づきクラスタを指定して、ファイルの実データをクラスタ制御部362に取得させ、供給させる。クラスタ制御部362は、指定されたクラスタの実データを位置算出部381に取得させ、ディレクトリエントリ作成部373に供給する。位置算出部381は、デバイスドライバ182を制御してハードディスク191からセクタ単位で実データを取得し、クラスタ単位にしてクラスタ制御部362に供給する。
図18を参照して、図17のファイルシステム181が行う記録準備処理について説明する。なお、図18では、HDD114のハードディスク191に記録可能な最大ファイル数FNUMmaxは、9999個であり、従って「DCIM」ディレクトリの下層に作成されるディレクトリは、「101MSDCF」ディレクトリだけであるとする。
図18は、ハードディスク191に対して記録準備処理を行った後のパーティション241を示している。
記録準備処理では、まずファイルシステム181は、ハードディスク191に記録可能な最大ファイル数FNUMmaxおよびディレクトリ数を算出する。ここでは、上述したように、最大ファイル数FNUMmaxが9999個で、ディレクトリ数iが「101MSDCF」ディレクトリの1つである。
そして、必要なディレクトリ数iが決定すると、ファイルシステム181は、図2で上述した命名規則に従って、DCIMディレクトリおよび101MSDCFディレクトリをハードディスク191に作成する。
これにより、図18に示すように、データ領域305内のクラスタ番号2のクラスタに、「DCIM」ディレクトリのディレクトリエントリが作成(記録)される。また、データ領域305内のクラスタ番号3のクラスタに、「自分のディレクトリ」を表す“.”エントリ、「1つ上の階層のディレクトリ」を表す“..”エントリ、および「101MSDCF」ディレクトリのディレクトリエントリが作成(記録)される。
次に、ファイルシステム181は、9999個のファイルのディレクトリエントリを記録するのに必要なクラスタを確保する。
初めに、9999個のファイルのディレクトリエントリを記録するのに必要なクラスタ数CNUMが算出される。
例えば、最大ファイル数FNUMmaxが9999個である場合には、その9999個のファイルのディレクトリエントリを記録するのに必要なクラスタ数CNUMは、(9999+2)÷1024の商に端数(小数部分)を切り上げた値である10(個)となる。
ここで、“9999”に加算される“2”は、ファイルDSC00001.JPGのディレクトリエントリが記録されるクラスタの先頭に「自分のディレクトリ」を表す“.”エントリと「1つ上の階層のディレクトリ」を表す“..”エントリが必要となるため、その2つのエントリに相当する数である。また、“1024”は、32Kバイトで構成される1クラスタに記録可能な(32バイトの)ディレクトリエントリの数である。
従って、9999個のファイルのディレクトリエントリを記録するのに10個のクラスタが必要となるため、ファイルシステム181は、10個の連続するクラスタを、データ領域305内の空き領域の先頭のクラスタから確保する。即ち、ファイルシステム181は、「101MSDCF」ディレクトリのディレクトリエントリが記録されているクラスタ番号3の次の(クラスタ番号4の)クラスタから連続して10個のクラスタ(即ち、クラスタ番号が4(04h)乃至13(0Dh)のクラスタ)をディレクトリエントリ領域として確保する。
具体的には、ファイルシステム181は、FAT領域303内のクラスタ番号4(04h)乃至13(0Dh)のクラスタに対応するFATエントリに、クラスタの連鎖情報(クラスタチェーン)を作成することにより、連続する10個のクラスタを確保する。
即ち、図19に示すように、ファイルシステム181は、「00000004h」の(アドレスの)FATエントリに、「00000005h」を格納し、「00000005h」のFATエントリに、「00000006h」を格納する。以下、同様に、ファイルシステム181は、「00000006h」,「00000007h」,「00000008h」,「00000009h」,「0000000Ah」,「0000000Bh」,「0000000Ch」、および「0000000Dh」のFATエントリに、それぞれ、「00000007h」,「00000008h」,「00000009h」,「0000000Ah」,「0000000Bh」,「0000000Ch」,「0000000Dh」、および「EOF」を格納する。
これにより、データ領域305内のクラスタ番号4(04h)乃至13(0Dh)のクラスタは、使用中(使用済み)となり、他のデータの書き込みに使用されることを防止することができる。
また、確保されたデータ領域305内のクラスタ番号4(04h)乃至13(0Dh)のクラスタに作成されることが予想される9999個のファイルは、作成されるときのファイル名が、上述した命名規則により予め決まっているため、ファイルが作成された場合に備えて、仮のディレクトリエントリ(以下、仮ディレクトリエントリと称する)(のデータ)を予めクラスタ番号4(04h)乃至13(0Dh)のクラスタ(ディレクトリエントリ領域)に記録しておくこともできる。
即ち、ファイルシステム181(のディレクトリエントリ作成部373)は、図20に示すように、「自分のディレクトリ」を表す“.”エントリと「1つ上の階層のディレクトリ」を表す“..”エントリとともに、ファイルDSC00001.JPG乃至DSC01022.JPGの仮ディレクトリエントリを予め作成し、クラスタ番号4のクラスタに記録させる。また、ファイルシステム181は、ファイルDSC01023.JPG乃至DSC02046.JPGの仮ディレクトリエントリを作成し、クラスタ番号5のクラスタに記録させる。
以下同様に、ファイルシステム181は、それぞれ、ファイルDSC02047.JPG乃至DSC03070.JPG,ファイルDSC03071.JPG乃至DSC04094.JPG,ファイルDSC04095.JPG乃至DSC05118.JPG,ファイルDSC05119.JPG乃至DSC06142.JPG,ファイルDSC06143.JPG乃至DSC07166.JPG,ファイルDSC07167.JPG乃至DSC08190.JPG,ファイルDSC08191.JPG乃至DSC09214.JPGおよびファイルDSC09215.JPG乃至DSC09999.JPGの仮ディレクトリエントリを作成し、クラスタ番号6乃至13のクラスタに記録させる。
但し、通常と同様に仮ディレクトリエントリ(のデータ)を作成すると、実際には、まだ撮像が行われてなく存在していないファイルが既に存在してしまうことになるため、ファイルシステム181は、ユーザに対しては、ファイルが存在していないことと同様の状態となるようにして仮ディレクトリエントリ(のデータ)を作成する。
即ち、ファイルシステム181は、図20に示すように、各仮ディレクトリエントリの先頭の1バイトに、ファイルが“削除済み”であることを表す「E5h」を格納するようにして、ファイル「DSC00001.JPG」乃至「DSC09999.JPG」の仮ディレクトリエントリを作成する。
図21を参照して、仮ディレクトリエントリに格納されるデータについて、ファイルDSC09999.JPGの仮ディレクトリエントリを例に説明する。
図21の上側は、図7における場合と同様のディレクトリエントリの構造を示している。
ファイルDSC09999.JPGの仮ディレクトリエントリでは、仮ディレクトリエントリの先頭に配置される7バイトの名前31に、ファイル名である「DSC09999」のうちの先頭の1バイトの「D」が「E5h」に代えられた「(E5h)DSC09999」が格納される。また、名前31に続く3バイトの拡張名32には、拡張子の「JPG」が格納される。さらに、拡張名32に続く1バイトの属性33には、ファイルを表す「20h」が格納される。
そして、上記以外の予約領域34乃至ファイルサイズ42には、すべて「0」が格納される。
このように、ファイルが作成された場合に備えて、先頭のデータ(1バイト)が削除済みを表すデータである仮ディレクトリエントリを予め確保されたクラスタ番号4(04h)乃至13(0Dh)のクラスタ(ディレクトリエントリクラスタ)に記録しておくことにより、デジタルカメラ100で撮像が行われ、実際にファイルが作成されたときに、迅速にファイルをハードディスク191に記録することができる。
次に、図22のフローチャートを参照して、デジタルカメラ100の記録準備処理について説明する。この処理は、図3のフローチャートを参照して説明した従来の記録準備処理に対応するもので、図3における場合と同様に、例えば、デジタルカメラ100の工場出荷前などの、ハードディスク191をFATファイルシステムでフォーマット(初期化)した後などに実行される。なお、ファイルシステム181は、ハードディスク191をフォーマットしたことにより、ハードディスク191の記憶容量MCAPを既に認識しているものとする。
初めに、ステップS21において、ファイルシステム181のクラスタ数算出部372は、フォーマット(初期化)結果から、1クラスタのサイズ(クラスタサイズ)を取得(参照)する。ここでは、クラスタサイズとして、32Kバイト(キロバイト)が取得される。
ステップS21の処理後、ステップS22において、ファイル数算出部371は、RAM113に記憶されている、デジタルカメラ100で作成可能な画像の解像度とファイルサイズとが対応付けられたテーブルから、複数種類のファイルサイズのうちの最も小さなファイルサイズFsizeを取得する。即ち、ファイル数算出部371は、最低画質でファイルを作成した場合のファイルサイズを、最も小さなファイルサイズFsizeとして取得し、ステップS23に進む。
ステップS23において、ファイル数算出部371は、記録容量MCAPをファイルサイズFsizeで除算することにより、最大ファイル数FNUMmaxを算出して、ステップS24に進む。
ステップS24において、クラスタ数算出部372は、ステップS23の処理で算出された最大ファイル数FNUMmax分の、ディレクトリエントリを記録するのに必要なクラスタ数CNUMを算出する算出処理を行う。この算出処理では、図23を参照して後述するように、最大ファイル数FNUMmaxのファイルを格納するのに必要なディレクトリ数iと、i個のディレクトリそれぞれに必要なクラスタ数CNUM_iが算出される。そして、ディレクトリエントリを記録するのに必要なクラスタ数CNUMは、i個のディレクトリそれぞれに必要なクラスタ数CNUM_iの和に等しい。
ステップS24の処理後、ステップS25において、ファイルシステム181は、「DCIM」ディレクトリを作成する。
即ち、ステップS25では、ディレクトリエントリ作成部373が、「DCIM」ディレクトリのディレクトリエントリを記録するクラスタを検索させるクラスタ検索命令をFAT制御部363に供給する。そして、クラスタ検索命令に応答して検索し、その結果検出されたクラスタを表すクラスタ情報が、FAT制御部363からディレクトリエントリ作成部373に供給される。ここでは、図18に示したように、クラスタ番号2がクラスタ情報としてディレクトリエントリ作成部373に供給される。
ディレクトリエントリ作成部373は、図7で上述したディレクトリエントリの各種のデータを作成し、作成されたディレクトリエントリのデータを、クラスタ番号2を指定してクラスタ制御部362に供給する。そして、クラスタ制御部362から出力された「DCIM」ディレクトリのディレクトリエントリのデータが、位置算出部381およびデバイスドライバ182を介して、セクタ単位でクラスタ番号2のクラスタに記録される。
ステップS25の処理後、ステップS26において、ファイルシステム181は、「101MSDCF」ディレクトリを作成して、ステップS27に進む。なお、ステップS26では、クラスタ番号3のクラスタに「101MSDCF」ディレクトリのディレクトリエントリが記録される。クラスタ番号3のクラスタに「101MSDCF」ディレクトリのディレクトリエントリを記録する場合のファイルシステム181内の各処理は、上述した「DCIM」ディレクトリのディレクトリエントリを記録する場合と同様である。
ステップS27において、ファイルシステム181は、ディレクトリエントリ領域を確保する。即ち、ステップS27では、クラスタ数算出部372が、ステップS24の処理で算出されたクラスタ数CNUMとともに確保命令をFAT制御部363に供給する。FAT制御部363は、クラスタ数算出部372からの確保命令に従い、デバイスドライバ182を制御して、クラスタ数CNUMで指定された数の連続するクラスタ(図18に示した例では、クラスタ番号4乃至13のクラスタ)を、ディレクトリエントリ領域としてデータ領域305内に確保して、ステップS28に進む。
ステップS28において、ファイルシステム181は、確保されたディレクトリエントリ領域に記録されることが予想される最大ファイル数FNUMmaxのファイルの仮ディレクトリエントリを記録(作成)して、処理を終了する。なお、ステップS28では、ステップS24の処理で算出されたディレクトリ数iが1より大きい場合には、ファイルシステム181は、「101MSDCF」ディレクトリ以外のディレクトリ(例えば、「102MSDCF」ディレクトリなど)の仮ディレクトリエントリも記録する。
次に、図23のフローチャートを参照して、図22のステップS24における、ディレクトリエントリを記録するのに必要なクラスタ数CNUMを算出する算出処理について説明する。
初めに、ステップS41において、クラスタ数算出部372は、ディレクトリ数を表す変数iに1をセットして、ステップS42に進む。
ステップS42において、クラスタ数算出部372は、i個目のディレクトリのディレクトリ名「???MSDCF」を決定する。ここで、“???”には、“100+i”の値(数字)が入力される。
ステップS42の処理後、ステップS43において、クラスタ数算出部372は、上述したステップS23で算出された最大ファイル数FNUMmaxが1つのディレクトリに格納可能な最大のファイル数である9999個以上であるか否かを判定する。
ステップS43で、最大ファイル数FNUMmaxが9999個以上であると判定された場合、ステップS44に進み、クラスタ数算出部372は、i個目のディレクトリに9999個のファイルを割り当てることとし、i個目のディレクトリに必要なクラスタ数CNUM_iを算出する。ここで、算出されるクラスタ数CNUM_iは、上述したように、(9999+2)÷1024の商に端数(小数部分)に端数を切り上げた値である10(個)となる。
次に、ステップS45において、クラスタ数算出部372は、最大ファイル数FNUMmaxから9999を減算した結果を新たに最大ファイル数FNUMmaxにセットし、ステップS46に進む。
ステップS46において、クラスタ数算出部372は、最大ファイル数FNUMmaxが0に等しいか否かを判定する。最大ファイル数FNUMmaxが0に等しくないと判定された場合、即ち、最大ファイル数FNUMmaxが0より大きい場合、ステップS47に進み、変数iを1だけインクリメントして、ステップS42に戻る。
一方、ステップS46において、最大ファイル数FNUMmaxが0に等しいと判定された場合、図22に戻り、ステップS25に進む。
また、ステップS43で、最大ファイル数FNUMmaxが9999個より少ないと判定された場合、ステップS48に進み、クラスタ数算出部372は、i個目のディレクトリにFNUMmax個のファイルを割り当てることとし、i個目のディレクトリに必要なクラスタ数CNUM_iを算出し、図22に戻り、ステップS25に進む。ここで、算出されるクラスタ数CNUM_iは、(FNUMmax+2)÷1024の商に端数(小数部分)を切り上げた値と等価である。
以上のように、記録準備処理によれば、ファイルシステム181は、複数種類のファイルサイズのうちの最も小さなファイルサイズFsize(最低画質でファイルを作成した場合のファイルサイズ)とハードディスク181の記憶容量MCAPとから、最大ファイル数FNUMmaxを算出する。
そして、ファイルシステム181は、最大ファイル数FNUMmaxのディレクトリエントリを記録するのに必要なクラスタ数CNUM(クラスタ数CNUM_iの和)を算出し、「DCIM」ディレクトリおよび「101MSDCF」ディレクトリのディレクトリエントリをデータ領域305に記録後、クラスタ数CNUM分のディレクトリエントリ領域を確保する。さらに、ファイルシステム181は、確保されたディレクトリエントリ領域に仮ディレクトリエントリを記録する。
例えば、9999個のファイルが「101MSDCF」ディレクトリに作成された場合、図24に示すように、データ領域305において、「101MSDCF」ディレクトリのディレクトリエントリが作成(記録)されているクラスタ番号3のクラスタ(図示せず)の次のクラスタから10個の連続するクラスタが、ディレクトリエントリ領域(ディレクトリエントリクラスタ[1]乃至[10])として配置され、その後にファイルDSC00001.JPG乃至DSC09999.JPGの実データが記録された実データ領域が配置される。
従って、ディレクトリエントリ領域がデータ領域305内の連続するクラスタに確保されるので、ファイルシステム181が新たにファイルをハードディスク191に記録する場合に、新たなファイルのディレクトリエントリを記録するためのディレクトリエントリ領域の検索を迅速に実行することができ、ディレクトリエントリ領域の空き領域を即座に検出することができる。
なお、図22の記録準備処理において、ステップS28の仮ディレクトリエントリの記録(作成)を省略してもよい。
次に、図25のフローチャートを参照して、デジタルカメラ100で撮像された静止画の新たなファイルをハードディスク191に記録する場合の、デジタルカメラ100のファイル記録処理を説明する。
初めに、ステップS61において、アプリケーションプログラム171は、ファイル名を指定して、新たなファイルを作成する作成コマンドをファイルシステム181に出力して、ステップS62に進む。
ステップS62において、ファイルシステム181は、アプリケーションプログラム171からの作成コマンドに応答して、新たなファイルのディレクトリエントリを記録するためのディレクトリエントリ領域の空き領域を検索して、ステップS63に進む。
ステップS63において、ファイルシステム181は、ステップS62におけるディレクトリエントリ領域の空き領域の検索の結果、検出されたクラスタに新たなファイルのディレクトリエントリを記録して、ステップS64に進む。
ステップS64において、ファイルシステム181は、新たなファイルの実データを記録するための、実データ領域の空きクラスタを検索して、ステップS65に進む。
ステップS65において、アプリケーションプログラム171は、新たなファイルの実データ(例えば、被写体151の画像に対応するアナログの信号が所定のフォーマットにより圧縮符号化された画像データ)のファイルシステム181への出力を開始して、ステップS66に進む。
ステップS66において、ファイルシステム181は、ステップS64における実データ領域の空きクラスタの検索の結果検出された空きクラスタに、実データを記録して、処理を終了する。
図25のファイル記録処理に従い、ビデオカメラ100が新たなファイルをハードディスク191に記録する場合における、従来との違いについて、図26を参照して説明する。
例えば、ファイルDSC09999.JPGをハードディスク191に記録する場合について考える。従って、ハードディスク191には、ファイルDSC00001.JPG乃至DSC09998.JPGのディレクトリエントリおよび実データが既に記録されている。
図6を参照して説明したように、ファイルDSC09999.JPGのディレクトリエントリが記録可能なディレクトリエントリクラスタは、ディレクトリエントリクラスタ[10]である。
図25のステップS62において、ファイルDSC09999.JPGのディレクトリエントリを記録するための、ディレクトリエントリ領域の空き領域が検索される場合、ディレクトリエントリクラスタ[1],[2],[3],・・の順にディレクトリエントリ領域が検索されることになる。
ディレクトリエントリクラスタ[1],[2],[3],・・の順にディレクトリエントリ領域を検索する場合、従来のデジタルカメラに内蔵されたHDDでは、図26左側に示すように、ディレクトリエントリクラスタ[1]と[2]との間で、シーク動作が発生する。同様に、ディレクトリエントリクラスタ[2]と[3]との間、[3]と[4]との間、[4]と[5]との間、[5]と[6]との間、[6]と[7]との間、[7]と[8]との間、[8]と[9]との間、および[9]と[10]との間でも、シーク動作が発生する。
これに対して、デジタルカメラ100では、ディレクトリエントリクラスタ[1]乃至[10]が連続して配置されているため、HDD114において、ディレクトリエントリクラスタ[1],[2],[3],・・の順にディレクトリエントリ領域を検索する場合、シーク動作は、ほとんど発生しない。
従って、従来の(ファイルシステムでフォーマットされているハードディスクにファイルを記録する)デジタルカメラと比較して、図10のデジタルカメラ100では、ディレクトリエントリ領域の空き領域を検索する時間を短縮することができる。
同様に、ハードディスク191に記録されたファイルを読み出す場合についても、読み出すファイルのディレクトリエントリを検索する時間を短縮することができる。
従って、図10のデジタルカメラ100では、従来と比べて、ファイルをアクセスする際のアクセス時間を短縮することができる。
図25のファイル記録処理において、ステップS62乃至S64の処理と、ステップS65の処理とは並行して(同時に)行うことが可能である。この場合、ステップS65においてアプリケーションプログラム171から出力された新たなファイルの実データは、一時的にバッファに記憶され、ステップS64の処理により検出された実データ領域の空きクラスタに実データが記録される。従って、アクセス時間を短縮することにより、ファイルの実データを一時的に記憶するバッファの容量が従来より少なく済み、バッファオーバーフローの可能性も低減する。また、実データ領域の空きクラスタが検出されてから、実データを出力するために、新たなファイルの圧縮符号化を開始する場合には、新たなファイルの圧縮符号化の開始までのタイムラグを短縮することができる。
なお、ファイルシステム181によって作成されるディレクトリエントリ領域の配置は、従来のFAT32方式の規格に適合するものであり、従来のFAT32方式のファイルシステムとの、いわゆる互換性を有するものである。
図27は、本発明を適用したパーソナルコンピュータ601の構成例を示すブロック図である。
CPU611は、ROM612に記憶されているプログラム、またはHDD619からRAM613にロードされたプログラムに従って各種の処理を実行する。RAM613にはまた、CPU611が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU611,ROM612、およびRAM613は、バス614を介して相互に接続されている。このバス614にはまた、入出力インタフェース615も接続されている。
入出力インタフェース615には、ユーザが操作して、テキストを入力するキーボード631、ポインティングデバイスの一例であるマウス632、画像を入力するスキャナ633、音声を入力するマイクロフォン634等の入力デバイスで構成される入力部616、ディスプレイなどの表示部641、音声を出力するスピーカ642、紙に文字または画像を印刷して、いわゆるハードコピーを出力するプリンタ643、紙に文字または画像を描画するプロッタ644等の出力デバイスで構成される出力部617が接続されている。
さらに、入出力インタフェース615には、プログラムや各種データを記録するHDD619、およびLAN(Local Area Network)またはインターネットを含むネットワークを介してデータを通信する、USB(Universal Serial Bus)インタフェース651,IEEE(Institute of Electrical and Electronic Engineers)1394インタフェース652、ブルートゥースインタフェース653,IEEE802.11インタフェース654などで構成される通信部618が接続されている。
USBインタフェース651は、USBの規格に基づき、ケーブルを介して(有線通信で)、他の機器と通信する。IEEE1394インタフェース652は、IEEE1394の規格に基づき、ケーブルを介して、他の機器と通信する。同様に、ブルートゥースインタフェース653は、ブルートゥースの規格に基づき、他の機器と無線通信する。IEEE802.11インタフェース654は、IEEE802.11a,IEEE802.11b、またはIEEE802.11gなどの規格に基づき、他の機器と無線通信する。
入出力インタフェース615にはまた、必要に応じてドライブ620が接続され、磁気ディスク661、光ディスク662、光磁気ディスク663、或いは半導体メモリ664などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じてHDD619にインストールされる。
ドライブ620は、CPU611の制御に基づいて、装着されている磁気ディスク661、光ディスク662、光磁気ディスク663、或いは半導体メモリ664などの記録媒体に記録されているデータを読み出し、CPU611に供給する。また、CPU611より供給されたデータを、ドライブ620に装着される磁気ディスク661、光ディスク662、光磁気ディスク663、或いは半導体メモリ664などに記憶させる。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータ601にインストールされるようにしてもよい。
上述した実施の形態のように、大きなシーク動作が必要となるハードディスクなどの記録媒体に記録する記録装置に対して本発明を適用した場合、アクセス時間の短縮の効果が大きいといえるが、本発明はこれに限定されることなく、DVD(Digital Versatile Disc),Blu-ray Disc(商標),MO(Magneto Optical disk)、PD(Phase change rewritable Disk),Zip,SuperDiskといった、ランダムアクセス可能な他の記録媒体にファイルを記録する記録装置に対しても適用可能である。さらに、記録装置が、例えば、DVDとハードディスクなどのように、複数の種類の記録媒体を有するものでも良い。また、ファイルシステムに関しても、UDF(Universal Disk Format)などであってもよく、FAT32またはFAT16に限定されるものではない。
さらに、記録媒体に記録するファイルは、静止画のファイルに限らず、動画のファイル、音声(音楽)などのファイルでもよいが、例えば、静止画を連写して記録媒体に記録する場合などのように、ファイル1つ当たりの容量は小さくても、大量の数のファイルを記録する場合に、従来に比べて大きな効果を奏することができる。また、DCFの規格に準拠していなくても、各ディレクトリに記録され得る最大ファイル数が予め設定されている場合に効果を奏する。
また、本発明が適用される記録媒体に記録する記録装置の実施の形態は、図10に示されるデジタルカメラ100および図27に示されるパーソナルコンピュータ601に限定されず、所定のファイルシステムを利用して、記録媒体の記録および読み出しの制御が可能な記録装置であれば構わない。具体的には、例えば、PDA(Personal Digital Assistants)、携帯電話機、または、デジタル電化製品(例えば、テレビジョン受像機やハードディスク録画装置)等様々な実施の形態が可能である。
上述した実施の形態では、最低画質でファイルを作成した場合のファイルサイズを、ファイルサイズFsizeとして採用し、最大ファイル数FNUMmaxを求めたが、それ以外の方法のファイルサイズFsizeを採用し、最大ファイル数FNUMmaxを求めるようにしてもよい。例えば、デジタルカメラ100の撮像時の標準の解像度が2Mサイズで、ユーザのこれまでのデジタルビデオカメラ100の使用履歴から、2Mサイズ以下の解像度では、撮像が行われないと予想される場合、2Mサイズの解像度のファイルサイズをファイルサイズFsizeとして採用し、最大ファイル数FNUMmaxを求めるようにしてもよい。
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくても、並列的あるいは個別に実行される処理を含むものである。
100 デジタルカメラ, 111 CPU, 114 ハードディスクドライブ, 141 磁気ディスク, 142 光ディスク, 143 光磁気ディスク, 144 半導体メモリ, 173 ハードディスク, 181 ファイルシステム, 182 デバイスドライバ, 351 記録制御部, 352 メディア制御部, 361 ディレクトリエントリ制御部, 362 クラスタ制御部, 363 FAT制御部, 371 ファイル数算出部, 372 クラスタ数算出部, 373 ディレクトリエントリ作成部, 381 位置算出部, 611 CPU, 619 ハードディスクドライブ, 661 磁気ディスク, 662 光ディスク, 663 光磁気ディスク, 664 半導体メモリ