(57)【要約】【課題】  符号化対象のフレームが単調であった場合等、生成される符号化データ量が著しく少ない状況になったとしても、オーバーランを発生させることなく、且つ、記録媒体の速度保障に従ったまま記録動作を継続させる。【解決手段】  第１の生成部は、符号化対象のデータから、可変長の符号化データをフレーム単位に生成し、第１の記憶部に当該符号化データを格納する。第２の生成部は、フレームそれぞれに関連する固定長のデータを生成し、第２の記憶部に当該生成されたデータを格納する。制御部は、記録媒体制御部を制御することで、第１、第２の記憶部に記録されたデータを、記録媒体に、当該記録媒体に依存した所定のサイズを単位に書き込ませる。そして、制御部は、少なくとも所定時間が経過した際に、第１、第２の記憶部に記憶される未記録のデータ量が所定のサイズ以上なるように、第１の生成部に対して下限符号量を設定する。【選択図】  図１
2016122924.tif 000002
【特許請求の範囲】
【請求項１】
符号化対象のデータから、可変長の符号化データをフレーム単位に生成する第１の生成手段と、
前記フレームそれぞれに関連する固定長のデータを生成する第２の生成手段と、
前記第１の生成手段より生成された符号化データを一時的に記憶する第１の記憶手段と、
前記第２の生成手段より生成されたデータを一時的に記憶する第２の記憶手段と、
前記第１、第２の記憶手段に記録されたデータを、記録媒体に、当該記録媒体に依存した所定のサイズを単位に書き込む媒体制御手段と、
前記第１、第２の記憶手段に前記所定のサイズ以上の量のデータが格納された場合、前記媒体制御手段を制御して、当該データのうち、前記所定のサイズを単位に前記記憶媒体への書き込みを行わせる制御手段とを有し、
前記制御手段は、少なくとも所定時間ごとに、記第１、第２の記憶手段に記憶される未記録のデータ量が前記所定のサイズ以上なるように制御を行う
ことを特徴とする記録装置。
【請求項２】
前記記録媒体は、スピードクラスが定義されたメモリカードであって、
前記記録媒体のスピードクラスにおける書き込み単位ＲＵと当該記録媒体のファイルシステムのクラスタサイズとの公倍数を前記所定のサイズを表すＷｕ、
前記第１の生成手段が単位時間に処理するフレーム数をＦｒ、
前記所定時間をＴａ、
前記所定時間ごとの前記未記録の符号化データの下限符号量をＬminとしたとき、
前記制御手段は、次式：
Ｌmin＝Ｗｕ／（Ｆｒ×Ｔａ）
によって、前記下限符号量を算出し、所定時間ごとに、記第１の記憶手段に記憶される未記録の符号化データの符号量が前記下限符号量以上となるように制御を行うことを特徴とする請求項１に記載の記録装置。
【請求項３】
符号化対象のデータから、可変長の符号化データをフレーム単位に生成する第１の生成手段と、
前記フレームそれぞれに関連する固定長のデータを生成する第２の生成手段と、
前記第１の生成手段より生成された符号化データを一時的に記憶する第１の記憶手段と、
前記第２の生成手段より生成されたデータを一時的に記憶する第２の記憶手段と、
前記第１、第２の記憶手段に記録されたデータを、記録媒体に、当該記録媒体に依存した所定のサイズを単位に書き込む媒体制御手段と、
前記第１、第２の記憶手段に記憶されたデータ量を監視し、前記第１、前記第２の記憶手段に蓄積された未記録のデータの合計量が前記所定のサイズ以上となった場合、前記媒体制御手段を制御して、当該データのうち、前記所定のサイズを単位に前記記憶媒体への書き込みを行わる制御手段とを有し、
前記制御手段は、
前記第１、前記第２の記憶手段に蓄積された未記録のデータの合計量が前記所定のサイズに満たない場合であっても、前記第２の記憶手段に予め設定した時間分の未記録のデータが蓄積された場合には、前記第１、第２の記憶手段に蓄積された未記録のデータと、前記所定のサイズに対する不足分のスタッフィングデータとを、前記媒体制御手段を制御して、前記記憶媒体への書き込みを行わる
ことを特徴とする記録装置。
【請求項４】
前記記録媒体は、スピードクラスが定義されたメモリカードであって、
前記所定のサイズは、前記記録媒体のスピードクラスにおける書き込み単位ＲＵと当該記録媒体のファイルシステムのクラスタサイズとの公倍数である
ことを特徴とする請求項３に記載の記録装置。
【請求項５】
前記第１の生成手段はＭＰＥＧ４−ＡＶＣに準拠して符号化データを生成し、
前記第２の生成手段は１フレームにつき固定長のタイムコードを生成する
ことを特徴とする請求項１乃至４のいずれか１項に記載の記録装置。
【請求項６】
第１の生成手段が、符号化対象のデータから、可変長の符号化データをフレーム単位に生成し、一時的に記憶するための第１の記憶手段に当該符号化データを格納する第１の生成工程と、
第２の生成手段が、前記フレームそれぞれに関連する固定長のデータを生成し、一時的に記憶するための第２の記憶手段に当該生成されたデータを格納する第２の生成工程と、
制御手段が、記録媒体制御手段を制御することで、前記第１、第２の記憶手段に記録されたデータを、記録媒体に、当該記録媒体に依存した所定のサイズを単位に書き込ませる制御工程とを有し、
前記制御工程は、少なくとも所定時間ごとに、記第１、第２の記憶手段に記憶される未記録のデータ量が前記所定のサイズ以上なるように制御を行う
ことを特徴とする記録装置の制御方法。
【請求項７】
符号化対象のデータから、可変長の符号化データをフレーム単位に生成し、一時的に記憶するための第１の記憶手段する当該符号化データを格納する第１の生成工程と、
前記フレームそれぞれに関連する固定長のデータを生成し、一時的に記憶するための第２の記憶手段に、当該生成したデータを格納する第２の生成工程と、
制御手段が、記録媒体制御手段を制御することで、前記第１、第２の記憶手段に記録されたデータを、記録媒体に、当該記録媒体に依存した所定のサイズを単位に書き込ませる制御工程とを有し、
前記制御工程は、
前記第１、前記第２の記憶手段に蓄積された未記録のデータの合計量が前記所定のサイズに満たない場合であっても、前記第２の記憶手段に予め設定した時間分の未記録のデータが蓄積された場合には、前記第１、第２の記憶手段に蓄積された未記録のデータと、前記所定のサイズに対する不足分のスタッフィングデータとを、前記媒体制御手段を制御して、前記記憶媒体への書き込みを行わる
ことを特徴とする記録装置の制御方法。
【請求項８】
コンピュータが読み込み実行することで、当該コンピュータに、請求項６又は７に記載の方法の各工程を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記録装置及びその制御方法に関し、動画データ等のフレームを符号化して記録媒体に記録する記録装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、動画データや音声データを記録するためのファイル形式として、ＭＯＶファイル形式やＭＰ４ファイル形式が知られている。また、近年では、動画データや音声データをこれらのファイル形式に従って記録するデジタルカメラなどの記録装置が登場している（例えば、特許文献１参照）。
【０００３】
ＭＯＶファイルには、チャンクと呼ばれる単位でデータが配置される。チャンクは、一定時間（例えば０．５秒）毎に再生タイミングが同期するデータが格納される。例えば、０．５秒分の動画データ（以下ビデオサンプル）を一つのチャンクとして配置し、その後に、ビデオチャンクと再生タイミングが同期する、０．５秒分のタイムコードデータ（タイムコードサンプル）が一つのチャンクとして配置される。
【０００４】
また、デジタルカメラなどでＳＤカード等のメモリカードに対して動画データを記録するための方式として、スピードクラスが提案されている。スピードクラスでは、ＲＵ（Recording Unit）と呼ばれる書き込み単位でデータが書き込まれる。そのため、記録装置においては、数秒程度の符号化された動画データやタイムコードを記憶可能なバッファメモリを用意する。そして、このバッファメモリに動画データやタイムコードを一時記憶しておき、記憶されたデータのデータ量がＲＵサイズ（又はその整数倍）となった時点で、バッファメモリからデータが読み出され、カードに書き込まれる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−９６７１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
Ｈ．２６４などの符号化方式に従い動画データを符号化した場合、画像の内容により符号量が大きく変動する。例えば、フレーム間の動きが大きく、フレーム間差分が大きい状態では、予測誤差が大きくなるので１フレーム当たりの符号量が増加する。一方、フレーム間の動きが少ない、或いは、全画面が白一色、真っ黒な画面などが続いた場合には、予測誤差は実質的にゼロ、もしくはそれに近いものとなり、１フレーム当たりの符号量は極端に少なくなる。
【０００７】
前述のように、スピードクラスによる書き込みのため、動画データ用とタイムコード用それぞれ、バッファメモリを用意する。しかし、動画データの符号量が極端に少ない状態が続いた場合、符号化データのデータ量がカードへの書き込みサイズに達するのに非常に長い時間を要する。
【０００８】
一方、タイムコードは動画の符号量とは無関係に一定時間毎に決められたデータ量ずつ発生する。従って、動画データの符号量が極端に少ない状態では、タイムコード用のバッファメモリが一杯になっても、動画データとタイムコードを合わせたサイズがカードへの書き込みサイズに達しないことが起こり得る。この結果、タイムコード用のバッファメモリがあふれ、正しいタイムコードが記録できなくなる可能性がある。
【０００９】
また、バッファメモリのデータ量が書き込みサイズに達していなくても動画データを書き込むことが考えられるが、その場合、スピードクラスでの書き込みではなくなるため、書き込み速度が保証されないという問題がある。
【００１０】
更に、動画データの符号量が少なくなる状態を考慮し、タイムコード用のバッファメモリを予め多く確保することも考えられる。しかし、現実に、動画データの符号量が極端に少ない状態となることは稀であり、そのような稀に発生する状況のためにバッファメモリを多く確保すること。特にデジタルカメラのような民生機器にとって、メモリの有効利用という点で望ましくない。本発明はこのような問題を解決するものである。
【課題を解決するための手段】
【００１１】
この課題を解決するため、例えば本発明の記録装置は、
符号化対象のデータから、可変長の符号化データをフレーム単位に生成する第１の生成手段と、
前記フレームそれぞれに関連する固定長のデータを生成する第２の生成手段と、
前記第１の生成手段より生成された符号化データを一時的に記憶する第１の記憶手段と、
前記第２の生成手段より生成されたデータを一時的に記憶する第２の記憶手段と、
前記第１、第２の記憶手段に記録されたデータを、記録媒体に、当該記録媒体に依存した所定のサイズを単位に書き込む媒体制御手段と、
前記第１、第２の記憶手段に前記所定のサイズ以上の量のデータが格納された場合、前記媒体制御手段を制御して、当該データのうち、前記所定のサイズを単位に前記記憶媒体への書き込みを行わせる制御手段とを有し、
前記制御手段は、少なくとも所定時間ごとに、記第１、第２の記憶手段に記憶される未記録のデータ量が前記所定のサイズ以上なるように制御を行うことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、入力した符号化対象のフレームが単調であった場合等、生成される符号化データ量が著しく少ない状況になったとしても、オーバーランを発生させることなく、また、記録媒体の速度保障に従ったまま記録動作を継続することができる。
【００１３】
また、圧縮符号化時のビットレート制御にＶＢＲ（Variable Bitrate)を用いることが可能であるため、入力画像が単調な場合でも、生成される動画像ファイルが不必要に高ビットレートになることもない、
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態におけるシステム構成を説明する図。
【図２】ＭＮＯＶファイル構造を説明する図。
【図３】ＭＯＶ生成処理を説明する図。
【図４】下限符号量を維持するための処理を説明する図。
【図５】第１の実施形態により生成されるmovファイルイメージを示す図。
【図６】スタッフィング挿入処理を説明する図。
【図７】第２の実施形態により生成されるmovファイルイメージを示す図。
【図８】第１の実施形態における記録処理を示すフローチャート。
【図９】第１の実施形態における記録処理を示すフローチャート。
【図１０】第１の実施形態における記録処理を説明するための図。
【図１１】第１の実施形態における記録処理を説明するための図。
【発明を実施するための形態】
【００１５】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。なお、メモリ容量やデータ量を表現する表記「KByte」は、210バイト＝1024バイトを指し示す場合もあれば、103バイト=1000バイトを示す場合もある。本実施形態では、その技術内容を単純化するため、後者を採用するものとして説明する。従って、1MByte＝1000KByte=1000000byteを意味し、1Mbps＝1000Kbps=1000000bit/secを意味するものとする。ただし、これはあくまで理解容易のためであることに注意されたい。
【００１６】
［第１の実施形態］
図１は本実施形態を適応した記録装置である。外部の撮像装置から入力される画像をMPEG4-AVCで圧縮符号化し、タイムコードを付与してmov形式に従う動画ファイルとして、記録媒体へ保存する機能を有する。
【００１７】
図示における符号100は、可変長符号化を行う圧縮符号化部である。この圧縮符号化部101は、入力される動画データの各フレームを圧縮符号化する。圧縮符号化部１０１は、可変ビットレート方式で圧縮された動画データの符号量を制御する。即ち、圧縮符号化部１０１は、圧縮された動画データの上限符号量及び下限符号量を設定し、この上限符号量と下限符号量の間に圧縮された動画データの符号量が保持されるように圧縮処理を行う。そして、符号化結果であるフレーム単位のビデオサンプル（符号化データ）を、一時蓄積部103内に確保されたビデオ用リングバッファへ出力する機能を有する。符号量制御方法としては、一般的な量子化パラメータの制御と、下限符号量を維持できない場合に符号量を底上げするためのダミーの0データ(cabac_zero_word)を出力するための機能を有する。
【００１８】
なお、実施形態では、符号化対象の動画データが外部の撮像装置から入力するものとしているが、その入力源の種類は問わない。例えば、ビデオデータを記憶した記録媒体であっても良いし、ビデオデータを出力するチューナであっても良い。また、撮像部を有するビデオカメラに、本実施形態の記録装置を搭載しても構わない。
【００１９】
符号101は、タイムコード生成部である。このタイムコード生成部101は、各フレームの所定の時間からの経過時間を示すタイムコードデータを生成する。例えば、タイムコード生成部101は、動画データの記録開始からの各フレームの経過時間（位置）を示すタイムコードデータを生成する。本実施形態では、タイムコードデータは固定長（4Byte）のデータであり、所定の形式を有する。タイムコード生成部101は、生成したタイムコードデータのサンプルを、一時蓄積部103上に確保されたタイムコード用リングバッファへ出力する。符号102は装置全体の制御を司る制御部である。マイクロコンピュータやメモリ等を含み、メモリに記憶されたプログラムに従って、本装置全体を制御する。
【００２０】
符号103はＲＡＭ等で構成される一時蓄積部である。この一時蓄積部103は、ビデオサンプルを一時的に格納するビデオ用リングバッファ、タイムコードサンプルを一時的に格納するタイムコード用リングバッファ、各種のデータをmovファイル形式の動画ファイルとして記録するためのワークメモリとして使用される。また、この一時蓄積部103は、記録媒体のファイルシステムを格納/更新するメモリ、制御部101のワークメモリとしても使用される。
【００２１】
符号104は記録媒体制御部である。制御部102の制御下で、記録媒体制御105からRUサイズを取得する他、記録媒体105から一時蓄積部101へのデータの読み出し、及び、一時蓄積部101から記録媒体105へのデータの書き出しを行う。符号105はSDカードなどのランダムアクセスの記録媒体（メモリカード）である。ファイルシステムを介して、格納するファイルにアクセス可能である。また、この記録媒体105は、スピードクラスを保証するためのRUサイズを持つ。記録媒体105は、不図示の装着、取り外し機構により、図１の記録装置に対して容易に装着、取り外しが可能である。
【００２２】
符号106はユーザが操作する各種キーやポインティングデバイスで構成される操作部である。そして、符号107はシステム全体を繋ぐバスである。
【００２３】
次に、実施形態における記録装置が用いるMOVファイル形式について図２を用いて簡単に説明する。
【００２４】
MOVファイルは、アトム（もしくは「ボックス」）と呼ばれるデータ構造で構成される。アトムの種類は、ヘッダ部であるftypと、映像（符号化データ）・タイムコードデータ格納部であるmdat、メタ情報格納部としてのmoovアトムの３種類である。
【００２５】
mdatは、圧縮符号化部100の符号化結果のビデオサンプル(1フレーム=1サンプル)を、復号順に1又は複数個集めたビデオチャンク、タイムコードサンプル(1フレーム=1サンプル)を復号順に1又は複数個集めたタイムコードチャンクで構成される。実施形態では、1チャンクは0.5秒分のサンプルデータを集めたものとする。mdatは、このビデオチャンク、タイムコードチャンクをインターリーブ配置したものである。また、同種のチャンクの集合をトラックと呼ぶ。ビデオサンプルは実データ(複数個のマクロブロックの符号化データを集めたスライス)と、0個以上の「0」のビットからなる。
【００２６】
moovは、mdat内のデータに関するサンプルデータに関するメタデータを格納する。各メタデータはトラック毎にバンドルされる。stsdはトラック種別判断と格納データの詳細を示す。ビデオトラックでは符号化形式・画角・サンプリング周波数等の情報を示す。タイムコードトラックではサンプルのサンプリング周波数やビデオサンプルと同期関係にある等の情報を示す。stszは各サンプルデータのデータ長を示す。stcoは各チャンクのファイル先頭からのオフセットを示す。freeは、データ境界調整などを行うための無効領域である。
【００２７】
次に、本装置における動画ファイルの記録方法について図３を用いて説明する。操作部106から、目標符号量（目標ビットレート）が指示され、動画像ファイルの記録が指示される。これを受けて、制御部102は記録媒体105に依存した書き込み単位のサイズを決定する。具体的には、制御部102は、記録媒体制御部104を駆動して記録媒体105のＲＵサイズ及びファイルシステムのクラスタサイズを取得し、両者の公倍数（実施形態では最小公倍数）から書き込み単位のサイズを決定する。ここでは、目標符号量が30Mbpsを設定されたとして説明する。なお、この目標符号量は、最大でも、記録媒体のスピードクラスで規定されるデータ転送速度とする。
【００２８】
次に、制御部102は、目標符号量に基づいて、所定時間分の動画データとタイムコードデータが蓄積可能になるよう、一時蓄積部103上にビデオサンプル用リングバッファと、タイムコードサンプル用リングバッファ、ftyp/moovを生成するためのワークバッファを確保する。各リングバッファは、必ず複数チャンク入りきるサイズを確保する。ここではデータ蓄積の所定時間を10秒(20チャンク分)とする。指示された目標符号量が30メガビット／秒（Mbps）であるので、10秒分は300メガビットとなる。よって、ビデオサンプル用リングバッファとして37.5メガバイト（MByte）(=300/8)、タイムコードサンプル用リングバッファとして2.4KByte(=4×60×10)を確保する。即ち、タイムコードデータは、1フレーム当たり4バイトのデータであり、また、入力される動画データは60フレーム／秒であるので、タイムコードは1秒あたり4×60＝240バイトとなる。更に、10秒分のタイムコードを記憶する場合は、240×10＝2.4キロバイト（KByte）となる。
【００２９】
制御部102は、指示された目標符号量から1フレーム当たりの上限符号量を決定する。上限符号量は、たとえば、30Mbps/60=0.5Mbps=500000ビットとする。また、制御部102は、後述する方法で算出される値を下限符号量として決定する。そして、制御部102は、決定した上限符号量、下限符号量を圧縮符号化部100に設定した上で、入力される画像のMPEG4-AVC形式による圧縮符号化を開始させる。圧縮符号化部100は制御部102より指示された量子化パラメータの制御により、上限符号量以下となるように符号量を調整しながら符号化を行う。そして、圧縮符号化部100は、符号化結果であるビデオサンプル（符号化データ）を一時蓄積部103上のビデオサンプル用リングバッファに出力すると共に、ビデオサンプルのサイズ情報を制御部102へ返す（図３（ａ））。
【００３０】
圧縮符号化部100からビデオサンプルのサイズ情報を受け取ると制御部102は、上述のmoov作成用ワークメモリのビデオトラックのstco/stszに反映する。また、タイムコード生成部101を駆動して、タイムコードサンプルを生成させる。タイムコード生成部101はタイムコードサンプルを生成し、一時蓄積部103上のタイムコード用リングバッファに結果を出力するとともに、完了を制御部102へ返す。実施形態の場合、1つのチャンクは0.5秒分としている。1フレームのタイムコードサンプルは4バイトとしているので、1つのタイムコードチャンクは120バイト（=4×30)の固定となる。制御部102は同様にmoov作成用ワークメモリのタイムコードトラックのstco/stszに反映を行う(図３（ｂ）)。
【００３１】
制御部102は、上記ビデオサンプル及びタイムコードサンプルの生成、及び、moov作成ワークメモリの反映を行う。また、制御部102は、一時蓄積部103上のビデオサンプル用リングバッファ及びタイムコードサンプル用リングバッファの蓄積量を監視する。制御部102は、記録媒体に記録されていない動画データ及びタイムコードデータの合計データ量が、記録媒体105への書き込み単位のサイズ以上になったと判断した場合、記録媒体制御部104を駆動してタイムコード用リングバッファ及びビデオサンプル用リングバッファから0.5秒分ずつ交互に読み出し、記録媒体105へmdatとして出力してチャンクを形成していく。この処理は、記録媒体105に出力済みのデータが書き込み単位と一致するまで続ける(図３（ｃ））。
【００３２】
上記サンプルデータの生成、moov作成ワークメモリの更新、書き込み単位に基づくリングバッファからの出力処理を継続的に行う(図３（ｄ））。そして、操作部106から動画の記録停止が指示されると、制御部102は、ビデオ及びタイムコードサンプルの生成指示を停止し、これに伴い、moov用ワークメモリの更新が終了する。そして、制御部102は、記録媒体制御部104を駆動して記録媒体105の動画ファイルに、リングバッファ上に残ったビデオ及びタイムコードサンプルを同様に書き込み単位に基づきに残らず出力する。リングバッファの残量が書き込みの単位に満たなくなると、制御部102は一時蓄積部103上のダミーデータを末尾に付与して書き込みサイズと成し、同様に記録媒体105へ出力する。更に、制御部102は付与したダミーデータ分をファイルシステム上でtruncateして切り詰める。
【００３３】
次に、制御部102は、moov用ワークメモリ上で生成したftyp/moovデータを記録媒体105へ出力する。このとき、ftyp、moovデータのサイズが書き込み単位と一致しない場合は、書き込み単位と一致するようにfree-atomを使いスタッフィング処理を行う。最後に制御部102は、記録媒体105上で、ftyp/moov/mdatをファイルシステム上で結合して、動画ファイルが完成する。
【００３４】
次に、圧縮符号化部100へ設定する下限符号量について説明する。この設定により、入力画像（符号化対象の映像）中に、極端に単調なフレームが出現して、実データ（符号化データ）の符号量が著しく少ない場合においても、リングバッファのオーバーランが回避される。
【００３５】
以下、記録媒体105のファイルシステムのクラスタサイズが64KByte、記録媒体のスピードクラスにおけるＲＵサイズが512KByteであるものとする。そして、実施形態では、書き込み単位を両者の公倍数（最小公倍数）である512KByteのサイズ単位に記録媒体105に書き込むものとして説明する。
【００３６】
実施形態では、一時蓄積部103上の各リングバッファは10秒分のデータが蓄積可能となるよう設定してある。しかし、本実施形態では、システムのオーバーヘッド等を鑑みて、最低でも8秒経過すると、ビデオサンプル用リングバッファとタイムコード用リングバッファ内の未記録データの総量が512KB以上となるようにする。1フレームに対するタイムコードは4バイト(32ビット)である。よって、１フレームの符号化データの下限符号量をＬmin(単位はビットとする)とした場合、次式(1)を満足すれば良い。
（Ｌmin＋32）×60×8≧512×1000×8    …(1)
この式を解くと、Ｌmin≧8502となり、下限符号量は8502ビットとなる。故に、記録に先立ち、制御部102は圧縮符号化部102に対し1フレームの下限符号量として“8502”ビットを設定すれば良い。ただし、この場合、制御部102は、一時記憶部103内の２つのリングバッファの未記録データ量の推移を監視する必要がある。そこで、処理を簡略化するため、制御部102は、全体のデータに対して支配的な、ビデオサンプル用リングバッファ内の未記録の符号化データ量のみを監視するようにした。すなわち、上式(1)においてタイムコードの４バイトを無視し、次式(1')を満たすＬminを下限符号量とした。
Ｌmin×60×8≧512×1000×8      …(1')
この式を解くと、Ｌmin≧8534となり、下限符号量は8534ビットとなる。先に説明した(1)式より値が大きいので、より安全な方向に作用する。制御部102は、一時記憶部103内のビデオ用リングバッファの未記録のデータＭを監視する。そして、制御部102は、未記録データ量Ｍが書き込み単位の512KByte以上になったと判定したとき、記録媒体制御部104を制御し、記録媒体105への書き込みを行わせることになる。
【００３７】
符号化部100は、着目フレームを符号化して得た実データ量(符号化データ量）がＬminに満たない場合、着目フレームの最終スライスの最終マクロブロックの末尾に、上記Ｌminに足るまでダミーの0データを出力する。ここで追加されるダミーの0データを図４に示す。
【００３８】
制御部102は、ビデオサンプル用リングバッファ内の未記録の符号化データ量を監視し、そのデータ量が書き込み単位の512KByte以上になったときに、書き込みに係る処理を行えば良い。この結果、最長でも8秒の間隔で、書き込み単位での書き込みが行われることとなる。すなわち、類似した画像のフレームが連続し、動画データを符号化した結果、実際に発生する符号量が少なくなったとしても、タイムコード用のリングバッファがオーバーフローすることを抑制できるようになる。
【００３９】
図５は、この処理により生成されるmovファイルのイメージで、実データ量（符号化データ）が一定以下のビデオサンプルの末尾に0データが付与されている点に注意されたい。
【００４０】
以上を行うことで、VBR方式で圧縮符号化を行い、ビデオサンプルの符号化データ量が著しく少ない状態が続いた場合でも、リングバッファのオーバーランが発生することなく、書き込み単位に基づいた記録媒体への出力を維持することができる。
【００４１】
次に、実施形態における記録装置における符号化処理を図８，９のフローチャートに従って説明する。同図のフローチャートに係る処理は、ユーザが、操作部106から記録開始の指示があったことをトリガに開始されるものとする。
【００４２】
説明に先立ち、まず変数を定義する。
Ｔｃ：目標符号量（実施形態では「30MBps」）
Ｆｒ：記録される動画データの単位時間当たりのフレーム数（フレームレート：実施形態では「60フレーム毎秒（fps））
Ｃｓ：記録媒体105におけるファイルシステムのクラスタサイズ
ＲＵ：記録媒体105のスピードクラスの記録単位
Ｔａ：一時蓄積部103に蓄積される動画データ及びタイムコードデータの許容時間（実施形態では8秒）
Ｗｕ：記録媒体105への書き込みを行う単位で、実施形態ではクラスタサイズとＲＵの最小公倍数である512KByte
Ｌmax：圧縮符号化部100により符号化される動画データの1フレーム当たりの上限符号量
Ｌmin：圧縮符号化部100により符号化される動画データの1フレーム当たりの下限符号量
まず、操作部106より記録の開始指示を受けると、ステップＳ1にて、制御部102は、目標符号量Ｔｃ、フレームレートＦｒ、記録媒体105におけるファイルシステムのクラスタサイズＣｓ及び記録単位ＲＵ，一時蓄積部103における蓄積を許容する時間Ｔａを取得する。このうち、クラスタサイズＣｓ及び記録単位ＲＵは、記録媒体制御部104を介して記録媒体105をアクセスすることで取得する。残りは、操作部106よりユーザにより指定させるか、或いは、予め不図示の記憶媒体に記憶させておき、その記憶媒体から取得しても構わない。
【００４３】
次に、ステップＳ2にて、制御部102は、記録媒体105に対する書き込みサイズＷｕを決定する。実施形態と同様に、Ｗｕ＝クラスタサイズＣｓと記録単位ＲＵとの最小公倍数とする。
【００４４】
次に、ステップＳ3にて、制御部102は1フレームの上限符号量Ｌmax、下限符号量Ｌminを決定する。上限符号量は、設定した目標符号量Ｔｃから決めるものとするが、記録媒体105のスピードクラスから決定しても良い。一方、下限符号量Ｌminは先に示した式(1')を一般化させた次式(2)で決定する。
Ｌmin＝Ｗｕ／（Ｆｒ・Ｔａ）    …(2)
上記実施形態に当てはめると、
Ｌmin=512×8×1000／(60×8)≒8534(ビット)
である。
【００４５】
そして、ステップＳ4にて、制御部102は決定した上限符号量Ｌmax，下限符号量Ｌminを圧縮符号化部100に設定させ、ステップＳ5にて符号化処理を開始させる。このとき、タイムコード生成部101に対しても生成処理を開始させる。この結果、圧縮符号化部100は１フレーム毎に、上限値以下で下限値以上の符号化データ（ビデオサンプル）を生成しては一時蓄積部103内のビデオサンプル用リングバッファに格納する。圧縮符号化部100は、前述のように、符号化された1フレームの符号量が設定された下限符号量に満たない場合、ダミーデータを付加することにより1フレームのデータを生成し、一時蓄積部103内のビデオサンプル用リングバッファに格納する。また、このとき、圧縮符号化部100は、生成した符号量を制御部102に通知する。また、タイムコード生成部101は、初期値は0で、１フレーム入力するたびに、1/60秒を加算した結果をタイムコードとして、一時蓄積部103内のビデオサンプル用リングバッファに格納する。また、タイムコード生成部101は、格納した旨（もしくは４バイト）を格納したことを制御部102に通知する。従って、制御部102は、ビデオサンプル用リングバッファ、ビデオサンプル用リングバッファそれぞれに、未記録データが記憶されているのかを知ることはできる。
【００４６】
次に、ステップＳ6にて、制御部102は、操作部106からユーザによる記録の終了指示があったか否かを判定する。否の場合には、ステップＳ7にて、一時蓄積部103内のビデオサンプル用リングバッファに格納された、未記録のビデオ符号化データ量が、書き込みサイズＷｕに達したか否かを判定する。書き込み未記録のビデオ符号化データ量が、書き込みサイズＷｕに達したと判定された場合には、ステップＳ8に進み、ビデオチャンク、タイムコードチャンクの並び順に、前回の書き込みでの未記録の位置からＷｕ分のデータを記録媒体105に書き込む。そして、ステップＳ6に戻り、未記録の符号化データ量が書き込みサイズＷｕとなるたびに、繰り返し書き込み処理を行っていく。
【００４７】
こうして、ユーザが操作部106から記録終了の指示があると、ステップＳ6の判定がYesとなり、処理をステップＳ9に進める。このステップＳ9では、ビデオサンプル用リングバッファ、タイムコード用リングバッファ内の未記録データの、記録媒体105への書き込みを行う。書き込みサイズＷｕに満たないので、最後のフレームの符号化データにダミーデータを付加し、ビデオチャンク＋タイムコードチャンクがＷｕサイズとなるようにし、書き込みを行う。この後、ステップＳ10に進み、ftyp、moov、mdatを、記録媒体105のファイル管理テーブルを更新し、これらを接続した１個のＭＯＶファイルを作成し、本処理を終える。
【００４８】
ここで、ステップＳ8における書き込み処理について、図１０、図１１を用いて説明する。
【００４９】
図１０は、ビデオサンプル用リングバッファに、フレームf1〜fn（簡単のため、ｎは31以上とする）までの未記録の符号化データ（ビデオサンプル）が格納され、その合計のデータ量が書き込みサイズＷｕ以上(512KByte以上）となっている例を示している。このとき、タイムコード用リングバッファにはｎ個の未記録のタイムコードT1乃至Tnが格納されていることになる。
【００５０】
実施形態では、1チャンクを0.5秒に対応付けているので、符号化データf1至ｆ30で１個のビデオチャンクＶＣ1を構成する。そして、フレームf1乃至f30に対応する30個のタイムコードT1乃至T30で1個のタイムコードチャンクＴＣ1を構成する。図示の場合、未記録データの先頭（図示では左端）からＶＣ1＋ＴＣ1の合計サイズ分は512KByteに満たない。そこで、次のビデオチャンクＶＣ2の先頭に配置されることになるフレームから、不足分を補い、書き込みを行う。例えば、フレームf31が12KByteを超える場合には、ＶＣ1＋ＴＣ1に加えて、f31の先頭から12KByte（ビデオチャンクＶＣ2の先頭部分に相当する）を、記録媒体105に一緒に書き込む。このとき、次に書き込みを開始する位置を、ｆ31の先頭から12KByte＋1ビット目を２回目の書き込み開始位置として記憶保持しておく。また、フレームf1乃至f30と、それに対応する30個のタイムコードT1乃至T30、更には、フレームf31の先頭から12KByteの領域は開放しておく（消去しても良い）。
【００５１】
符号処理が進んで、再度、ビデオサンプル用リングバッファに書き込みサイズＷｕ以上の未記録の符号化データ量が記憶された場合、記憶保持していたビデオチャンクＶＣ2の書き込み開始位置からサイズ分のデータの書き込みを行う。ビデオチャンクＶＣ2は512KByteを超えるサイズであったので、その途中までが記録対象となる。ビデオサンプル用リングバッファのうち、書き込みを終えた符号化データが記憶されていた領域は、続いて出力された符号化データを書き込むために開放する。一方、対応するタイムコードチャンクは未記録状態であるので、この未記録のタイムコードデータが記憶された領域は解放せず、データを保持したままとする。
【００５２】
図１１は、記録開始してから、又は、前回の書き込みから、単調な画像（例えばブラックアウト画像）がＴａ（実施形態では8秒）時間分継続した場合の、ビデオサンプル用リングバッファ、タイムコード用リングバッファの格納状態を示している。
【００５３】
Ｔａ時間経過した場合、最大でも未記録のフレーム数がＦｒ×Ｔａ個（実施形態では480(=60×8)個）となり、且つ、未記録の符号化データ量はＷｕ（実施形態では512KByte)以上になることが約束されている。そのため、0.5秒を単位とするビデオチャンク、タイムコードチャンクを交互に、記録媒体105に書き込むことができ、タイムコード用リングバッファがオーバーランすることを抑制できる。
【００５４】
以上であるが、本実施形態における圧縮符号化部100は圧縮方式ＭＰＥＧ４−ＡＶＣに準拠するものとし、ファイル形式をmov、チャンクを0.5秒、トラックがビデオ・タイムコードの2種類、ビデオサンプルのフレームレートを60fps、書き込み単位を512KByteとして記載したが、これに限らない。例えば、ファイル形式にMP4(ISO/IEC14496-12)など用いる場合でも同様に適応できる。
【００５５】
また、本実施形態では、動画データの1サンプル（1フレーム）の符号量が下限符号量を下回らないよう制御したが、予め設定した数のサンプルの符号化データの合計が下限符号量になるように制御しても良い。例えば15サンプル毎に下限符号量を設け、15サンプルの合計符号量が128010ビット（=8354×15）を下回った場合に、15サンプル分の符号化データと下限符号量との差分のサイズの0データを付加する構成としても良い。また、リングバッファに記憶可能なタイムコードデータの秒数ｎに基づいて、下限符号量を設定するサンプル数（フレーム数）を設定してもよい。例えば、ｎ秒分のタイムコードデータをリングバッファに記憶可能な場合、ｎ秒、或いは、ｎよりも所定時間短いフレーム数ごとに下限符号量を設定する。そして、下限符号量に満たない分の０データを付加する構成とする。
【００５６】
［第２の実施形態］
上記第１の実施形態では、圧縮符号化部100によるビデオサンプルの下限符号量によるバッファーオーバーラン回避と書き込み単位維持の両立について説明した。本第２の実施形態では、ビデオサンプル(ビデオチャンク)とは別のスタッフィングデータを用いる方法について図６を用いて説明する。
【００５７】
システム構成は第１の実施形態と同じであり、図６（ａ）乃至（ｃ）は図３（ａ）乃至（ｃ）と同等である。制御部102は、一時蓄積部103上にスタッフィングデータを格納するためのスタッフィングバッファを確保する。そして、制御部102はスタッフィングバッファに所望量のスタッフィングデータを出力する。また、圧縮符号化部100は下限符号量が設定されず(0設定相当)、実データの符号量が著しく少ない場合においてもビデオサンプル内に0データを出力しない。
【００５８】
本第２の実施形態では、第１の実施形態と同様に、ファイルシステムのクラスタサイズ64KByte、記録媒体のスピードクラスにおけるRUサイズを512KByte、書き込み単位を両者の公倍数（最小公倍数）である512KByteとして説明する。スタッフィングバッファも、これに合わせて512KByteとする。
【００５９】
一時蓄積部103上の各リングバッファは10秒分のデータが蓄積可能となるよう設定してあるが、システムのオーバーヘッド等を鑑みて、8秒分が蓄積されると必ず、記録媒体105に書き込みが行われるようにスタッフィングデータを発生させる。
【００６０】
制御部102は、基本的に、ビデオサンプル用リングバッファ及びタイムコード用リングバッファ内の未記録データの合計データ量Ｓが、書き込みサイズＷｕに達した場合には書き込みを行うが、例外がある。
【００６１】
すなわち、制御部102は、ビデオサンプルの符号量が少ない場合にオーバーランする、タイムコード用リングバッファの未出力データ量を監視する。そして、タイムコード用リングバッファ未出力データが8秒分（1920(=4×60×8)バイト）以上の蓄積された場合、制御部102は、この未出力8秒分のタイムコードのデータ量と、ビデオサンプル用リングバッファ内の未出力のビデオサンプルのデータ量の合計データ量Ｓに基づき、スタッフィングデータ量を次式に従い算出する。
スタッフィングデータ量＝Ｗｕ−Ｓ
この算出値に基づき、制御部102はスタッフィングバッファに上述スタッフィング量のスタッフィングデータを出力する。スタッフィングデータの実体は何でも良い。
【００６２】
制御部102は、ビデオ用リングバッファ、タイムコード用リングバッファ、スタッフィングバッファの未出力データ合計が512KByteに達するため、同様に記録媒体102へ出力を行う(図６（ｄ））)。
【００６３】
図７は、これにより生成されるmovファイルのイメージで、スタッフィングデータにより、一定期間でmdat内に所定量以上のデータを発生させる。
【００６４】
例えば、単調なビデオを符号化した場合には、記録媒体105に書き込むデータは、｛ビデオチャンク＋タイムコードチャンク｝のペアがいくつか連続し、最後にスタッフィングデータとなる。
【００６５】
以上を行うことで、VBR方式で圧縮符号化を行い、ビデオサンプルのデータ符号量が著しく小さい状態が続いた場合でも、リングバッファのオーバーランが発生することなく、書き込み単位に基づいた記録媒体への出力を維持することができる。
【００６６】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６７】
100…圧縮符号化部、101…タイムコード生成部、102…制御部、103…一時蓄積部、104…記録媒体制御部、105…記録媒体、106…操作部、107…バス
【図１】
2016122924.tif 000003
【図２】
2016122924.tif 000004
【図３】
2016122924.tif 000005
【図４】
2016122924.tif 000006
【図５】
2016122924.tif 000007
【図６】
2016122924.tif 000008
【図７】
2016122924.tif 000009
【図８】
2016122924.tif 000010
【図９】
2016122924.tif 000011
【図１０】
2016122924.tif 000012
【図１１】
2016122924.tif 000013