以下、図面を参照しながら、実施形態を詳細に説明する。
HEVCでは、4K2K以上の解像度を持つ映像が符号化対象となり、メモリアクセス量の増加に伴って、動画像符号化装置の消費電力及びメモリアクセス時間も増大する傾向が見られる。この場合、動き探索のためにフレームメモリから参照画像を読み出す時間が、メモリアクセス時間の多くの部分を占めることになり、組み込み装置では、メモリアクセス時間の増加が装置全体の性能低下に繋がる。
図1は、複数の領域に分割された画像の例を示している。図1の画像101は、X×Y画素のサイズを有し、領域111〜領域114の4つの領域に分割されている。各領域は、タイルと呼ばれることもある。例えば、4K2Kの解像度を持つ画像の場合、X=3840、Y=2160であってもよい。この場合、各領域は、1920×1080画素のサイズを有する。8K4Kの解像度を持つ画像の場合、X=7680、Y=4320であってもよく、画像101を16個の領域に分割してもよい。
このような高解像度の画像101を符号化する際、複数の符号化部がそれぞれの領域の画像を符号化する。各符号化部は、チップと呼ばれることもある。例えば、4個の符号化部が領域111〜領域114を分担して符号化する場合、4個の符号化部それぞれに対応する4個のフレームメモリが設けられる。
したがって、各領域内における符号化対象ブロックの位置によっては、動き探索のために、他の符号化部に対応するフレームメモリから参照画像が読み出されることがある。各領域内のブロックは、例えば、CTBである。
図2は、符号化対象ブロックの位置と参照領域との関係の例を示している。ある符号化部が境界201と境界202の間の領域を担当し、符号化対象ブロックがブロック211である場合、参照領域221に対応する参照画像が読み出される。また、符号化対象ブロックがブロック212である場合、参照領域222に対応する参照画像が読み出される。符号化対象ブロックがブロック213である場合、参照領域223に対応する参照画像が読み出され、符号化対象ブロックがブロック214である場合、参照領域224に対応する参照画像が読み出される。
参照領域221及び参照領域224は、境界201と境界202の間に存在するが、参照領域222の部分領域231は、境界202の外側に存在し、参照領域223の部分領域232は、境界201の外側に存在する。したがって、部分領域231及び部分領域232の参照画像は、他の符号化部に対応するフレームメモリから読み出され、レイテンシが大きくなる。
図3は、図2の参照領域からの参照画像読み出しと動き探索の例を示すタイミングチャートである。参照領域221及び参照領域224の参照画像は、境界201と境界202の間の領域を担当する符号化部に対応するフレームメモリに格納されているため、参照画像読み出しのメモリアクセス時間は短い。このため、ブロック211及びブロック214に対する動き探索は、遅延なく開始される。
一方、参照領域222及び参照領域223のうち部分領域231及び部分領域232の参照画像は、他の符号化部に対応するフレームメモリに格納されているため、参照画像読み出しのメモリアクセス時間が長くなる。このため、ブロック212及びブロック213に対する動き探索の開始が遅れ、メモリアクセス時間が処理遅延として表面化する。
なお、かかる問題は、H.264又はHEVCを用いた動画像符号化に限らず、他の符号化アルゴリズムを用いる場合においても生ずるものである。
図4は、実施形態の動画像符号化装置の構成例を示している。図4の動画像符号化装置401は、N個(Nは2以上の整数)の符号化部411−1〜411−N及びN個の記憶部412−1〜412−Nを含み、N個の領域に分割された画像を符号化する。符号化部411−1〜符号化部411−Nは、N個の領域それぞれを符号化し、記憶部412−1〜記憶部412−Nは、N個の領域それぞれに対応する。
各符号化部411−i(i=1〜N)は、参照画像制御部421及び予測符号化部422を含む。参照画像制御部421は、記憶部412−1〜記憶部412−Nから参照画像を読み出し、予測符号化部422は、参照画像に基づいて動き探索を行い、i番目の領域内のブロックを予測符号化する。
図5は、図4の各符号化部411−iが行う動画像符号化処理の例を示すフローチャートである。まず、参照画像制御部421は、i番目の領域内のあるブロックに対する動き探索のために、記憶部412−iからの第1の参照画像の読み出しを開始するよりも先に、他の記憶部412−jからの第2の参照画像の読み出しを開始する(ステップ501)。
あるブロックは、i番目の領域とj番目の領域との間の境界に接するブロックである。記憶部412−iは、i番目の領域に対応する記憶部であり、記憶部412−jは、j番目の領域に対応する記憶部である。
次に、予測符号化部422は、第1の参照画像と第2の参照画像とに基づいてあるブロックに対する動き探索を行い(ステップ502)、動き探索の結果に基づいてあるブロックを予測符号化する(ステップ503)。
図4の動画像符号化装置401によれば、複数の領域に分割された画像を複数の符号化部により分担して符号化する際に、動き探索を効率化することができる。
動画像符号化装置401は、様々な用途に利用される。例えば、動画像符号化装置401を、ビデオカメラ、映像送信装置、テレビ電話システム、コンピュータ、又は携帯電話機に組み込むことも可能である。
図6は、図4の動画像符号化装置401の具体例を示している。図6の動画像符号化装置401は、バスブリッジ601、メモリバス602−1〜メモリバス602−N、フレームメモリ603−1〜フレームメモリ603−N、及び符号化部411−1〜符号化部411−Nを含む。符号化部411−iは、メモリバス602−iを介してフレームメモリ603−iに接続され、メモリバス602−1〜メモリバス602−Nは、バスブリッジ601を介して互いに接続されている。
フレームメモリ603−1〜フレームメモリ603−Nは、図4の記憶部412−1〜記憶部412−Nに対応し、N個の領域それぞれの符号化対象画像及び参照画像を記憶する。
図7は、図6の符号化部411−iの構成例を示している。図7の符号化部411−iは、参照画像制御部421、予測符号化部422、及び原画像制御部701を含む。予測符号化部422は、動き探索部711、インター予測部712、イントラ予測部713、選択部714、差分画像生成部715、量子化部716、逆量子化部717、ループフィルタ部718、及びエントロピー符号化部719を含む。
参照画像制御部421、原画像制御部701、ループフィルタ部718、及びエントロピー符号化部719は、メモリバス602−iを介してフレームメモリ603−iに接続されている。
動画像符号化装置401は、例えば、ハードウェア回路として実装することができる。この場合、符号化部411−iの各構成要素を個別の回路として実装してもよく、符号化部411−iを1つの集積回路(チップ)として実装してもよい。
動画像符号化装置401に入力される符号化対象動画像に含まれる複数の画像の各々は、カラー画像であってもよく、モノクロ画像であってもよい。カラー画像の場合、画素値はRGB形式であってもよく、YUV形式であってもよい。各画像はN個の領域に分割され、i番目の領域の画像が符号化対象画像(原画像)としてフレームメモリ603−iに格納される。
原画像制御部701は、フレームメモリ603−iから原画像を読み出して、動き探索部711、イントラ予測部713、及び差分画像生成部715へ転送する。参照画像制御部421は、フレームメモリ603−i又はj番目の領域に対応するフレームメモリ603−jから参照画像を読み出して、動き探索部711へ転送する。参照画像としては、原画像よりも先に符号化済みの画像に対応する再構成画像を用いることができる。
予測符号化部422内の動き探索部711は、参照画像を用いて、原画像内の符号化対象ブロックの動きベクトルを検出し、検出した動きベクトルをインター予測部712及び参照画像制御部421へ出力する。
動き探索部711は、原画像及び参照画像を所定のスケールで縮小した低解像度の画像(縮小画像)を用いて、符号化対象ブロックの動きベクトルを検出することもできる。この場合、原画像及び参照画像の縮小画像は、あらかじめフレームメモリ603−iに格納されている。
インター予測部712は、動き探索部711が検出した動きベクトルに基づいて、インター予測を行い、インター予測画像を生成する。イントラ予測部713は、逆量子化部717から出力される再構成画像を用いて、イントラ予測を行い、イントラ予測画像を生成する。
選択部714は、インター予測画像又はイントラ予測画像のうちいずれか一方の予測画像を選択して、差分画像生成部715及び逆量子化部717へ出力する。差分画像生成部715は、選択部714から出力される予測画像と符号化対象ブロックとの差分を表す差分画像を生成する。
量子化部716は、差分画像生成部715が生成する差分画像の直交変換及び量子化を行って、符号化ブロック画像(量子化後の係数情報)を生成し、生成した符号化ブロック画像をループフィルタ部718及びエントロピー符号化部719へ出力する。このとき、動きベクトル又はイントラ予測モード等の予測情報も、エントロピー符号化部719へ出力される。
逆量子化部717は、符号化ブロック画像の逆量子化及び逆直交変換を行って、差分画像を生成する。そして、逆量子化部717は、生成した差分画像及び予測画像から再構成画像を生成し、生成した再構成画像をイントラ予測部713及びループフィルタ部718へ出力する。
ループフィルタ部718は、再構成画像に対して、ブロック境界の近傍画素を用いてフィルタ処理を行うことで符号化ノイズを低減し、フィルタ処理後の再構成画像をフレームメモリ603−iに格納する。フレームメモリ603−iに格納された再構成画像は、原画像よりも後に符号化される画像に対する参照画像として用いることができる。
ループフィルタ部718は、再構成画像を所定のスケールで縮小して縮小画像を生成し、再構成画像の縮小画像をフレームメモリ603−iに格納することもできる。フレームメモリ603−iに格納された縮小画像は、参照画像の縮小画像として用いることができる。
エントロピー符号化部719は、量子化部716から出力される複数のブロックの符号化ブロック画像及び予測情報をエントロピー符号化し、原画像の符号化結果である符号化ストリーム(ビットストリーム)を生成する。そして、エントロピー符号化部719は、生成した符号化ストリームをフレームメモリ603−iに格納する。
動画像符号化装置401は、フレームメモリ603−1〜フレームメモリ603−Nに格納されたN個の符号化ストリームを、動画像復号装置(不図示)へ出力する。
図8は、図7の参照画像制御部421の構成例を示している。図8の参照画像制御部421は、バッファメモリ制御部801、参照画像決定部802、動きベクトル記憶部803、リクエスト生成部804、リクエスト送出部805、リクエスト送出部806、及びバッファメモリ807を含む。リクエスト送出部805、リクエスト送出部806、及びバッファメモリ807は、メモリバス602−iに接続されている。
参照画像決定部802は、動きベクトル記憶部803が記憶している符号化済みブロックの動きベクトルに基づいて、i番目の領域内の領域端ブロックに対する動き探索に用いられる参照画像のうち、領域外の参照画像の範囲を決定する。そして、参照画像決定部802は、領域外の参照画像の範囲をバッファメモリ制御部801及びリクエスト生成部804へ出力する。
領域端ブロックは、i番目の領域と、i番目の領域に隣接するj番目の領域との間の境界に接するブロックである。領域内の参照画像は、i番目の領域に含まれる参照画像であり、メモリバス602−iを介してフレームメモリ603−iから読み出される。領域外の参照画像は、j番目の領域に含まれる参照画像であり、メモリバス602−i、バスブリッジ601、及びメモリバス602−jを介して、フレームメモリ603−jから読み出される。
バッファメモリ制御部801は、領域外の参照画像の範囲に応じて、バッファメモリ807の記憶領域を領域内及び領域外の参照画像に対して割り当て、それぞれの参照画像に対する割当量をリクエスト生成部804へ出力する。
このとき、バッファメモリ制御部801は、領域外の参照画像のデータ量を推定し、推定したデータ量に基づいて、i番目の領域内で、領域外の参照画像の読み出しを開始するブロックの位置を決定してもよい。また、バッファメモリ制御部801は、過去のバッファメモリ807の使用実績に基づいて、領域外の参照画像の読み出しを開始するブロックの位置を決定してもよい。バッファメモリ制御部801は、決定したブロックの位置をリクエスト送出部805へ出力する。
リクエスト生成部804は、符号化済みブロックの動きベクトルと、領域外の参照画像の範囲と、それぞれの参照画像に対するバッファメモリ807の割当量とに基づいて、領域内及び領域外の参照画像の読み出し範囲を決定する。そして、リクエスト生成部804は、領域内の参照画像の読み出し範囲に基づいて、領域内の参照画像を読み出すための領域内リクエストを生成して、リクエスト送出部806へ出力する。また、リクエスト生成部804は、領域外の参照画像の読み出し範囲に基づいて、領域外の参照画像を読み出すための領域外リクエストを生成して、リクエスト送出部805へ出力する。
リクエスト送出部805は、符号化対象ブロックの位置が、バッファメモリ制御部801が決定したブロックの位置に移動したとき、領域外リクエストをフレームメモリ603−jへ送出する。一方、リクエスト送出部806は、領域内リクエストをフレームメモリ603−iへ送出する。
バッファメモリ807は、フレームメモリ603−i又はフレームメモリ603−jから出力される領域内又は領域外の参照画像を受信し、受信した参照画像を記憶する。動き探索部711は、バッファメモリ807が記憶する参照画像を用いて、符号化対象ブロックの動きベクトルを検出し、検出した動きベクトルを動きベクトル記憶部803に格納する。動きベクトル記憶部803に格納された動きベクトルは、符号化済みブロックの動きベクトルとして用いることができる。
参照画像制御部421は、バッファメモリ807内に領域内及び領域外の参照画像の記憶領域を動的に確保し、レイテンシの大きな領域外の参照画像又は転送速度の低い領域外の参照画像を十分な時間をかけて先読みする。このとき、バッファメモリ制御部801は、領域内及び領域外の参照画像に対する記憶領域の割当量と、領域外の参照画像の先読み期間とを動的に変更する。また、リクエスト生成部804は、領域内及び領域外の参照画像の読み出し範囲を動的に変更する。
図9は、バッファメモリ制御部801が行うバッファメモリ制御の例を示している。領域外の参照画像の範囲が小さい場合、バッファメモリ制御部801は、バッファメモリ807の記憶領域のうち少ない記憶領域902を、領域外の参照画像に対して割り当て、残りの記憶領域901を領域内の参照画像に対して割り当てる。
一方、領域外の参照画像の範囲が大きい場合、バッファメモリ制御部801は、記憶領域902よりも多くの記憶領域904を領域外の参照画像に対して割り当て、残りの記憶領域903を領域内の参照画像に対して割り当てる。これにより、領域外の参照画像の範囲に応じてバッファメモリ807の割当量を増減することができる。
また、バッファメモリ制御部801は、i番目の領域に対応する領域910の外側(領域外)の参照画像912及び913に対して、先読み期間911を設定する。これにより、参照画像制御部421は、十分な時間をかけて領域外の参照画像912及び913を読み出し、バッファメモリ807の記憶領域902に格納することができる。バッファメモリ制御部801は、領域外の参照画像のデータ量が少ない場合、短い先読み期間921を設定し、領域外の参照画像のデータ量が多い場合、長い先読み期間922を設定してもよい。
図10は、バッファメモリ制御部801、参照画像決定部802、及びリクエスト生成部804が行う読み出し範囲制御の例を示している。参照画像決定部802は、符号化済みブロックの動きベクトルに基づいて、画質向上が期待できる領域外の参照画像の範囲を予測する。例えば、参照画像決定部802は、領域910内の右端の領域端ブロック1001に対しては、領域外の参照画像の範囲1011を設定し、左端の領域端ブロック1002に対しては、領域外の参照画像の範囲1012を設定する。
リクエスト生成部804は、符号化済みブロックの動きベクトルと、領域外の参照画像の範囲と、領域内及び領域外の参照画像に対するバッファメモリ807の割当量とに基づいて、領域内及び領域外の参照画像の読み出し範囲を決定する。このとき、バッファメモリ制御部801は、バッファメモリ807の空き容量に応じて、領域内の参照画像に対するバッファメモリ807の割当量を変更することもできる。
例えば、領域910内のブロック1021が符号化対象ブロックであり、バッファメモリ807の空き容量が小さい場合、リクエスト生成部804は、領域内の参照画像の読み出し範囲1031を縮小して読み出し範囲1041を設定する。一方、ブロック1022が符号化対象ブロックであり、バッファメモリ807の空き容量が大きい場合、リクエスト生成部804は、領域内の参照画像の読み出し範囲1032を拡大して、読み出し範囲1042を設定する。読み出し範囲1041及び読み出し範囲1042としては、画質向上が期待できる範囲が選択される。
図11は、符号化対象ブロックの位置に応じたバッファメモリ807の割当量の変化の例を示している。まず、符号化対象ブロックが領域910内のブロック1101である場合、先読み期間1111が設定され、バッファメモリ807の記憶領域1121が領域外の参照画像に対して割り当てられ、残りの記憶領域1122が領域内の参照画像に対して割り当てられる。
次に、符号化対象ブロックの位置がブロック1102の位置に移動すると、バッファメモリ807の全記憶領域1123が領域内の参照画像に対して割り当てられる。これにより、領域外の参照画像の読み出しが開始されるまでの期間において、領域内の参照画像の読み出し範囲を拡大し、バッファメモリ807を効率的に使用することができる。
次に、符号化対象ブロックの位置が先読み期間1111の先頭のブロック1103の位置に移動すると、右側の領域外の参照画像の範囲1112に基づいて、バッファメモリ807の記憶領域1125が領域外の参照画像に対して割り当てられる。そして、残りの記憶領域1124が領域内の参照画像に対して割り当てられる。
次に、符号化対象ブロックの位置がブロック1104の位置に移動すると、左側の領域外の参照画像の範囲1113に基づいて、バッファメモリ807の記憶領域1126が領域外の参照画像に対して割り当てられる。そして、記憶領域1125及び記憶領域1126を除いた残りの記憶領域1127が、領域内の参照画像に対して割り当てられる。
次に、符号化対象ブロックの位置が先読み期間1111の次のブロック1105の位置に移動すると、バッファメモリ807の記憶領域1126が領域外の参照画像に対して割り当てられ、残りの記憶領域1128が領域内の参照画像に対して割り当てられる。
次に、符号化対象ブロックの位置がブロック1106の位置に移動すると、再び、バッファメモリ807の全記憶領域1123が領域内の参照画像に対して割り当てられる。これにより、次の領域外の参照画像の読み出しが開始されるまでの期間において、領域内の参照画像の読み出し範囲を拡大することができる。
図12は、図6の動画像符号化装置401が行う動画像符号化処理の具体例を示すフローチャートである。動画像符号化装置401内の符号化部411−iは、符号化対象動画像に含まれる各画像内のi番目の領域に対して、ステップ1201〜ステップ1210の処理を行う。また、符号化部411−iは、i番目の領域内の各ブロックに対してステップ1201〜ステップ1209の処理を行う。
まず、参照画像制御部421は、フレームメモリ603−iから領域内の参照画像を読み出して、バッファメモリ807に格納する(ステップ1201)。符号化対象ブロックが先読み期間内のブロックである場合、参照画像制御部421は、さらにフレームメモリ603−jから領域外の参照画像を読み出して、バッファメモリ807に格納する。
次に、動き探索部711は、原画像及び参照画像の縮小画像を用いた動き探索を行って、符号化対象ブロックの動きベクトルを検出する(ステップ1202)。次に、動き探索部711は、縮小画像から検出した動きベクトルに基づいて、参照画像の探索範囲を決定する(ステップ1203)。そして、動き探索部711は、探索範囲に対応する元の解像度の参照画像と、元の解像度の原画像とを用いた動き探索を行って、符号化対象ブロックの動きベクトルを検出する。
次に、インター予測部712は、動きベクトルに基づいてインター予測を行い、インター予測画像を生成し(ステップ1204)、イントラ予測部713は、再構成画像を用いてイントラ予測を行い、イントラ予測画像を生成する(ステップ1205)。
次に、選択部714は、インター予測画像又はイントラ予測画像を選択する(ステップ1206)。そして、差分画像生成部715、量子化部716、及びエントロピー符号化部719は、選択された予測画像を用いて、符号化対象ブロックに対応する符号化ストリームを生成する(ステップ1207)。
次に、逆量子化部717は、量子化部716が生成した符号化ブロック画像から差分画像を生成し(ステップ1208)、生成した差分画像及び予測画像から再構成画像を生成する(ステップ1209)。
i番目の領域内の全ブロックに対してステップ1201〜ステップ1209の処理が終了すると、ループフィルタ部718は、各ブロックの再構成画像に対してフィルタ処理を行う(ステップ1210)。そして、ループフィルタ部718は、フィルタ処理後の再構成画像をフレームメモリ603−iに格納するとともに、再構成画像を所定のスケールで縮小して縮小画像を生成し、再構成画像の縮小画像をフレームメモリ603−iに格納する。
図13は、図12のステップ1201における参照画像読み出し処理の例を示すフローチャートである。まず、参照画像決定部802は、符号化対象ブロックがi番目の領域内の水平方向のブロックラインに含まれる左端の領域端ブロックであるか否かをチェックする(ステップ1301)。
符号化対象ブロックが左端の領域端ブロックである場合(ステップ1301,YES)、参照画像決定部802は、符号化済みブロックの動きベクトルに基づいて、領域外の参照画像の範囲を決定する(ステップ1302)。
次に、バッファメモリ制御部801は、領域外の参照画像の先読み期間を決定し(ステップ1303)、領域内及び領域外の参照画像に対するバッファメモリ807の割当量を決定する(ステップ1304)。
次に、リクエスト生成部804は、領域内の参照画像の読み出し範囲を決定し、領域内リクエストを生成する(ステップ1305)。そして、リクエスト送出部806は、領域内リクエストをフレームメモリ603−iへ送出する(ステップ1306)。
次に、リクエスト生成部804は、領域外の参照画像の読み出し範囲を決定し、領域外リクエストを生成する(ステップ1307)。
符号化対象ブロックが左端の領域端ブロックではない場合(ステップ1301,NO)、参照画像制御部421は、ステップ1304以降の処理を行う。
図14は、図12の動画像符号化処理と非同期に行われる領域外リクエスト発行処理の例を示すフローチャートである。まず、リクエスト送出部805は、符号化対象ブロックの位置が先読み期間内であるか否かをチェックする(ステップ1401)。符号化対象ブロックの位置が先読み期間内ではない場合(ステップ1401,NO)、リクエスト送出部805は、次の符号化対象ブロックについてステップ1401の処理を繰り返す。
一方、符号化対象ブロックの位置が先読み期間内である場合(ステップ1401,YES)、リクエスト送出部805は、領域外リクエストをフレームメモリ603−jへ送出する(ステップ1402)。そして、リクエスト送出部805は、次の符号化対象ブロックについてステップ1401以降の処理を繰り返す。
図15は、図12の動画像符号化処理と非同期に行われる参照画像格納処理の例を示すフローチャートである。まず、バッファメモリ制御部801は、バッファメモリ807がメモリバス602−iから参照画像の画素を受信したか否かをチェックする(ステップ1501)。バッファメモリ807が参照画像の画素を受信していない場合(ステップ1501,NO)、バッファメモリ制御部801は、ステップ1501の処理を繰り返す。
一方、バッファメモリ807が参照画像の画素を受信した場合(ステップ1501,YES)、バッファメモリ制御部801は、受信した画素をバッファメモリ807に格納する(ステップ1502)。受信した画素の座標値がi番目の領域内の座標値であれば、その画素は領域内の参照画像に割り当てられた記憶領域に格納される。一方、受信した画素の座標値がi番目の領域の外部の座標値であれば、その画素は領域外の参照画像に割り当てられた記憶領域に格納される。そして、バッファメモリ制御部801は、ステップ1501以降の処理を繰り返す。
図16は、図9の領域910内のブロックラインの例を示している。ブロックライン内における符号化対象ブロックの位置に応じて、領域外の参照画像を読み出すか否かが決定される。符号化対象ブロックがブロックラインの先頭のブロック1601である場合、領域外の参照画像の先読み期間1603が決定される。
符号化対象ブロックが、ブロックライン内の先読み期間1603よりも前の期間1602に含まれるいずれかのブロックである場合、領域内の参照画像のみが読み出される。一方、符号化対象ブロックが、先読み期間1603に含まれるいずれかのブロックである場合、領域内及び領域外の参照画像が読み出される。
図17は、図16の領域910内のブロックの個数の例を示している。bnum_xは、領域910のx方向(水平方向)のブロックの個数を表し、Bは、先読み期間1603に含まれるブロックの個数を表す。
図18は、参照画像の範囲を決定するために用いられる平均動きベクトルの例を示している。符号化対象ブロック1801に対する参照画像の範囲を決定する際、隣接する符号化済みブロックの動きベクトルを平均することで、平均動きベクトルmvμが求められる。
図18の例では、左上隣接ブロック1802の動きベクトル1812、上隣接ブロック1803の動きベクトル1813、及び左隣接ブロック1804の動きベクトル1814を平均することで、平均動きベクトル1811が求められる。そして、平均動きベクトル1811に基づいて、符号化対象ブロック1801に対する参照画像の範囲が決定される。動きベクトル1812〜動きベクトル1814の一部を用いて平均動きベクトル1811を求めてもよい。
図19〜図27は、図13の参照画像読み出し処理の例を示している。図19は、符号化対象ブロックが左端の領域端ブロックである場合の参照画像読み出し処理の例を示している。
符号化対象ブロックが左端の領域端ブロック1901である場合、ステップ1302において、参照画像決定部802は、隣接する符号化済みブロックの動きベクトルに基づいて、領域外の参照画像の範囲を予測する。
このとき、参照画像決定部802は、同じブロックライン内の右端の領域端ブロック1902の左上隣接ブロック1903の動きベクトル1911と、上隣接ブロック1904の動きベクトル1912とから、平均動きベクトル1913を求める。次に、参照画像決定部802は、領域端ブロック1902を平均動きベクトル1913に従って移動させ、移動後の領域端ブロック1902を所定画素数だけ拡大して、探索範囲を生成する。そして、参照画像決定部802は、生成した探索範囲内の画素のうち領域外に存在する画素を、領域端ブロック1902に対する領域外の参照画像の範囲1921に決定する。
同様にして、参照画像決定部802は、次のブロックライン内の左端の領域端ブロック1905に対する、領域外の参照画像の範囲1922を決定する。ただし、領域端ブロック1905の左上隣接ブロックは領域外に存在する。また、上隣接ブロック1901は符号化対象ブロックであるため、上隣接ブロック1901の動きベクトルは未だ検出されていない。この場合、参照画像決定部802は、ブロック1901の上隣接ブロックの動きベクトルを、領域端ブロック1905に対する平均動きベクトルとして用いてもよい。
次に、バッファメモリ制御部801は、ステップ1303において、領域外の参照画像の先読み期間1931に含まれるブロックの個数Bを決定し、1ブロックの処理時間中に読み出す領域外の参照画像の最大画素数Aを決定する。最大画素数Aは、領域外の参照画像の範囲(範囲1921及び範囲1922)の画素数rnumを用いて、例えば、次式により求めることができる。
A=rnum/B (1)
先読み期間1931の決定方法としては、例えば、以下の3つのモードが考えられる。
(1)モード0
バッファメモリ制御部801は、あらかじめ決められた所定期間を先読み期間として設定し、先読み期間内のブロックの個数Bとして固定値B’を用いる。固定値B’は、パラメータチューニングにより決定してもよい。この場合、動画像符号化装置401の性能測定を行った結果に基づいて、最も性能が高くなる値が固定値B’として選択される。
また、メモリバス602−1〜メモリバス602−Nの性能又は目標スループットに応じて、固定値B’を決定してもよい。この場合、性能に対する余裕が大きくなるほどB’は小さくなる。言い換えれば、1ブロックの処理時間が大きいほど、先読み期間を短く設定することができる。
(2)モード1
バッファメモリ制御部801は、領域端ブロックの周辺の動きベクトルに基づいて先読み期間を決定する。この場合、バッファメモリ制御部801は、例えば、参照画像決定部802が求めた領域外の参照画像の範囲の画素数rnumを用いて、次式により先読み期間内のブロックの個数Bを決定することができる。
B=MIN(bnum_x,CEIL(rnum/C)) (2)
式(2)の係数Cは、メモリバス602−1〜メモリバス602−Nを介して領域外の参照画像を転送する際の転送スループットを表し、固定値であってもよく、可変であってもよい。例えば、動画像符号化装置401の動作時の転送スループットを計測してフィードバックする場合、係数Cは可変になる。CEIL(R)は、実数R以上の最小の整数を表す関数である。
(3)モード2
バッファメモリ制御部801は、バッファメモリ807の使用実績に基づいて先読み期間を決定する。この場合、バッファメモリ制御部801は、例えば、過去のある時点におけるバッファメモリ807の空き容量Sを用いて、次式により先読み期間内のブロックの個数Bを決定することができる。
B=FLOOR(S*D) (3)
式(3)の補正値Dは、固定値B’と同様に、パラメータチューニングにより決定してもよく、目標スループットに応じて決定してもよい。FLOOR(R)は、実数R以下の最大の整数を表す関数である。
図20は、モード0の先読み期間の例を示している。この場合、先読み期間1931内のブロックの個数Bとして固定値B’が用いられ、符号化対象ブロックの位置が、領域910内で所定期間の先頭のx座標に対応する位置2001に移動したとき、領域外の参照画像の読み出しが開始される。
図21は、モード1の先読み期間の例を示している。符号化対象ブロックが領域端ブロック2101である場合、参照画像決定部802は、領域端ブロック2102の隣接ブロック2103及び2104の動きベクトル2111及び2112から平均動きベクトル2113を求める。次に、参照画像決定部802は、平均動きベクトル2113に基づいて、領域端ブロック2102に対する領域外の参照画像の範囲2121を決定する。同様にして、参照画像決定部802は、領域端ブロック2105に対する領域外の参照画像の範囲2122を決定する。
次に、バッファメモリ制御部801は、範囲2121及び範囲2122の画素数rnumを用いて、式(2)により先読み期間2131内のブロックの個数Bを決定する。
符号化対象ブロックが領域端ブロック2106である場合、参照画像決定部802は、領域端ブロック2107の隣接ブロック2108及び2109の動きベクトル2114及び2115から平均動きベクトル2116を求める。次に、参照画像決定部802は、平均動きベクトル2116に基づいて、領域端ブロック2107に対する領域外の参照画像の範囲2123を決定する。同様にして、参照画像決定部802は、領域端ブロック2110に対する領域外の参照画像の範囲2124を決定する。
次に、バッファメモリ制御部801は、範囲2123及び範囲2124の画素数rnumを用いて、式(2)により先読み期間2132内のブロックの個数Bを決定する。
平均動きベクトル2116は平均動きベクトル2113よりも大きいため、領域外の参照画像の範囲2123は、領域外の参照画像の範囲2121よりも大きい。同様に、領域外の参照画像の範囲2124は、領域外の参照画像の範囲2122よりも大きい。このため、範囲2123及び範囲2124の画素数rnumは、範囲2121及び範囲2122の画素数rnumよりも多くなり、先読み期間2132内のブロックの個数Bは、先読み期間2131内のブロックの個数Bよりも多くなる。
このように、先読み対象となる領域端ブロックの周辺の動きベクトルにおける領域外の方向の成分が大きいほど、先読み期間が長くなり、領域外の参照画像の読み出しが早く開始される。これにより、領域外の参照画像の画素数に応じて、読み出し時間を制御することができる。
図22は、モード2の先読み期間の例を示している。符号化対象ブロックが領域端ブロック2201である場合、参照画像決定部802は、領域端ブロック2202の隣接ブロック2203及び2204の動きベクトル2211及び2212から平均動きベクトル2213を求める。次に、参照画像決定部802は、平均動きベクトル2213に基づいて、領域端ブロック2202に対する領域外の参照画像の範囲2221を決定する。
次に、バッファメモリ制御部801は、バッファメモリ807の空き容量Sを用いて、式(3)により先読み期間2231内のブロックの個数Bを決定する。空き容量Sとしては、領域910内の左上のブロックから符号化対象ブロックの直前のブロック2204までのいずれかのブロックが符号化された時点における、バッファメモリ807の空き容量を用いることができる。
例えば、ある時点において、バッファメモリ807の全記憶領域2241が領域内の参照画像に対して割り当てられており、そのうち記憶領域2242が実際に使用されている場合、残りの記憶領域2243の容量が空き容量Sとして用いられる。
符号化対象ブロックが領域端ブロック2205である場合、参照画像決定部802は、領域端ブロック2206の隣接ブロック2207及び2208の動きベクトル2214及び2215から平均動きベクトル2216を求める。次に、参照画像決定部802は、平均動きベクトル2216に基づいて、領域端ブロック2206に対する領域外の参照画像の範囲2222を決定する。
次に、バッファメモリ制御部801は、バッファメモリ807の空き容量Sを用いて、式(3)により先読み期間2232内のブロックの個数Bを決定する。例えば、ある時点において、バッファメモリ807の全記憶領域2241が領域内の参照画像に対して割り当てられており、そのうち記憶領域2244が実際に使用されている場合、残りの記憶領域2245の容量が空き容量Sとして用いられる。
記憶領域2245の容量は、記憶領域2243の容量よりも小さいため、先読み期間2232内のブロックの個数Bは、先読み期間2231内のブロックの個数Bよりも少なくなる。このように、バッファメモリ807の空き容量Sが大きいほど、先読み期間が長くなり、領域外の参照画像の読み出しが早く開始される。これにより、バッファメモリ807の使用実績に応じて、読み出し時間を制御することができる。
次に、バッファメモリ制御部801は、ステップ1304において、現在の符号化対象ブロックの処理時間中に読み出す領域外の参照画像の画素数Eを決定する。
符号化対象ブロックが先読み期間外に存在する場合、E=0である。符号化対象ブロックが先読み期間内に存在する場合、画素数Eは、領域外の参照画像の範囲の画素数rnumのうち未だ読み出していない残りの画像数pnumを用いて、例えば、次式により求めることができる。
E=MIN(A,pnum) (4)
そして、バッファメモリ制御部801は、バッファメモリ807の画素数Eに相当する記憶領域を、領域外の参照画像に対して割り当て、残りの記憶領域を領域内の参照画像に対して割り当てる。領域内の参照画像に対する割当量Fは、バッファメモリ807の全記憶領域の画素数Gを用いて、例えば、次式により求めることができる。
F=G−E (5)
式(5)の画素数Gは、例えば、1ブロックの処理時間中に読み出し可能な領域内の参照画像の画素数に対応する。バッファメモリ制御部801は、領域外の参照画像に対する割当量E及び領域内の参照画像に対する割当量Fを、リクエスト生成部804へ出力する。
次に、リクエスト生成部804は、ステップ1305において、符号化対象ブロックに隣接する符号化済みブロックの動きベクトルに基づいて、領域内の参照画像の読み出し範囲を決定する。
このとき、リクエスト生成部804は、符号化対象ブロックの左上隣接ブロック、上隣接ブロック、及び左隣接ブロックの動きベクトルから、平均動きベクトルmvμを求める。次に、リクエスト生成部804は、符号化対象ブロックをmvμに従って移動させ、移動後の符号化対象ブロックを所定画素数だけ拡大して、探索範囲を生成する。
ただし、符号化対象ブロックが図19の領域端ブロック1901である場合、領域端ブロック1901の左上隣接ブロック及び左隣接ブロックは領域外に存在する。この場合、リクエスト生成部804は、領域端ブロック1901の上隣接ブロックの動きベクトルを、領域端ブロック1901に対する平均動きベクトルmvμとして用いてもよい。
次に、リクエスト生成部804は、生成した探索範囲の画素数と、領域内の参照画像に対する割当量Fとを比較する。割当量Fが探索範囲の画素数よりも少ない場合、リクエスト生成部804は、平均動きベクトルmvμの方向から遠い画素を探索範囲から除くことで、探索範囲を縮小する。一方、割当量Fが探索範囲の画素数よりも多い場合、リクエスト生成部804は、平均動きベクトルmvμの方向に存在する画素を探索範囲に加えることで、探索範囲をさらに拡大する。
次に、リクエスト生成部804は、縮小又は拡大後の探索範囲を、符号化対象ブロックに対する領域内の参照画像の読み出し範囲に決定する。これにより、読み出し可能な割当量Fに合わせた読み出し範囲を設定することができる。そして、リクエスト生成部804は、領域内の参照画像の読み出し範囲から参照画像を読み出す領域内リクエストを生成する。
次に、リクエスト生成部804は、ステップ1307において、領域外の参照画像の範囲のうち未だ読み出していない部分から、領域外の参照画像に対する割当量Eだけの画素を読み出す、領域外リクエストを生成する。
図23は、符号化対象ブロックが領域端以外のブロックである場合の参照画像読み出し処理の例を示している。符号化対象ブロックがブロック2301である場合、バッファメモリ807の全記憶領域2241が領域内の参照画像に対して割り当てられ、領域内の参照画像の読み出しのみが行われる。領域内の参照画像の読み出し範囲2311のうち左半分2312の参照画像は、直前のブロックを符号化する際に読み出されており、再利用することができる。このため、右半分2313の参照画像のみが読み出される。
図24は、符号化対象ブロックが先読み期間の先頭ブロックである場合の参照画像読み出し処理の例を示している。符号化対象ブロックが先読み期間1931の先頭ブロック2401である場合、バッファメモリ807の記憶領域2441が領域内の参照画像に対して割り当てられ、残りの記憶領域2442が領域外の参照画像に対して割り当てられる。
リクエスト生成部804は、ブロック2401の上隣接ブロック2402及び左隣接ブロック2403の動きベクトル2411及び2412から平均動きベクトル2413を求め、平均動きベクトル2413に基づいて探索範囲2421を生成する。リクエスト生成部804は、さらにブロック2401の左上隣接ブロック(不図示)の動きベクトルを加えて、平均動きベクトル2413を求めてもよい。
次に、リクエスト生成部804は、平均動きベクトル2413の方向に存在する画素をなるべく残しながら、探索範囲2421を縮小して、読み出し範囲2422を生成する。この場合、読み出し範囲2422の右半分から領域内の参照画像が読み出されるとともに、領域外の参照画像の範囲1921から最大画素数Aの参照画像2431が読み出される。
図25は、符号化対象ブロックが先読み期間の2番目のブロックである場合の参照画像読み出し処理の例を示している。符号化対象ブロックが先読み期間1931の2番目のブロック2501である場合、バッファメモリ807の記憶領域2541が領域内の参照画像に対して割り当てられ、残りの記憶領域2542が領域外の参照画像に対して割り当てられる。
リクエスト生成部804は、ブロック2501の上隣接ブロック2502及び左隣接ブロック2503の動きベクトル2511及び2512から平均動きベクトル2513を求め、平均動きベクトル2513に基づいて探索範囲2521を生成する。リクエスト生成部804は、さらにブロック2501の左上隣接ブロック(不図示)の動きベクトルを加えて、平均動きベクトル2513を求めてもよい。
次に、リクエスト生成部804は、平均動きベクトル2513の方向に存在する画素をなるべく残しながら、探索範囲2521を縮小して、読み出し範囲2522を生成する。この場合、読み出し範囲2522の右半分から領域内の参照画像が読み出されるとともに、領域外の参照画像の範囲1921から最大画素数Aの参照画像が読み出される。これにより、最大画素数Aの2倍の参照画像2531が読み出し済みとなる。
図26は、符号化対象ブロックが先読み期間の末尾のブロックである場合の参照画像読み出し処理の例を示している。符号化対象ブロックが先読み期間1931の末尾のブロック1902である場合、バッファメモリ807の記憶領域2612が領域内の参照画像に対して割り当てられる。また、記憶領域2613が領域外の参照画像の範囲1921に対して割り当てられ、記憶領域2611が領域外の参照画像の範囲1922に対して割り当てられる。ブロック1902の符号化が終了した時点で、範囲1921及び範囲1922の参照画像の読み出しが完了する。
図27は、符号化対象ブロックが次のブロックラインの左端の領域端ブロックである場合の参照画像読み出し処理の例を示している。符号化対象ブロックが領域端ブロック1905である場合、参照画像決定部802は、再び隣接する符号化済みブロックの動きベクトルに基づいて、領域外の参照画像の範囲を予測する。
このとき、参照画像決定部802は、右端の領域端ブロック2701の左上隣接ブロック2702の動きベクトル2711と、上隣接ブロック1902の動きベクトル2712とから、平均動きベクトル2713を求める。次に、参照画像決定部802は、平均動きベクトル1913に基づいて、領域端ブロック2701に対する領域外の参照画像の範囲2721を決定する。同様にして、参照画像決定部802は、次のブロックライン内の左端の領域端ブロック2703に対する、領域外の参照画像の範囲2722を決定する。
そして、バッファメモリ制御部801は、領域外の参照画像の先読み期間2731に含まれるブロックの個数Bを決定し、式(1)により最大画素数Aを決定する。この場合、バッファメモリ807の全記憶領域2241が領域内の参照画像に対して割り当てられる。
図28は、先読み期間を適用した図2の参照領域からの参照画像読み出しと動き探索の例を示すタイミングチャートである。参照領域222及び223の参照画像のうち、領域内の参照画像2801及び2802の読み出しは、ブロック212及び213に対する動き探索の直前に開始される。一方、部分領域231及び232からの領域外の参照画像の読み出しは、ブロック212及び213に対する動き探索よりも先読み期間だけ先行して開始される。
このため、領域外の参照画像の読み出しにかかるメモリアクセス時間が隠蔽され、他の符号化部に対応するフレームメモリから参照画像を読み出す場合であっても、動き探索を遅延なく開始することができる。
図4及び図6の動画像符号化装置401、図7の符号化部411−i、及び図8の参照画像制御部421の構成は一例に過ぎず、動画像符号化装置401の用途や条件に応じて一部の構成要素を省略又は変更してもよい。
例えば、図7の符号化部411−iにおいて、差分画像生成部715が生成する差分画像の直交変換及び量子化の代わりに、別の変換アルゴリズムを使用する場合、量子化部716及び逆量子化部717を別の構成要素に変更することができる。また、エントロピー符号化の代わりに別の符号化アルゴリズムを使用する場合、エントロピー符号化部719を別の符号化部に変更することができる。逆量子化部717が生成する再構成画像においてノイズがあまり発生しない場合、ループフィルタ部718を省略することができる。
図8の参照画像制御部421において、リクエスト生成部804が領域内リクエスト及び領域外リクエストを直接送出する場合、リクエスト送出部805及びリクエスト送出部806を省略することができる。
図5及び図12〜図15に示したフローチャートは一例に過ぎず、動画像符号化装置401の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図12の動画像符号化処理において、縮小画像を用いた動き探索を行わない場合、ステップ1202の処理を省略することができる。
ステップ1204の処理とステップ1205の処理とを入れ替えてもよく、これらの処理を並列に行ってもよい。ループフィルタ部718を省略する場合、ステップ1210の処理を省略することができる。
図13のステップ1301において、参照画像決定部802は、符号化対象ブロックがブロックラインに含まれる左端以外の所定位置のブロックであるか否かをチェックしてもよい。この場合、符号化対象ブロックの位置が所定位置に移動したときに、ステップ1302及びステップ1303の処理が行われる。
ステップ1302において、参照画像決定部802は、領域端ブロックに隣接する符号化済みブロックの動きベクトルの平均動きベクトルの代わりに、別の動きベクトルに基づいて参照画像の範囲を決定してもよい。例えば、隣接する符号化済みブロックの動きベクトルの重み付き平均を用いてもよく、いずれか1つの動きベクトルを選択して用いてもよい。
同様に、ステップ1305において、リクエスト生成部804は、符号化対象ブロックに隣接する符号化済みブロックの動きベクトルの平均動きベクトルの代わりに、別の動きベクトルに基づいて探索範囲を決定してもよい。
ステップ1303において、バッファメモリ制御部801は、モード0〜モード2以外の別の決定方法により、先読み期間を決定してもよい。バッファメモリ制御部801は、式(1)以外の計算式により最大画素数Aを求めてもよく、式(2)以外の計算式によりモード1におけるブロックの個数Bを求めてもよく、式(3)以外の計算式によりモード2におけるブロックの個数Bを求めてもよい。
ステップ1304において、バッファメモリ制御部801は、式(4)以外の計算式により領域外の参照画像に対する割当量Eを求めてもよく、式(5)以外の計算式により領域内の参照画像に対する割当量Fを求めてもよい。
図1の分割方法は一例に過ぎず、動画像符号化装置401の構成や条件に応じて別の分割方法を用いてもよい。例えば、領域の個数は、画像の解像度に応じて増減することができる。図2のブロック及び参照領域は一例に過ぎず、動画像符号化装置401の構成や条件に応じて別のブロック又は参照領域を用いてもよい。
図9〜図11及び図16〜図27のブロック、先読み期間、バッファメモリの記憶領域、動きベクトル、領域外の参照画像の範囲、領域内の参照画像の読み出し範囲等は一例に過ぎない。動画像符号化装置401の構成や条件に応じて、別のブロック等を用いてもよい。
図4、図6、及び図7の符号化部411−iは、ハードウェア回路として実装することもでき、図29に示すような情報処理装置(コンピュータ)を用いて実現することもできる。
図29の情報処理装置2901は、プロセッサ2911、メモリ2912、及びネットワーク接続装置2913を含む。これらの構成要素はバス2914により互いに接続されている。
メモリ2912は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリである。メモリ2912は、動画像符号化処理に用いられるプログラム及びデータを格納する。メモリ2912は、図8の動きベクトル記憶部803及びバッファメモリ807として用いることもできる。
プロセッサ2911は、例えば、メモリ2912を利用してプログラムを実行することにより、図4及び図7の参照画像制御部421及び予測符号化部422として動作する。プロセッサ2911は、図7の原画像制御部701、動き探索部711、インター予測部712、イントラ予測部713、選択部714、及び差分画像生成部715としても動作する。プロセッサ2911は、量子化部716、逆量子化部717、ループフィルタ部718、及びエントロピー符号化部719としても動作する。
プロセッサ2911は、図8のバッファメモリ制御部801、参照画像決定部802、リクエスト生成部804、リクエスト送出部805、及びリクエスト送出部806としても動作する。
ネットワーク接続装置2913は、メモリバス602−iに接続され、通信に伴うデータ変換を行う通信インタフェースである。メモリバス602−iを、Local Area Network(LAN)、インターネット等の通信ネットワークに接続することも可能である。この場合、情報処理装置2901は、プログラム及びデータを外部の装置からネットワーク接続装置2913を介して受信し、それらをメモリ2912にロードして使用することもできる。
媒体駆動装置2902は、情報処理装置2901に接続されて可搬型記録媒体2903を駆動し、その記録内容にアクセスする。可搬型記録媒体2903は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体2903は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、又はUniversal Serial Bus(USB)メモリであってもよい。ユーザ又はオペレータは、この可搬型記録媒体2903にプログラム及びデータを格納しておき、それらをメモリ2912にロードして使用することができる。
このように、プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ2912又は可搬型記録媒体2903のような、物理的な(非一時的な)記録媒体である。なお、情報処理装置2901が可搬型記録媒体2903にアクセスしない場合は、媒体駆動装置2902を省略することができる。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図1乃至図29を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の領域に分割された画像を符号化する動画像符号化装置であって、
前記複数の領域それぞれを符号化する複数の符号化部と、
前記複数の領域それぞれに対応する複数の記憶部と、
を備え、
前記複数の符号化部のうちある符号化部は、
前記複数の領域のうち第1の領域と第2の領域との間の境界に接する、前記第1の領域内の第1のブロックに対する動き探索のために、前記複数の記憶部のうち前記第1の領域に対応する第1の記憶部からの第1の参照画像の読み出しを開始するよりも先に、前記複数の記憶部のうち前記第2の領域に対応する第2の記憶部からの第2の参照画像の読み出しを開始する参照画像制御部と、
前記第1の参照画像と前記第2の参照画像とに基づいて前記第1のブロックに対する前記動き探索を行い、前記動き探索の結果に基づいて前記第1のブロックを予測符号化する予測符号化部と、
を含むことを特徴とする動画像符号化装置。
(付記2)
前記参照画像制御部は、
前記複数の記憶部から読み出される参照画像を記憶するバッファメモリと、
前記第1の領域内の符号化対象ブロックの位置に応じて、前記第1の記憶部から読み出される前記第1の参照画像に対する前記バッファメモリの割当量と、前記第2の記憶部から読み出される前記第2の参照画像に対する前記バッファメモリの割当量とを制御するバッファメモリ制御部と、
を含むことを特徴とする付記1記載の動画像符号化装置。
(付記3)
前記参照画像制御部は、前記複数の領域のうち前記第1の領域と第3の領域との間の境界に接する、前記第1の領域内の第2のブロックを、前記第1のブロックよりも先に符号化する際、前記第2の参照画像のデータ量を推定し、推定したデータ量に基づいて前記第2の参照画像の読み出しを開始する第3のブロックの位置を決定することを特徴とする付記1又は2記載の動画像符号化装置。
(付記4)
前記参照画像制御部は、前記複数の領域のうち前記第1の領域と第3の領域との間の境界に接する、前記第1の領域内の第2のブロックを、前記第1のブロックよりも先に符号化する際、前記バッファメモリの使用実績に基づいて、前記第2の参照画像の読み出しを開始する第3のブロックの位置を決定することを特徴とする付記1又は2記載の動画像符号化装置。
(付記5)
画像内の複数の領域それぞれを符号化する複数の符号化部と、前記複数の領域それぞれに対応する複数の記憶部とを備え、前記複数の領域に分割された前記画像を符号化する動画像符号化装置において、
前記複数の符号化部のうちある符号化部が、
前記複数の領域のうち第1の領域と第2の領域との間の境界に接する、前記第1の領域内の第1のブロックに対する動き探索のために、前記複数の記憶部のうち前記第1の領域に対応する第1の記憶部からの第1の参照画像の読み出しを開始するよりも先に、前記複数の記憶部のうち前記第2の領域に対応する第2の記憶部からの第2の参照画像の読み出しを開始し、
前記第1の参照画像と前記第2の参照画像とに基づいて前記第1のブロックに対する前記動き探索を行い、
前記動き探索の結果に基づいて前記第1のブロックを予測符号化する、
ことを特徴とする動画像符号化方法。
(付記6)
前記ある符号化部は、
前記複数の記憶部から読み出される参照画像を記憶するバッファメモリを含み、
前記第1の領域内の符号化対象ブロックの位置に応じて、前記第1の記憶部から読み出される前記第1の参照画像に対する前記バッファメモリの割当量と、前記第2の記憶部から読み出される前記第2の参照画像に対する前記バッファメモリの割当量とを制御する、
ことを特徴とする付記5記載の動画像符号化方法。
(付記7)
前記ある符号化部は、前記複数の領域のうち前記第1の領域と第3の領域との間の境界に接する、前記第1の領域内の第2のブロックを、前記第1のブロックよりも先に符号化する際、前記第2の参照画像のデータ量を推定し、推定したデータ量に基づいて前記第2の参照画像の読み出しを開始する第3のブロックの位置を決定することを特徴とする付記5又は6記載の動画像符号化方法。
(付記8)
前記ある符号化部は、前記複数の領域のうち前記第1の領域と第3の領域との間の境界に接する、前記第1の領域内の第2のブロックを、前記第1のブロックよりも先に符号化する際、前記バッファメモリの使用実績に基づいて、前記第2の参照画像の読み出しを開始する第3のブロックの位置を決定することを特徴とする付記5又は6記載の動画像符号化方法。
(付記9)
画像内の複数の領域それぞれを符号化する複数のプロセッサと、前記複数の領域それぞれに対応する複数の記憶部とを備え、前記複数の領域に分割された前記画像を符号化する動画像符号化装置において、
前記複数のプロセッサのうちあるプロセッサに、
前記複数の領域のうち第1の領域と第2の領域との間の境界に接する、前記第1の領域内の第1のブロックに対する動き探索のために、前記複数の記憶部のうち前記第1の領域に対応する第1の記憶部からの第1の参照画像の読み出しを開始するよりも先に、前記複数の記憶部のうち前記第2の領域に対応する第2の記憶部からの第2の参照画像の読み出しを開始し、
前記第1の参照画像と前記第2の参照画像とに基づいて前記第1のブロックに対する前記動き探索を行い、
前記動き探索の結果に基づいて前記第1のブロックを予測符号化する、
処理を実行させる動画像符号化プログラム。
(付記10)
前記動画像符号化装置は、前記あるプロセッサによって前記複数の記憶部から読み出される参照画像を記憶するバッファメモリを含み、
前記あるプロセッサは、前記第1の領域内の符号化対象ブロックの位置に応じて、前記第1の記憶部から読み出される前記第1の参照画像に対する前記バッファメモリの割当量と、前記第2の記憶部から読み出される前記第2の参照画像に対する前記バッファメモリの割当量とを制御する、
ことを特徴とする付記9記載の動画像符号化プログラム。
(付記11)
前記あるプロセッサは、前記複数の領域のうち前記第1の領域と第3の領域との間の境界に接する、前記第1の領域内の第2のブロックを、前記第1のブロックよりも先に符号化する際、前記第2の参照画像のデータ量を推定し、推定したデータ量に基づいて前記第2の参照画像の読み出しを開始する第3のブロックの位置を決定することを特徴とする付記9又は10記載の動画像符号化プログラム。
(付記12)
前記あるプロセッサは、前記複数の領域のうち前記第1の領域と第3の領域との間の境界に接する、前記第1の領域内の第2のブロックを、前記第1のブロックよりも先に符号化する際、前記バッファメモリの使用実績に基づいて、前記第2の参照画像の読み出しを開始する第3のブロックの位置を決定することを特徴とする付記9又は10記載の動画像符号化プログラム。