(57)【要約】      （修正有）【課題】記録途中にフレームレートを切り替える。【解決手段】撮像素子１６で画像を入力し、マイク３０で音声を入力する。ＣＰＵ３８及び信号処理装置２２は、記録媒体制御装置４４を介して接続する記録媒体５８に入力画像と入力音声を記録する。第１のフレームレートの第１の動画像信号と入力音声を記録媒体に記録する。ユーザからのフレームレート切り替え指示に従い、第１のフレームレートよりも高い第２のフレームレートの動画信号と所定の音声信号を記録媒体に記録する。【選択図】図１
2006352581.tif 000002
【特許請求の範囲】
【請求項１】
動画像信号を入力する画像入力手段と、
音声信号を入力する音声入力手段と、
前記入力手段により入力された動画像信号を用いて、第１のフレームレートの第１の動画像信号と、前記第１のフレームレートよりも高い第２のフレームレートの第２の動画像信号とを生成可能な画像生成手段と、
前記第１の動画像信号と前記音声入力手段より入力された音声信号とからなる第１のストリームと、前記第２の動画像信号と所定の音声信号とからなる第２のストリームとを生成可能であり、前記第１のストリームと第２のストリームを選択的に出力するストリーム生成手段と、
前記ストリーム生成手段から出力される前記第１及び第２のストリームを記録媒体に記録する記録手段と、
フレームレートの切り替えを指示する指示手段
とを備え、
前記ストリーム生成手段は、前記第１のストリームの記録中における前記指示手段からの指示に応じて、前記第１のストリームに代えて前記第２のストリームを出力し、前記記録手段は前記指示手段の指示に応じて出力された前記第２のストリームを前記第１のストリームに代えて記録することを特徴とする記録装置。
【請求項２】
前記ストリーム生成手段は、前記指示手段の指示がなされてから所定期間だけ、前記第１のストリームに代えて第２のストリームを出力することを特徴とする請求項１記載の記録装置。
【請求項３】
前記ストリーム生成手段は、前記指示手段の指示があった時点から第１の期間前の時点より所定期間だけ、前記第１のストリームに代えて第２のストリームを出力することを特徴とする請求項１に記載の記録装置。
【請求項４】
前記ストリーム生成手段は、前記指示手段の指示があった時点から所定期間前までの間だけ、前記第１のストリームに代えて第２のストリームを出力することを特徴とする請求項１に記載の記録装置。
【請求項５】
前記所定の音声信号は無音を示す信号であることを特徴とする請求項１に記載の記録装置。
【請求項６】
前記第１のフレームレートと第２のフレームレートの差分に応じて前記所定の音声データを挿入することを特徴とする請求項１に記載の記録装置。
【請求項７】
前記画像入力手段は撮像手段を含むことを特徴とする請求項１に記載の記録装置。
【請求項８】
前記記録手段は、記録開始の指示から記録停止の指示までの間に記録した前記第１のストリームと第２のストリームとを一つのファイルとして管理することを特徴とする請求項１に記載の記録装置。
【請求項９】
動画像信号を入力する入力手段と、
前記入力手段により入力された動画像信号を用いて、第１のフレームレートの第１の動画像信号と、前記第１のフレームレートよりも高い第２のフレームレートの第２の動画像信号とを選択的に出力する生成手段と、
前記生成手段より出力される第１の動画像信号と第２の動画像信号を記録媒体に記録する記録手段と、
フレームレートの切り替えを指示する指示手段
とを備え、
前記生成手段は、前記第１の動画像信号の記録中における前記指示手段からの指示に応じて、所定期間、前記第１の動画像信号に代えて前記第２の動画像信号を出力し、
前記記録手段は、前記所定期間の間、前記第１の動画像信号に代えて第２の動画像信号を記録する
ことを特徴とする記録装置。
【請求項１０】
第１のフレームレートで動画を記録する第１の動画記録手段と、第２のフレームレートで動画を記録する第２の動画記録手段とを具備し、前記第１の動画記録手段による動画記録中に、所定期間を前記第２の動画記録手段で動画記録を行う記録装置であって、
前記第１の動画記録手段で記録したデータの位置を示す第１のインデックス情報と、前記第２の動画記録手段で記録したデータの位置を示す第２のインデックス情報とを記録すること特徴とする記録装置。
【請求項１１】
前記第２のインデックス情報の属性情報を示す第３のインデックス情報を記録することを特徴とする請求項１０に記載の記録装置。
【請求項１２】
前記属性情報は、前記第２のインデックス情報の記録位置及びフレーム番号の情報の少なくとも１つを含むことを特徴とする請求項１１に記載の記録装置。
【請求項１３】
請求項１０乃至１２の何れか１項に記載の記録装置で記録した動画ファイルを再生する再生装置であって、
前記第１の動画記録手段で記録した期間と前記第２の動画記録手段で記録した期間を区別して表示する動画ファイル情報表示手段を備えることを特徴とする再生装置。
【請求項１４】
請求項１０乃至１２の何れか１項に記載の記録装置で記録した動画ファイルを再生する再生装置であって、前記第２の記録手段で記録した区間の先頭位置又は末尾位置に再生位置を移動する再生位置移動手段を備えることを特徴する再生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録装置及び再生装置に関し、より具体的には、記録途中に映像フレームレートを切り替え可能な記録装置と、映像フレームレートを切り替えて記録された映像を再生する再生装置に関する。
【背景技術】
【０００２】
デジタルカメラの撮像素子には、ＣＣＤセンサ又はＣＭＯＳセンサが使用される。ＣＭＯＳセンサはＣＣＤセンサに比べて、消費電流が少ないこと、データの読み出しが高速であることなどの利点がある。この利点を利用して、ＣＭＯＳセンサを高速に駆動し、高速なフレームレートで動画をキャプチャすることが可能となってきた。
【０００３】
特許文献１には、撮像素子、Ａ／Ｄ変換手段、信号処理手段及び画像信号圧縮手段からなる撮像系においてフレームレートを可変にする動画撮像システムが記載されている。
【０００４】
一方、デジタルカメラでの動画撮影は、撮影した動画ストリームデータをＡＶＩ（Ａｕｄｉｏ  Ｖｉｄｅｏ  Ｉｎｔｅｒｌｅａｖｅｄ）ファイル形式などに加工して記録メディアに書き込む。撮影された動画データのレートは、通常、記録メディアへの書込みデータレートよりも高速である。その差を補償するために、種々の画像圧縮技術が採用され、且つ、記録メディアの前段に大容量のバッファが配置される。
【特許文献１】特開平０７−２９８１１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年の動画撮影では、長時間撮影を行いたいという要求と、高速フレームレートで撮影を行いたいという要求がある。バッファへのデータ書込み速度がバッファから記録メディアへのデータ読み出し速度を上回るような高速フレームレートの撮影では、バッファにデータを書き込みしきれないことがあるので、１回の撮影継続時間は、バッファの容量により制限され、一般に極めて短くなる。他方、バッファが溢れない程の低速フレームレートの撮影では、１回の撮影継続時間は、記録メディアの容量で制限される。従って、長時間撮影と高速フレームレート撮影を両立することは、困難である。
【０００６】
撮影中の特定のシーンにおいて高速フレームレートの撮影を希望することがある。しかし、動画データの既存のファイルフォーマットは、記録途中でのフレームレートの変更をサポートしていない。仮に、記録途中でフレームレートを変更して記録したとしても、再生時には、何れか１つのフレームレートで再生されてしまう。例えば、低速のフレームレートで記録されている区間は通常のスピードで再生され、高速のフレームレートで記録されている区間はスローモーションで再生されることになる
【０００７】
従って、従来、記録途中にフレームレートを変更することは、希望通りに再生できないという意味で、実質的に不可能であった。
【０００８】
そこで、本発明は、記録途中のフレームレートの変更を実質的に可能にする記録装置及び再生装置を提示することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明に係る記録装置は、動画像信号を入力する画像入力手段と、音声信号を入力する音声入力手段と、前記入力手段により入力された動画像信号を用いて、第１のフレームレートの第１の動画像信号と、前記第１のフレームレートよりも高い第２のフレームレートの第２の動画像信号とを生成可能な画像生成手段と、前記第１の動画像信号と前記音声入力手段より入力された音声信号とからなる第１のストリームと、前記第２の動画像信号と所定の音声信号とからなる第２のストリームとを生成可能であり、前記第１のストリームと第２のストリームを選択的に出力するストリーム生成手段と、前記ストリーム生成手段から出力される前記第１及び第２のストリームを記録媒体に記録する記録手段と、フレームレートの切り替えを指示する指示手段とを備え、前記ストリーム生成手段は、前記第１のストリームの記録中における前記指示手段からの指示に応じて、前記第１のストリームに代えて前記第２のストリームを出力し、前記記録手段は前記指示手段の指示に応じて出力された前記第２のストリームを前記第１のストリームに代えて記録することを特徴とする。
【００１０】
本発明に係る記録装置は、動画像信号を入力する入力手段と、前記入力手段により入力された動画像信号を用いて、第１のフレームレートの第１の動画像信号と、前記第１のフレームレートよりも高い第２のフレームレートの第２の動画像信号とを選択的に出力する生成手段と、前記生成手段より出力される第１の動画像信号と第２の動画像信号を記録媒体に記録する記録手段と、フレームレートの切り替えを指示する指示手段とを備え、前記生成手段は、前記第１の動画像信号の記録中における前記指示手段からの指示に応じて、所定期間、前記第１の動画像信号に代えて前記第２の動画像信号を出力し、前記記録手段は、前記所定期間の間、前記第１の動画像信号に代えて第２の動画像信号を記録することを特徴とする。
【００１１】
本発明に係る記録装置は、第１のフレームレートで動画を記録する第１の動画記録手段と、第２のフレームレートで動画を記録する第２の動画記録手段とを具備し、前記第１の動画記録手段による動画記録中に、所定期間を前記第２の動画記録手段で動画記録を行う動画記録装置であって、前記第１の動画記録手段で記録したデータの位置を示す第１のインデックス情報と、前記第２の動画記録手段で記録したデータの位置を示す第２のインデックス情報とを記録すること特徴とする。
【００１２】
本発明に係る再生装置は，上述の記録装置で記録した動画ファイルを再生する再生装置であって、前記第１の動画記録手段で記録した期間と前記第２の動画記録手段で記録した期間を区別して表示する動画ファイル情報表示手段を備えることを特徴とする。
【００１３】
本発明に係る再生装置は，上述の記録装置で記録した動画ファイルを再生する再生装置であって、前記第２の記録手段で記録した区間の先頭位置又は末尾位置に再生位置を移動する再生位置移動手段を備えることを特徴する。
【発明の効果】
【００１４】
本発明によれば、長時間の動画撮影中に高速なフレームレートで撮影することができ、高速フレームレート区間を容易に検索することができる。すなわち、簡便な方法でフレームレートの切り替え期間を指定することができる。
【００１５】
さらに、フレームレートを切り替えて動画記録した場合は、再生時のビデオデータと音声データの同期がずれないように管理することができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して、本発明の好ましい実施例を詳細に説明する。
【実施例１】
【００１７】
図１は、本発明の第１実施例に係るデジタルカメラの概略構成ブロック図である。図１において、デジタルカメラ１０は、レンズユニット１２、絞り・シャッタ機構１４、ＣＣＤ撮像素子１６、Ａ／Ｄコンバータ１８、ＳＳＧユニット２０、信号処理ユニット２２、ＤＭＡコントローラ２４、ＤＲＡＭ２６、フラッシュＲＯＭ２８、マイクロフォン３０、Ａ／Ｄコンバータ３２、絞り制御装置３４、レンズ制御装置３６、ＣＰＵ３８、表示制御装置４０、通信制御装置４２、記録媒体制御装置４４、電源となる電池４６、電源制御装置４８、ＤＣ／ＤＣコンバータ５０、入力装置５２、表示装置５４、通信コネクタ５６、記録媒体５８及びシステムバス６０等を具備する。
【００１８】
ＣＣＤ撮像素子１６は、レンズユニット１２及び絞り・シャッタ機構１４による光学像を電気信号に変換する。Ａ／Ｄコンバータ１８は、ＣＣＤ撮像素子１６から出力されるアナログ電気信号をデジタル信号に変換する。ＳＳＧユニット２０は、ＣＣＤ撮像素子１６とＡ／Ｄコンバータ１８に同期信号を供給する。信号処理ユニット２２は、圧縮及び伸長などの画像処理をする。ＤＭＡコントローラ２４は、システムバス６０を介した所定ブロック間の高速なデータ転送を実現する。ＤＲＡＭ２６は、デジタルカメラ１０の主記憶であり、撮影時にバッファメモリとしても使用される。フラッシュＲＯＭ２８は、ファームウエアプログラムを格納する。
【００１９】
マイクロフォン３０は、デジタルカメラ１０の外部音声を電気信号に変換する。Ａ／Ｄコンバータ３２は、マイクロフォン３０のアナログ音声信号をデジタル信号に変換する。絞り制御装置３４は、絞り・シャッタ機構１４を制御する。レンズ制御装置３６は、レンズユニット１２に対してＡＦ（オートフォーカス）とズーム等のレンズ駆動を行う。ＣＰＵ３８は、フラッシュＲＯＭ２８からロードしたファームウエアプログラムに従い、デジタルカメラ１０の全体を制御する。
【００２０】
表示制御装置４０は、ＴＦＴ液晶等で構成される表示装置５４を制御する。通信制御装置４２は、ＵＳＢプロトコルを用いた通信を制御する。通信コネクタ５６は、ＵＳＢケーブルを介して、外部のＰＣまたはプリンタ等と接続する。記録媒体制御装置４４は、固体メモリカード、ハードディスク又は光ディスク等からなる記録媒体５８に対して、データを読み出し、書き込む。
【００２１】
電源制御装置４８は、ＤＣ／ＤＣコンバータ５０を制御し、電池４６の残量を検出する。ＤＣ／ＤＣコンバータ５０は、電池４６からの電力をデジタルカメラ１０の各部に、適切な電圧に変換して供給する。
【００２２】
入力装置５２は、表示装置５４上に表示されるメニュー画面に従い、ユーザが種々の指示又は選択を入力するのに使用される。入力装置５２は、キーパッド、ズームレバー、電源スイッチ及びレリーズスイッチ等で構成されている。システムバス６０は、各回路ブロック間の高速なデータ転送を実現する。
＜ＡＶＩ、ＲＩＦＦの説明＞
【００２３】
ここで、本実施例で使用するファイルフォーマットを説明する。
【００２４】
ＡＶＩファイルは、ＲＩＦＦ（Ｒｅｓｏｕｒｃｅ  Ｉｎｔｅｒｃｈａｎｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ）と呼ばれるファイル形式で構成されている。ＲＩＦＦ形式とは、様々なリソースを一つのファイルにまとめて扱うためのファイル形式である。すなわち、ＲＩＦＦ形式は、新しいフォーマットが追加されても、基本的な構造を変えることなく、様々なタイプのファイルを扱うことができるという特徴を持つ。
【００２５】
ＲＩＦＦ形式のファイルフォーマットは、チャンク（ｃｈｕｎｋ）と呼ばれるブロックを１つの単位として構成されている。チャンクは、４バイトの識別子、４バイトのサイズ情報及び任意長のデータ部からなる。識別子は、３文字以下の場合には、右詰めで余りにスペースが補充される。データ部の構造は、チャンクのタイプにより異なる。
【００２６】
特定のチャンクは、チャンクを含むことができる。この場合、チャンクはいわば親子の関係になり、チャンクを含むチャンクを親チャンクと呼び、含まれるチャンクをサブチャンクと呼ぶ。一つのチャンクに複数のサブチャンクを含ませることも可能である。
【００２７】
識別子ＲＩＦＦで示されるＲＩＦＦチャンクは、ＲＩＦＦファイルの先頭に配置される特別のチャンクである。識別子ＬＩＳＴで示されるＬＩＳＴチャンクは、サブチャンクをリスト化したものである。図２（ａ）は、ＲＩＦＦチャンクの構成を示し、図２（ｂ）は、ＬＩＳＴチャンクの構成を示し、図２（ｃ）は、一般のチャンクの一例としてｓｔｒｈチャンクの構成を示す。
【００２８】
ＲＩＦＦチャンクでは、図２（ａ）に示すように、最初の４バイト（Ａ１）にチャンクＩＤ（識別子）として文字列”ＲＩＦＦ”が格納される。次の４バイト（Ａ２）に、後続のデータ部（Ａ４）のバイト長を示すチャンクサイズが格納される。データ部（Ａ４）の先頭の４バイト（Ａ３）には、このＲＩＦＦファイルに格納されるデータのファイル形式を示すフォームタイプが格納される。例えば、ＡＶＩデータの場合、フォームタイプＡ３に文字列”ＡＶＩ  ”が格納される。
【００２９】
ＬＩＳＴチャンクでは、図２（ｂ）に示すように、最初の４バイト（Ａ５）にチャンクＩＤとして文字列”ＬＩＳＴ”が格納される。次の４バイト（Ａ６）に、後続のデータ部（Ａ８）のバイト長を示すチャンクサイズが格納される。データ部（Ａ８）の先頭の４バイト（Ａ７）には、このＬＩＳＴチャンクの意味又はタイプを示すリストタイプが格納される。図２（ｂ）に示す例では、リストタイプとして、文字列”ｍｏｖｉ”が格納されている。ＬＩＳＴチャンクのリストタイプが、例えば”ＩＮＦＯ”である場合、リストチャンクは、データ部Ａ８に、著作権を示すＩＣＯＰチャンクと、作成日を示すＩＣＲＤチャンクを含むことができる。
【００３０】
一般のチャンクは、図２（ｃ）に示すように、最初の４バイト（Ａ９）にチャンクＩＤ（図示例では、文字列”ｓｔｒｈ”）が格納される。次の４バイト（Ａ１０）に、後続のデータ部（Ａ１１）のバイト長を示すチャンクサイズが格納される。
＜ＲＩＦＦ形式のＡＶＩファイル＞
【００３１】
図３は、ＲＩＦＦ形式のＡＶＩファイルの構造図を示す。ヘッダ部Ｂ１には、ＡＶＩファイルの属性情報に関わるデータが格納される。データ部Ｂ２には、ＡＶＩファイルの実際の音声データと画像データが格納される。インデックス部Ｂ３には、データ部Ｂ２に記録されている音声データと画像データの各ファイル上でのオフセット位置及びサイズが格納される。
【００３２】
ＲＩＦＦチャンクＢ４のフォームタイプは”ＡＶＩ  ”である。ＲＩＦＦチャンクＢ４のチャンクデータ領域は、ＬＩＳＴチャンクＢ５、ＬＩＳＴチャンクＢ６、サブチャンクＢ７、ＬＩＳＴチャンクＢ８、及びサブチャンクＢ９から構成されている。ＬＩＳＴチャンクＢ５のリストタイプは”ｈｄｒｌ”であり、ＬＩＳＴチャンクＢ６のリストタイプは”ＩＮＦＯ”である。サブチャンクＢ７のチャンクＩＤは”ＪＵＮＫ”であり、チャンクデータ領域にダミーデータを持つ。ＬＩＳＴチャンクＢ８のリストタイプは”ｍｏｖｉ”であり、サブチャンクＢ９のチャンクＩＤは”ｉｄｘ１”である。
【００３３】
サブチャンクＢ７は、チャンクデータ領域にダミーデータを詰めることにより、ヘッダ領域Ｂ１のサイズを調整することができる。換言すると、適当な量のダミーデータを収容するＪＵＮＫチャンクを使用することで、ヘッダ部Ｂ１の長さ又はサイズを調整できる。
【００３４】
ＬＩＳＴチャンクＢ５のチャンクデータ領域は、サブチャンクＢ１０、ＬＩＳＴチャンクＢ１１、ＬＩＳＴチャンクＢ１２、及びサブチャンクＢ１３から構成されている。サブチャンクＢ１０のチャンクＩＤは”ａｖｉｈ”であり、ＬＩＳＴチャンクＢ１１のリストタイプは”ｓｔｒｌ”である。ＬＩＳＴチャンクＢ１２のリストタイプも”ｓｔｒｌ”であり、サブチャンクＢ１３のチャンクＩＤは”ＩＤＩＴ”である。サブチャンクＢ１３は、チャンクデータ領域に作成日時情報を収容する。
【００３５】
ＬＩＳＴチャンクＢ６のチャンクデータ領域は、チャンクＩＤが”ＩＳＦＴ”であり、ソフトウエア情報を持つサブチャンクＢ１４から構成されている。ＬＩＳＴチャンクＢ８のチャンクデータ領域は、サブチャンクＢ１５及びサブチャンクＢ１６等から構成されている。サブチャンクＢ１５のチャンクＩＤは”０１ｗｂ”であり、チャンクデータ領域に音声データを持つ。サブチャンクＢ１６のチャンクＩＤは”００ｄｂ’であり、チャンクデータ領域に画像データを持つ。サブチャンクＢ１５及びサブチャンクＢ１６は、録画されたフレーム数に応じて繰り返し存在する。
【００３６】
ＬＩＳＴチャンクＢ１１のチャンクデータ領域は、サブチャンクＢ１７及びサブチャンクＢ１８から構成されている。サブチャンクＢ１７のチャンクＩＤは”ｓｔｒｈ”であり、チャンクデータ領域にＡｖｉＳｔｒｅａｍＨｅａｄｅｒ構造体を持つ。サブチャンクＢ１８のチャンクＩＤは”ｓｔｒｆ”であり、チャンクデータ領域にＢＩＴＭＡＰＩＮＦＯ構造体を持つ。
【００３７】
ＬＩＳＴチャンクＢ１２のチャンクデータ領域は、サブチャンクＢ１９及びサブチャンク２０から構成されている。サブチャンクＢ１９のチャンクＩＤは”ｓｔｒｈ”であり、チャンクデータ領域にＡｖｉＳｔｒｅａｍＨｅａｄｅｒ構造体を持つ。サブチャンクＢ２０のチャンクＩＤは”ｓｔｒｆ”であり、チャンクデータ領域にＷＡＶＥＦＯＲＭＡＴ構造体を持つ。
【００３８】
ＬＩＳＴチャンクＢ８のチャンクデータ領域に含まれるサブチャンクＢ１５，Ｂ１６・・・の音声データ及び画像データを順番に読み込みことにより、動画を再生できる。すなわち、ＡＶＩファイルの再生開始により、音声データを含むサブチャンクＢ１５と画像データを含むサブチャンクＢ１６が先ず読み込まれる。
＜データ部とインデックス部＞
【００３９】
図４は、図３のデータ部Ｂ２とインデックス部Ｂ３をより詳細に示す。すなわち、図４は、ＬＩＳＴチャンクＢ８及びサブチャンクＢ９のより詳細な構成図を示す。
【００４０】
サブチャンクＣ１は、音声データを格納する。サブチャンクＣ２は、画像データを格納する。サブチャンクＣ３は、サブチャンクＣ２に続く画像データを格納する。サブチャンクＣ１のチャンクＩＤ（Ｃ４）は、”０１ｗｂ”であり、続く４バイト（Ｃ５）に、サブチャンクＣ１のチャンクデータ部（Ｃ６）のバイト長が格納される。チャンクデータ部（Ｃ６）には、音声データが格納される。サブチャンクＣ２のチャンクＩＤ（Ｃ７）は”００ｄｂ”であり、続く４バイト（Ｃ８）に、サブチャンクＣ２のチャンクデータ部（Ｃ９）のバイト長が格納される。チャンクデータ部（Ｃ９）には、画像データが格納される。
【００４１】
ｉｄｘ１サブチャンクＢ９のチャンクデータ領域には、ＡＶＩＩＮＤＥＸＥＮＴＲＹ構造体の配列データが格納されている。Ｃ１０は１番目のエントリを示し、Ｃ１１は２番目のエントリを示し、Ｃ１２は３番目のエントリを示す。ＬＩＳＴチャンクＢ８のサブチャンクＣ１，Ｃ２，Ｃ３は、それぞれ、エントリＣ１０，Ｃ１１，Ｃ１２と１対１で対応する。
【００４２】
ＡＶＩＩＮＤＥＸＥＮＴＲＹ構造体の各エントリは、ＩＤ、フラグ、ＬＩＳＴチャンクのチャンクデータの先頭からのオフセット及びサブチャンクデータのサイズから構成されている。エントリＣ１０，Ｃ１１，Ｃ１２は、それぞれ、サブチャンクＣ１、サブチャンクＣ２及びサブチャンクＣ３の各種情報を保持しており、ＡＶＩファイルの再生時に利用される。
【００４３】
サブチャンクＣ１に対応するエントリＣ１０は、領域Ｃ１３にサブチャンクＣ１のチャンクＩＤ（Ｃ４）と同じ文字列”０１ｗｂ”をＩＤとして保持し、領域Ｃ１４には、音声データであることを示す”０ｘ００００００００”をフラグとして保持している。領域Ｃ１５には、サブチャンクＣ１のチャンクデータの先頭からのオフセットを保持し、領域Ｃ１６には、サブチャンクＣ１のバイト長を保持している。
【００４４】
同様に、サブチャンクＣ２に対応するエントリＣ１１は、領域Ｃ１７にサブチャンクＣ２のチャンクＩＤ（Ｃ７）と同じ文字列”００ｄｃ”をＩＤとして保持し、領域Ｃ１８には、画像データであることを示す”０ｘ００００００１０”をフラグとして保持している。領域Ｃ１９には、サブチャンクＣ２のＬＩＳＴのチャンクデータの先頭からのオフセットを保持し、領域Ｃ２０には、サブチャンクＣ２のバイト長を保持している。
【００４５】
ＡＶＩファイルの再生にエントリＣ１０〜Ｃ１２等のＡＶＩＩＤＥＸＥＮＴＲＹ構造体を利用することにより、ＬＩＳＴチャンクＢ８領域の音声データと画像データへのスムーズなアクセスを提供でき、効率的に再生できる。
＜ファイル構造例＞
【００４６】
図５は、本実施例により、記録途中でフレームレートを変更した場合のＲＩＦＦ形式のＡＶＩファイルの構造例を示す。図３に示す構成とは異なる部分を、重点的に説明する。
【００４７】
通常フレームレートで撮影した画像と音声を記録する区間Ｄ１の後に、高速フレームレートで撮影した画像と音声を記録する区間Ｄ２，Ｄ３が続いている。
【００４８】
区間Ｄ２，Ｄ３内のサブチャンクＤ４，Ｄ５は、高速フレームレートで撮影した画像データを保持する。通常フレームレートの画像データと区別するために、サブチャンクＤ４のチャンクＩＤは”０２ｄｂ”という特別の値をとり、通常のＡＶＩファイルとして再生する場合は無視される。サブチャンクＤ５は、この例では、通常のＡＶＩファイルとして再生する場合にも使用されるチャンクであり、そのチャンクＩＤには、通常フレームレートの画像データと同じＩＤ（＝”００ｄｂ”）が付与される。サブチャンクＤ５は、通常フレームレートの再生時にも再生される。
【００４９】
図５に示すように、本実施例では、１ファイル中に、高速フレームレートで撮影した画像データを収容する区間Ｄ２，Ｄ３を複数、保持できる。
【００５０】
ｉｄｘＨサブチャンクＤ６は、高速フレームレートで撮影した区間Ｄ２のフレームデータのインデックス情報を格納する。同様に、ｉｄｘＨサブチャンクＤ７は、高速フレームレートで撮影した区間Ｄ３のフレームデータのインデックス情報を格納する。ｉｄｘＨサブチャンクＤ７のチャンクデータ領域は、通常のＡＶＩファイルで使用されるｉｄｘ１インデックスチャンクのインデックスエントリと同様に、ＡＶＩＩＮＤＥＸＥＮＴＲＹ構造体の配列データで構成されている。
【００５１】
ｉｄｘＳサブチャンクＤ８は、ｉｄｘＨサブチャンクの属性情報を管理する。ｉｄｘＳサブチャンクＤ９は、ＳｕｐｅｒＨ＿ＩＮＤＥＸＥＮＴＲＹ構造体の配列データを保持する。ＳｕｐｅｒＨ＿ＩＮＤＥＸＥＮＴＲＹ構造体の例を図６に示す。変数ａｄｄｒｅｓｓは、本エントリが指すｉｄｘＨインデックスのファイル上の開始アドレスを示す。変数ｓｉｚｅは、本エントリが指すｉｄｘＨインデックスのサイズを示す。変数ｆｒａｍｅＰｅｒＳｅｃは、本エントリが指すｉｄｘＨインデックスの示す区間のフレームレートを示す。変数ＳｔａｒｔＦｒａｍｅは、本エントリが指すｉｄｘＨインデックスの示す区間の先頭フレームのフレーム番号を示す。変数ｎＦｒａｍｅは、本エントリが指すｉｄｘＨインデックスの示す区間のフレーム数を示す。例えば、図５に示す例は、ｉｄｘＨサブチャンクを２つ保持するので、ｉｄｘＳサブチャンクのデータ部は、図７に示すように、ｉｄｘＨサブチャンクＤ６，Ｄ７の属性情報をそれぞれ保持する２つのＳＵＰＥＲ＿ＩＮＤＥＸＥＮＴＲＹ構造体を保持する。
＜動画シーケンス＞
【００５２】
次に、図８乃至図１０を参照して、本実施例の記録動作の説明をする。本実施例では、所定フレームレートで動画記録中に特定のキー操作、例えば、ターボボタンの押下により、その時点から一定期間までを当該所定フレームレートよりも高速なフレームレートで記録する。図８は、ターボボタンが押下された場合に起こる動画記録のフレームレートの時間変化を示す模式図である。
【００５３】
ターボボタンが押下された時点（Ｅ１）から後の、ＦａｓｔＰｅｒｉｏｄにより秒数で指定される期間（Ｅ２）が、高速フレームレートで記録される期間であることを示している。本実施例における一連の動画撮影処理は、ＣＰＵ３８上で動作するリアルタイムＯＳ上で動作する複数のタスクの協調動作によって実現される。
＜タスク構成図＞
【００５４】
図９は、本実施例における一連の動画撮影処理を行うソフトウエアのモジュール概略構成図である。
【００５５】
キードライバ１００は、入力装置５２上の不図示のスイッチ、ボタン等の操作部材を操作すると、キーイベントを発生する。動画撮影シーケンスタスク１０２は、キードライバ１００からのキーイベントに応じて、動画撮影の開始、停止及び高速フレームレート記録期間の設定等を実行する。
【００５６】
キャプチャコントローラ１０４は、動画撮影のために、ＣＣＤ撮像素子１６、Ａ／Ｄコンバータ１８、ＳＳＧユニット２０、信号処理ユニット２２、ＤＭＡコントローラ２４、マイクロフォン３０及びＡ／Ｄコンバータ３２等の回路ブロックを制御する。この制御により、キャプチャコントローラ１０４は、フレーム単位のビデオデータ及び単位時間毎のオーディオデータからなる動画ストリームデータを生成する。
【００５７】
バッファ１０６はキャプチャコントローラ１０４が生成した動画ストリームデータとその管理情報を一時記憶する。具体的には、バッファ１０６は、フレーム単位のビデオデータを一時記憶するビデオバッファ、単位時間毎のオーディオデータを一時記憶するオーディオバッファ、オーディオチャンクにオーディオデータを書き込むために使用されるオーディオチャンクバッファ、並びに、インデックス情報を格納するｉｄｘ１インデックスバッファ、ｉｄｘＨインデックスバッファ及びｉｄｘＳインデックスバッファを具備する。ＤＲＡＭ２６の一部がバッファ１０６として用いられる。また、キャプチャコントローラ１０４からバッファ１０６へのデータ転送には、ＤＭＡコントローラ２４による信号処理装置２２からシステムバス６０を介したＤＲＡＭ２６へのＤＭＡ転送が使用される。
【００５８】
ストリーム生成タスク１０８は、キャプチャコントローラ１０４の動画ストリームデータ生成イベント及び動画ストリーム停止イベントを監視する。ストリーム書き込みタスク１１０は、記録媒体５８上のファイルシステム１１２に対し、ＡＶＩファイルのオープン、クローズ、ファイルへのＡＶＩヘッダの書き込み、ストリームデータの書き込み、及びインデックスの書き込みを実行する。
＜動画撮影シーケンスタスク＞
【００５９】
次に、動画撮影シーケンスタスクの動作を説明する。図１０は、動画撮影シーケンスタスクのフローチャートを示す。
【００６０】
動画撮影シーケンスタスク１０２は、アイドル状態（Ａ）、動画撮影開始待ち状態（Ｂ）、動画撮影中状態（Ｃ）、ストリーム生成終了待ち状態（Ｄ）の４つの状態を持つ。
【００６１】
アイドル状態（Ａ）では、キードライバ１００からＳＷ１オンイベントを受け付けると（Ｓ１０）、動画ファイルの生成場所である記録媒体５８のストレージ空き容量を検査する（Ｓ１１）。ストレージの空き容量が十分確保できたら、ＡＦ（オートフォーカス）処理を行う（Ｓ１２）。ＡＦ処理が行われたら、動画撮影開始待ち状態（Ｂ）に遷移する。ここで、動画撮影開始待ち状態（Ｂ）は、ＳＷ２オンイベント（Ｓ１３）とＳＷ１オフイベント（Ｓ１８）を受け付ける。
【００６２】
動画撮影開始待ち状態（Ｂ）では、キードライバ１００からＳＷ２オンイベントを受け付けると（Ｓ１３）、バッファ１０６を初期化し（Ｓ１４）、ストリーム書込みタスク１１０に初期化要求イベントを送信する（Ｓ１５）。ストリーム生成タスク１０８に初期化要求イベントを送信する（Ｓ１６）。また、キャプチャコントローラ１０４に対して動画キャプチャ開始を指示し（Ｓ１７）、動画撮影中状態（Ｃ）に遷移する。他方、動画撮影開始待ち状態（Ｂ）でＳＷ１オフイベントを受け付けると（Ｓ１８）、動画撮影を開始することなくアイドル状態（Ａ）に遷移する。
【００６３】
動画撮影中状態（Ｃ）は、ＳＷ２オンイベント（Ｓ１９）とターボボタン押下イベント（Ｓ２４）を受け付ける。動画撮影中状態（Ｃ）で、キードライバ１００からＳＷ２オンイベントを受け付けると（Ｓ１９）、キャプチャコントローラ１０４に動画キャプチャ停止を指示する（Ｓ２０）。動画キャプチャ停止が完了したら、ストリーム生成終了待ち状態（Ｄ）に遷移する。
【００６４】
ストリーム生成終了待ち状態（Ｄ）は、ストリーム生成終了イベント（Ｓ２１）のみを受け付ける。ストリーム生成終了待ち状態（Ｄ）で、ストリーム生成タスク１０８からストリーム生成終了イベントを受け付けると（Ｓ２１）、ストリーム書込みタスク１１０にバッファフラッシュ指示イベントを送信し（Ｓ２２）、ストリーム書込みタスク１１０にストリーム書込みタスク終了イベントを送信する（Ｓ２３）。動画撮影シーケンスタスクはアイドル状態（Ａ）に遷移し、一連の動画撮影シーケンスを終了する。
【００６５】
他方、動画撮影中状態（Ｃ）でターボボタン押下イベントを受け付けると（Ｓ２４）、現在のフレーム番号を取得し、変数Ｃｕｒ＿Ｆｒａｍｅにセットする（Ｓ２５）。変数Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎに変数Ｃｕｒ＿Ｆｒａｍｅの値をセットする（Ｓ２６）。変数Ｆａｓｔ＿ｆｐｓ＿ｅｎｄに、変数Ｃｕｒ＿Ｆｒａｍｅと変数ｎＦｒａｍｅＦａｓｔＰｅｒｉｏｄの和をセットする（Ｓ２７）。以上の処理が終わったら、動画撮影中状態（Ｃ）に遷移する。
【００６６】
ただし、変数ｎＦｒａｍｅＦａｓｔＰｅｒｉｏｄの値は、変数ＣａｐｔｕｒｅＦＰＳと変数ＦａｓｔＰｅｒｉｏｄの積である。変数ＣａｐｔｕｒｅＦＰＳはキャプチャ時の１秒当たりのフレーム数であり、変数ＦａｓｔＰｅｒｉｏｄは高速フレームレートによる記録時間（秒）である。例えば、毎秒９０フレームでキャプチャする場合で、２秒間の高速記録を行うときには、ｎＦｒａｍｅＦａｓｔＰｅｒｉｏｄ＝９０×２＝１８０となる。
＜ストリーム生成タスク＞
【００６７】
図１１は、ストリーム生成タスクのフローチャートである。ストリーム生成タスク１０８は、アイドル状態（Ａ）とストリーム生成待ち状態（Ｂ）の２つの状態を持つ。
【００６８】
アイドル状態（Ａ）では、動画撮影シーケンスタスク１０２からのストリーム生成タスク初期化イベントを受け付ける（Ｓ３０）。ストリーム生成タスク初期化イベントを受け付けると（Ｓ３０）、ストリーム生成待ち状態（Ｄ）に遷移する。
【００６９】
ストリーム生成待ち状態（Ｄ）は、ビデオフレームデータ生成完了イベント（Ｓ３１）、オーディオデータ生成完了イベント（Ｓ３２）及びストリーム停止イベント（Ｓ３３）を受け付ける。ビデオフレームデータ生成完了イベント（Ｓ３１）は、キャプチャコントローラ１０４により、ビデオフレームデータが１フレーム生成されるたびに発行される。オーディオデータ生成完了イベントは、キャプチャコントローラ１０４により、オーディオＷＡＶＥデータが所定単位時間分生成されるたびに発行される。
【００７０】
ストリーム生成待ち状態（Ｄ）でビデオフレームデータ生成完了イベントを受け付けると（Ｓ３１）、ビデオバッファへの書込み処理を実行する（Ｓ３２）。ストリーム書込みタスク１１０にストリーム生成イベントを送信し（Ｓ３３）、ストリーム生成待ち状態（Ｄ）に遷移する。
【００７１】
ストリーム生成待ち状態（Ｄ）でオーディオデータ生成完了イベントを受け付けると（Ｓ３４）、オーディオバッファへの書込み処理を実行する（Ｓ３５）。ストリーム書込みタスク１１０にストリーム生成イベントを送信し（Ｓ３３）、ストリーム生成待ち状態（Ｄ）に遷移する。
【００７２】
ストリーム生成待ち状態（Ｄ）でストリーム停止イベントを受け付けると（Ｓ３６）、オーディオバッファへの書込み処理（Ｓ３７）と、ビデオバッファへの書込み処理（Ｓ３８）を実行する。そのあと、ストリーム書込みタスク１１０にストリーム生成終了イベントを送信し（Ｓ３９）、アイドル状態（Ａ）に遷移する。
【００７３】
ビデオバッファ及びオーディオバッファのデータ転送は、キャプチャコントローラ１０４からのＤＭＡ転送により実現される。また、ビデオバッファへの書込み処理（Ｓ３２、Ｓ３８）及びオーディオバッファへの書込み処理（Ｓ３４、Ｓ３７）では、ＤＭＡ転送された実データの属性情報を管理する処理も実行される。図１２は、ビデオバッファに格納される各フレームの属性情報の一例を示す。
＜ストリーム書込みタスク＞
【００７４】
図１３は、ストリーム書き込みタスクのフローチャートを示す。ストリーム書込みタスク１１０は、アイドル状態（Ａ）と書込み待ち状態（Ｅ）の２つの状態を持つ。
【００７５】
アイドル状態（Ａ）では、動画撮影シーケンスタスク１０２からのストリーム書込みタスク初期化イベントを受け付ける（Ｓ４０）。ストリーム書込みタスク初期化イベントを受け付けると（Ｓ４０）、ファイルシステム１１２に対して、新たに作成するＡＶＩファイルを新規オープンする（Ｓ４１）。新規ファイルがオープンされたら、ＡＶＩファイルのヘッダを生成し、当該ファイルに書き込む（Ｓ４２）。チャンクヘッダの書き込み後、動画データ部に相当するｍｏｖｉチャンクをオープンする（Ｓ４３）。ｍｏｖｉチャンクがオープンされたら、書込み待ち状態（Ｅ）に遷移する。
【００７６】
書込み待ち状態（Ｅ）では、ストリーム生成タスク１０８からのストリーム生成イベント（Ｓ４４）、並びに、動画撮影シーケンスタスク１０２からのバッファフラッシュ指示イベント（Ｓ４７）及びストリーム書込みタスク終了イベント（Ｓ４９）の各処理を受け付ける。
【００７７】
書込み待ち状態（Ｅ）でストリーム生成イベントを受け付けると（Ｓ４４）、ビデオバッファ上に溜まっているビデオフレーム数を取得し、書込み最小単位（フレーム数）と遡りバッファリング数の和と比較する（Ｓ４５）。書込み最小単位とは、ファイルシステム１１２に一度に書き込む最小フレーム数であり、ファイルシステム１１２にストリーミングデータを効率的に書き込むために予め規定される。例えば、秒９０フレームで書込みを１秒単位とする場合、書込み最小単位は、９０（＝１（秒）×９０（フレーム））である。遡りバッファリング数とは、高速フレームレート期間を遅延して、数秒前までさかのぼって設定するためのバッファリングのフレーム数である。例えば、遡る期間を４秒と想定すると、高速フレームレートが秒９０フレームの場合で、遡りバッファリング数は３６０（＝４（秒）×９０（フレーム））である。
【００７８】
所定のフレームレートでの動画記録中にターボボタンが押された時点から一定期間を所定のフレームレートよりも高速なフレームレートで記録する場合には、遡りバッファリング数はゼロでよい。また、ターボボタンが押された場合で、その一定時間前から高速なフレームレートで記録するときには、遡りバッファリング数に遡る時間に相当する所定値を設定すればよい。
【００７９】
ビデオバッファのフレーム数が書込最小単位と遡りバッファリング数の和以上の場合（Ｓ４５）、バッファ１０６上のフレーム数から遡りバッファリング数を引いた値を書込み指定フレーム数としてセットし、バッファデータ書込み処理を実行する（Ｓ４６）。バッファデータ書込み処理（Ｓ４６）が完了したら、書込み待ち状態（Ｅ）に遷移する。バッファ１０６上のフレーム数が書込最小単位と遡りバッファリング数の和より小さい場合（Ｓ４５）、書込みを実行せずに、書込み待ち状態（Ｅ）に遷移する。
【００８０】
書込み待ち状態（Ｅ）で動画撮影シーケンスタスク１０２からのバッファフラッシュ指示イベントを受け付けると（Ｓ４７）、バッファデータフラッシュ処理を実行する（Ｓ４８）。バッファデータフラッシュ処理（Ｓ４８）が完了すると、書込み待ち状態（Ｅ）に遷移する。
【００８１】
書込み待ち状態（Ｅ）で動画撮影シーケンスタスク１０２からのストリーム書込みタスク終了イベントを受け付けと（Ｓ４９）、ＡＶＩファイルの動画データ部に相当するｍｏｖｉチャンクのチャンクサイズを書き込み、チャンクをクローズする（Ｓ５０）。インデックスｉｄｘ１，ｉｄｘＳを書込むインデックス書き込み処理を実行する（Ｓ５１）。Ｓ４１でオープンしたＡＶＩファイルのファイルハンドルをクローズする（Ｓ５２）。以上の処理が完了したら、アイドル状態（Ａ）に遷移して、動画ストリームファイルの一連の書込み処理を完了する。
＜バッファデータ書込み処理＞
【００８２】
図１４は、バッファデータ書き込み処理（Ｓ４６）の詳細なフローチャートを示す。バッファデータ書込み処理は、呼び出されると、先ず、ループカウンタｉをゼロにクリアする（Ｓ５４）。フレーム書込み処理（Ｓ５５）が実行され（Ｓ５５）、ループカウンタｉがインクリメントされる（Ｓ５６）。フレーム書込み処理の詳細は後述する。書込み指定フレーム数がループカウンタｉを越えたか否かが判定される（Ｓ５７）。書込み指定フレーム数は、バッファデータ書込み処理が呼び出されるときに、引数として渡される。ループカウンタｉが書込み指定フレーム数未満の間（Ｓ５７）、フレーム書込み処理（Ｓ５５）が繰り返され、ループカウンタｉが書込み指定フレーム数以上になると（Ｓ５７）、バッファデータ書込み処理を終了する。
＜バッファデータフラッシュ処理＞
【００８３】
図１５は、バッファデータフラッシュ処理（Ｓ４８）の詳細なフローチャートを示す。バッファデータフラッシュ処理は、呼び出されると、バッファ１０６に残っているフレーム数をチェックする（Ｓ６０）。残りフレーム数がゼロの場合（Ｓ６０）、バッファデータフラッシュ処理を終了する。残りフレーム数がゼロで無い場合（Ｓ６０）、１フレームのフレーム書込み処理を実行して（Ｓ６１）、Ｓ６０に戻る。このようにして、バッファ１０６に残る全フレームが、１フレームずつ掃き出される。
＜フレーム書き込み処理＞
【００８４】
図１６は、フレーム書き込み処理Ｓ５５，Ｓ６１の詳細なフローチャートを示す。
【００８５】
バッファ１０６上に構成されるビデオバッファから１フレーム分のデータを取得する（Ｓ７０）。取得したフレームのフレーム番号ｎＦｒａｍｅを、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ及びＦａｓｔ＿ｆｐｓ＿ｅｎｄと比較し、ｎＦｒａｍｅが、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ以上で且つＦａｓｔ＿ｆｐｓ＿ｅｎｄ未満であるかどうかを判別する（Ｓ７１）。ただし、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ及びＦａｓｔ＿ｆｐｓ＿ｅｎｄは、ターボボタン押下イベント受信（Ｓ２４）時にそのときのフレーム番号を基準にステップＳ２６及びＳ２７でそれぞれ設定される値である。すなわち、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ及びＦａｓｔ＿ｆｐｓ＿ｅｎｄの値は、撮影者が通常のフレームレートよりも高速のフレームレートで記録したい特定期間を指定したことによって設定される。
【００８６】
ｎＦｒａｍｅの値がＦａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ以上で、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄ未満である場合（Ｓ７１）、高速のフレームレートで記録したい特定期間であることを意味する。ｎＦｒａｍｅの値がＦａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ未満、又は、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄ以上の場合、高速のフレームレートで記録したい特定期間ではないことを意味し、低速（通常）のフレームレートで記録する期間であることを意味する。
【００８７】
低速で記録する期間の場合（Ｓ７１）、取得したデータのフレーム番号ｎＦｒａｍｅをＦＰＳ＿ＦＡＳＴ／ＦＰＳ＿ＳＬＯＷで割った余りを求め、その余りがゼロか否かを調べる（Ｓ７２）。余りがゼロ以外の場合は、記録する必要の無いフレームであると判断して、このフレームに対する処理を終了する。余りがゼロの場合（Ｓ７２）、記録する必要があるフレームと判断して、オーディオバッファから（１／ＦＰＳ＿ＳＬＯＷ）秒分のオーディオデータを取得する（Ｓ７３）。
【００８８】
ＦＰＳ＿ＦＡＳＴは、単位時間（通常は１秒間）当たりの高速時のフレーム数を示し、ＦＰＳ＿ＳＬＯＷとは、単位時間（通常は１秒間）当たりの低速（通常）時のフレーム数を示す。例えば、ＦＰＳ＿ＦＡＳＴ＝９０で、ＦＰＳ＿ＳＬＯＷ＝３０である。
【００８９】
高速で記録する場合も（Ｓ７１）、取得したデータのフレーム番号ｎＦｒａｍｅをＦＰＳ＿ＦＡＳＴ／ＦＰＳ＿ＳＬＯＷで割った余りを求め、その余りがゼロか否かを調べる（Ｓ７４）。余りが非ゼロの場合（Ｓ７４）、高速時においてのみ記録するフレームであると判定して、（１／ＦＰＳ＿ＳＬＯＷ）秒分のダミーのオーディオデータ（例えば無音データ）を用意する（Ｓ７６）。他方、余りがゼロの場合（Ｓ７４）、高速時及び低速時のどちらでも記録する必要があるフレームと判断して、Ｓ７５に遷移し、オーディオバッファから（１／ＦＰＳ＿ＳＬＯＷ）秒分のオーディオデータを取得する。但し、このオーディオデータは、オーディオチャンクバッファにセットされること無しに破棄される（Ｓ７６）。これにより、高速時のフレームレートで記録された期間を再生するときにスローモーションで再生されると同時に、ビデオフレームとオーディオデータの同期がずれることを防ぐことを可能とする。
【００９０】
ステップＳ７６で用意されたダミーオーディオデータ、又は、ステップＳ７３で取得されたオーディオデータをオーディオチャンクバッファにセットする（Ｓ７７）。これにより、高速時のフレームレートで記録された期間を再生するときにスローモーションで再生されると同時にダミーオーディオ（無音）で音声が再生され、低速時のフレームレートで記録された期間を再生するときには通常スピードでビデオ及びオーディオが再生される動画ファイルを生成することが可能となる。
【００９１】
Ｓ７８では、Ｓ７０で取得したフレームデータを図４の画像データＣ９に相当する位置に書き込むことにより、ビデオチャンクをファイルに書き込む。図４のインデックスエントリＣ１１に相当するビデオフレームデータ用のインデックスエントリのデータを生成して、インデックスバッファに書き込む（Ｓ７９）。
【００９２】
オーディオデータが１秒分格納されたか否かを判別する（Ｓ８０）オーディオデータが格納された場合（Ｓ８０）、オーディオチャンクバッファに溜まった１秒分のオーディオデータを図４の音声データＣ４に相当する位置に書き込むことによってオーディオチャンクをファイルへ書き込む（Ｓ８１）。図４のインデックスエントリＣ１０に相当するオーディオデータ用のインデックスエントリのデータを生成して、インデックスバッファへ書き込む（Ｓ８２）。
【００９３】
以上の一連の処理により、フレーム書込み処理が完了する。
【００９４】
図１７は、以上の処理によるビデオバッファ及びオーディオバッファからＡＶＩファイルへのデータ移動の模式図を示し、図１８は、生成されるｉｄｘ１インデックスの構成例を示す。
【００９５】
ビデオバッファには、高速フレームレートでキャプチャして生成したフレームデータが一旦格納される。図１７に示す例では、フレームｖｉｄｅｏ１０乃至ｖｉｄｅｏ１６が、高速フレームレートで記録されるべきフレームである。高速フレームレート期間以外の期間では、３フレームにつき２フレームが間引きされ、１フレームだけがＡＶＩファイルに記録される。例えば、フレームｖｉｄｅｏ０，ｖｉｄｅｏ３，ｖｉｄｅｏ６，ｖｉｄｅｏ９は、ＡＶＩファイルに格納されるが、それらのフレームの間に位置するフレームｖｉｄｅｏ１，ｖｉｄｅｏ２，ｖｉｄｅｏ４，ｖｉｄｅｏ５，．．．は破棄される。これらの間引きの結果、残ったフレームのインデックスエントリが、図１８に示すように、ｉｄｘ１インデックスバッファに保持される。高速フレームレート期間の各フレームｖｉｄｅｏ１０乃至ｖｉｄｅｏ１８はすべて、ＡＶＩファイルに格納される。
【００９６】
オーディオバッファには、オーディオデータが随時格納される。オーディオバッファから随時、ＡＶＩファイルのオーディオチャンクのサイズ分のオーディオデータがオーディオチャンクバッファに読み出され、ＡＶＩファイルのオーディオチャンクに書き込まれる。ただし、高速フレームレート期間では、ダミーのオーディオデータｄｕｍｍｙ１０乃至ｄｕｍｍｙ１６が、ＡＶＩファイルに格納される。
【００９７】
図８では、所定操作（ターボボタンの押下）以後の一定期間を、高速フレームレートの記録期間とした。しかし、図１９に示すように、所定操作（インパクトボタンの押下）に応じて、当該所定操作の時点を時間軸上の中心とする一定期間を高速フレームレートの記録期間としてもよい。例えば、インパクトボタンの押下前のＦａｓｔＰｅｒｉｏｄ／２秒間と、インパクトボタン押下後のＦａｓｔＰｅｒｉｏｄ／２秒間を併せた期間を、高速フレームレートの記録期間とする。
【００９８】
この場合の撮影映像シーケンスタスクのフローチャートを図２０に示す。図２０は、主要部分で図１０に示す撮影映像シーケンスタスクと同じであり、変更部分に符号ａを付記してある。即ち、ターボボタンの代わりにインパクトボタンの押下イベントを受け付けるようにし（Ｓ２４ａ）、ステップＳ２６ａでは、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎにＣｕｒ＿Ｆｒａｍｅ−ｎＦｒａｍｅＦａｓｔＰｅｒｉｏｄ／２をセットし、ステップＳ２７ａでは、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄに、Ｃｕｒ＿Ｆｒａｍｅ＋ｎＦｒａｍｅＦａｓｔＰｅｒｉｏｄ／２をセットする。そして、図１３に示すストリーム書込みタスクのステップＳ４５では、遡りバッファリング数を、ＣａｐｔｕｒｅＦＰＳ×ＦａｓｔＰｅｒｉｏｄ／２より大きな値に設定する必要がある。
【００９９】
更には、図２１に示すように、所定操作（ロールバックボタンの押下）に応じて、当該所定操作から過去に遡る一定時間を高速フレームレートの記録期間としてもよい。
【０１００】
この場合の撮影映像シーケンスタスクのフローチャートを図２２に示す。図２０は、主要部分で図１０に示す撮影映像シーケンスタスクと同じであり、変更部分に符号ｂを付記してある。即ち、ターボボタンの代わりにロールバックボタンの押下イベントを受け付けるようにし（Ｓ２４ｂ）、ステップＳ２６ｂでは、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎにＣｕｒ＿Ｆｒａｍｅ−ｎＦｒａｍｅＦａｓｔＰｅｒｉｏｄをセットし、ステップＳ２７ｂでは、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄに、Ｃｕｒ＿Ｆｒａｍｅをセットする。そして、図１３に示すストリーム書込みタスクのステップＳ４５では、遡りバッファリング数を、ＣａｐｔｕｒｅＦＰＳ×ＦａｓｔＰｅｒｉｏｄより大きな値に設定する必要がある。
【０１０１】
動画の記録形式は、各画像を独立に圧縮符号化するＭｏｔｉｏｎ  ＪＰＥＧ方式でもよいし、一連の画像を必要により相互に利用するＭＰＥＧ方式でもよいし、その他の圧縮方式でもよい。
【０１０２】
上記実施例では、記録媒体５８として着脱自在なメモリカードを例示したが、デジタルカメラに内蔵される内部メモリを記録媒体５８と想定しても良い。有線又は無線の通信プロトコルを用いて、通信制御４２を介して接続可能な外部のストレージを記録媒体５８とすることも可能である。
【０１０３】
上記実施例では、高速フレームレートで撮影する期間を一定時間としたが、これに限るものではない。例えば、ビデオバッファの空き状況に応じて高速フレームレートで撮影する期間を増減させても良い。この場合、バッファの空きが所定量を下回った時点で高速フレームレートの期間を終了して、低速フレームレートの撮影に切り替えればよい。
【０１０４】
上記実施例では、ダミーのオーディオデータに無音データを用いたが、実時間のオーディオデータを伸長して、スロー再生に同期するようなスローの音声に変換したものを、ダミーオーディオデータとして用いることも出来る。
【実施例２】
【０１０５】
図２３は、フレーム書き込み処理Ｓ５５，Ｓ６１の別の詳細なフローチャートを示す。
【０１０６】
バッファ１０６上に構成されるビデオバッファから１フレーム分のデータを取得する（Ｓ１７０）。取得したフレームのフレーム番号ｎＦｒａｍｅを、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ及びＦａｓｔ＿ｆｐｓ＿ｅｎｄと比較し、ｎＦｒａｍｅが、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ以上で且つＦａｓｔ＿ｆｐｓ＿ｅｎｄ以下であるかどうかを判別する（Ｓ１７１）。ただし、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ及びＦａｓｔ＿ｆｐｓ＿ｅｎｄは、ターボボタン押下イベント受信（Ｓ２４）時にそのときのフレーム番号を基準にステップＳ２６及びＳ２７でそれぞれ設定される値である。すなわち、Ｆａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ及びＦａｓｔ＿ｆｐｓ＿ｅｎｄの値は、撮影者が通常のフレームレートよりも高速のフレームレートで記録したい特定期間を指定したことによって設定される。
【０１０７】
ｎＦｒａｍｅの値がＦａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ以上で、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄ以下である場合（Ｓ１７１）、高速のフレームレートで記録したい特定期間であることを意味する。ｎＦｒａｍｅの値がＦａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ未満、又は、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄを越える場合、高速のフレームレートで記録したい特定期間ではないことを意味し、低速（通常）のフレームレートで記録する期間であることを意味する。
【０１０８】
低速で記録する期間の場合（Ｓ１７１）、取得したデータのフレーム番号ｎＦｒａｍｅをＦＰＳ＿ＦＡＳＴ／ＦＰＳ＿ＳＬＯＷで割った余りを求め、その余りがゼロか否かを調べる（Ｓ１７２）。余りがゼロ以外の場合（Ｓ１７２）は、記録する必要の無いフレームであると判断して、このフレームに対する処理を終了する。余りがゼロの場合（Ｓ１７２）、記録する必要があるフレームと判断して、Ｓ１７５に遷移する。
【０１０９】
ＦＰＳ＿ＦＡＳＴは、単位時間（通常は１秒間）当たりの高速時のフレーム数を示し、ＦＰＳ＿ＳＬＯＷとは、単位時間（通常は１秒間）当たりの低速（通常）時のフレーム数を示す。例えば、ＦＰＳ＿ＦＡＳＴ＝９０で、ＦＰＳ＿ＳＬＯＷ＝３０である。
【０１１０】
高速で記録する場合、即ち、ｎＦｒａｍｅの値がＦａｓｔ＿ｆｐｓ＿ｂｅｇｉｎ以上で、Ｆａｓｔ＿ｆｐｓ＿ｅｎｄ以下である場合（Ｓ１７１）、高速フレームレート区間のためのインデックスであるｉｄｘＨインデックスバッファにインデックスエントリを生成する（Ｓ１７３）。取得したデータのフレーム番号ｎＦｒａｍｅをＦＰＳ＿ＦＡＳＴ／ＦＰＳ＿ＳＬＯＷで割った余りを求め、その余りがゼロか否かを調べる（Ｓ１７４）。余りがゼロの場合（Ｓ７４）、高速時及び低速時のどちらでも記録する必要があるフレームと判断して、Ｓ１８２に遷移する。余りがゼロ以外の場合（Ｓ１７４）、高速時においてのみ記録すべきフレームであると判断してＳ１７５に遷移する。
【０１１１】
Ｓ１７５では、Ｓ１７０で取得したフレームデータを図４の画像データＣ９に相当する位置に書き込むことにより、ビデオチャンクをファイルに書き込む。図４のインデックスエントリＣ１１に相当するビデオフレームデータ用のインデックスエントリのデータを生成して、ｉｄｘ１インデックスバッファに書き込む（Ｓ１７６）。オーディオバッファから（１／ＦＰＳ＿ＳＬＯＷ）秒分のオーディオデータ（例えば、１／３０秒分）を取得する（Ｓ１７７）。取得したオーディオデータをオーディオチャンクバッファにセットする（Ｓ１７８）。
【０１１２】
オーディオデータが１秒分格納されたか否かを判別する（Ｓ１７９）。オーディオデータが１秒分以上、格納されている場合（Ｓ１７９）、オーディオチャンクバッファに溜まった１秒分のオーディオデータを図４の音声データＣ４に相当する位置に書き込むことによってオーディオチャンクをファイルに書き込む（Ｓ１８０）。図４のｉｄｘ１インデックスのインデックスエントリＣ１０に相当するオーディオデータ用のインデックスエントリのデータを生成して、ｉｄｘ１インデックスバッファへ書き込む（Ｓ１８１）。オーディオデータが１秒分以上、格納されていない場合（Ｓ１７９）、ステップＳ１８０，Ｓ１８１を迂回する。
【０１１３】
ｎＦｒａｍｅとＦａｓｔ＿ｆｐｓ＿ｅｎｄの値が等しいか否かを判別する（Ｓ１８３）。ｎＦｒａｍｅとＦａｓｔ＿ｆｐｓ＿ｅｎｄが等しければ（Ｓ１８３）、高速フレームレート撮影区間が終了したと判断し、ｉｄｘＨインデックスバッファの内容を図５のｉｄｘＨインデックスにＤ５，Ｄ６相当するファイルの位置に書き込む（Ｓ１８４）。ｉｄｘＨのインデックスであるｉｄｘＳのインデックスバッファにエントリを生成する（Ｓ８５）。
【０１１４】
以上、説明した一連の処理によって、フレーム書き込み処理が完了する。
【０１１５】
図２４は、以上の処理によるビデオバッファ及びオーディオバッファからＡＶＩファイルへのデータ移動の模式図を示し、図２５は、生成されるｉｄｘ１インデックスの構成例を示す。
【０１１６】
ビデオバッファには、高速フレームレートでキャプチャして生成したフレームデータが一旦格納される。図２４に示す例では、フレームｖｉｄｅｏ１０乃至ｖｉｄｅｏ１８が、高速フレームレートで記録されるべきフレームである。高速フレームレート期間以外の期間では、３フレームにつき２フレームが間引きされ、１フレームだけがＡＶＩファイルに記録される。例えば、フレームｖｉｄｅｏ０，ｖｉｄｅｏ３，ｖｉｄｅｏ６，ｖｉｄｅｏ９は、ＡＶＩファイルに格納されるが、それらのフレームの間に位置するフレームｖｉｄｅｏ１，ｖｉｄｅｏ２，ｖｉｄｅｏ４，ｖｉｄｅｏ５，．．．は破棄される。これらの間引きの結果、残ったフレームのインデックスエントリが、図２５に示すように、ｉｄｘ１インデックスバッファに保持される。高速フレームレート期間の各フレームｖｉｄｅｏ１０乃至ｖｉｄｅｏ１８はすべて、ＡＶＩファイルに格納される。
【０１１７】
ひとつの高速フレームレート期間の各フレームｖｉｄｅｏ１０乃至ｖｉｄｅｏ１８のインデックスエントリがｉｄｘＨインデックスバッファに保持される。高速フレームレート区間の記録が終わったら、ＡＶＩファイル上の直後のファイル位置に、ｉｄｘＨインデックスバッファの内容がｉｄｘＨインデックスとして記録される。ｉｄｘＨのエントリはｉｄｘＳインデックスバッファに保持される。
＜インデックス書き込み処理＞
【０１１８】
図２６は、インデックス書込み処理のフローチャートを示す。ｉｄｘ１インデックスバッファのデータをファイルに書き込み（Ｓ９０）、ｉｄｘＳインデックスバッファのデータをファイルに書き込む（Ｓ９１）。ｉｄｘ１及びｉｄｘＨのインデックスデータは、図５に示すファイルのＤ７、Ｄ８にそれぞれ対応する位置に書込まれる。
＜再生時の表示＞
【０１１９】
図２７は、再生モードで起動した時の一覧表示である。図２８は、再生画面例である。図２７では、９つの画像オブジェクトＧ１〜Ｇ９のサムネイル画像が表示されている。その中で、オブジェクトＧ２〜Ｇ４のサムネイル画像の左側に表示されるパーフォレーションマークは、動画ファイルであることを示している。さらに、オブジェクトＧ２、Ｇ３サムネイル画像には、複数のフレームレートで記録されていることを示す“Ｄｕａｌ  Ｓｐｅｅｄ”アイコンが付与されている。
【０１２０】
図２７に示す画面を表示した状態で、ユーザは十字キー（不図示）等を用いて、任意のオブジェクトを選択して再生を指示することができる。例えば、オブジェクトＧ２又はＧ４を選択し、エンターキー（不図示）を押下すると、図２８に示すようなオブジェクトＧ２又はＧ４の再生画面が表示される。
【０１２１】
再生画面Ｈ１には、種々の操作ボタンＨ２〜Ｈ１０と情報を表示するアイコンＨ１１〜Ｈ１５がＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）上に表示される。
【０１２２】
操作ボタンＨ２〜Ｈ１０は、十字キー等で選択される。停止状態で再生ボタンＨ２を押すことにより動画再生が開始される。ジャンプボタンＨ３、Ｈ４は、それぞれ先頭・末尾へのジャンプを指示する。高速再生ジャンプボタンＨ５、Ｈ６は、動画ファイル内に複数存在する高速フレームレート区間へのジャンプを指示する。コマ送りボタンＨ７、Ｈ８は、前後へのコマ送りを指示する。スロー再生ボタンＨ９は、動画のスロー再生を指示する。再生スピード選択ボタンＨ１０は、スロー再生ボタンＨ９が押下されて、スロー再生状態になった場合に、スロー再生の再生スピードを選択するのに使用される。すなわち、再生スピード選択ボタンＨ１０は、スロー再生中に十字キーを左右に選択することにより、スロー再生スピードの増減を指示する。
【０１２３】
デュアルスピードアイコンＨ１１は、現在再生中の動画ファイルが複数のフレームレート区間を含む動画ファイルであることを表す。プログレスバーＨ１２は、現在の動画再生位置を表示する。プログレスバーＨ１２の斜線部は、高速フレームレート区間Ｈ１３、Ｈ１４である。すなわち、現在再生中の動画ファイルにおける高速フレームレート区間の位置を示す。ｉｄｘＳに格納されているＳＵＰＥＲ＿ＩＮＤＥＸＥＮＴＲＹ（図６参照）の各エントリのＳｔａｒｔＦｒａｍｅとｎＦｒａｍｅの値を参照することで、高速フレームレート区間の開始フレーム及びフレーム数を取得できる。これらの情報から、ファイルにおける全動画フレームのなかでの高速フレームレート区間Ｈ１３、Ｈ１４の相対位置が求まる。
【０１２４】
高速フレームレート区間Ｈ１３、Ｈ１４の先頭位置は、ｉｄｘＳに格納されているＳＵＰＥＲ＿ＩＮＤＥＸＥＮＴＲＹの各エントリのａｄｄｒｅｓｓ値を参照して、高速フレームレート区間を示すｉｄｘＨインデックスを参照し、当該ｉｄｘＨインデックスの先頭フレームのアドレスを取得することにより、決定できる。
【０１２５】
このようにして、容易に高速フレームレート区間のみを選択して再生することができ、検索の手間を省くことができる。また、高速フレームレート区間Ｈ１３、Ｈ１４を備えたので、使用者にフレームレートの切り替え期間を表示することでき、使用者が高速なフレームレートで記録された期間を容易に選択することができる。
【図面の簡単な説明】
【０１２６】
【図１】本発明の一実施例に係るデジタルカメラの概略構成ブロック図である。
【図２】各チャンクの模式図である。
【図３】ＲＩＦＦ形式のＡＶＩファイルの模式図である。
【図４】データ部とインデックス部を詳細に記す模式図である。
【図５】記録途中でフレームレートを変更した場合のＲＩＦＦ形式のＡＶＩファイルの構造例を示す模式図である。
【図６】ＳＵＰＥＲ＿ＩＮＤＥＸＥＮＴＲＹ構造体の構成図である。
【図７】ＳＵＰＥＲ＿ＩＮＤＥＸＥＮＴＲＹ型のデータの配置例である。
【図８】動画記録のフレームレートの変化例を示す模式図である。
【図９】ソフトウエアモジュールの概略構成図である。
【図１０】第１実施例の動画撮影シーケンスタスクのフローチャートである。
【図１１】ストリーム生成タスクのフローチャートである。
【図１２】ビデオバッファのフレーム毎に持つ属性情報を示す図である。
【図１３】ストリーム書き込みタスクの状態遷移図である。
【図１４】バッファデータ書き込み処理のフローチャートである。
【図１５】バッファデータフラッシュ処理のフローチャートである。
【図１６】フレーム書き込み処理のフローチャートである。
【図１７】バッファからＡＶＩファイルへのデータ移動を示す概念図である。
【図１８】図１７に示すデータ移動に対するｉｄｘ１インデックスの例である。
【図１９】高速フレームレートの記録指示に対してその前後を高速フレームレート記録期間とする場合のフレームレート変化を示す模式図である。
【図２０】図１９に対する撮影映像シーケンスタスクのフローチャートである。
【図２１】高速フレームレートの記録指示の直前の一定期間を高速フレームレート記録期間とする場合のフレームレート変化を示す模式図である。
【図２２】図２１に対する撮影映像シーケンスタスクのフローチャートである。
【図２３】フレーム書き込み処理の別のフローチャートである。
【図２４】図２３に示すフレーム書込み処理に対する、バッファからＡＶＩファイルへのデータ移動例である。
【図２５】図２４に示すデータ移動に対するインデックス例である。
【図２６】インデックス書込み処理のフローチャートである。
【図２７】再生モードでの一覧表示画面である。
【図２８】動画ファイルの再生画面例である。
【符号の説明】
【０１２７】
１０  デジタルカメラ
１２  レンズユニット
１４  絞り・シャッタ機構
１６  ＣＣＤ撮像素子
１８  Ａ／Ｄコンバータ
２０  ＳＳＧユニット
２２  信号処理ユニット
２４  ＤＭＡコントローラ
２６  ＤＲＡＭ
２８  フラッシュＲＯＭ
３０  マイクロフォン
３２  Ａ／Ｄコンバータ
３４  絞り制御
３６  レンズ制御
３８  ＣＰＵ
４０  表示制御
４２  通信制御
４４  記録媒体制御
４６  電池
４８  電源制御
５０  ＤＣ／ＤＣコンバータ
５２  入力装置
５４  表示装置
５６  通信コネクタ
５８  記録媒体
６０  システムバス
１００  キードライバ
１０２  動画撮影シーケンスタスク
１０４  キャプチャコントローラ
１０６  バッファ
１０８  ストリーム生成タスク
１１０  ストリーム書込みタスク
１１２  ファイルシステム
【図１】
2006352581.tif 000003
【図２】
2006352581.tif 000004
【図３】
2006352581.tif 000005
【図４】
2006352581.tif 000006
【図５】
2006352581.tif 000007
【図６】
2006352581.tif 000008
【図７】
2006352581.tif 000009
【図８】
2006352581.tif 000010
【図９】
2006352581.tif 000011
【図１０】
2006352581.tif 000012
【図１１】
2006352581.tif 000013
【図１２】
2006352581.tif 000014
【図１３】
2006352581.tif 000015
【図１４】
2006352581.tif 000016
【図１５】
2006352581.tif 000017
【図１６】
2006352581.tif 000018
【図１７】
2006352581.tif 000019
【図１８】
2006352581.tif 000020
【図１９】
2006352581.tif 000021
【図２０】
2006352581.tif 000022
【図２１】
2006352581.tif 000023
【図２２】
2006352581.tif 000024
【図２３】
2006352581.tif 000025
【図２４】
2006352581.tif 000026
【図２５】
2006352581.tif 000027
【図２６】
2006352581.tif 000028
【図２７】
2006352581.tif 000029
【図２８】
2006352581.tif 000030