(57)【要約】【課題】  高速にデータの削除を行ない、かつ、データの削除によって不連続なクラスタチェーンを発生させないこと。【解決手段】  記録媒体にクラスタ単位で記録されたデータファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させる。【選択図】  図１
2005215894.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体に対してクラスタ単位でデータファイルを記録する記録手段と、
前記データファイルに含まれるデータを先頭から部分的に削除するデータ削除手段と、
を含むデータ処理装置であって、
前記データ削除手段は、前記データファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させることを特徴とするデータ処理装置。
【請求項２】
前記記録手段は、クラスタ内のデータの状態を管理する管理テーブルを更に前記記録媒体に記録し、
前記削除手段は、前記記録手段を用いて、削除前のヘッダ情報の先頭位置から移動後のヘッダ情報の先頭位置までのクラスタを未使用状態として前記管理テーブルに設定することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記削除手段は、
削除すべきデータを含む複数のクラスタのうち、最終クラスタを含む連続した１つ以上のクラスタ群であって、かつ、ヘッダ情報のサイズよりも大きいクラスタ群を特定し、そのクラスタ群の先頭にヘッダ情報を移動させることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記削除手段は、移動後のヘッダ情報の終端位置と、削除後のデータの先頭位置との間に存在する領域のサイズ分だけ、ヘッダ情報のサイズを大きくすることを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
記録媒体に対してクラスタ単位でデータファイルを記録する記録工程と、
前記データファイルに含まれるデータを先頭から部分的に削除するデータ削除工程と、
を含むデータ処理方法であって、
前記データ削除方法は、前記データファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させることを特徴とするデータ処理方法。
【請求項６】
記録媒体に対してクラスタ単位でデータファイルを記録する記録工程と、
前記データファイルに含まれるデータを先頭から部分的に削除するデータ削除工程と、
をプロセッサに実行させるデータ処理プログラムであって、
前記データ削除方法は、前記データファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データファイルに含まれるデータを部分的に削除するデータ処理技術に関する。
【背景技術】
【０００２】
従来から、データファイルに含まれるデータを部分的に削除するデータ処理技術については良く知られている。特に、クラスタ単位で記録媒体に記録されたデータファイルを部分的に削除する場合、削除領域を有効に活用するため、様々な方法が用いられる。
【０００３】
図２を用いて、従来のデータ削除処理について説明する。図２（ａ）は、部分的に削除処理を行なおうとするデータファイルのイメージ図である。まず、削除領域の直後の有効なデータにファイルオフセットを移動し、データファイルをリードしてメモリ上にデータを取得する（図２（ｂ）)。次に、削除領域の先頭までファイルオフセットを移動して、取得したデータでライトする（図２（ｃ）)。リード及びライトの処理をファイルの最後まで繰り返す（図２（ｄ）)。最後に、削除する領域を除いてデータファイルのファイルサイズを設定する（図２（ｅ）)。以上のようにデータファイルの一部分を削除する場合に、複数回のリードとライトが繰り返し行うことによって、編集操作を実現している。しかしながら、従来の編集方法ではファイルの一部分を削除するときにデータを移動するための記録媒体へのリードとライトが繰り返し発生するために、ユーザに対して高速な編集操作を提供できないという問題があった。
【０００４】
この問題に関して、特許文献１の情報編集制御装置は、データの部分削除に対して以下に説明する方法で、記録媒体へのリードとライトのアクセスを減少させる方法を開示している。図３は、記録媒体に記録されているフレーム単位で構成された映像音声データを示している。図３（ａ）の映像音声データの灰色で示した部分を削除する場合について、まず部分削除するフレームのみを含むクラスタをファイルシステム上で削除する（図３（ｂ））。また、一つのクラスタに削除するデータ領域である不要領域と削除しないデータ領域である有効領域の両方が含まれるクラスタについて、不要領域にダミーデータを挿入する（図３（ｃ））。以上に示した方法で、リード及びライトを実行することなく部分削除を実現している。さらに、図３（ｄ）で示すように映像音声データが隣接するクラスタに１クラスタ分以上のダミーデータが挿入されている場合には、有効領域のデータを移動させる。最後に、不要領域のみを含むクラスタが存在すれば、ファイルシステム上で未使用領域と設定することで削除する（図３（ｅ））。以上の２ステップの処理によって、記録媒体へのリードとライト操作を減らし、不必要なダミーデータを削除し、ユーザに対して高速な編集操作を提供している。
【特許文献１】特開２００３−５２００６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上述した特許文献１の方法では、リードとライト操作を減らすことはできるものの、クラスタチェーンの変更に伴って、空きクラスタが不連続に発生し、編集操作後のデータファイルの検索（Ｓｅｅｋ）に時間がかかってしまうという問題を抱えている。また、フラグメンテーションが発生するために、記録媒体から空きクラスタ領域を検索するのに時間がかかってしまうという問題を抱えている。
【０００６】
本発明は、上記従来技術の課題を解決するためになされたもので、その目的とするところは、高速にデータ削除を行なうデータ処理技術であって、データ削除によって不連続なクラスタチェーンを発生させることのないデータ処理技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係る装置は、
記録媒体に対してクラスタ単位でデータファイルを記録する記録手段と、
前記データファイルに含まれるデータを先頭から部分的に削除するデータ削除手段と、
を含むデータ処理装置であって、
前記データ削除手段は、前記データファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させることを特徴とする。
【０００８】
上記目的を達成するため、本発明に係る方法は、
記録媒体に対してクラスタ単位でデータファイルを記録する記録工程と、
前記データファイルに含まれるデータを先頭から部分的に削除するデータ削除工程と、
を含むデータ処理方法であって、
前記データ削除方法は、前記データファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させることを特徴とする。
【０００９】
上記目的を達成するため、本発明に係るプログラムは、
記録媒体に対してクラスタ単位でデータファイルを記録する記録工程と、
前記データファイルに含まれるデータを先頭から部分的に削除するデータ削除工程と、
をプロセッサに実行させるデータ処理プログラムであって、
前記データ削除方法は、前記データファイルに含まれるデータを先頭から部分的に削除する際に、ヘッダ情報の位置をクラスタ単位で移動し、かつヘッダ情報のサイズを変更することにより、移動後のヘッダ情報の直後からデータ削除後の先頭データを開始させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、高速にデータの削除を行なうことができ、かつ、データの削除によって不連続なクラスタチェーンを発生させない。
【発明を実施するための最良の形態】
【００１１】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１２】
近年、デジタルカメラやデジタルビデオでＣＦカードなどの記録媒体に動画像データをAudio Visual Interleavingファイル（以下ＡＶＩファイル）形式で記録して、その場で再生を楽しむことが多くなっている。そして、撮影直後にＡＶＩファイルを再生し、不必要な部分を発見すると、その場で不必要な部分を削除するといった編集操作もデジタルカメラやデジタルビデオで直接行なうことが望まれている。そこで、以下では、本発明の一実施形態として、ＡＶＩファイル形式での撮像機能及びデータ削除機能を有するデジタルカメラについて説明する。
【００１３】
＜ハードウェア構成＞
図４は、本発明の実施形態としてのデジタルカメラのハードウェア構成を示すブロック図である。同図中２５１は図示していない被写体像を結像するレンズ、２５２はレンズ２５１からの入射光量を調節する絞り機構、２５３はレンズ２５１から絞り機構２５２を通って入射した光信号を電気信号に変換する撮像素子、２５４は撮像素子２５３により光電変換された信号をサンプリングしてゲインコントロールするＣＤＳ−ＰＧＡ回路、２５５はＣＤＳ−ＰＧＡ回路２５４から出力されるアナログ信号をデジタル信号に変換するアナログ・デジタル変換器（以降、Ａ／Ｄ変換器と記述）、２５６はＡ／Ｄ変換器２５５よりＡ／Ｄ変換された信号に対して所定の処理を施すカメラ信号処理回路、２５７は画像を表示するために映像信号を一時的に保持する画像表示メモリ、２５８は画像表示メモリに出力されたデジタル信号をアナログ信号に変換するデジタル・アナログ変換器（以降、Ｄ／Ａ変換器と記述）、２５９はＤ／Ａ変換器２５８から出力されるアナログ映像信号をユーザに対して表示するＬＣＤ液晶表示装置、２６０はカメラ信号処理回路２５６から出力した画像データをＪＰＥＧなどの圧縮アルゴリズムを用いて圧縮したりその逆の伸張したりする画像圧縮・伸張回路、２６１はカメラ信号処理回路２５６から出力されたデータや、ファイル編集時に記録媒体から読出されたＡＶＩファイルなどを一時的に記憶するメモリ領域（以降ＲＡＭと記述）、２６２はデジタルカメラを制御するためのプログラム（データ編集用プログラムを含む）やデータが格納されたメモリ領域（以降ＲＯＭと記述）、２６３はＲＡＭ２６２及びＲＯＭ２６３に格納されたプログラムを実行することで、本デジタルカメラ全体を制御するマイクロコンピュータ（以降、ＣＰＵと記述）、２６４はＲＡＭ２６１上に一時的に記憶されている画像データを画像ファイルの形で保存するメモリカードやディスクなどの記録媒体、２６５は記録媒体２６４への画像データの書き込み及び読み出しを行うためのカードインタフェース（以降、カードＩ／Ｆと記述）である。また、２６６は、ユーザからデータの編集指示や各種の設定指示を受け付けるための操作ユニットである。操作ユニット２６６は十字ボタンなどで構成され、ファイルの削除個所を決定することが可能である。
【００１４】
＜記録媒体の構成＞
図５は、図４に記載の記録媒体をＦＡＴ（File Allocation Table）でフォーマットした場合のイメージ図である。記録領域は、システム領域３０１とデータ領域３０２から構成されており、システム領域は、（１）ＯＳ本体をロードするためのプログラムを指定したり、システム領域やデータ領域の構造を定義したりするブートセクタ領域、（２）データ領域に存在するクラスタの状態（記録順）を記憶するＦＡＴ領域、（３）記録媒体のルートディレクトリに存在するファイルやサブディレクトリ情報を管理するルートディレクトリ領域の３つから構成されている。
【００１５】
また、データ領域には、クラスタと呼ばれる単位でファイルのデータ本体やサブディレクトリの情報が、分割されて記録されている。クラスタは、クラスタ番号によって管理されており、記録媒体上の最初のクラスタには、クラスタ番号２が付けられており、以降昇順で番号が付けられている。
【００１６】
図６は、ＦＡＴ領域を示したイメージ図である。ＦＡＴの各項目は、０から開始されてデータ領域のクラスタと１対１で対応するように関連付けられている。３５１は、ＦＡＴ領域の最初の２項目（番号が０と１のクラスタ）を示しており、フォーマット識別子などの特別な用途で使用される。３５２は、２番以降からｎ番までの各クラスタの状態を示す値である。この値により、データ領域の各クラスタが、割当て済み（使用中）なのか、「空き」なのか、「欠陥」なのかを判別可能となっている。そのクラスタが空きの場合には「０」か「１」が記載され、そのクラスタが使用中である場合には、次に続くクラスタのクラスタ番号か、ファイルの最後であることを記載する。即ち、ＦＡＴエントリに割り当てられた値が２からＦＦＥＦｈの値なら、そのＦＡＴエントリに対応するクラスタは使用中であって、その値は次に続くクラスタを示す番号を示し、ＦＦＦ７ｈであれば、不慮クラスタであることを示し、ＦＦＦ８ｈからＦＦＦＦｈなら、そのＦＡＴエントリに対応するクラスタは使用中であって、ファイルの最後のクラスタであることを示す。これにより、クラスタ間をまたがるファイルにアクセスすることが可能となっている。
【００１７】
図７は、ディレクトリエントリを示したイメージ図である。４０１は、ファイルやディレクトリに使用される拡張子を除いた名前の文字列を記録する領域である。４０２は、ファイルの拡張子である文字列を記録する領域である。４０３は、ファイルやディレクトリの属性情報を記録する領域である。４０４は、予約領域である。４０５は、ファイルやディレクトリを作成した時、及び更新した時の時刻を記録する領域であり、先頭クラスタに続く場合は、ＦＡＴのエントリをたどることでファイルの最後までデータを取得できる。４０６は、ファイルやディレクトリなどが存在する先頭クラスタ番号を記録するための領域である。４０７は、ファイルのサイズをバイトサイズで記録するための領域である。    ＜ファイルの構成＞
ＡＶＩファイルは、ＲＩＦＦ（Resource Interchange File Format）形式で構成されている。ＲＩＦＦ形式は、様々なリソースを一つのファイルにするためのファイル形式で、新しいフォーマットが追加されても、全体的な構造は変化することなく、基本的な構造を保てるという特徴をもつ。ＲＩＦＦ形式のファイルフォーマットは、チャンクと呼ばれるブロックを１つの単位として構成される。全てのチャンクは、ＲＩＦＦチャンクかＬＩＳＴチャンクあるいはサブチャンクに分類され、ＲＩＦＦチャンクやＬＩＳＴチャンクは、そのデータ領域にＬＩＳＴチャンクまたはサブチャンクを再帰的に持つことができる。
【００１８】
図８の（ａ）に、ＲＩＦＦチャンクのイメージ図を示す。４５１は、チャンクの種別を識別するためのチャンクＩＤであり、ＲＩＦＦチャンクの場合は、最初の４バイトにＲＩＦＦという文字列が設定される。また、ＡＶＩファイルの最初のチャンクはＲＩＦＦチャンクである必要がある。４５４は、ＲＩＦＦチャンクのデータ部であるチャンクデータである。４５２は、ＲＩＦＦチャンクのデータ領域４５４のバイト長を示すチャンクサイズである。４５３は、チャンクデータ４５４の先頭４バイトに記載されるフォームタイプであり、ＡＶＩファイルの場合は、ＡＶＩという文字列が記載される。
【００１９】
図８の（ｂ）に、ＬＩＳＴチャンクのイメージ図を示す。４５５は、チャンクの種別を識別するためのチャンクＩＤであり、ＬＩＳＴチャンクの場合は、最初の４バイトにＬＩＳＴという文字列が設定されている。４５８は、ＬＩＳＴチャンクのデータ部であるチャンクデータである。４５６は、チャンクデータ４５８のバイト長を示すチャンクサイズである。４５７は、チャンクデータ４５６の先頭４バイトに記載されるフォームタイプであり、記述されている文字列によってＬＩＳＴチャンクの意味が定義される。
【００２０】
図８の（ｃ）に、サブチャンクのイメージ図を示す。４５９は、サブチャンクの種別を識別するサブチャンクＩＤである。４６１は、サブチャンクのデータ部であるサブチャンクデータである。４６０は、サブチャンクデータ４６１のバイト長を示すサブチャンクサイズである。
【００２１】
図９にＲＩＦＦ形式のＡＶＩファイルのイメージ図を示す。５０１は、ＡＶＩファイルの撮影情報に関わるヘッダ情報を記憶するデータ領域であるヘッダ部である。５０２は、ＡＶＩファイルの実際の音声データや画像データに関わるデータ領域である。５０３は、５０２に記録されている音声データや画像データのＡＶＩファイル上のオフセット値や音声データや画像データのバイトサイズをキャッシュしておくデータ領域である。
【００２２】
また、図９において、５０４は、フォームタイプが'ＡＶＩ'であるＲＩＦＦチャンクであり、ＲＩＦＦチャンクのチャンクデータ領域に、フォームタイプがｈｄｒｌであるＬＩＳＴチャンク５０５と、フォームタイプがＩＮＦＯであるＬＩＳＴチャンク５０６と、サブチャンクＩＤがＪＵＮＫでサブチャンクデータ領域にダミーデータを持つサブチャンク５０７と、フォームタイプが'ｍｏｖｉ'であるＬＩＳＴチャンク５０８と、サブチャンクＩＤが'ｉｄｘ１'であるサブチャンク５０９とを含む。
【００２３】
ＬＩＳＴチャンク５０５は、サブチャンクＩＤが'ａｖｉｈ'であるサブチャンク５１０と、フォームタイプが'ｓｔｒｌ'であるＬＩＳＴチャンク５１１と、フォームタイプが'ｓｔｒｌ'であるＬＩＳＴチャンク５１２と、サブチャンクＩＤがＩＤＩＴでサブチャンクデータ領域に作成日時を持つサブチャンク５１３と、を含む。
【００２４】
ＬＩＳＴチャンク５０６は、サブチャンクＩＤがＩＳＦＴでサブチャンクデータ領域にソフトウェア情報を持つサブチャンク５１４を含む。
【００２５】
ＪＵＮＫサブチャンク５０７は、サブチャンクデータ領域にダミーデータを有する。このダミーデータのサイズを変更することによって、ヘッダ領域のサイズを変更できる。
【００２６】
ＬＩＳＴチャンク５０８は、サブチャンクＩＤが'０１ｗｂ'でサブチャンクデータ領域に音声データを持つサブチャンク５１５と、サブチャンクＩＤが'００ｄｃ'でサブチャンクデータ領域に複数の画像データを持つサブチャンク５１６と、を含み、音声データを持つサブチャンク５１５及び画像データを持つサブチャンク５１６は、録画されたフレーム数に応じて繰り返し存在する。
【００２７】
サブチャンク５０９のサブチャンクデータ内はＡＶＩＩＮＤＥＸＥＮＴＲＹ構造体から構成されている。
【００２８】
ＬＩＳＴチャンク５１１は、サブチャンクＩＤが'ｓｔｒｈ'でサブチャンクデータ領域にＡｖｉＳｔｒｅａｍＨｅａｄｅｒ構造体を持つサブチャンク５１７と、サブチャンクＩＤが'ｓｔｒｆ'でサブチャンクデータ領域がＢＩＴＭＡＰＩＮＦＯ構造体を持つサブチャンク５１８とから構成される。ＬＩＳＴチャンク５１２は、サブチャンクＩＤが'ｓｔｒｈ'でサブチャンクデータ領域にＡｖｉＳｔｒｅａｍＨｅａｄｅｒ構造体を持つサブチャンク５１９と、サブチャンクＩＤが'ｓｔｒｆ'でサブチャンクデータ領域がＷＡＶＥＦＯＲＭＡＴ構造体を持つサブチャンク５２０とから構成される。
【００２９】
図９のＬＩＳＴチャンク５０８のチャンクデータ内に含まれるサブチャンクの音声データや画像データを順番に読み込み、再生することによって、動画再生は実現される。図９においては、音声データを含むサブチャンク５１５は、ＡＶＩファイルを再生すると最初に読み込まれる音声データである。また、図９の画像データを含むサブチャンク５１６は、ＡＶＩファイルを再生すると最初に読み込まれる画像データである。
【００３０】
図１０は、図９のＬＩＳＴチャンク５０８及び図９のサブチャンク５０９を詳細に記したイメージ図である。５５１は、音声データをサブチャンクデータに持つサブチャンクである。５５２は、画像データをサブチャンクデータに持つサブチャンクである。同様にして、５５３は、サブチャンク５５２に続いて画像データをサブチャンクデータに持つサブチャンクである。５５４は、サブチャンク５５１のサブチャンクＩＤである。５５５は、サブチャンク５５１のサブチャンクデータのバイト長である。５５６は、サブチャンクデータである。同様にして、５５７は、サブチャンク５５２のサブチャンクＩＤである。５５８は、サブチャンク５５２のサブチャンクデータのバイト長である。５５９は、サブチャンク５５２のサブチャンクデータである。
【００３１】
図９においてサブチャンク５０９として示したサブチャンクデータ内はＡＶＩＩＮＤＥＸＥＮＴＲＹ構造体から構成されており、５６０はその１番目のエントリである。同様に、５６１は２番目のエントリ、５６２は３番目のエントリを示しており、それぞれＬＩＳＴチャンクのサブチャンク５５１にはエントリ５６０が、サブチャンク５５２にはエントリ５６１が、サブチャンク５５３にはエントリ５６２が１対１で対応している。また、ＡＶＩＩＮＤＥＸＥＮＴＲＹ構造体の各エントリは、ＩＤ、フラグ、ＬＩＳＴチャンクのチャンクデータの先頭からのオフセット、及びサブチャンクデータのサイズから構成され、サブチャンク５５１、サブチャンク５５２及びサブチャンク５５３の各種情報を保持しており、ＡＶＩファイルの再生を行う時に利用される。
【００３２】
５５４はサブチャンク５５１のサブチャンクＩＤ、５５５はサブチャンク５５１のチャンクデータのバイト長を示している。サブチャンク５５１に対応するエントリ５６０は、５６３にＩＤとしてサブチャンクＩＤ５５４と同じ'０１ｗｂ'を保持し、５６４に音声データであることを示す０ｘ００００００００をフラグとして保持している。さらには、５６５においてサブチャンク５５１のＬＩＳＴのチャンクデータの先頭からのオフセット、及び５６７においてサブチャンク５５１のバイト長を保持している。同様にして、サブチャンク５５２に対応するエントリ５６１は、５６８にＩＤとしてサブチャンクＩＤ５５７と同じ'００ｄｃ'を保持し、５６９に画像データであることを示す０ｘ００００００１０をフラグとして保持している。さらには、５７０においてサブチャンク５５２のＬＩＳＴのチャンクデータの先頭からのオフセット、及び５７１においてサブチャンク５５２のバイト長を保持している。ＡＶＩファイルの再生について、エントリ５６０、エントリ５６１などのＡＶＩＩＤＥＸＥＮＴＲＹ構造体の各エントリを利用することで、ＬＩＳＴチャンク内の音声データや画像データへのスムーズなアクセスを提供できる。
【００３３】
＜部分削除処理＞
図１１は、ＡＶＩファイルの部分削除処理の流れについて大まかに示すフローチャートである。本フローチャートに示す処理は、ＲＯＭ２６２に格納されたファイル削除プログラムをＣＰＵ２６３が実行することによって実現する。
【００３４】
まず、ステップＳ６０２において、ＡＶＩファイルの先頭からどの部分までを削除するかを決定する処理を行う。ＡＶＩファイルの先頭から部分削除が実行されると、ステップＳ６０３に進み、クラスタ境界でのクラスタチェーンのカットが可能であるかどうかを判断する処理を行う。クラスタ境界でのクラスタチェーンのカットが不可能な場合は、ステップＳ６０８へ進み、本シーケンスを終了する。ステップＳ６０３で、クラスタ境界でのクラスタチェーンのカットが可能な場合は、ステップＳ６０４へ進む。ステップＳ６０４で、実際に削除する対象となるクラスタを選択する処理を行い、ステップＳ６０５に進む。ステップＳ６０５では、ＡＶＩファイルのヘッダ部の編集処理を行い、部分削除後のＡＶＩファイルの先頭クラスタにヘッダ部をコピーする操作を行い、ステップＳ６０６に進む。ステップＳ６０６では、インデックス部の編集処理を行い、部分削除後のファイルオフセットの修正を行う。そして、ステップＳ６０７で、ＦＡＴファイルシステムのクラスタ領域を管理しているシステム領域を再設定し、新しくＡＶＩファイルの先頭になるクラスタのクラスタ番号をディレクトリエントリに記載するなどの処理を行う。ステップＳ６０７でシステム領域の再設定が終了すると、動画編集の処理を終えて、本シーケンスを終了する。
【００３５】
図１２は、ＡＶＩファイルのデータ部分の先頭部分削除を行うＵＩ画面のイメージ図である。６５１は、ＡＶＩファイルの総データ量を示すインジケータである。６５２は、ＡＶＩファイルの総データ中の先頭部分からどの位置までを削除するかを示す削除マークである。６５３は、削除した後の先頭フレームのＡＶＩファイルの画像データを表示している。６５４は、先頭部分削除を決定する手段であるボタンである。
【００３６】
図１３は、図１２で先頭部分削除対象となっているＡＶＩファイルのイメージ図である。７０１は、ＡＶＩファイルのフレームレートなどの動画データの各種パラメータが記述されているヘッダ部である。７０２は、ＡＶＩファイルの音声データや画像データを含むサブチャンクが存在するデータ部である。７０３は、音声データや画像データのバイト数やＡＶＩファイル中のオフセット値などを記述しているインデックス部である。７０４は、削除後にＡＶＩファイルの先頭音声データとなるサブチャンクを示している。７０５は、削除後にＡＶＩファイルの先頭画像データとなるサブチャンクを示している。このサブチャンクは、図１２において画像表示エリア６５３に表示される。７０６は、先頭部分削除を行うとＡＶＩファイル上から削除されるサブチャンクを示している。
【００３７】
図１４は、ＡＶＩファイルが存在するファイルシステムのイメージ図である。７５１は、ファイル名、拡張子やファイルの先頭が存在するクラスタのクラスタ番号が記載されているディレクトリエントリである。７５２は、クラスタの使用状態を管理しているＦＡＴである。７５３は、ファイルシステム上のデータ領域に存在するＡＶＩファイルのイメージ図である。ファイルの先頭はクラスタ番号１０のデータ領域に存在し、ＦＡＴ７５２で先頭クラスタから次のクラスタへとチェーンをたどることができる。７５４は、ＡＶＩファイルの音声データや画像データを含むサブチャンクの種類、オフセット及びサイズを管理しているインデックス部であり、最初のサブチャンクから始まり、最後のサブチャンクの順で管理されている。７５５は、現在の先頭サブチャンクへのポインタを示している。７５６は、先頭部分削除が実行された後の、先頭サブチャンクへのポインタを示している。
【００３８】
図１５は、図１１のステップＳ６０２における、削除するデータ領域の決定ルーチンを示すフローチャートである。図１３にあるＵＩ画面上の操作によって、ＡＶＩファイルの先頭から部分削除領域が決定されると、ステップＳ８０２で、削除後の先頭のサブチャンクを取得する。ステップＳ８０３で、インデックス部から削除後の先頭のサブチャンクのファイルオフセットを取得する。ステップＳ８０４で、インデックス部から現在の先頭のサブチャンクのファイルオフセットを取得する。ステップＳ８０５で、現在のサブチャンクのオフセットと削除後のサブチャンクのオフセットから、削除領域のバイト数を取得すると、ステップＳ８０６へ進み、本シーケンスを終了する。図示はしていないが、ここで取得した削除領域のバイト数は、ヘッダのデータ量と比較するために用いられる。つまり、本フローでの処理による結果は、ヘッダが削除領域内にコピーできるかどうかをチェックするために使用する。そして、ヘッダのデータ量に比べて、削除領域のデータ量が小さい場合には、ヘッダを移動するだけの領域が無いため、次の図１６の処理を行なわずに、図１７のステップＳ９５４に進み、削除領域を無効領域に設定した上で、ヘッダのＪＵＮＫ領域を、無効領域分だけ拡張する。
【００３９】
図１６は、削除するクラスタ番号の決定ルーチンを示すフローチャートである。ステップＳ８５２で、ファイルシステムから先頭部分削除を実行するＡＶＩファイルのディレクトリエントリを取得する。ステップＳ８５３で、ディレクトリエントリからＡＶＩファイルの先頭クラスタ番号を取得する。ステップＳ８５４で、ＡＶＩファイルの先頭クラスタから削除領域の最後のデータが存在するクラスタのクラスタ番号までを削除クラスタリストに追加する。ステップＳ８５５で、削除クラスタリスト内から最大のクラスタ番号を取得し、削除クラスタリストから外す。ステップＳ８５６で、削除クラスタリストから外したクラスタ番号を、上書きクラスタリストに追加する。ステップＳ８５７で、上書きクラスタリスト内の全てのクラスタの削除領域の合計バイト数を取得する。ステップＳ８５８では、ヘッダ部のバイト数とステップＳ８５７で取得した削除領域の合計バイト数を比較する。ヘッダ部のバイト数が削除領域の合計バイト数以下であれば、ステップＳ８５９へ進み、ヘッダ部のバイト数が削除領域の合計バイト数よりも大であれば、ステップＳ８５５へ戻る。これにより、ヘッダ部のバイト数が削除領域の合計バイト数以下となるまで、ステップＳ８５５からステップＳ８５８までの処理が繰り返される。ステップＳ８５９では、上書きクラスタリスト内で最小のクラスタ番号を取得し、本シーケンスを終了する。
【００４０】
図１７は、ヘッダ部の編集処理を示すフローチャートである。ステップＳ９５２で、ヘッダ部をメモリ領域に読み込む処理を行う。ステップＳ９５３で、ステップＳ９５２で読み込んだヘッダ部を、図１６のステップＳ８５９で取得したクラスタ番号のクラスタの先頭に書き込む。ステップＳ９５４で、書き込んだヘッダ部の直後に残る削除領域のサイズを取得し、その削除領域を無効データで上書きし、無効領域に設定し、その領域のサイズを取得する処理を行う。つまり、ＡＶＩファイルのヘッダ部の続きから削除後の先頭フレームまでの部分を無意味なデータを示すパディング領域に変更する。ステップＳ９５５で、有効データのバイト数を取得する処理を行う。ステップＳ９５６で、有効データの直前にチャンクＩＤとしてＬＩＳＴ、フォームタイプとしてｍｏｖｉを設定し、ステップＳ９５５で取得した有効データのバイト数をもとにチャンクのサイズを設定する処理を行う。ステップＳ９５７で、ヘッダ部のＪＵＮＫサブチャンクのチャンクサイズを無効領域のサイズをもとに変更する処理を行うと、本シーケンスを終了する。
【００４１】
図１８は、図１６と図１７のフローチャートで行なわれる処理について分かりやすく説明するためのイメージ図である。図１４で例示したＡＶＩファイルに対応させるため、ここでは、先頭部分がクラスタ番号１０に存在するＡＶＩファイルに対し、先頭の一部を削除する場合における、ＡＶＩファイルの遷移を示している。図１８の（ａ）は、ヘッダ部をコピーする前のＡＶＩファイルのイメージ図を示している。９０１は、部分削除前のヘッダ部を示しており、クラスタ番号１０に存在する。９０２は、ユーザ操作によって決定された部分削除領域であり、クラスタ番号１１に存在する削除領域９０２ａとクラスタ番号１２に存在する削除領域９０２ｂとくラスタ番号１３に存在する削除領域９０２ｃとに分けることができる。９０３は、削除後のＡＶＩファイルの先頭となるクラスタ番号１２のクラスタであり、クラスタ番号１２のクラスタへヘッダ部９０１をコピーすることになっている。
【００４２】
図１８（ａ）に示すＡＶＩファイルに対し、図１６のステップＳ８５３の処理を加えると、先頭クラスタ番号として、クラスタ番号１０が取得される。次にステップＳ８５４に処理により、クラスタ番号１０〜１３が、削除クラスタリストに追加される。更に、ステップＳ８５５の処理により、最大クラスタ番号である「１３」がリストから数され、ステップＳ８５６の処理により、上書きクラスタリストに「１３」が追加される。次に、ステップＳ８５７において、上書きクラスタリストに書き込まれたクラスタ番号「１３」の削除領域の合計バイト数を取得し、ステップＳ８５８においてヘッダ部９０１のバイト数と比較する。図１８を見れば明白なように、この例では、クラスタ番号１３内の削除領域９０２ｃよりもヘッダ部９０１の方がデータサイズが大きいため、図１６の処理において、ステップＳ８５５に戻る。そして、ステップＳ８５５では、削除クラスタリスト内から最大クラスタ番号として「１２」を取得し、リストから外した上で、ステップＳ８５６に進み、上書きクラスタリストに「１２」を追加する。これにより、ステップＳ８５７では、上書きクラスタリスト内の削除領域として９０２ｂと９０２ｃの合計バイト数を取得する。図１８（ａ）から明らかなように、この合計バイト数（９０２ｂ＋９０２ｃ）はヘッダ部９０１のバイト数以上であるため、ステップＳ８５８からステップＳ８５９に進み、上書きクラスタリスト内の最小のクラスタ番号として「１２」を取得する。次に、図１７のステップＳ９５２では、ヘッダ部９０１のデータを読込み、更に、ステップＳ９５３において、クラスタ番号１２の先頭から、ヘッダ部９０１のデータを書き込む。この結果、ＡＶＩファイルは図１８（ｂ）の状態となる。
【００４３】
図１８の（ｂ）は、ヘッダ部９０１をコピーした時のＡＶＩファイルのイメージ図を示している。９１１は、クラスタ番号１２のクラスタ９０３に書き込まれた図１８（ａ）のヘッダ部９０１のコピーを示している。９１２は、ヘッダ部をコピーした後に存在する削除領域である。図１８（ｂ）に対して、更にステップＳ９５４で、ヘッダ部の直後の削除領域９１２を無効領域に設定してそのサイズを取得し、ステップＳ９５７において、ヘッダ部のＪＵＮＫ領域のサイズを、無効領域のサイズに変更すると、図１８（ｃ）の状態となる。図１８（ｃ）は、ヘッダ部のＪＵＮＫ領域を再設定した時のＡＶＩファイルのイメージ図を示しており、９２１は、図１８（ｂ）に存在していた削除領域９１２をＪＵＮＫ領域と再設定したサブチャンクを示している。
【００４４】
なお、本実施形態では、図１８に示すようなヘッダ部の移動及びサイズ変更を行なうに当たり、削除データを含む複数のクラスタのうち、最終クラスタを含み、ヘッダ部のサイズよりも大きい、１つ以上の連続するクラスタ群を特定し、そのクラスタ群の先頭にヘッダ部を移動させたが、本発明はこれに限定されるものではない。例えば、ヘッダ部が占めるクラスタ数（図１８では「２」）を予め求めておき、削除データを含む最大のクラスタ番号（図１８では「１３」）からそのクラスタ数を引いて１を足したクラスタ番号（図１８では「１２」）にヘッダ部を移動しても良い。また、本実施形態の処理によれば、ヘッダ部のＪＵＮＫ領域が大きくなる一方なので、図１６の処理を行なう前に、ヘッダ部のＪＵＮＫ領域を最小化する処理を行なってもよい。すなわち、ヘッダを移動する際に、現在のヘッダに含まれるＪＵＮＫ領域を削除した上で削除領域の最終クラスタの空き容量とヘッダとのデータ量の比較を行ってもよい。
【００４５】
図１９は、図１１のステップＳ６０６における、インデックス部の編集処理を詳しく示すフローチャートである。ステップＳ１００２で、削除領域に含まれたサブチャンクに関する情報を持つエントリを取得する。ステップＳ１００３で、ステップＳ１００２で取得したエントリをインデックス部から削除する処理を行う。ステップＳ１００４で、削除されたエントリ以降に続くエントリに関して、サブチャンクのファイル中のオフセット値を変更する処理を行う。ステップＳ１００５で、インデックス部のサイズを計算し変更する処理を行うと、本シーケンスを終了する。
【００４６】
図２０は、図１１のステップＳ６０７における、システム領域の再設定ルーチンを詳しく示すフローチャートである。ステップＳ１１０２で、ファイルシステムから先頭部分削除を実行するＡＶＩファイルのディレクトリエントリを取得する処理を行う。ステップＳ１１０３で、ディレクトリエントリからＡＶＩファイルの先頭クラスタ番号を取得する処理を行う。ステップＳ１１０４で、ステップＳ１１０３で取得したクラスタ番号のＦＡＴエントリから次のクラスタ番号を取得する処理を行う。ステップＳ１１０５で、クラスタ番号と図１６で取得した上書きリスト内の最小のクラスタ番号を比較して、等しければステップＳ１１０８へ進む。等しくなければ、ステップＳ１１０６へ進む。ステップＳ１１０６で、ＦＡＴエントリから次のクラスタ番号を取得する処理を行う。ステップＳ１１０７で、ＦＡＴエントリを未使用領域に変更する処理を行う。ステップＳ１１０７が終わると、ステップＳ１１０５へ戻り、ステップＳ１１０５からステップＳ１１０７をクラスタ番号と上書きリスト内の最小のクラスタ番号が等しくなるまで繰り返す。ステップＳ１１０８で、ディレクトリエントリの先頭クラスタ番号を上書きリスト内の最小のクラスタ番号に変更する処理を行うと、本シーケンスを終了する。
【００４７】
図２１は、図１４で示したＡＶＩファイルに対し、図１６〜図２０のヘッダ部移動処理を加えた後のＡＶＩファイルのイメージ図である。１０５１は、ファイル名、拡張子やファイルの先頭が存在するクラスタのクラスタ番号が記載されているディレクトリエントリである。ヘッダ部は、削除処理によってクラスタ番号１０から１２へ移動しているため、先頭クラスタ番号は１２に変更する必要がある。１０５２は、クラスタの使用状態を管理しているＦＡＴである。クラスタ番号１０及び１１のクラスタは、無効領域であるため、削除後は、ＦＡＴの値は０（未使用状態）に設定される。１０５３は、部分削除が行われる前のヘッダ部である。１０５４及び１０５５は、無効なデータのみが記述されているクラスタである。１０５６は、削除後の先頭のサブチャンクへのファイルオフセットを示している。
【００４８】
以上のような処理により、先頭フレームからの部分削除の場合、ＡＶＩファイル内でクラスタチェーンを変更するかわりに、ＡＶＩファイルのヘッダ部を移動し、移動したヘッダ部を新たにＡＶＩファイルの先頭クラスタに変更することによって、ＡＶＩファイル内に不連続なクラスタチェーンの発生を抑え、検索にかかる時間を減少することができる。また、フラグメンテーションの発生を抑えることによって、その後の空き容量検索にかかる時間も抑えることができる。
【００４９】
なお、上記実施形態では、データファイルとしてＡＶＩファイルを例に挙げて、データ削除処理について説明したが、本発明はこれに限定されるものではなく、他のタイプのファイルにも適用可能である。例えば、ＭＰＥＧファイルなどにも同様に適用できる。
【００５０】
＜機能構成＞
以上の説明を踏まえ、データの削除処理に必要な機能を抽出した機能図を図１に示す。図１において、１０１は、不揮発性メモリやハードディスクなどの記録媒体であり、クラスタ単位でデータを記録することが可能である。記録媒体１０１には、音声データや画像データをデータファイル１０１ａと、各クラスタについて、クラスタが空きか使用中かを示し、かつ、使用中の場合には次のクラスタはどこかを示している管理テーブル１０１ｂとを含む。
【００５１】
１０２は、記録媒体１０１中のデータファイル１０１ａや管理テーブル１０１ｂの内容を読出したり、それらに新たなデータを書き込んだりする記録部である。これは、記録媒体１０１の種類に応じた機能を備えている必要があり、例えば、記録媒体１０１がフラッシュメモリの場合には、メモリアクセス回路と、それを制御するＣＰＵや、ＣＰＵに読出し書込み処理を実行させるプログラムなどがこの記録部１０１に該当する。一方、記録媒体１０１がハードディスクの場合には、ハードディスクドライブと、それを制御するＣＰＵや、ＣＰＵに読出し書込み処理を実行させるプログラムなどがこの記録部１０１に該当する。
【００５２】
１０３は、ユーザからの指示を受けて、記録部に記録されているデータファイルの一部を削除する削除部である。
【００５３】
１０４は、ユーザが削除指示を削除部に送るために操作する操作部であり、どのデータファイルの、先頭からどこまでのデータを削除するかを入力可能となっている。例えば、デジタルカメラに設けられた十字キーやボタン、タッチパネルなどの他、コンピュータで削除処理を行なう場合にはキーボードやマウスがこの操作部１０４に含まれる。
【００５４】
１０５は、削除部１０３が削除処理を行なう際に、記録媒体１０１から読出したデータや、削除処理中の計算結果などを一時的に記憶するための一時記憶部である。通常は、ＲＡＭが一時記憶部１０５として動作する。
【００５５】
また、削除部１０３は、ヘッダ移動先決定部１０３ａと、ヘッダ移動部１０３ｂと、ヘッダサイズ決定部１０３ｃと、管理テーブル書き換え部１０３ｄとを含む。
【００５６】
削除部１０３は、データファイルの先頭部分からの部分削除指示を操作部１０４から入力すると、ヘッダ移動部１０３ａが、まず、ヘッダ情報の位置をクラスタ単位で移動する。詳しくは、削除領域中の適当なクラスタの先頭部分にデータファイルのヘッダ情報をコピーする。そして、ヘッダサイズ変更部１０３ｂが、移動後のヘッダ情報の後端が削除後の先頭フレームに連続するようにヘッダ情報のサイズを変更する。これにより移動後のヘッダ情報の直後からデータ削除後の先頭データが開始する。そして最後に、管理テーブル１０３ｃが、ファイルシステムを用いて、データファイルのヘッダ情報を含むクラスタをデータファイルの先頭クラスタに変更し、移動前のヘッダ情報先頭から移動後のヘッダ情報の先頭までのデータ領域を、ファイルシステムを用いて未使用状態とする。
【００５７】
これにより、データファイルを部分的に削除する際に、ファイルシステム上でデータファイルの先頭クラスタを新たに決定し、不要となったクラスタを管理テーブル上で未使用状態に設定することで、ファイルシステムへのアクセス数を低減し、高速な編集を実現している。また、ファイルシステム上に、不連続な空きクラスタが生じないようデータファイルのヘッダ部を移動しているため、その後の空き容量検索を高速化できる。
【００５８】
（他の実施形態）
以上、本発明の実施形態について詳述したが、本発明に係る装置は、デジタルカメラに内蔵されるものに限定されない。例えば、コンピュータが、特定のプログラムを実行することにより、本発明に含まれる機能を実現する場合には、そのコンピュータも本発明の技術範囲に含まれる。もちろん本発明に含まれる機能を実現するための専用の装置も本発明の技術範囲に含まれる。また、本発明は、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００５９】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
【００６０】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００６１】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００６２】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などがある。
【００６３】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００６４】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００６５】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００６６】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６７】
【図１】本発明に係るデータ削除処理を実現する機能構成を示すブロック図である。
【図２】ＡＶＩファイルの編集操作を行う時のイメージ図である。
【図３】ＦＡＴを利用したＡＶＩファイルの編集操作を行う時のイメージ図である。
【図４】本発明の実施形態に係るシステムの全体構成を示すブロック図である。
【図５】ＦＡＴファイルシステムを示すイメージ図である。
【図６】ＦＡＴを示すイメージ図である。
【図７】ディレクトリエントリを示したイメージ図である。
【図８】ＲＩＦＦ形式のＡＶＩファイルのチャンクを示したイメージ図である。
【図９】ＲＩＦＦ形式のＡＶＩファイルの一例を示したイメージ図である。
【図１０】ＡＶＩファイルの一例を詳細に示したイメージ図である。
【図１１】データ削除処理の全体を示すフローチャートである。
【図１２】ＡＶＩファイルのデータ部分の先頭部分削除を行うＵＩ画面のイメージ図である。
【図１３】先頭部分削除対象となっているＡＶＩファイルのイメージ図である。
【図１４】ＡＶＩファイルが存在するファイルシステムのイメージ図である。
【図１５】削除するデータ領域の決定ルーチンを示すフローチャートである。
【図１６】削除するクラスタ番号の決定ルーチンを示すフローチャートである。
【図１７】ヘッダ部の編集処理を示すフローチャートである。
【図１８】部分削除が行われる様子を示したイメージ図である。
【図１９】インデックス部の編集処理を示すフローチャートである。
【図２０】システム領域の再設定ルーチンを示すフローチャートである。
【図２１】ヘッダ部がコピーされた時のＡＶＩファイルのイメージ図である。
【図１】
2005215894.tif 000003
【図２】
2005215894.tif 000004
【図３】
2005215894.tif 000005
【図４】
2005215894.tif 000006
【図５】
2005215894.tif 000007
【図６】
2005215894.tif 000008
【図７】
2005215894.tif 000009
【図８】
2005215894.tif 000010
【図９】
2005215894.tif 000011
【図１０】
2005215894.tif 000012
【図１１】
2005215894.tif 000013
【図１２】
2005215894.tif 000014
【図１３】
2005215894.tif 000015
【図１４】
2005215894.tif 000016
【図１５】
2005215894.tif 000017
【図１６】
2005215894.tif 000018
【図１７】
2005215894.tif 000019
【図１８】
2005215894.tif 000020
【図１９】
2005215894.tif 000021
【図２０】
2005215894.tif 000022
【図２１】
2005215894.tif 000023