(57)【特許請求の範囲】
【請求項１】
入力フレームについてフレーム間予測による符号化処理を行う動画像符号化装置であって、
前記フレーム間予測のための参照フレームを保持するフレームメモリと、
前記フレームメモリに保持される前記参照フレームを読み出し、入力フレームのマクロブロック単位で動き探索を行って動きベクトルを検出する動き検出手段と、
前記動きベクトルに基づき前記参照フレームにおいて特定される動き補償ブロックのデータを前記フレームメモリから読み出し、該動き補償ブロックのデータと前記動きベクトルとに基づき動き補償処理を行う動き補償手段と、
前記動き補償手段における動き補償処理により生成されたフレーム間予測画像データと前記入力フレームとを用いて符号化処理を行い符号化データを生成する符号化手段と、
前記符号化データを復号して新たな参照フレームを生成し、生成した該新たな参照フレームを前記フレームメモリに書き込む復号手段と、
前記フレームメモリに対するデータの書き込み又は読み出しの開始指示を前記復号手段、前記動き補償手段及び前記動き検出手段に通知する画像転送制御手段と
を備え、
前記画像転送制御手段は、前記復号手段、前記動き補償手段の後に前記動き検出手段が処理を行うように、前記開始指示を通知することを特徴とする動画像符号化装置。
【請求項２】
前記復号手段、前記動き補償手段及び前記動き検出手段は、前記フレームメモリへのマクロブロック単位のデータの書き込み又は読み出しの完了通知を、前記画像転送制御手段に送信することを特徴とする請求項１に記載の動画像符号化装置。
【請求項３】
前記画像転送制御手段は、
前記復号手段から前記新たな参照フレームの前記フレームメモリへの書き込みの完了通知を受信した場合に、前記動き補償ブロックのデータの前記フレームメモリからの読み出し開始指示を前記動き補償手段に送信し、
前記動き補償手段から前記動き補償ブロックのデータの前記フレームメモリからの読み出しの完了通知を受信した場合に、前記参照フレームの前記フレームメモリからの読み出し開始指示を前記動き検出手段に送信する
ことを特徴とする請求項２に記載の動画像符号化装置。
【請求項４】
前記動き検出手段は、前記動き探索を行う際の探索範囲の大きさと前記マクロブロックの分割形態とに基づき定められる複数の動き検出モードのいずれかにおいて、前記動きベクトルを検出し、
前記画像転送制御手段は、前記復号手段と前記動き補償手段とにおいてそれぞれ１つのマクロブロックの処理を完了するために要したサイクル数を利用して、１つのマクロブロックを処理するために前記動き検出手段に許容されるサイクル数を決定し、該許容されるサイクル数に基づき、前記動き検出手段に対して前記複数の動き検出モードのいずれかを指定することを特徴とする請求項１乃至３のいずれか１項に記載の動画像符号化装置。
【請求項５】
前記フレームメモリが保持する前記参照フレームは、輝度データと色差データとで構成され、
前記動き検出手段は、前記参照フレームの前記輝度データを利用して前記動きベクトルを検出し、
前記動き補償手段は、前記フレームメモリから前記動き補償ブロックの色差データを読み出し、前記動き補償ブロックの輝度データを前記動き検出手段より取得する
ことを特徴とする請求項１乃至４のいずれか１項に記載の動画像符号化装置。
【請求項６】
フレーム間予測のための参照フレームを保持するフレームメモリと、
前記フレームメモリに保持される前記参照フレームを読み出し、入力フレームのマクロブロック単位で動き探索を行って動きベクトルを検出する動き検出手段と、
前記動きベクトルに基づき前記参照フレームにおいて特定される動き補償ブロックのデータを前記フレームメモリから読み出し、該動き補償ブロックのデータと前記動きベクトルに基づき動き補償処理を行う動き補償手段と、
前記動き補償手段における動き補償処理により生成されたフレーム間予測画像データと前記入力フレームとを用いて符号化処理を行い符号化データを生成する符号化手段と、
前記符号化データを復号して新たな参照フレームを生成し、生成した該新たな参照フレームを前記フレームメモリに書き込む復号手段と、
前記フレームメモリに対するデータの書き込み又は読み出しの開始指示を前記復号手段、前記動き補償手段及び前記動き検出手段に通知する画像転送制御手段と
を備え、入力フレームについてフレーム間予測による符号化処理を行う動画像符号化装置の制御方法であって、
前記画像転送制御手段が、前記復号手段、前記動き補償手段の後に前記動き検出手段が処理を行うように前記開始指示を通知する工程を備えることを特徴とする動画像符号化装置の制御方法。
【請求項７】
コンピュータを、請求項１乃至５のいずれか１項に記載の動画像符号化装置の前記動き検出手段、前記動き補償手段、前記符号化手段、前記復号手段、及び、前記画像転送制御手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像符号化装置、動画像符号化装置の制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年MPEG-２或いはH.２６４に代表される動画像を対象とした高能率動画符号化方式が知られている。これらの符号化方式は地上波及び衛星波によるテレビ放送やデジタルビデオカメラに代表される携帯機器による光メディアを蓄積媒体とした動画像保存に広く用いられている。
【０００３】
これら高能率な圧縮符号化方式に共通に用いられている技術として、フレーム間予測が挙げられる。フレーム間予測では、動画像符号化装置内において符号化した結果を局所復号化すると共に、局所復号化したフレームを参照フレームとして大容量のメモリ空間に保存する。このフレームメモリとしては通常ＳＤＲＡＭが用いられる。この参照フレームは次に入力される符号化対象となる現フレームとの間で、ブロック単位で動き検索が行われて、参照フレームと現フレーム間のブロック画素値の差分値が符号化され符号化ストリームとして動画像符号化装置から出力される。
【０００４】
近年では、動画像符号化装置が対象とするフレームの高解像度化(大画面化)がますます進んでいる。また、ＭＰＥＧ-２符号化方式においては、Ｐフレームでは参照フレーム数は１枚であり、Ｂフレームでは２枚であったが、Ｈ．２６４符号化方式では、Ｐフレームにおいても２枚以上のフレームを参照可能である。これらの状況から、動画像符号化装置とフレームメモリ間において転送されるデータ量が莫大となり、演算処理に要する時間よりもデータ転送に要する時間が問題となり、リアルタイムでの動画像符号化が困難な状況である。
【０００５】
これに対し、特許文献１によれば、１フレームを複数に分割したスライス単位のキャッシュを動画像符号化装置内でオルタネートで構成することによって、メモリ帯域の削減を試みている。また特許文献２では、マクロブロック単位で複数のバンクから構成されるＳＤＲＡＭに対して、参照フレームを保存する際にマクロブロック内のデータについて同一バンクになる様にアドレスを制御し、参照フレームのデータ転送時間を高速化している。
【特許文献１】特開２０００−１７５２０１号公報
【特許文献２】特開平１０−１９１２３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１の提案構成では、通常キャッシュとして用いるＳＲＡＭメモリはコストが高く、「ＨｉｇｈＤｅｆｉｎｉｔｉｏｎ」と呼ばれる高解像度の動画像シーケンスを対象とした場合には非常に高価な装置になってしまう。
【０００７】
また、特許文献２の提案構成においても、動き検出や動き補償を行うためのリード転送や、局所復号化によるライト転送がランダムに発生してしまい、ＳＤＲＡＭのページミスが頻発しデータ転送時間の高速化が困難である。
【０００８】
そこで本発明は、フレーム間予測を行う動画像符号化装置において、高解像度の入力フレームにおいても、安価に構成でき、リアルタイム符号化が実現可能なフレームメモリへのアクセス技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するための本発明は、入力フレームについてフレーム間予測による符号化を行う動画像符号化装置であって、
前記フレーム間予測のための参照フレームを保持するフレームメモリと、
前記フレームメモリに保持される前記参照フレームを読み出し、入力フレームのマクロブロック単位で動き探索を行って動きベクトルを検出する動き検出手段と、
前記動きベクトルに基づき前記参照フレームにおいて特定される動き補償ブロックのデータを前記フレームメモリから読み出し、該動き補償ブロックのデータと前記動きベクトルとに基づき動き補償処理を行う動き補償手段と、
前記動き補償手段における動き補償処理により生成されたフレーム間予測画像データと前記入力フレームとを用いて符号化処理を行い符号化データを生成する符号化手段と、
前記符号化データを復号して新たな参照フレームを生成し、生成した該新たな参照フレームを前記フレームメモリに書き込む復号手段と、
前記フレームメモリに対するデータの書き込み又は読み出しの開始指示を前記復号手段、前記動き補償手段及び前記動き検出手段に通知する画像転送制御手段と
を備え、
前記画像転送制御手段は、前記復号手段、前記動き補償手段の後に前記動き検出手段が処理を行うように、前記開始指示を通知することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、フレーム間予測を行う動画像符号化装置において、高解像度の入力フレームにおいても、安価に構成でき、リアルタイム符号化が実現可能なフレームメモリへのアクセス技術を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、添付する図面を参照して発明の実施形態を説明する。
【００１２】
［第１の実施形態］
以下、発明の第１の実施形態に対応する動画像符号化装置の構成を説明する。本実施形態における動画像符号化装置は、ＭＰＥＧ-２符号化方式、或いは、Ｈ．２６４符号化方式で入力フレームを符号化する装置である。
【００１３】
図１は、本実施形態に対応する動画像符号化装置の構成の一例を示す図である。図１において、動画像符号化装置１００内の各モジュールは、マクロブロック(以後MBとする)と呼ばれる縦１６画素×横１６画素のブロック単位で処理を行う。これら各モジュールの処理の開始は全体制御部１０７から指示されると共に、各モジュールは一つのMB処理が完了した後に全体制御部１０７に対して、処理を完了したことを通知する。これら動作開始の指示及び完了の通知は図示しない全体制御部１０７と各々モジュールとの間に結線された信号線によって実現される。
【００１４】
図１において、動画像符号化装置１００は、入力データとしての画像フレームが入力される。入力フレームは、動きベクトルを検出する動き検出部１０２に入力されると共に、符号化部１０４に入力される。動き検出部１０２で検出された動きベクトルは、動き補償予測を行う動き補償部１０３に入力される。動き補償部１０３で生成された動き予測データは、符号化部１０４に入力される。符号化部１０４は、動き補償部１０３からの予測データと、入力フレームとを用いて符号化を行い、符号化データを出力する。符号化部１０５における符号化データは、局所復号化部１０５にも送信され、局所復号が行われて参照フレームが生成される。生成された参照フレームは、フレームメモリバスを介してフレームメモリ１０６に格納される。フレームメモリ１０６に格納されているデータは、フレームメモリバスを介して、動き検出部１０２や動き補償部１０３における処理において適宜利用される。
【００１５】
以下、動画像符号化装置１００の各モジュールの動作を、より具体的に説明する。まず、動き検出部１０２は、動画像符号化装置１００に入力されるフレームとフレームメモリ１０６内に保存されている参照フレームとの間の画素値の相関をブロック単位で探索する。そして、最もブロック間の相関が高い座標をブロック間の動きベクトルとして動き補償部１０３へ出力する。この処理は一般的に動き検出処理として知られており、ＭＰＥＧ−２或いはＨ.２６４符号化方式の動画像符号化装置においては必須の技術である。
【００１６】
図３には動き検出部１０２に実装される動き検出範囲を示したものである。図中の現ＭＢ３０１は、フレーム３００における所定の１６×１６画素のブロックを表し、動き検出部１０２において現在処理対象となっているＭＢの座標を表している。探索範囲Ａ（３０２）は、Ｈ.２６４符号化方式の場合には、現ＭＢ３０１の座標を中心に−３２〜３１.７５画素を、ＭＰＥＧ−２符号化方式の場合には−３２〜３１.５画素の範囲を表す。また探索範囲Ｂ（３０３）はＨ.２６４符号化方式の場合には、現ＭＢ３０１の座標を中心に−６４〜６３.７５画素を、ＭＰＥＧ−２符号化方式の場合には−６４〜６３.５画素の範囲を表す。
【００１７】
次に、図４を参照してマクロブロックの分割形態に応じた、動き検出処理の一例を説明する。図４は、現ＭＢ３０１におけるブロック分割形態に応じた動き検出の一例を示す図である。
【００１８】
図４（ａ）乃至図４（ｃ）に示すように、Ｈ.２６４符号化方式の場合には１６×１６画素のブロック単位のみならず、４×４画素或いは８×８画素ブロック単位にＭＢをブロック分割して各々に動きベクトルを付加することが可能である。このようなマクロブロックを更に分割したサブマクロブロックを利用することで、より高精度に動き検出を行える。なお、図４（ａ）乃至図４（ｃ）において示すＭＶｎ（ｘ、ｙ）（ｎは０から１５のいずれかの整数）は、各ブロックについて検出された動きベクトルを例示的に表している。
【００１９】
本実施形態の動き検出部１０２は、更に図５に示す様に、６種類の動き検出モードを具備している。当該動き検出モードは、動き探索を行う際の探索範囲の大きさとマクロブロックの分割形態とに基づき定められる複数のモードが定められる。本実施形態においては、図４で説明したようにブロックの分割態様が３通り設定され、それぞれについて探索範囲を探索範囲Ａ（３０２）又は探索範囲Ｂ（３０３）とするモードが設定される。
【００２０】
即ち、図４（ａ）のようなブロック分割なしの場合に、探索範囲を探索範囲Ａ（３０２）とするモード０と、探索範囲を探索範囲Ｂ（３０３）とするモード３とがある。また、図４（ｂ）のような８×８画素ブロックにブロック分割を行う場合に、探索範囲を探索範囲Ａ（３０２）とするモード１と、探索範囲を探索範囲Ｂ（３０３）とするモード４とがある。更に、図４（ｃ）のような４×４画素ブロックにブロック分割を行う場合に、探索範囲を探索範囲Ａ（３０２）とするモード２と、探索範囲を探索範囲Ｂ（３０３）とするモード５とがある。
【００２１】
次に、図６を参照して、本実施形態に対応する各動き検出モードについて、フレーム間予測誤差を差分絶対値和（ＳＡＤ:Sum of Absolute Difference）と動き検出に要するサイクル数との関係を説明する。図６は、発明の第１の実施形態に対応する、各動き検出モードのフレーム間予測誤差のＳＡＤと動き検出に要するサイクル数との関係を説明するための図である。
【００２２】
図６において、縦軸は、フレーム間予測誤差のＳＡＤの値を表し、横軸は処理サイクル数Ｔｍｅの値を表す。ＳＡＤは、動きベクトルで示された参照フレームのブロックと入力フレームの現ＭＢ３０１との差分絶対値和を表す。このＳＡＤの値が小さい程、動画像符号化装置１００から発生される符号量が少ないことが知られている。図６から分かるように、ブロックの分割を行うほどＳＡＤの値が小さくなり、処理サイクル数も多くなる。また、探索範囲を広げるほどＳＡＤの値が小さくなり、処理サイクル数も多くなる。
【００２３】
次に、動き補償部１０３における動作を説明する。動き補償部１０３は、動き検出部１０２から入力される動きベクトル値に応じて、まず、フレームメモリ１０６内の参照フレームから動き補償ブロックデータをリード転送する。例えば、動き検出部１０２において輝度（Ｙ）データを用いた動き検出が行われる場合、動き補償部１０３は色差（Ｃｂ、Ｃｒ）データのみをリード転送する。これは、動き補償で用いる輝度データは、既に動き検出部１０２に存在し、輝度データは動き検出部１０２から取得できるからである。
【００２４】
図８を参照して、データの転送処理について説明する。図８は、発明の第１の実施形態に対応する、動き検出部１０２及び動き補償部１０３の動作を説明するための図である。
【００２５】
図８では、図８（ａ）に示すようなフレーム８００において、現ＭＢ８０１の動きベクトルを動き探索範囲８０２内で探索し、得られた動きベクトルで特定される動き補償ブロックがブロック８０３である場合を一例として記載している。また、図８（ｂ）は、現ＭＢ８０１について、動き補償ブロック８０３を利用して動き補償を行うまでの、データの流れを示している。
【００２６】
図８（ｂ）において、フレームメモリ１０６は、参照フレーム８１０のデータを輝度データ（Ｙ）８１１と色差データ（Ｃｂ，Ｃｒ）８１２として保持している。動き検出部１０２は、参照フレーム８１０から読み出した輝度データ８１１を格納する動き探索窓ＲＡＭ８２１を有する。また、動き検出部１０２と動き補償部１０３との間には、動き検出部１０２で利用された輝度データ８１１を動き補償部１０３へ転送するための動き補償ブロックＲＡＭ８２２が与えられる。
【００２７】
動き検出部１０２は、現ＭＢ８０１に対する動き検出を行うために、フレームメモリ１０６内の参照フレーム８１０から、動き探索範囲８０２の輝度データをリード転送して、動き探索窓ＲＡＭ８２１へ保存する。動き検出部１０２は、動き探索窓ＲＡＭ８２１から輝度データをリードして動き検出処理を行い、動きベクトルを求める。求めた動きベクトルに基づいて動き補償ブロック８０３が特定されると、該動き補償ブロック８０３の輝度データを動き探索窓ＲＡＭ８２１からリードして、動き補償ブロックＲＡＭ８２２へライトする。動き検出部１０２はまた、得られた動きベクトルを動き補償部１０３へ出力する。
【００２８】
動き補償部１０３は、動き検出部１０２から入力される動きベクトルと、動き補償ブロックＲＡＭ８２２に保存されている動き補償ブロック８０３の輝度データとを用いて、輝度データの動き補償処理を行う。この動き補償処理では、動きベクトルと動き補償ブロック８０３とに基づき、フレーム間予測画像データを生成する。なお、当該動き補償処理は公知の技術であるので、さらなる詳細な説明は省略するが、動きベクトルの値が小数点の場合のフィルタ処理を含むことができる。動き補償部１０３は更に、動き補償ブロック８０３の輝度データに対応する色差データをフレームメモリ１０６からリードして、色差データの動き補償処理を行う。動き補償部１０３は、生成したフレーム間予測画像データを符号化部１０４へ出力する。
【００２９】
図１に戻り、符号化部１０４は、動き補償部１０３から入力されるフレーム間予測画像データと入力フレームのデータとの差分を予測誤差として、ＭＰＥＧ−２やＨ.２６４符号化方式に準拠した直交変換、量子化及びエントロピー符号化処理を行う。これらの処理の詳細は公知であるので説明は省略する。なお、量子化後の直交変換係数は局所復号化部１０５へ出力される。
【００３０】
局所復号化部１０５は、符号化部１０４から入力される量子化後の直交変換係数を入力として、逆量子化及び逆直交変換処理を行い、フレーム間予測画像データと加算して復号フレームを生成する。この復号フレームは、次の入力フレームを符号化する時に、動き検出部１０２及び動き補償部１０３において参照フレームとして用いるために、フレームメモリ１０６へライト転送される。
【００３１】
画像転送制御部１０１は、動画像符号化装置１００内の動き検出部１０２、動き補償部１０３及び局所復号化部１０５に対して、後述する手順によりフレームメモリ１０６へのリード転送或いはライト転送の開始指示を行う。
【００３２】
次に、図７を参照して動画像符号化装置１００における動作フローを説明する。図７は、発明の第１の実施形態に対応する動画像符号化装置１００内の各モジュールにおける、Ｉフレーム及びＰフレームの処理タイミングの一例を示す図である。
【００３３】
図７において、各モジュールは、全体制御部１０７の指示によってＭＢ単位に処理が起動され、１つのＭＢの処理が完了すると動作を停止する。図７のＩフレーム期間においては、フレーム間処理が無い為、フレーム間符号化の為の動き検出部１０２及び動き補償部１０３は起動されず、符号化部１０４及び局所復号化部１０５のみが動作する。
【００３４】
Ｉフレームについてフレーム動作期間が開始されると、最初に符号化部１０４が先頭のＭＢであるＭＢ＃０の処理を行う。この時、局所復号化部１０５は動作を行わず停止している。符号化部１０４がＭＢ＃０の処理を終えてＭＢ＃１の処理を行うと、並行して局所復号化部１０５で符号化部１０４にて符号化処理されたＭＢ＃０のデータの局所復号化が行われる。すなわち、動画像符号化装置１００内の各ブロックはＭＢ単位のパイプライン動作を行う。この動作は、フレーム内すべてのＭＢに対して繰り返し行われ、例えばＨＤサイズとして知られるフレームの場合、８１６０回繰り返されることとなる。
【００３５】
次に、Ｐフレームについてフレーム動作期間が開始されると、まず動き検出部１０２が起動されＭＢ＃０における動き検出処理が行われる。ＭＢ＃０の動きベクトルに対応する動き補償ブロック８０３のデータは、動き補償ブロックＲＡＭ８２２に保存される。次に、ＭＢ＃１に対する処理を動き検出部１０２において実行すると共に、動き補償部１０３では、ＭＢ＃０の動きベクトルと動き補償ブロック８０３のデータとを入力として、動き補償処理を行う。その後、符号化処理部１０４及び局所復号化部１０５も順次起動され、Ｉフレームと同様にフレーム内のすべてのＭＢに対して繰り返し処理が行われる。
【００３６】
次に、図９を参照して画像転送制御部１０１における動作を説明する。図９は、発明の第１の実施形態に対応する、画像転送制御部１０１における動作の一例を示すフローチャートである。該フローチャートに対応する処理は、処理プログラムを画像転送制御部１０１が実行することにより実現される。
【００３７】
図９で示される画像転送制御部１０１の一連の動作はＭＢ単位に行われ、本実施形態ではフレーム内のＭＢ数を８１６０個と仮定する。図９では、１ＭＢ分の処理を記載しているが、実際にはフレーム内のすべてのＭＢに対して図９のフローチャートに対応する処理が実行される。
【００３８】
図９において、ステップＳ９０１では、全体制御部１０７からＭＢの処理開始指示を受け付けたか否かを判定する。もし、指示を受け付けた場合は（ステップＳ９０１において「ＹＥＳ」）、ステップＳ９０２に移行する。ステップＳ９０２では、局所復号化部１０５において処理対象となるＭＢが存在するか否かを判定する。具体的に、処理対象となるＭＢが、ＭＢ＃０以上ＭＢ＃８１５９以下に位置するＭＢであるかを判定する。これは、動画像符号化装置１００の内部の各モジュールはＭＢ単位のパイプライン動作を行っているためである。もし、対象となるＭＢが存在する場合には（ステップＳ９０２において「ＹＥＳ」）、Ｓ９０３に移行する。一方、対象となるＭＢが存在しない場合には（ステップＳ９０２において「ＮＯ」）、Ｓ９０５に移行する。
【００３９】
ステップＳ９０３では、画像転送制御部１０１は、局所復号化部１０５に対して局所復号化結果である復号フレームをフレームメモリ１０６へライト転送させるための指示を行う。このライト転送指示に応じて、局所復号化部１０５は、復号フレームのデータをフレームメモリ１０６へ転送し、書き込みが行われる。局所復号化部１０５は、処理対象ＭＢ内すべての画素のライト転送が完了したのち、画像転送制御部１０１に対して転送完了の通知を行う。
【００４０】
ステップＳ９０４では、この転送完了通知を受信したか否かに基づいて、画像転送制御部１０１が、ライト転送が完了したか否かを判定する。もし、転送が完了したと判定される場合には（ステップＳ９０４において「ＹＥＳ」）、ステップＳ９０５に移行する。
【００４１】
ステップＳ９０５では、ステップＳ９０２と同様にして、動き補償部１０３において処理対象となるＭＢが存在するか否かを判定する。もし、対象となるＭＢが存在する場合には（ステップＳ９０５において「ＹＥＳ」）、Ｓ９０６に移行する。一方、対象となるＭＢが存在しない場合には（ステップＳ９０５において「ＮＯ」）、Ｓ９０８に移行する。
【００４２】
ステップＳ９０６では、画像転送制御部１０１が動き補償部１０３に対して、リード転送の開始指示を行う。該リード転送指示には、動き補償ブロックＲＡＭ８２２に保持されている動き補償ブロック８０３の輝度データを読み出して、動き補償部１０３へ転送させるための指示が含まれる。また、フレームメモリ１０６における該動き補償ブロック８０３の色差データを読み出して、動き補償部１０３へ転送させるための指示も含まれる。このリード転送指示に応じて、動き補償部１０３は、動き補償ブロック８０３の輝度データと色差データとをそれぞれ取得する。動き補償部１０３は、動き補償処理に必要な画素のリード転送が完了したのち、画像転送制御部１０１に対して転送完了の通知を行う。
【００４３】
ステップＳ９０７では、この転送完了通知を受信したか否かに基づいて、画像転送制御部１０１が、リード転送が完了したか否かを判定する。もし、転送が完了したと判定される場合には（ステップＳ９０７において「ＹＥＳ」）、ステップＳ９０８に移行する。
【００４４】
ステップＳ９０８では、ステップＳ９０２と同様にして、動き検出部１０２において処理対象となるＭＢが存在するか否かを判定する。もし、対象となるＭＢが存在する場合には（ステップＳ９０８において「ＹＥＳ」）、ステップＳ９０９に移行する。一方、対象となるＭＢが存在しない場合には（ステップＳ９０８において「ＮＯ」）、ステップＳ９１１に移行して処理を終了する。
【００４５】
ステップＳ９０９では、画像転送制御部１０１が動き検出部１０２に対して、リード転送の開始指示を行う。該リード転送指示は、フレームメモリ１０６から探索範囲の輝度データを読み出して、動き検出部１０３へ転送させるための指示である。このリード転送指示に応じて、動き検出部１０３は、探索範囲の輝度データを取得する。動き検出部１０２は、処理対象ＭＢ内すべての画素のリード転送が完了したのち、画像転送制御部１０１に対して転送完了の通知を行う。
【００４６】
ステップＳ９１０では、この転送完了通知を受信したか否かに基づいて、画像転送制御部１０１が、リード転送が完了したか否かを判定する。もし、転送が完了したと判定される場合には（ステップＳ９１０において「ＹＥＳ」）、処理を終了する。
【００４７】
なお、画像転送制御部１０１は、本処理を終了する際に、全体制御部１０７に対して動作完了通知を送信する。本フローチャートのステップＳ９０３とステップＳ９０６の処理順番を変えても良い。
【００４８】
以上の処理の流れを、図１０のタイミングチャートを参照して更に説明する。図１０は、画像転送制御部１０１と動き検出部１０２、動き補償部１０３及び局所復号化部１０５におけるデータ転送の関係の一例を示すタイミングチャートである。図１０では、局所復号化部１０５がＭＢ＃８１５６を処理し、動き補償部１０３がＭＢ＃８１５８を処理し、動き検出部１０２がＭＢ＃８１５９を処理する場合を一例として記載している。
【００４９】
Ｔ９００において全体制御部１０７から画像転送制御部１０１に対して動作開始指示が行われると、画像転送制御部１０１は、Ｔ９０１において局所復号化部１０５に対してライト転送の開始指示を行う。局所復号化部１０５はフレームメモリに対してＭＢ＃８１５６の復号データのライト転送を開始する。すべてのライト転送が完了すると、Ｔ９０２において局所復号化部１０５は画像転送制御部１０１に対し転送完了通知を行う。
【００５０】
これを受けて画像転送制御部１０１は、Ｔ９０３において動き補償部１０３に対してリード転送の開始を指示する。動き補償部１０３は、ＭＢ＃８１５８について求められた動きベクトルに対応する動き補償ブロック８０３について、輝度データを動き補償ブロックＲＡＭ８２２から、色差データをフレームメモリ１０６からリード転送する。リード転送が完了したら画像転送制御部１０１に対して転送完了通知を行う。
【００５１】
次に画像転送制御部１０１は、Ｔ９０４において動き検出部１０２に対してリード転送の開始を行うが、この際画像転送制御部１０１は動き検出部１０２に対して動き検出モードの指定も同時に行う。ここで動き検出モードは、図５に示す６通りのいずれかが指定される。
【００５２】
このように、本実施形態の画像転送制御部１０１は、局所復号部１０５、動き補償部１０３、動き検出部１０２の順に処理対象のマクロブロックが更新されるように、各モジュールに開始指示を通知する。ここで重要なのは、局所復号部１０５、動き補償部１０３の処理の後に動き検出部１０２の処理をするように制御する事である。動き検出部１０２の処理が他より後であればこれに限定されない。
【００５３】
次に、動き検出部１０２における動き検出モードの指定について、図１１を参照して更に説明する。図１１は、発明の第１の実施形態に対応する画像転送制御部１０１による動き検出モードの指定の処理例を示す図である。
【００５４】
図１１において、「Ｔｍｂ」はリアルタイム符号化を実現するために必要とされる１つのＭＢの最大処理サイクル数を表す。このサイクル数は、動画像符号化装置１００の符号化動作を起動する前に、入力されるフレームの解像度とフレームレートの値から一意に決定される値である。図１１では、動き検出部１０２の処理対象ＭＢが、ＭＢ＃Ｎの場合について説明する。Ｎは、０から８１５９間での任意の整数とする。また、局所復号化部１０５及び動き補償部１０３で要した合計サイクル数を、Ｔｍｃとする。
【００５５】
この場合、リアルタイム符号化を保証するためには動き検出部１０２のデータ転送に許容されるサイクル数：ＴｍｅはＴｍｂ−Ｔｍｃとなる。画像転送制御部１０１は、動き検出部１０２に対して転送開始を指示する毎にＴｍｅの計算を行う。画像転送制御部１０１は図６で示した各動き検出モードに要するサイクル数に関するテーブルを予め保持しており、計算したＴｍｅの値から、許容される最大のサイクル数に対応する動き検出モードを選択して、動き検出部１０１に設定する。これは、Ｔｍｅのサイクル数は、図１で示したフレームメモリバス上に動画像符号化装置１００以外のバスマスタが存在する場合には、ＭＢ処理毎に変動するためである。つまり、Ｔｍｃの処理を先に、Ｔｍｅの処理を後にすることが重要である。
【００５６】
例えば、図１１において、動き検出部の処理対象ＭＢがＭＢ＃Ｎの場合、Ｔｍｅ０より小さい処理サイクルであるモード５が動き検出モードに設定される。一方、ＭＢ＃Ｎ＋１の場合、Ｔｍｅ１はモード１の処理サイクルより小さく、モード０の処理サイクルより大きい値を取るために、動き検出モードはモード０に設定される（モード０の処理サイクル＜モード１の処理サイクルとした場合）。
【００５７】
また、処理対象ＭＢがＭＢ＃Ｎ＋２の場合に、画像転送制御部１０１は動き検出部１０２に対して、モード６を設定している。ここでモード６とは、図６には図示していないが、処理対象ＭＢに対してフレーム間予測を行わないモードである。このモード６は、Ｔｍｅのサイクル数がモード０に要するサイクル数よりも小さい場合に、フレーム間予測処理を実行した場合のフレームレートの破綻を回避するために設定される。
【００５８】
以上のように、本実施形態に対応する動画像符号化装置では、画像転送制御部１０１において、各モジュール間で排他的にフレームメモリへのアクセスが発生するように、ＭＢ単位で制御を行う。具体的には、フレームメモリに保存された参照フレームに対してリード及びライト転送の転送指示を順番に行う。これにより、局所的な時間においてフレームメモリへ発生するアドレス値が近傍となり、結果的にページヒットが多く発生し、データ転送時間を高速化できる。この制御により、各モジュールが並列にフレームメモリへアクセスする場合と比較して、劇的にフレームメモリで発生するページミスが減少する。
【００５９】
更には、画像転送制御部１０１において、局所復号化部１０５、動き補償部１０３の転送後に、動き検出部１０２の転送指示を行うと共に、局所復号化部及び動き補償部の転送に要した時間に応じて、動き検出部の探索方法を選択する。これにより、フレームメモリバスの状況に依存せずにリアルタイム処理が保証できる。
【００６０】
［第２の実施形態］
次に、発明の第２の実施形態について説明する。図２は、発明の第２の実施形態に対応する動画像符号化装置の構成の一例を示す図である。図２において、動画像符号化装置２００は、図１に示した第１の実施形態の動画像符号化装置１００に、Ｈ.２６４符号化方式で用いることが可能なループフィルタ２０１を追加した構成となっている。動画像符号化装置２００内のループフィルタ２０１以外のモジュールは、第１の実施形態の動画像符号化装置１００と同一であるので、対応する参照番号を付し、本実施形態での説明は省略する。
【００６１】
ループフィルタ２０１は、局所復号化部１０５から入力される復号フレームに対してＨ.２６４符号化方式で規定されるフィルタ処理を行う。局所復号部１０５は、フィルタ処理を施した復号フレームに対して、画像転送制御部１０１から転送開始が要求された後フレームメモリ１０６へライト転送する。この時の画像転送制御部１０１の動作フローは、局所復号部１０５に対する制御がループフィルタ２０１に置き換わる以外に図９及び図１０で示されるものと何ら変わりない。
【００６２】
［その他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００６３】
また、本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【００６４】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【００６５】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。
【図面の簡単な説明】
【００６６】
【図１】本発明の第１の実施形態に対応する動画像符号化装置の構成の一例を示す図である。
【図２】本発明の第２の実施形態に対応する動画像符号化装置の構成の一例を示す図である。
【図３】本発明の第１の実施形態に対応する、動き検出部１０２の探索範囲の一例を示す図である。
【図４】本発明の第１の実施形態に対応する、動き検出部１０２の動き検出モードの一例を説明するための図である。
【図５】本発明の第１の実施形態に対応する、現ＭＢ３０１におけるブロック分割形態に応じた動き検出の一例を示す図である。
【図６】発明の第１の実施形態に対応する、各動き検出モードのフレーム間予測誤差のＳＡＤと動き検出に要するサイクル数との関係を説明するための図である。
【図７】発明の第１の実施形態に対応する動画像符号化装置１００内の各モジュールにおける、Ｉフレーム及びＰフレームの処理タイミングの一例を示す図である。
【図８】発明の第１の実施形態に対応する、動き検出部１０２及び動き補償部１０３の動作を説明するための図である。
【図９】発明の第１の実施形態に対応する、画像転送制御部１０１における動作の一例を示すフローチャートである。
【図１０】発明の第１の実施形態に対応する、画像転送制御部１０１と動き検出部１０２、動き補償部１０３及び局所復号化部１０５におけるデータ転送の関係の一例を示すタイミングチャートである。
【図１１】発明の第１の実施形態に対応する画像転送制御部１０１による動き検出モードの指定の処理例を示す図である。
【符号の説明】
【００６７】
１００  動画像符号化装置
１０１  画像転送制御部
１０２  動き検出部
１０３  動き補償部
１０４  符号化部
１０５  局所復号化部
１０６  フレームメモリ
１０７  全体制御部
【図１】
0004892468.tif 000002
【図２】
0004892468.tif 000003
【図３】
0004892468.tif 000004
【図４】
0004892468.tif 000005
【図５】
0004892468.tif 000006
【図６】
0004892468.tif 000007
【図７】
0004892468.tif 000008
【図８】
0004892468.tif 000009
【図９】
0004892468.tif 000010
【図１０】
0004892468.tif 000011
【図１１】
0004892468.tif 000012