(57)【特許請求の範囲】
【請求項１】
映像符号化処理を行う際に、外部メモリに記憶された参照画像を一時記憶する参照画像バッファであって、
前記参照画像バッファ全体の動作を統括して制御するタイムスロット信号を出力する全体制御部と、
前記映像符号化処理に必要となる前記外部メモリに記憶されている前記参照画像の参照画像データを一時的に記憶する内部メモリと、
前記映像符号化処理の進行に合わせ必要となる前記参照画像データを前記外部メモリから読み出して前記内部メモリに書き込みを行う参照画像書込制御部と、
前記映像符号化処理に使用される探索部からのデータ読出し要求に応じて、前記探索部が求める座標で示される範囲の前記参照画像データを前記内部メモリから読出して送信する探索部参照画像読出制御部と、
複数の前記探索部参照画像読出制御部と前記参照画像書込制御部とからの前記内部メモリへのアクセスを調停し、前記探索部参照画像読出制御部から出力された座標値を前記タイムスロット信号により選択し、前記探索部参照画像読出制御部に対して選択された前記内部メモリから読み出された前記参照画像データを送信するメモリ出力データ選択部と
を備え、
前記内部メモリは、複数のメモリが並列に接続されて複数のグループを形成し、前記参照画像データが、座標の一行分のデータ毎に各々の前記グループのメモリに配置され、
前記全体制御部は、任意の前記探索部参照画像読出制御部からのデータ読出し要求があった場合、前記任意の探索部参照画像読出制御部に対応するレジスタに対応する前記タイムスロット信号を出力し、前記任意の探索部参照画像読出制御部からのデータ読出し要求を優先する、
参照画像バッファ。
【請求項２】
前記全体制御部は、前記任意の探索部参照画像読出制御部からのデータ読出し要求があった場合、前記タイムスロット信号を出力するためのタイムスロットカウンタのカウントを停止する、
請求項１に記載の参照画像バッファ。
【請求項３】
前記全体制御部は、指示された動作モードに基づいて、特定の１個のレジスタの値と、交互に選択される２個のレジスタの値と、前記タイムスロット信号に応じて選択される複数のレジスタの値とのうちのいずれか一つを選択する、
請求項１に記載の参照画像バッファ。
【請求項４】
前記メモリ出力データ選択部は、前記座標値に基づき読み出すべき前記参照画像データのアドレスを生成し、該アドレスで示される前記参照画像データを読み出し、読み出した前記参照画像データがブロックデータとなるようにデータの並べ替えを行うことにより、前記参照画像データの特定ブロックを読み出す請求項１から請求項３のいずれか一項に記載の参照画像バッファ。
【請求項５】
前記探索部参照画像読出制御部は、前記探索部が必要とする画像データブロックの座標とサイズを求め、前記メモリ出力データ選択部に対し読出し要求を行い、得られた画像データから必要とするサイズの画像を切り出し、前記探索部に送信する請求項１から請求項４のいずれか一項に記載の参照画像バッファ。
【請求項６】
前記探索部参照画像読出制御部は、前記内部メモリのデータの更新位置を監視し、読み出すべき前記参照画像データの座標範囲が前記内部メモリのデータの更新された位置を含む場合、該参照画像データが無効であることを前記探索部に通知するミスヒット判定処理をさらに行う請求項１から請求項４のいずれか一項に記載の参照画像バッファ。
【請求項７】
前記参照画像書込制御部は、前記全体制御部からの指示により、内部メモリアクセス帯域のすべてを用いて前記外部メモリから読み出した前記参照画像データを前記内部メモリに書き込む、あるいは前記映像符号化処理の進行に合わせて前記内部メモリのアクセス帯域の半分を用いる、あるいは前記映像符号化処理の進行に合わせて必要な領域のみ更新するのいずれかを行うことによって書込み速度の調整し、前記探索部ごとに異なるアクセス特性に合わせる請求項１から請求項４のいずれか一項に記載の参照画像バッファ。
【請求項８】
前記参照画像書込制御部は、前記外部メモリのアクセスの間隔を制御し、アクセス間隔を短くすることで、短期間に前記内部メモリに前記参照画像データを蓄積する、あるいはアクセス間隔を広げ平均化することにより、前記外部メモリを共有する他のモジュールへの影響を平滑化する請求項１から請求項４のいずれか一項に記載の参照画像バッファ。
【請求項９】
前記メモリ出力データ選択部は、前記探索部参照画像読出制御部から要求される垂直座標と水平座標から参照画像画面外判定を行い、要求される画像ブロック内に画面外領域が含まれる場合、前記メモリ出力データ選択部の内部メモリアクセス方法である１サイクル読出しデータの中に、画面外データを生成するための境界データを含むように読出しアドレスをクリップし読み出したデータに変えて、境界データを出力することで、１サイクルアクセスを維持しながら画面外データ保持のためのメモリ量を削減する請求項５に記載の参照画像バッファ。
【請求項１０】
前記探索部参照画像読出制御部は、前記探索部が必要とする画像データブロックの座標に再設定可能なオフセットを加えることで、参照画像メモリ空間の任意の点を基準点とするアクセスを可能とすることで、共有される隣接ＬＳＩが保持する参照画像データの読出し及び広範囲の探索を可能と知るエリアホッピング時のマッピングの参照画像データの読出しを制御可能とする請求項５に記載の参照画像バッファ。
【請求項１１】
映像符号化処理を行う際に、外部メモリに記憶された参照画像を一時記憶する参照画像バッファであって、
前記参照画像バッファ全体の動作を統括して制御するタイムスロット信号を出力する全体制御部と、
前記映像符号化処理に必要となる前記外部メモリに記憶されている前記参照画像の参照画像データを一時的に記憶する内部メモリと、
前記映像符号化処理の進行に合わせ必要となる前記参照画像データを前記外部メモリから読み出して前記内部メモリに書き込みを行う参照画像書込制御部と、
前記映像符号化処理に使用される探索部からのデータ読出し要求に応じて、前記探索部が求める座標で示される範囲の前記参照画像データを前記内部メモリから読出して送信する探索部参照画像読出制御部と、
複数の前記探索部参照画像読出制御部と前記参照画像書込制御部とからの前記内部メモリへのアクセスを調停し、前記探索部参照画像読出制御部から出力された座標値を前記タイムスロット信号により選択し、前記探索部参照画像読出制御部に対して選択された前記内部メモリから読み出された前記参照画像データを送信するメモリ出力データ選択部と
を備え、
前記内部メモリは、
複数のメモリが並列に接続されて複数のグループを形成し、前記参照画像データが、座標の一行分のデータ毎に各々の前記グループのメモリに配置され、
前記参照画像書込制御部は、
前記全体制御部からの指示により、内部メモリアクセス帯域のすべてを用いて前記外部メモリから読み出した前記参照画像データを前記内部メモリに書き込む、あるいは前記映像符号化処理の進行に合わせて前記内部メモリのアクセス帯域の半分を用いる、あるいは前記映像符号化処理の進行に合わせて必要な領域のみ更新するのいずれかを行うかを、新たなピクチャの先頭処理を早めるため、符号化処理の進行に合わせて切り替えることで書き込み速度を調整し前記探索部毎に異なるアクセス特性にあわせる、
参照画像バッファ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像符号化ＬＳＩ（Large Scale Integration）におけるフレーム間符号化を行う場合に必要となる参照画像バッファに関する。
【背景技術】
【０００２】
Ｈ．２６５／ＨＥＶＣは従来の符号化方式であるＨ．２６４／ＡＶＣ（例えば、非特許文献１参照）の約２倍の符号化効率を達成する。これは、様々な画像サイズで符号化を行い、もっとも符号化効率の良い画像サイズを選択する階層符号化によるところが大きい。階層符号化では、入力画像とこれまでに符号化された画像である参照画像との画素単位での差分累積値等が最も小さくなる座標を様々なサイズで探索する。このため、何度も同じ画像データが使われ、非常に多くのデータを必要とする。また、参照画像データサイズは非常に大きくＬＳＩの内部メモリに格納することはできず、外部メモリに格納する必要がある。外部メモリのインタフェース速度には制限があるため、ＬＳＩ内部にバッファを設け、一時的にデータを保持し探索モジュールに対してデータを供給することが考えられる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】K.Nitta, et. al. ,"An H.264/AVC High422 Profile and MPEG-2 422 Profile Encoder LSI for HDTV Broadcasting Infrastructures," 2008 Symposium on VLSI Circuits.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、検索モジュールは、任意の座標の様々なサイズの画像ブロックを必要とするため、データ供給効率が低下する。これは、連続的なメモリアドレスでデータにアクセスできないためである。例えば、画像ブロックを読み出す場合、横座標方向の画像データは連続的に読み出すことができるが、次のラインを読み出すために縦方向に読出し座標が変化した時には、新たに読出しアドレスを変更してから連続アドレスデータを読み出す必要が有るからである。連続アドレスであれば、読出しデータ幅を広くして一度に画像データを読み出すことができるが、読出し座標が縦方向に対しては一度に画像データを読み出せないためである。８ｘ８画素の画像ブロックの場合、最低８回の読出しを行う必要がある。
【０００５】
本発明は、このような事情に顧みてなされたもので、外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給することができる参照画像バッファを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様は、映像符号化処理を行う際に、外部メモリに記憶された参照画像を一時記憶する参照画像バッファであって、前記参照画像バッファ全体の動作を統括して制御するタイムスロット信号を出力する全体制御部と、前記映像符号化処理に必要となる前記外部メモリに記憶されている前記参照画像の参照画像データを一時的に記憶する内部メモリと、前記映像符号化処理の進行に合わせ必要となる前記参照画像データを前記外部メモリから読み出して前記内部メモリに書き込みを行う参照画像書込制御部と、前記映像符号化処理に使用される探索部からのデータ読出し要求に応じて、前記探索部が求める座標で示される範囲の前記参照画像データを前記内部メモリから読出して送信する探索部参照画像読出制御部と、複数の前記探索部参照画像読出制御部と前記参照画像書込制御部とからの前記内部メモリへのアクセスを調停し、前記探索部参照画像読出制御部から出力された座標値を前記タイムスロット信号により選択し、前記探索部参照画像読出制御部に対して選択された前記内部メモリから読み出された前記参照画像データを送信するメモリ出力データ選択部とを備え、前記内部メモリは、複数のメモリが並列に接続されて複数のグループを形成し、前記参照画像データが、座標の一行分のデータ毎に各々の前記グループのメモリに配置された参照画像バッファである。
【０００７】
本発明の一態様は、前記参照画像バッファであって、前記メモリ出力データ選択部は、前記座標値に基づき読み出すべき前記参照画像データのアドレスを生成し、該アドレスで示される前記参照画像データを読み出し、読み出した前記参照画像データがブロックデータとなるようにデータの並べ替えを行うことにより、前記参照画像データの特定ブロックを読み出す。
【０００８】
本発明の一態様は、前記参照画像バッファであって、前記探索部参照画像読出制御部は、前記探索部が必要とする画像データブロックの座標とサイズを求め、前記メモリ出力データ選択部に対し読出し要求を行い、得られた画像データから必要とするサイズの画像を切り出し、前記探索部に送信する。
【０００９】
本発明の一態様は、前記参照画像バッファであって、前記探索部参照画像読出制御部は、前記内部メモリのデータの更新位置を監視し、読み出すべき前記参照画像データの座標範囲が前記内部メモリのデータの更新された位置を含む場合、該参照画像データが無効であることを前記探索部に通知するミスヒット判定処理をさらに行う。
【００１０】
本発明の一態様は、前記参照画像バッファであって、前記参照画像書込制御部は、前記全体制御部からの指示により、内部メモリアクセス帯域のすべてを用いて前記外部メモリから読み出した前記参照画像データを前記内部メモリに書き込む、あるいは前記映像符号化処理の進行に合わせて前記内部メモリのアクセス帯域の半分を用いる、あるいは前記映像符号化処理の進行に合わせて必要な領域のみ更新するのいずれかを行うことによって書込み速度の調整し、前記探索部ごとに異なるアクセス特性に合わせる。
【００１１】
本発明の一態様は、前記参照画像バッファであって、前記参照画像書込制御部は、前記外部メモリのアクセスの間隔を制御し、アクセス間隔を短くすることで、短期間に前記内部メモリに前記参照画像データを蓄積する、あるいはアクセス間隔を広げ平均化することにより、前記外部メモリを共有する他のモジュールへの影響を平滑化する。
【００１２】
本発明の一態様は、前記参照画像バッファであって、前記メモリ出力データ選択部は、前記探索部参照画像読出し制御部から要求される垂直座標と水平座標から参照画像画面外判定を行い、要求される画像ブロック内に画面外領域が含まれる場合、前記メモリ出力データ選択部の内部メモリアクセス方法である１サイクル読出しデータの中に、画面外データを生成するための境界データを含むように読出しアドレスをクリップし読み出したデータに変えて、境界データを出力することで、１サイクルアクセスを維持しながら画面外データ保持のためのメモリ量を削減する。
【００１３】
本発明の一態様は、前記参照画像バッファであって、前記探索部参照画像読出し制御部は、前記探索部が必要とする画像データブロックの座標に再設定可能なオフセットを加えることで、参照画像メモリ空間の任意の点を基準点とするアクセスを可能とすることで、共有される隣接ＬＳＩが保持する参照画像データの読出し及び広範囲の探索を可能と知るエリアホッピング時のマッピングの参照画像データの読出しを制御可能とする
【発明の効果】
【００１４】
本発明によれば、外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給することができるという効果が得られる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態による参照画像バッファの構成を示すブロック図である。
【図２】図１に示す全体制御部１１の詳細な構成を示すブロック図である。
【図３】参照画像の構成と内部メモリ１４の構成を示す説明図である。
【図４】参照画像データの配置を示す図である。
【図５】図１に示すメモリ出力データ選択部１３と内部メモリ１４の構成を示すブロック図である。
【図６】メモリ出力データ選択部１３が内部メモリ１４から画像ブロックを読み出す際の処理動作を示すフローチャートである。
【図７】メモリ出力データ選択部１３の構成の一部を示す図である。
【図８】垂直座標ｙに対する各ライン単位並べ替え部が選択するメモリグループの関係を示す図である。
【図９】図１に示す探索部参照画像読出制御部１２−０の詳細な構成を示すブロック図である。
【図１０】インデックスとＣＴＵ内８ｘ８ブロックの位置を示す図である。
【図１１】ミスヒット判定を示す説明図である。
【図１２】図１に示す参照画像書込制御部１５の詳細な構成を示すブロック図である。
【図１３】外部メモリデータの読み出し図である。
【図１４】外部メモリデータの読み出し図である。
【図１５】平滑化制御部の制御動作を示す説明図である。
【図１６】通常時の画像データとメモリ領域を示す説明図である。
【図１７】エリアホッピング時の画像データとメモリ領域を示す説明図である。
【図１８】複数ＬＳＩとの連携に伴い必要となる参照画像データのコピーを示す説明図である。
【図１９】メモリ出力データ選択部の構成を示す図である。
【図２０】行アドレス変換部の構成を示す図である。
【図２１】列アドレス変換部の構成を示す図である。
【図２２】８画素単位並べ替え部の構成を示す図である。
【図２３】ライン単位並べ替え部の構成を示す図である。
【発明を実施するための形態】
【００１６】
＜第１の実施形態＞
以下、図面を参照して、本発明の第１の実施形態による参照画像バッファを説明する。図１は同実施形態の構成を示すブロック図である。この図に示す参照画像バッファ１は、全体制御部１１、Ｎ＋１（Ｎは自然数）個の探索部参照画像読出し制御部１２−０〜１２−Ｎ、メモリ出力データ選択部１３、内部メモリ１４、参照画像書込制御部１５を備える。参照画像バッファ１には、外部ホスト２、Ｎ＋１個の探索部３−０〜３−Ｎ及び外部メモリ４が接続される。
【００１７】
次に、参照画像バッファを構成する各ブロックについて説明する。
（全体制御部）
全体制御部１１は、内部メモリ１４、探索部参照画像読出制御部１２、参照画像書込制御部１５、メモリ出力データ選択部１３の動作を制御する。全体制御部１１は、参照画像書込制御部１５や探索部参照画像読出制御部１２−０〜Ｎの状態、外部ホスト２からの指示により、時分割処理のためのタイムスロット信号を生成する。図２は、図１に示す全体制御部１１の詳細な構成を示すブロック図である。
【００１８】
図２に示すように、全体制御部１１は、外部ホスト２からの動作モード指示に基づきセレクタ２・１１１２によりすべて同じスロット信号（レジスタ０・１１０１の値）、セレクタ０・１１０７を用い指定された特定の信号（レジスタ１・１１０２、レジスタ２・１１０３の値が交互に出力したもの）、タイムスロット信号（レジスタ１０・１１０４〜レジスタ１０＋Ｎ＋１・１１０６の値を順に出力したもの）を選択する。レジスタ１０・１１０４からレジスタ１０＋Ｎ＋１・１１０６は、セレクタ１・１１０８をタイムスロットカウンタ１１１１の値で制御することで、選択される。
【００１９】
タイムスロットカウンタ１１１１は、現在の値をインクリメント１１０９によってインクリメントした値を格納し出力するが、タイムスロットの割り当て数でラップアラウンド１１１０によってラップアラウンドされる。例えば、タイムスロット数を３とした場合は、０、１、２、０、１、２、．．．、とインクリメントして次の値が３になる時、値を０にする。その出力は、セレクタ１・１１０８においてレジスタの選択に用いられる。例えば、タイムスロットカウンタ値が０の時はレジスタ１０・１１０４の値、タイムスロットカウンタがＮ＋１の時はレジスタ１０＋Ｎ＋１・１１０６の値をセレクタ１・１１０８は選択して出力する。
【００２０】
またタイムスロットカウンタ１１１１は、探索部参照画像読出し制御部１２−ｉ（ｉは０〜Ｎのいずれか）からの要求があった場合、停止し、探索部参照画像読出し制御１２−ｉからの読出し要求を優先し、要求受付後は、停止した値からタイムスロットカウンタ１１１１によるカウントを再開する。さらには、探索部参照画像読出し制御部１２−ｉからの読出し要求が生じた場合、探索部参照画像読出制御部１２−ｉに対応するタイムスロット信号（レジスタ３・１１１３の値）を、セレクタ３・１１１４の入力を選択することにより出力する。この探索部参照画像読出制御部１２−ｉからの読出し要求時には、タイムスロットカウンタ１１１１を更新しない。すなわち、タイムスロット制御は一時的に停止させられ、探索部参照画像読出制御部１２−０〜Ｎの要求を優先する。ここで、各レジスタの値はすべてを用意してもよいし、一部のレジスタの値は変更可能とし、その他のものは回路的に固定する構成をとることもできる。
【００２１】
（内部メモリ）
内部メモリ１４は、映像符号化処理に必要となる外部メモリ４に蓄積されている参照画像データを一時的に蓄積する。図３は、参照画像の構成と内部メモリ１４の構成を示す説明図である。図４は、参照画像データの配置を示す図である。内部メモリ１４は、参照画像（図３左図参照）の任意の場所の特定ブロックサイズのデータを一度に読み出すために、図３右図のような構成を有し、この構成を有する内部メモリ１４に図４のように参照画像データを配置していく。横軸の任意の場所指定の粒度をＡｐｉｘｅｌ、画像ブロックの横軸方向のサイズをＢｐｉｘｅｌ、画像ブロックの縦軸方向のサイズをＣｐｉｘｅｌ、各画素のビット数をＤｂｉｔとする。幅ＡｘＤｂｉｔのメモリをＢ／Ａ個を一つのグループとして並列化し、そのグループをＣグループ分集め、並列化する構成（メモリブロック）を内部メモリ１４が有する。この構成により、任意の場所からの参照画像ブロックの読出しを一度にすることが可能となる。
【００２２】
Ａ＝８、Ｂ＝３２、Ｃ＝１６、Ｄ＝１０、参照画像バッファの最大格納サイズを８、１９２ｐｉｘｅｌｘ６４０ｐｉｘｅｌとした場合の参照画像イメージを図３左図に、内部メモリ１４の構成とデータ配置を図３右図に示す。個別の内部メモリ１４は画素値１０ｂｉｔ、８画素分のデータを読み出すため幅８０ｂｉｔであり、これを６４個のメモリブロックを並列化した形となる。各メモリは個別にアドレスを指定可能であり、本構成の場合、基本的には、＃０、＃４、．．．、＃４Ｎ、．．．、＃６０と、＃１、＃５、．．．、＃（４Ｎ＋１）、．．．、＃６１と、＃２、＃６、．．．、＃（４Ｎ＋２）、．．．、＃６２と、＃３、＃７、．．．、＃（４Ｎ＋３）、．．．、＃６３はそれぞれ同じアドレスが指定される。
【００２３】
参照画像の１行目（Ｌｉｎｅ＃０）が＃０、＃１、＃２、＃３のメモリに格納され（図３右図のＬｉｎｅ＃０領域）、参照画像の２行目（Ｌｉｎｅ＃１）が＃４、＃５、＃６、＃７のメモリに格納され（図３右図のＬｉｎｅ＃１領域）、同様に３行目（Ｌｉｎｅ＃２）以降同様に格納されるようにデータ配置する。より具体的なデータ配置イメージを図４に示す。図４に示す内部メモリ１４は、１０ｂｉｔ、８画素に対応する８０ｂｉｔの幅を持ち、参照画像のＬｉｎｅ＃０の左から８画素分のデータを＃０のメモリの０番地アドレス（１０ｂｉｔ  ｘ  ８ｐｉｘｅｌ＝８０ｂｉｔを１ワードとした時のワードアドレス）から格納する。次にＬｉｎｅ＃０の次の８ｐｉｘｅｌ分が＃１のメモリの０番地から格納される。＃０から＃３の０番地への書込みが終わった場合（３２ｐｉｘｅｌ分書込み後）、次のＬｉｎｅ＃０の８画素は、＃０の1番地に書込まれる。Ｌｉｎｅ＃０については、これを繰り返す。同様に参照画像のＬｉｎｅ＃１の左から８画素分のデータを＃４のメモリの０番地から格納し、次の８画素を＃５の０番地から格納する。
【００２４】
画像ブロックの読出しは、指定された座標を左上とするブロックの画像データを読み出すことで行われる。水平座標ｘは、メモリ構成から決定される粒度で指定され、垂直座標ｙは任意の座標が指定される。例えば、図３に示すように（ｘ，ｙ）＝（８，１６）の座標を左上とするブロックの画像データを読み出す場合、先に記述した参照画像の座標と内部メモリのデータ配置の関係を用い、各内部メモリのアドレスを決定して画像データを１度に読み出す。
【００２５】
座標（８、１６）から（３１、１６）のデータは、内部メモリの＃１から＃３のＬｉｎｅ＃１６領域の先頭アドレスに格納されており、（３２、１６）から（３９、１６）のデータは、内部メモリ＃０のＬｉｎｅ＃１６領域の先頭から＋１したアドレスに格納されている。同様にＬｉｎｅ＃１７からＬｉｎｅ＃３１の画素のｘ座標が８から３１は、内部メモリ＃（４Ｎ＋１）、＃（４Ｎ＋２）、＃（４Ｎ＋３）のそれぞれのＬｉｎｅ＃の領域に格納されており、ｘ座標が３２から３９の画素データは、内部メモリの＃４ＮのそれぞれのＬｉｎｅ＃領域の次のアドレスに格納される。
【００２６】
そのため、本例の場合、＃４Ｎのメモリからは、それぞれのＬｉｎｅ＃領域の先頭から＋１したアドレスを指定しデータを読み出し、＃（４Ｎ＋１）、＃（４Ｎ＋２）、＃（４Ｎ＋３）のメモリからは、それぞれのＬｉｎｅ＃領域の先頭アドレスを指定しデータを読み出す。これにより参照画像の左上が（８、１６）、画像ブロックサイズが３２ｘ１６ｐｉｘｅｌのデータを一度に読み出すことが可能となる。このように本メモリ構成をとることで、内部メモリの構成から決定される参照画像上での横軸の精度での任意の座標のデータを一度に読み出すことが可能となる。本構成は、横軸方向の精度を８画素としたが８画素のみに適用できるのではなく、例えば、内部メモリの構成を１０ｂｉｔｘ４画素＝４０ｂｉｔ構成にすることで、４画素精度で水平座標を任意に指定することが可能になる。
【００２７】
また、読み出す画像ブロックのサイズを３２ｘ１６ｐｉｘｅｌの時を用いて説明したが、このサイズだけではなく、内部メモリ構成の一つのグループのメモリ数あるいは、メモリグループ毎のビット幅を変更することで、様々なサイズの画像ブロックを一度に読み出すことが可能になる。例えば、一つのメモリグループのビット幅を現在の１０ｂｉｔｘ３２画素＝３２０ｂｉｔから６４０ｂｉｔにし、そのグループ数を６４／４＝１６から８にすることで、横６４画素、縦８画素分の画像ブロックデータを一度に読み出すことが可能となる。
【００２８】
（メモリ出力データ選択部）
より詳しく画像ブロックの読出しを説明するため、メモリ出力データ選択部１３と内部メモリ１４の構成を図５に、メモリ出力データ選択部１３が内部メモリ１４から画像ブロックを読み出す際の処理動作を示すフローチャートを図６に示す。
【００２９】
メモリ出力データ選択部１３は、複数の探索部参照画像読出制御部１２−０〜Ｎと参照画像書込制御部１５からの内部メモリ１４へのアクセスを調停し、適切に探索部参照画像読出制御部１２−０〜Ｎに内部メモリ１４から読み出されたデータを送信する。
【００３０】
まず、メモリ出力データ選択部１３は、各探索部参照画像読出制御部１２−０〜Ｎから出力された座標値の中からタイムスロット信号と一致した探索部参照画像読出制御部１２−０〜Ｎの座標値を選択する（ステップＳ１）。なお、タイムスロット信号は全体制御部１１から入力されるものである。また、読み出し要求＃ｋ、垂直座標＃ｋ、水平座標＃ｋ（ｋは読み出し要求に対しては０〜Ｎ、垂直座標、水平座標については０〜Ｎ＋１）は、ぞれぞれ探索部参照画像読出制御部１２−０〜Ｎからの受け取る情報である。続いて、メモリ出力データ選択部１３は、水平座標から行アドレス、垂直座標から列アドレスにそれぞれ変換する（ステップＳ２、Ｓ３）。
【００３１】
垂直座標から列アドレスに変換する前に参照画像バッファの縦画素数のモジュロ（除算により余りを求める）を取り、そのモジュロを用いて列アドレスに変換する。これは、参照画像バッファは参照画像のすべてを持つことは、メモリ容量的に困難であるため、探索に必要な容量のみ確保している。そのため、読み込んだ参照画像を参照画像バッファの縦サイズで折り返すことで、探索に必要となるメモリ容量を確保している。そのため、垂直座標から参照画像バッファの縦サイズのモジュロを列アドレスに変換する垂直座標として用いる。
【００３２】
水平座標をｘとし、内部メモリ１４の番号をＸとした場合、内部メモリ１４に対する４のモジュロ（Ｘ％４）が一致する内部メモリに対するアドレスは、同一になることは上記にすでに説明した。内部メモリ１４のモジュロにより列アドレスは以下のように求められる。
Ｘ％４＝０の場合、ａｄｄｒＬ＝（ｘ／８＋３）／４
Ｘ％４＝１の場合、ａｄｄｒＬ＝（ｘ／８＋２）／４
Ｘ％４＝２の場合、ａｄｄｒＬ＝（ｘ／８＋１）／４
Ｘ％４＝３の場合、ａｄｄｒＬ＝（ｘ／８＋０）／４
【００３３】
ここで２のべき乗で除しているので、除算はシフト演算に置換えることも可能である。ａｄｄｒＬは実際に内部メモリ１４にアクセスするためのアドレスの下位８ビット分を表している。上位７ビットは、垂直座標ｙより求められる。参照画像バッファは、すべての参照画像データを格納しているわけではなく、探索部３−０〜Ｎが必要とする参照画像データのみを格納することで、メモリ容量の増加を抑えている。そのため、垂直座標はその参照画像バッファの縦方向のライン数により折り返される。例えば、参照画像バッファの縦方向つまりライン数が６４０ラインとすると、縦座標ｙからメモリアドレスを求めるためには、最初にｙに対する６４０の余りを求める必要がある。そこで、Ｙ＝ｙ％６４０として以降説明する。この場合、メモリアドレスの上位７ｂｉｔは、以下のように求められる。
Ｘ／４＝０の場合、ａｄｄｒＨ＝（Ｙ＋１５）／１６
Ｘ／４＝１の場合、ａｄｄｒＨ＝（Ｙ＋１４）／１６
Ｘ／４＝２の場合、ａｄｄｒＨ＝（Ｙ＋１３）／１６
…
Ｘ／４＝１５の場合、ａｄｄｒＨ＝（Ｙ＋０）／１６
ここで、除算はシフトに置換えることも可能である。
【００３４】
次に、メモリ出力データ選択部１３は、これら行アドレス変換と列アドレス変換を行い、結合してアドレス生成を行う（ステップＳ４）。すなわち、ａｄｄｒＬは８ｂｉｔ、ａｄｄｒＨは、７ｂｉｔとしているので、内部メモリのデータを読み出すためのアドレスａｄｄｒは、
ａｄｄｒ＝ａｄｄｒＨ＜＜８｜ａｄｄｒＬ
によって生成される。
【００３５】
ところで、変換された列アドレスａｄｄｒＬは、メモリ番号を４で割った時の余りが同じ場合、同一の値になることから、図５のように各メモリグループ毎に列アドレス変換を行う必要はないので、共通化させることも可能である。図７に共通化させた場合のメモリ出力データ選択部１３の構成の一部を示す。回路規模削減が必要な場合有効な手段である。
【００３６】
次に、メモリ出力データ選択部１３は、先に示したアドレス指定にしたがい画像ブロックを読み出す（ステップＳ５）。読み出されたデータは、メモリグループ毎に最初に８画素単位に並べ替える（ステップＳ６）。８画素の並べ替えは、要求される水平座標を用いて行われる。各メモリグループのデータは、１ライン分のデータに相当し、３２画素分のデータに相当する。
【００３７】
動作の説明をするに当たり、メモリグループ＃０−＃３の場合について説明する。各メモリ＃０、＃１、＃２、＃３は、それぞれ１０ｂｉｔの８画素分、計８０ｂｉｔのデータを出力する。それぞれの出力をＤ（＃０）、Ｄ（＃１）、Ｄ（＃２）、Ｄ（＃３）とすると、本データの並べ替えは以下のようになされる。
ｘ％３２＝０〜７の場合、Ｄ（＃０）、Ｄ（＃１）、Ｄ（＃２）、Ｄ（＃３）
ｘ％３２＝８〜１５の場合、Ｄ（＃１）、Ｄ（＃２）、Ｄ（＃３）、Ｄ（＃０）
ｘ％３２＝１６〜２３の場合、Ｄ（＃２）、Ｄ（＃３）、Ｄ（＃０）、Ｄ（＃１）
ｘ％３２＝２３〜３１の場合、Ｄ（＃３）、Ｄ（＃０）、Ｄ（＃１）、Ｄ（＃２）
【００３８】
このように並べ替えることで、参照画像バッファから必要とされる画像ブロックのデータが８画素精度で水平方向に順に整列させられることになる。上記は、メモリグループ＃０−＃３の時のみを説明したが、他のメモリグループ＃４−＃７、．．．、＃６０−６３に対しても同様な処理を行い、水平方向の整列を行う。
【００３９】
次に、メモリ出力データ選択部１３は、１画素単位での並び替えにおいて、指定された水平座標が読み出される画像ブロックの左端に合わせる操作を行う（ステップＳ７）。先ほど同様水平座標がｘ、８画素単位で並び替えられた画素データをｄ［０］、ｄ［１］、．．．、ｄ［３１］とすると、各メモリグループの画像データは、以下のように整列させられる。
ｘ％８＝０の場合、ｄ［０］、ｄ［１］、ｄ［２］、ｄ［３］、ｄ［４］、ｄ［５］、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］
ｘ％８＝１の場合、ｄ［１］、ｄ［２］、ｄ［３］、ｄ［４］、ｄ［５］、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］
ｘ％８＝２の場合、ｄ［２］、ｄ［３］、ｄ［４］、ｄ［５］、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］、ｄ［１］
ｘ％８＝３の場合、ｄ［３］、ｄ［４］、ｄ［５］、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］、ｄ［１］、ｄ［２］
ｘ％８＝４の場合、ｄ［４］、ｄ［５］、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］、ｄ［１］、ｄ［２］、ｄ［３］
ｘ％８＝５の場合、ｄ［５］、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］、ｄ［１］、ｄ［２］、ｄ［３］、ｄ［４］
ｘ％８＝６の場合、ｄ［６］、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］、ｄ［１］、ｄ［２］、ｄ［３］、ｄ［４］、ｄ［５］
ｘ％８＝７の場合、ｄ［７］、ｄ［８］、．．．、ｄ［３１］、ｄ［０］、ｄ［１］、ｄ［２］、ｄ［３］、ｄ［４］、ｄ［５］、ｄ［６］
【００４０】
これにより、画像データは１画素精度で画像ブロックの左端に揃えられた形になる。そして、メモリ出力データ選択部１３は、計１６個のメモリグループから出力された１６個の３２画素データを並べ替える（ステップＳ８）。並べ替えは、図５や図７に示すように、各々のライン単位並べ替え部によって実施され、各メモリグループからの計１６個の出力の中から一つを選択することで実現する。その選択は、垂直座標ｙを用いて行われる。
【００４１】
図８に、垂直座標ｙに対する各ライン単位並べ替え部が選択するメモリグループの関係を示す。例えば、指定された画像ブロックの垂直座標が２である場合、各ライン単位並べ替え部０、１、２、．．．、１５から出力されるメモリグループの出力は、Ｇ２、Ｇ３、Ｇ４、．．．、Ｇ１となる。
【００４２】
これらの操作により、探索部参照画像読出制御部１２−０〜Ｎから要求された画像ブロックは、ライン単位並べ替え部０、１、．．．、１５からの出力を順に読むことで、得ることができるようになる（ステップＳ９）。なお、ここでは説明を簡単にするため、特定の数字を使って説明してきたが、それに縛られるものではない。
【００４３】
（探索部参照画像読出制御部）
探索部参照画像読出制御部１２−０〜Ｎは、映像符号化処理に使用される探索部３−０〜Ｎからのデータ読出し要求を受理し探索部３−０〜Ｎが求める座標および範囲の参照画像データを内部メモリ１４から読出し送信する。図９は、図１に示す探索部参照画像読出制御部１２−０の詳細な構成を示すブロック図である。ここでは、探索部参照画像読出制御部１２−０の構成を説明するが、探索部参照画像読出制御部１２−１〜Ｎそれぞれについても同様である。探索部参照画像読出制御部１２−０は、図９に示すようにリード処理部１２１とデータ出力処理部１２２とを備え、各探索部３−０〜Ｎからの画像データの読出し要求に対して内部メモリ１４の画像ブロックデータを転送する。
【００４４】
リード処理部１２１は、各探索部３−０〜Ｎからの要求信号、Ｃｏｄｉｎｇ  Ｔｒｅｅ  Ｕｎｉｔ（ＣＴＵ）の座標、動きベクトル、ＣＴＵ内の８ｘ８画像ブロックの位置を表すインデックスおよび、前方向／後方向どちらの参照画像を用いるかの指定信号を受付け、内部メモリ１４を読み出すタイミングで次の読出し要求を受け付けられることを示す受付完了信号を探索部３−０〜Ｎに出力する。ただし、連続した読出し要求を制限するために、必要に応じ受付完了信号を送信してから受信する読出し要求を指定した期間受け付けないようにする。
【００４５】
水平座標や垂直座標は、ＣＴＵ座標、動きベクトル、そしてインデックス（８ｘ８ブロック位置）から求める。ＣＴＵＸ：ＣＴＵ水平座標、ＣＴＵＹ：ＣＴＵ垂直座標、ＢＬＸ：ＣＴＵ内の８ｘ８ブロック水平座標、ＢＬＹ：ＣＴＵ内の８ｘ８ブロック垂直座標、そして、ＭＶＸ：動きベクトルの水平方向、ＭＶＹ：動きベクトルの垂直方向、ＴＡＢＸ：水平前方のりしろサイズ、ＴＡＢＹ：垂直前方のりしろサイズとする。この場合、メモリ内のデータを読み出すための座標（Ｘ、Ｙ）は、
Ｘ＝ＣＴＵＸｘＣＴＵサイズ＋ＢＬＸｘ８＋ＭＶＸ−ＴＡＢＸ
Ｙ＝ＣＴＵＹｘＣＴＵサイズ＋ＢＬＹｘ８＋ＭＶＹ−ＴＡＢＹ
となる。
【００４６】
インデックスとＢＬＸ／ＢＬＹの関係は、図１０のように示される。図１０は、インデックスとＣＴＵ内８ｘ８ブロックの位置を示す図である。このインデックスの４、２、０ｂｉｔ目を抜きだし並べるとＣＴＵ内での８ｘ８ブロックの水平位置となり、５、３、１ビット目を抜きだし並べるとＣＴＵ内での８ｘ８ブロックの垂直位置となる。このようにすることで、容易にインデックスの値からＣＴＵ内での８ｘ８ブロックの座標を求めることができる。さらにＴＡＢＸ／ＴＡＢＹで表される水平前方／垂直前方のりしろサイズは、サブペルフィルタリングや縮小画像生成時のフィルタリングのために必要なのりしろの大きさであり、各々のフィルタリングにより決められている。
【００４７】
ところで、内部メモリ１４の容量を削減するために、後述する内部メモリデータの更新は、現在処理しているＣＴＵ座標から特定される探索部３−０〜Ｎが探索領域として使用しない領域に対して実施される。ただしマージ判定時は過去の情報が使われるなどするため、非常に大きな領域から必要とする画像ブロックデータを取得する場合がある。このため、本来更新前のデータを取得しなければならないのに、更新されたのちのデータを取得する可能性がある。加えて、未書込み領域のデータを取得する可能性もある。これらは、予測画像のドリフトを生じさせ、映像品質を大きく劣化させる。
【００４８】
そこで、現在処理しているＣＴＵの座標からの水平座標と垂直座標により指定された領域をミスヒット領域として判定し、マージ判定を行う探索部３−０〜Ｎに当該領域のデータが存在しないことを伝える。例えば、図１１に示す様に、データの書込みにより更新されていく書込み制限ＬＩＭＸ（水平）／ＬＩＭＹ（垂直）により指定される書込み（更新）許可領域のデータを読み出す場合には、ミスヒット信号を探索部３−０〜Ｎに伝え、当該領域を用いない様にすることを伝える。図１１は、ミスヒット判定を示す説明図である。
【００４９】
内部メモリ１４から読み出されたデータである画像ブロックデータは、自探索部参照画像読出制御部１２−０〜Ｎに関係するタイムスロット番号でありかつ、データが有効な場合に、データ出力処理部１２２のレジスタ１２２２に一時的に蓄えられる。その後、探索部３−０〜Ｎと探索部参照画像読出制御部１２−０〜Ｎとの間のデータ幅で、蓄えられたレジスタの値を時分割で送信する。例えば、読み出された３２ｘ１６ｐｉｘｅｌの値が、レジスタのアドレス０から５１１に蓄えられるが、探索部３−０〜Ｎが１０ｘ１０ｐｉｘｅｌ必要とする場合、最初のデータ送信で、アドレス０から９のデータを画素値が１０ｂｉｔと仮定する場合、１００ｂｉｔのデータ幅で送信する。
【００５０】
次に、アドレス３２から４１のデータを１００ｂｉｔのデータ幅で送信する。以下同様に、アドレス２８８から２９７のデータまでを１００ｂｉｔのデータ幅で送信する。この場合、計１０サイクルを用いてデータを探索部３−０〜Ｎに送信する。このデータ幅や転送に使用するサイクル数は、データ幅変更部１２２１によって探索部３−０〜Ｎが求めるデータ供給速度に合わせて設定される。もちろん、時分割にデータを送信するだけでなく、アドレス０〜９（第一ライン目）と３２〜４１（第二ライン目）を２００ｂｉｔ幅で一度に読出し、計５サイクルで読み出すといった、様々な構成をとることも可能である。上記データが送信されている期間、探索部３−０〜Ｎに対してデータが有効であることを示すデータ有効信号を通知する。
【００５１】
（参照画像書込制御部）
参照画像書込制御部１５は、映像符号化処理の進行に合わせ必要となる参照画像データを外部メモリ４から読み出す。図１２は、図１に示す参照画像書込制御部１５の詳細な構成を示すブロック図である。参照画像書込制御部１５は、図１２に示すように、制御部１５１と制御部１５１からの指示によりメモリバスを介して外部メモリ４からデータを読み出す読出し部１５２と読み出したデータを内部バッファに書込む前に一時的に蓄積する２ビット用バッファ（ＦＩＦＯで処理するもの）１５３とバッファ１５４とを備える。
【００５２】
制御部１５１では、指定された書込み（更新）制限座標までの参照画像データを外部メモリ４より読み出し、内部メモリ１４に書込むように読出し部１５２、２ｂｉｔ用バッファ１５３、バッファ１５４を制御する。内部メモリ１４への書込み要求は、探索部参照画像読出制御部１２−０〜Ｎと同様、メモリ出力データ選択部１３に入力され、全体制御部１１から送信されるタイムスロット番号が参照画像書込制御部１５に割り当てられた値の時にデータは内部メモリ１４に書込まれる。タイムスロット信号は、参照画像書込制御部１５にも入力されており、参照画像書込制御部１５に割り当てられたタイムスロットを得た時、バッファ１５４に一時的に蓄えられているデータを出力する。そして、次のデータ出力に備え、書込みアドレスやデータを更新する。
【００５３】
外部メモリ４へのアクセスは、外部メモリ４の特性に合わせ効率的に読み出すことができる画像ブロックサイズでデータを読み出す。例えば、外部メモリ４としてＤＤＲ３（Double-Data-Rate3）を用いた場合、できるだけ長く連続したアドレスで読み出した方が効率的である。しかしながら、画像データの場合、読出し行が変わるたびに連続アドレスでのアクセスができなくなる。そこで、ＤＤＲ３の機能であるバンクインタリーブ機能を利用する。バンクインタリーブは、ＤＤＲ３内の異なるメモリバンクを同時にアクティブにしておき、データを読み出すことで、バンクを跨り読出しアドレスが不連続になったとしても、内部的に読出しメモリバンクを切り替えるので、不連続アドレスであっても連続してデータを読み出すことが可能になる。
【００５４】
この特性を利用することで、図１３に示すように２０４８ｐｉｘｅｌ分のデータの外部メモリ４からの読出しは連続的に行われ、転送に伴うオーバヘッドを大きく削減することができる。この読出し図は、ＤＤＲ３メモリのデータ幅を４Ｂｙｔｅ（３２ｂｉｔ）としている。ＤＤＲ３は一度のアクセスで、８回バースト転送が可能なので、１回のバーストで３２Ｂｙｔｅ（４Ｂｙｔｅｘ８回）読みだされ、それを連続して４回実行し、計１２８Ｂｙｔｅのデータを読み出す。
【００５５】
例えば、図１４に示すように、１６ｘ１６画素のブロック単位にスキャン順にＤＤＲ３に格納されるとする場合、上記１２８Ｂｙｔｅの読出しで、１６ｘ８画素の画像データを読み出したことになる。この１６ｘ８画素の読出しは、計１６回行われることになる。ただし、画像データは、１６ｘ１６画素ブロック単位にＤＤＲ３に書込まれているので、１６ｘ８画素の読出しは、連続して読み出される必要が有り（図１３でいうと、８ビットデータ読出し時、Ｂａｎｋ０が２回よばれている）結局、１６ｘ１６画素の読出しを８回行うことになる。
【００５６】
ところで、１画素が８ｂｉｔ（１Ｂｙｔｅ）の場合、外部メモリより読み出されたデータは直接バッファに蓄えられるが、１画素が１０ｂｉｔの場合で、例えば、図１４に示すように、画素データが８ｂｉｔと２ｂｉｔとに分けて格納されている場合、図１３に示すように４回の５１２Ｂｙｔｅバースト転送に続く５１２Ｂｙｔｅのバースト転送で２ｂｉｔ分が転送されてくる。このため、一時的に２ｂｉｔ用バッファ１５３にデータを蓄積し、制御部１５１からの指示により、先に転送されバッファ１５４に格納されている８ｂｉｔデータに２ｂｉｔデータを結合し、１０ｂｉｔデータとしてバッファ１５４に蓄積する。あるいは、先に２ｂｉｔデータを読み出し、一時的に２ｂｉｔ用バッファ１５３にデータを蓄積し、その後読み出される８ｂｉｔと合わせて１０ｂｉｔデータとして出力することも考えられる。この外部メモリ４からのデータの読出しは、符号化処理の進行に応じて指定される更新書込み制限座標に至るまで実行される。
【００５７】
ところで、外部メモリデータの内部メモリ１４への転送は符号化中常に一定の性能が求められているわけではなく、例えば、符号化開始前にはできる限り短期間に内部メモリ１４全体にデータを書き込む必要があり、符号化中は符号化処理の進行に合わせたデータの更新が求められる。そのため、ピクチャ先頭処理においてできるだけ早く、内部メモリ１４に外部メモリ４のデータを書き込むためには、すべてのタイムスロットを書込みに与えるように制御する必要がある。
【００５８】
また、階層探索を行う場合、探索開始前に探索部３−０〜Ｎが必要とする探索範囲全体のデータを読み出す必要があるため、タイムスロットの半分を書込み、半分を読出しに割り当てることで、外部メモリ４から内部メモリ１４への画像データの書込みと並行して最初の探索部３−０〜Ｎに対して画像データを送信する。最初の探索部３−０〜Ｎが一度読み出せば後は、符号化処理の進行に合わせて外部メモリの画像データを内部メモリに書込むだけなので、タイムスロットの一つを用いて書込み他のタイムスロットとは複数の探索部３−０〜Ｎからの読出し用に割り当てる。このように制御することで、符号化処理の進行に合わせて必要となる外部メモリデータを読み出し内部メモリ１４に書込む処理性能を調整する。これは、全体制御部１１で説明した動作モード指示により切り替えることができる。
【００５９】
さらに、外部メモリ４は参照画像バッファのみが使用するのではなく、他の機能モジュールも使用するため、参照画像バッファが瞬間的に外部メモリバンドを占有し続けることを避け、できる限り外部メモリ４へのアクセスを平滑化する必要が有る。図１５に本課題を解決するための平滑化の制御動作を示す。平滑化制御部は、図１５（ａ）に示すような入出力を持ち、図１２に示す読出し部１５２と制御部の間の要求信号と完了フラグの間に位置づけられる。本平滑化制御部はステートマシン（図１５（ｃ））と連続するリクエストの間隔を調整するためのｗａｉｔ＿ｃｎｔで特徴づけられる。図１５（ｂ）に平滑化制御部の動作を示す。ｗａｉｔ＿ｃｎｔは正の場合ダウンカウントを行い、０に到達した時点でダウンカウントを停止する。
【００６０】
ｗａｉｔ＿ｃｎｔへの値のロードは、ｗａｉｔ＿ｃｎｔが０かつステートマシンがＩｄｌｅであり、かつ外部メモリへデータの読出し要求を受け取った場合である。また、ステートマシンは、Ｉｄｌｅとｗａｉｔ状態があり、一度読出し要求を行うと、ｗａｉｔ状態に移り外部メモリ４の読出し完了フラグを受信するまで次の読出し要求を受けられるＩｄｌｅに戻らない。外部メモリ４への読出し要求は、状態がｗａｉｔ状態となり、それを引き起こした読出し要求（Ｒｅｑ＿ｉｎ）が１の時に出力される。これにより、どのように外部メモリ読出し要求がなされたとしても、最低ｉｎｉｔ＿ｃｎｔの間隔をあけて外部メモリアクセスがなされるようになり、外部メモリアクセスを平滑化することが可能となる。
【００６１】
なお、全体制御部１１からの指示により、内部メモリ１４のアクセス帯域のすべてを用いて外部メモリ４から読み出したデータを内部メモリ１４に書き込む、あるいは符号化処理の進行に合わせて内部メモリアクセス帯域の半分を用いる、符号化処理の進行に合わせて必要な領域のみ更新するといった書込み速度の調整により、探索部ごとに異なるアクセス特性に合わせるようにしてもよい。
【００６２】
＜第２の実施形態＞
次に、本発明の第２の実施形態による参照画像バッファを説明する。動き探索は、参照画面内だけでなく参照画面外のデータを必要とすることがある。簡単には、図１６に示す様に、画面外のデータ部には画面端と同じ値を画面端のデータをとして水平垂直方向にコピーし、画面外データも含んだ形で内部メモリに読み込んでおくことが考えられる、また、探索範囲を拡大する目的で使用されるエリアホッピング適用時には、画面内データが指定されたオフセット位置に書込まれるため、ますます内部メモリの有効データ領域が少なくなる場合が有る（図１７参照）。
【００６３】
さらに、当該参照画像メモリを有するＬＳＩが扱う事の出来る映像サイズを超える映像を分割し、複数のＬＳＩを連携させて符号化する場合、各々のＬＳＩが外部メモリに格納しているデータを使って探索することで画面分割境界での映像品質劣化を減らす必要が有る。これは、隣接するＬＳＩが持つデータの一部をコピーし共有することで分割境界を越えた探索が可能となることで、映像品質劣化を減らすことが出来る（図１８参照）。
【００６４】
このように、通常時とエリアホッピング時に画面外データ生成が必要であり、加えて、エリアホッピング時と隣接ＬＳＩの参照画像データの共有のためにアドレス生成におけるオフセット処理機能が必要となる。これを実現するメモリ出力データ選択部構成を図１９に示す。図１９は第１の実施形態と同様、タイムスロット信号により複数の動き探索部からのデータ読出しを選択するセレクタ、動き探索部からの読出し画像ブロック左上の水平／垂直座標から画像ブロックデータを内部メモリから読み出すための行・列アドレスに変換する行アドレス変換部、列アドレス変換部、変換された行・列アドレスから内部メモリアドレスを生成するアドレス生成部、垂直方向６４０ライン分の参照画像データを蓄積する内部メモリ、内部メモリから読み出されたデータを水平方向に並べ替える８画素単位並べ替え部と１画素単位並べ替え部、そして、垂直方向にデータを並べ替えるライン単位並べ替え部からなる。
【００６５】
第１の実施形態に対して追加機能を持つ行アドレス変換部、列アドレス変換部、８画素単位並べ替え部、そして、ライン単位並べ替え部について説明する。行アドレス変換部の内、Ｎライン目にあたる行アドレス変換部１３１の構成を図２０に示す。行アドレス変換部１３１は、垂直座標と垂直方向オフセット値とを加算する加算部１３２、垂直方向オフセット値と指定されたラインからのオフセットであるＮを加算する加算部１３３、当該ラインが上画面外か下画面外か上画面端値や下画面端値と比較し判定する上画面外判定部１３４、下画面外判定部１３５、上画面端クリップアドレス選択信号と下画面端クリップアドレス選択信号により、上画面クリップアドレス値Ｎ、下画面クリップアドレス値Ｎ、オフセット値などが加算された行アドレスのいずれかを選択する選択器１３６、内部メモリの蓄積行数である６４０ラインでアドレスを折り返すための剰余計算機１３７からなる。
【００６６】
上画面外判定部１３４は、オフセットされた垂直座標が上画面端値未満のとき１を出力し、それ以外では０を出力する。下画面外判定部１３５は、オフセットされた垂直座標が下画面端値以上の時１を出力し、それ以外では、０を出力する。選択器１３６は、上画面端クリップアドレス選択信号が１の時、上画面端クリップアドレス値Ｎを選択し、下画面端クリップアドレス選択信号が１の時、下画面端クリップアドレス値Ｎを選択し、それ以外の場合、オフセットされた垂直座標を選択する。
【００６７】
上画面端値や下画面端値、垂直方向オフセット値、上画面端クリップアドレス値Ｎ、下画面端クリップアドレス値Ｎは、レジスタ等の記憶素子に設定され、取り扱う映像に合わせて柔軟に設定できるようにしている。例えば、３８６０ｘ２１６０の映像を符号化する場合には、上画面端値は０、下画面端値は２１６０が設定される。また複数ＬＳＩとの連携に伴い必要となる参照画像データのコピー時のＬＳＩ１を考え、網掛け部を１２８ライン、もともとのＬＳＩ１の参照画像データが１０８８ラインと仮定すると、オフセット値は１２８、上画面端値は０、下画面端は１３４４となる。
【００６８】
当該行アドレス変換部１３１は、読出し画像ブロックのライン数存在し、その他ライン数を１６とした場合、Ｎ＝０〜１５の上画面外判定結果Ｎすべてが画面外と判定される場合、読み出される画像ブロックの中に画面端データが存在しないことになるので、その場合、読出しアドレスをクリップする。そのため、上画面端クリップアドレス選択信号は、Ｎ＝０〜１５の上画面外判定結果が全て１であった場合、１として信号処理され、読出し行アドレスを上画面端クリップアドレス値Ｎを選択出力する。同様に下画面端クリップアドレス選択信号ＮがＮ＝０〜１５で全て１で有る場合、下画面端クリップアドレス選択信号が１になるように信号処理され、下画面端クリップアドレス値が選択出力される。上画面端クリップアドレス値Ｎは、上画面クリップアドレス値０の時に上画面端に合わせるよう設定し、上画面クリップアドレス値１は、上画面端＋１、．．．、上画面クリップアドレス１５は上画面端＋１５とする。これにより、読出し画像ブロックが参照画像の画面外であったとしても画面外処理に必要な画面端画素は読出し画像ブロック内に含まれるようになる。
【００６９】
同様に列アドレス変換部Ｍの構成を図２１に示す。ここで説明する列アドレス変換部１４１は、図１９に示す様に１５個のメモリグループで共通的に使用する形の場合のものである。列アドレス変換部１４１は、左画面外判定部１４２、右画面外判定部１４３、読出し要求される水平座標に水平方向オフセット値を加算する加算部１４４と扱う列アドレスにより決められるオフセットを加算する加算部１４５、左画面端クリップアドレス選択信号と右画面端クリップアドレス選択信号により、オフセット加算された水平座標や左画面端クリップアドレス値Ｍ、右画面端クリップアドレス値Ｍを選択し出力する選択器１４６と、３２画素境界でない列アドレスが指定されるときに、８画素単位のメモリアドレスに変換する加算部１４７と除算器１４８とを有している。
【００７０】
左画面外判定部１４２および、右画面外判定部１４３は、左画面端値および右画面端値とオフセット加算された水平座標を比較し、オフセット加算された水平座標が左画面端値未満の場合、左画面外判定結果Ｍを１とし、同様にオフセット加算された水平座標が右画面端値以上の場合、右画面外判定結果Ｍを１として当該列アドレスが画面外であることを示す。すべての左画面外判定結果０〜３が１すなわち読出し画像ブロックのすべてが左画面外の場合、左画面端クリップアドレス選択信号を１にするように信号処理を行い、左画面端クリップアドレス値Ｍの値を選択出力するようにし、読出し画像ブロック内に左画面端画素が含まれるように列アドレスを変換する。
【００７１】
同様に、すべての右画面外判定結果０〜３が１すなわち読出し画像ブロックのすべてが右画面外の場合、右画面端クリップアドレス選択信号を１にするように信号処理を行い、右画面端クリップアドレス値Ｍの値を選択出力するようにし、読出し画像ブロック内に右画面端画素が含まれるように列アドレスを出力する。
【００７２】
８画素単位の並べ替え部の一例として、メモリ＃０−＃３用の８画素単位並べ替え部の構成を図２２に示す。８画素単位の並べ替え部は、８画素分の４つの出力毎に一つのモジュールからなり、入力される内部メモリ出力を各モジュールが選択することにより並べ替えを行う。各モジュールは、左画面端画素を選択するｓｅｌ０、右側画面端画素を選択するｓｅｌ１、当該モジュールの出力として選択する入力データを選択するｓｅｌ２、左画面外判定が１であった時、ｓｅｌ０の出力を選択し、右画面外の時ｓｅｌ１の出力を選択し、画面内の時ｓｅｌ２の出力を選択するｓｅｌ３から構成される。ｓｅｌ０やｓｅｌ１の入力は一画素分であるが、出力は８画素に展開（コピー）したデータを出力する。
【００７３】
読出し要求画像ブロックの左上水平座標が、３２ｎ〜３２ｎ＋７、３２ｎ＋８〜３２ｎ＋１５、３２ｎ＋１６〜３２ｎ＋２３、３２ｎ＋２４〜３２ｎ＋３１の場合、図２２の［８：１５］画素のデータは、内部メモリ出力の［８：１５］、［１６：２３］、［２４；３１］、［０：７］を選択する必要があるので、水平座標の３２の剰余（％３２）を求め、８で割る（／８）ことで、ｓｅｌ２の選択信号を作り、０、１、２、３の時それぞれ、［８：１５］、［１６：２３］、［２４；３１］、［０：７］を選択することで、８画素単位の並べ替えを行う。
【００７４】
左画面外の場合、左画面端の画素を得る必要が有る。左画面端クリップアドレスが左画面端なので、読出し要求画像ブロックの考え方と同様、左画面端クリップアドレスが、３２ｎ、３２ｎ＋８、３２ｎ＋１６、３２ｎ＋２４の時、［０］、［８］、［１６］、［２４］の位置の画素が左画面端となるので、左画面端クリップアドレスの３２の剰余を８で除することで得られる選択信号により、左画面端の画素値を取得する。
【００７５】
右画面外の場合、右画面端の画素を得る必要が有る。右画面端クリップアドレスが、右画面端＋１なので、左画面外の考え方と同様右画面端クリップアドレスが、３２ｎ、３２ｎ＋８、３２ｎ＋１６、３２ｎ＋２４の時、［３１］、［７］、［１５］、［２３］の位置の画素が右画面端となるので、右画面端クリップアドレスの３２の剰余を８で除することで得られる選択信号により、右画面端の画素値を取得する。
【００７６】
ｌｉｎｅ＃１用のライン単位並べ替え部の構成を図２３に示す。ライン単位並べ替え部は、上画面端画素ラインを選択するｓｅｌ０、下画面端画素ラインを選択するｓｅｌ１、ライン単位の並べ替えのため、当該ライン単位並べ替え部に対応する（図２３はｌｉｎｅ＃１用のため、３２ｘ１６画素ブロックの２行目の画素ラインを選択する）画素ラインを選択するｓｅｌ２、上画面外判定結果が１の時選択されたｓｅｌ０出力の上画面端ラインを出力し、下画面外判定結果が１の時選択されたｓｅｌ１出力の下画面端ラインを出力し、画面内の場合、ｓｅｌ２で選択された画素ラインを出力するｓｅｌ３からなる。
【００７７】
上画面端クリップアドレスが１６Ｋ＋Ｌ（Ｌ＝０〜１５）の場合、上画面端画素ラインは内部メモリ＃０−＃３〜＃６０−＃６３に対応する。そのため、上画面端クリップアドレスの１６の剰余を選択信号として、Ｌ＝０、１、２、．．．、１５の場合、水平方向の並べ替え後の内部メモリ出力の＃０−＃３、＃４−＃７、＃８−＃１１、．．．、＃６０−＃６３が３２ｘ１６画素ブロックの上端ラインになるので、＃０−＃３、＃４−＃７、＃８−＃１１、．．．、＃６０−＃６３を選択しｓｅｌ０の出力とする。
【００７８】
下画面端クリップアドレスが、１６Ｋ＋Ｐ（Ｐ＝０〜１５）の場合、下画面端画素ラインは内部メモリ＃６０−＃６３〜＃５６−＃５９に対応する。そのため、下画面端クリップアドレスの１６の剰余を選択信号としてＰ＝０、１、２、．．．、１５の場合、水平方向の並べ替え後の内部メモリ出力の＃６０−＃６３、＃０−＃３、＃４−＃７、．．．、＃５６−＃５９が３２ｘ１６画素ブロックの下端ラインになるので、＃６０−＃６３、＃０−＃３、＃４−＃７、．．．、＃５６−＃５９を選択しｓｅｌ１の出力とする。
【００７９】
画面内の場合、探索部から要求される画像ブロックの垂直座標が１６Ｋ＋Ｑ（Ｑ＝０〜１５）の場合、水平方向の並び替え後の３２ｘ１６画像ブロックのＱライン目の位置が画像ブロックの上画面端ラインである。図２３はｌｉｎｅ＃１の画素ラインを出力する必要が有るので、Ｑ＋１ライン目（１６ラインで折り返す）が出力するべき画素ラインである。そのため、垂直座標の１６の剰余Ｑを選択信号とし、Ｑ＝０、１、２、．．．、１５  の時、水平方向の並び替えが完了した内部メモリ出力の＃４−＃７、＃８−＃１１、＃１２−＃１５、．．．、＃０−＃３を選択しｓｅｌ２の出力とする。
【００８０】
このように、探索部参照画像読出し制御部から要求される垂直座標と水平座標から参照画像画面外判定を行い、要求される画像ブロック内に画面外領域が含まれる場合、前記メモリ出力データ選択部の内部メモリアクセス方法である、１サイクル読出しデータの中に、画面外データを生成するための境界データを含むように読出しアドレスをクリップし読み出したデータに変えて、境界データを出力することで、１サイクルアクセスを維持しながら画面外データ保持のためのメモリ量を削減することが可能となる。
【００８１】
以上説明したように、様々な読出し要求条件を持つ探索部に対して、高速に任意の座標の画像ブロックデータを供給するために、内部メモリからある座標間隔毎に１サイクルで必要となる画像ブロックデータを読み出し、探索範囲から外れた領域に対応する内部メモリに外部メモリからの画像ブロックデータを書き込み更新することで、内部メモリを有効に使用できる。
【００８２】
前述した実施形態における参照画像バッファの全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されるものであってもよい。
【００８３】
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
【産業上の利用可能性】
【００８４】
外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給することが不可欠な用途に適用できる。
【符号の説明】
【００８５】
１・・・参照画像バッファ、１１・・・全体制御部、１２−０〜Ｎ・・・探索部参照画像読出制御部、１３・・・メモリ出力データ選択部、１４・・・内部メモリ、１５・・・参照画像書込制御部、２・・・外部ホスト、３−０〜Ｎ・・・探索部、４・・・外部メモリ
【図１】
0006329521.tif 000002
【図２】
0006329521.tif 000003
【図３】
0006329521.tif 000004
【図４】
0006329521.tif 000005
【図５】
0006329521.tif 000006
【図６】
0006329521.tif 000007
【図７】
0006329521.tif 000008
【図８】
0006329521.tif 000009
【図９】
0006329521.tif 000010
【図１０】
0006329521.tif 000011
【図１１】
0006329521.tif 000012
【図１２】
0006329521.tif 000013
【図１３】
0006329521.tif 000014
【図１４】
0006329521.tif 000015
【図１５】
0006329521.tif 000016
【図１６】
0006329521.tif 000017
【図１７】
0006329521.tif 000018
【図１８】
0006329521.tif 000019
【図１９】
0006329521.tif 000020
【図２０】
0006329521.tif 000021
【図２１】
0006329521.tif 000022
【図２２】
0006329521.tif 000023
【図２３】
0006329521.tif 000024