JP2016201784A - 参照画像バッファ - Google Patents

参照画像バッファ Download PDF

Info

Publication number
JP2016201784A
JP2016201784A JP2015202420A JP2015202420A JP2016201784A JP 2016201784 A JP2016201784 A JP 2016201784A JP 2015202420 A JP2015202420 A JP 2015202420A JP 2015202420 A JP2015202420 A JP 2015202420A JP 2016201784 A JP2016201784 A JP 2016201784A
Authority
JP
Japan
Prior art keywords
reference image
data
memory
read
internal memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015202420A
Other languages
English (en)
Other versions
JP6329521B2 (ja
Inventor
享邦 西田
Takakuni Nishida
享邦 西田
隆之 大西
Takayuki Onishi
隆之 大西
裕江 岩崎
Hiroe Iwasaki
裕江 岩崎
充郎 池田
Mitsuro Ikeda
充郎 池田
淳 清水
Atsushi Shimizu
淳 清水
卓 佐野
Taku Sano
卓 佐野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JP2016201784A publication Critical patent/JP2016201784A/ja
Application granted granted Critical
Publication of JP6329521B2 publication Critical patent/JP6329521B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Memory System (AREA)

Abstract

【課題】外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給する。【解決手段】外部メモリに記憶されている参照画像の参照画像データを一時的に記憶する内部メモリと、符号化処理の進行に合わせ必要となる参照画像データを外部メモリから読み出して内部メモリに書き込みを行う参照画像書込制御部と、符号化処理に使用される探索部からのデータ読出し要求に応じて、探索部が求める座標で示される範囲の参照画像データを内部メモリから読出して送信する探索部参照画像読出制御部と、複数の探索部参照画像読出制御部と参照画像書込制御部とからの内部メモリへのアクセスを調停し、探索部参照画像読出制御部から出力された座標値をタイムスロット信号により選択し、探索部参照画像読出制御部に対して選択された内部メモリから読み出された参照画像データを送信するメモリ出力データ選択部とを備える。【選択図】図1

Description

本発明は、映像符号化LSI(Large Scale Integration)におけるフレーム間符号化を行う場合に必要となる参照画像バッファに関する。
H.265/HEVCは従来の符号化方式であるH.264/AVC(例えば、非特許文献1参照)の約2倍の符号化効率を達成する。これは、様々な画像サイズで符号化を行い、もっとも符号化効率の良い画像サイズを選択する階層符号化によるところが大きい。階層符号化では、入力画像とこれまでに符号化された画像である参照画像との画素単位での差分累積値等が最も小さくなる座標を様々なサイズで探索する。このため、何度も同じ画像データが使われ、非常に多くのデータを必要とする。また、参照画像データサイズは非常に大きくLSIの内部メモリに格納することはできず、外部メモリに格納する必要がある。外部メモリのインタフェース速度には制限があるため、LSI内部にバッファを設け、一時的にデータを保持し探索モジュールに対してデータを供給することが考えられる。
しかしながら、検索モジュールは、任意の座標の様々なサイズの画像ブロックを必要とするため、データ供給効率が低下する。これは、連続的なメモリアドレスでデータにアクセスできないためである。例えば、画像ブロックを読み出す場合、横座標方向の画像データは連続的に読み出すことができるが、次のラインを読み出すために縦方向に読出し座標が変化した時には、新たに読出しアドレスを変更してから連続アドレスデータを読み出す必要が有るからである。連続アドレスであれば、読出しデータ幅を広くして一度に画像データを読み出すことができるが、読出し座標が縦方向に対しては一度に画像データを読み出せないためである。8x8画素の画像ブロックの場合、最低8回の読出しを行う必要がある。
本発明は、このような事情に顧みてなされたもので、外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給することができる参照画像バッファを提供することを目的とする。
本発明の一態様は、映像符号化処理を行う際に、外部メモリに記憶された参照画像を一時記憶する参照画像バッファであって、前記参照画像バッファ全体の動作を統括して制御するタイムスロット信号を出力する全体制御部と、前記映像符号化処理に必要となる前記外部メモリに記憶されている前記参照画像の参照画像データを一時的に記憶する内部メモリと、前記映像符号化処理の進行に合わせ必要となる前記参照画像データを前記外部メモリから読み出して前記内部メモリに書き込みを行う参照画像書込制御部と、前記映像符号化処理に使用される探索部からのデータ読出し要求に応じて、前記探索部が求める座標で示される範囲の前記参照画像データを前記内部メモリから読出して送信する探索部参照画像読出制御部と、複数の前記探索部参照画像読出制御部と前記参照画像書込制御部とからの前記内部メモリへのアクセスを調停し、前記探索部参照画像読出制御部から出力された座標値を前記タイムスロット信号により選択し、前記探索部参照画像読出制御部に対して選択された前記内部メモリから読み出された前記参照画像データを送信するメモリ出力データ選択部とを備え、前記内部メモリは、複数のメモリが並列に接続されて複数のグループを形成し、前記参照画像データが、座標の一行分のデータ毎に各々の前記グループのメモリに配置された参照画像バッファである。
本発明の一態様は、前記参照画像バッファであって、前記メモリ出力データ選択部は、前記座標値に基づき読み出すべき前記参照画像データのアドレスを生成し、該アドレスで示される前記参照画像データを読み出し、読み出した前記参照画像データがブロックデータとなるようにデータの並べ替えを行うことにより、前記参照画像データの特定ブロックを読み出す。
本発明の一態様は、前記参照画像バッファであって、前記探索部参照画像読出制御部は、前記探索部が必要とする画像データブロックの座標とサイズを求め、前記メモリ出力データ選択部に対し読出し要求を行い、得られた画像データから必要とするサイズの画像を切り出し、前記探索部に送信する。
本発明の一態様は、前記参照画像バッファであって、前記探索部参照画像読出制御部は、前記内部メモリのデータの更新位置を監視し、読み出すべき前記参照画像データの座標範囲が前記内部メモリのデータの更新された位置を含む場合、該参照画像データが無効であることを前記探索部に通知するミスヒット判定処理をさらに行う。
本発明の一態様は、前記参照画像バッファであって、前記参照画像書込制御部は、前記全体制御部からの指示により、内部メモリアクセス帯域のすべてを用いて前記外部メモリから読み出した前記参照画像データを前記内部メモリに書き込む、あるいは前記映像符号化処理の進行に合わせて前記内部メモリのアクセス帯域の半分を用いる、あるいは前記映像符号化処理の進行に合わせて必要な領域のみ更新するのいずれかを行うことによって書込み速度の調整し、前記探索部ごとに異なるアクセス特性に合わせる。
本発明の一態様は、前記参照画像バッファであって、前記参照画像書込制御部は、前記外部メモリのアクセスの間隔を制御し、アクセス間隔を短くすることで、短期間に前記内部メモリに前記参照画像データを蓄積する、あるいはアクセス間隔を広げ平均化することにより、前記外部メモリを共有する他のモジュールへの影響を平滑化する。
本発明の一態様は、前記参照画像バッファであって、前記メモリ出力データ選択部は、前記探索部参照画像読出し制御部から要求される垂直座標と水平座標から参照画像画面外判定を行い、要求される画像ブロック内に画面外領域が含まれる場合、前記メモリ出力データ選択部の内部メモリアクセス方法である1サイクル読出しデータの中に、画面外データを生成するための境界データを含むように読出しアドレスをクリップし読み出したデータに変えて、境界データを出力することで、1サイクルアクセスを維持しながら画面外データ保持のためのメモリ量を削減する。
本発明の一態様は、前記参照画像バッファであって、前記探索部参照画像読出し制御部は、前記探索部が必要とする画像データブロックの座標に再設定可能なオフセットを加えることで、参照画像メモリ空間の任意の点を基準点とするアクセスを可能とすることで、共有される隣接LSIが保持する参照画像データの読出し及び広範囲の探索を可能と知るエリアホッピング時のマッピングの参照画像データの読出しを制御可能とする
本発明によれば、外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給することができるという効果が得られる。
本発明の一実施形態による参照画像バッファの構成を示すブロック図である。 図1に示す全体制御部11の詳細な構成を示すブロック図である。 参照画像の構成と内部メモリ14の構成を示す説明図である。 参照画像データの配置を示す図である。 図1に示すメモリ出力データ選択部13と内部メモリ14の構成を示すブロック図である。 メモリ出力データ選択部13が内部メモリ14から画像ブロックを読み出す際の処理動作を示すフローチャートである。 メモリ出力データ選択部13の構成の一部を示す図である。 垂直座標yに対する各ライン単位並べ替え部が選択するメモリグループの関係を示す図である。 図1に示す探索部参照画像読出制御部12−0の詳細な構成を示すブロック図である。 インデックスとCTU内8x8ブロックの位置を示す図である。 ミスヒット判定を示す説明図である。 図1に示す参照画像書込制御部15の詳細な構成を示すブロック図である。 外部メモリデータの読み出し図である。 外部メモリデータの読み出し図である。 平滑化制御部の制御動作を示す説明図である。 通常時の画像データとメモリ領域を示す説明図である。 エリアホッピング時の画像データとメモリ領域を示す説明図である。 複数LSIとの連携に伴い必要となる参照画像データのコピーを示す説明図である。 メモリ出力データ選択部の構成を示す図である。 行アドレス変換部の構成を示す図である。 列アドレス変換部の構成を示す図である。 8画素単位並べ替え部の構成を示す図である。 ライン単位並べ替え部の構成を示す図である。
<第1の実施形態>
以下、図面を参照して、本発明の第1の実施形態による参照画像バッファを説明する。図1は同実施形態の構成を示すブロック図である。この図に示す参照画像バッファ1は、全体制御部11、N+1(Nは自然数)個の探索部参照画像読出し制御部12−0〜12−N、メモリ出力データ選択部13、内部メモリ14、参照画像書込制御部15を備える。参照画像バッファ1には、外部ホスト2、N+1個の探索部3−0〜3−N及び外部メモリ4が接続される。
次に、参照画像バッファを構成する各ブロックについて説明する。
(全体制御部)
全体制御部11は、内部メモリ14、探索部参照画像読出制御部12、参照画像書込制御部15、メモリ出力データ選択部13の動作を制御する。全体制御部11は、参照画像書込制御部15や探索部参照画像読出制御部12−0〜Nの状態、外部ホスト2からの指示により、時分割処理のためのタイムスロット信号を生成する。図2は、図1に示す全体制御部11の詳細な構成を示すブロック図である。
図2に示すように、全体制御部11は、外部ホスト2からの動作モード指示に基づきセレクタ2・1112によりすべて同じスロット信号(レジスタ0・1101の値)、セレクタ0・1107を用い指定された特定の信号(レジスタ1・1102、レジスタ2・1103の値が交互に出力したもの)、タイムスロット信号(レジスタ10・1104〜レジスタ10+N+1・1106の値を順に出力したもの)を選択する。レジスタ10・1104からレジスタ10+N+1・1106は、セレクタ1・1108をタイムスロットカウンタ1111の値で制御することで、選択される。
タイムスロットカウンタ1111は、現在の値をインクリメント1109によってインクリメントした値を格納し出力するが、タイムスロットの割り当て数でラップアラウンド1110によってラップアラウンドされる。例えば、タイムスロット数を3とした場合は、0、1、2、0、1、2、...、とインクリメントして次の値が3になる時、値を0にする。その出力は、セレクタ1・1108においてレジスタの選択に用いられる。例えば、タイムスロットカウンタ値が0の時はレジスタ10・1104の値、タイムスロットカウンタがN+1の時はレジスタ10+N+1・1106の値をセレクタ1・1108は選択して出力する。
またタイムスロットカウンタ1111は、探索部参照画像読出し制御部12−i(iは0〜Nのいずれか)からの要求があった場合、停止し、探索部参照画像読出し制御12−iからの読出し要求を優先し、要求受付後は、停止した値からタイムスロットカウンタ1111によるカウントを再開する。さらには、探索部参照画像読出し制御部12−iからの読出し要求が生じた場合、探索部参照画像読出制御部12−iに対応するタイムスロット信号(レジスタ3・1113の値)を、セレクタ3・1114の入力を選択することにより出力する。この探索部参照画像読出制御部12−iからの読出し要求時には、タイムスロットカウンタ1111を更新しない。すなわち、タイムスロット制御は一時的に停止させられ、探索部参照画像読出制御部12−0〜Nの要求を優先する。ここで、各レジスタの値はすべてを用意してもよいし、一部のレジスタの値は変更可能とし、その他のものは回路的に固定する構成をとることもできる。
(内部メモリ)
内部メモリ14は、映像符号化処理に必要となる外部メモリ4に蓄積されている参照画像データを一時的に蓄積する。図3は、参照画像の構成と内部メモリ14の構成を示す説明図である。図4は、参照画像データの配置を示す図である。内部メモリ14は、参照画像(図3左図参照)の任意の場所の特定ブロックサイズのデータを一度に読み出すために、図3右図のような構成を有し、この構成を有する内部メモリ14に図4のように参照画像データを配置していく。横軸の任意の場所指定の粒度をApixel、画像ブロックの横軸方向のサイズをBpixel、画像ブロックの縦軸方向のサイズをCpixel、各画素のビット数をDbitとする。幅AxDbitのメモリをB/A個を一つのグループとして並列化し、そのグループをCグループ分集め、並列化する構成(メモリブロック)を内部メモリ14が有する。この構成により、任意の場所からの参照画像ブロックの読出しを一度にすることが可能となる。
A=8、B=32、C=16、D=10、参照画像バッファの最大格納サイズを8、192pixelx640pixelとした場合の参照画像イメージを図3左図に、内部メモリ14の構成とデータ配置を図3右図に示す。個別の内部メモリ14は画素値10bit、8画素分のデータを読み出すため幅80bitであり、これを64個のメモリブロックを並列化した形となる。各メモリは個別にアドレスを指定可能であり、本構成の場合、基本的には、#0、#4、...、#4N、...、#60と、#1、#5、...、#(4N+1)、...、#61と、#2、#6、...、#(4N+2)、...、#62と、#3、#7、...、#(4N+3)、...、#63はそれぞれ同じアドレスが指定される。
参照画像の1行目(Line#0)が#0、#1、#2、#3のメモリに格納され(図3右図のLine#0領域)、参照画像の2行目(Line#1)が#4、#5、#6、#7のメモリに格納され(図3右図のLine#1領域)、同様に3行目(Line#2)以降同様に格納されるようにデータ配置する。より具体的なデータ配置イメージを図4に示す。図4に示す内部メモリ14は、10bit、8画素に対応する80bitの幅を持ち、参照画像のLine#0の左から8画素分のデータを#0のメモリの0番地アドレス(10bit x 8pixel=80bitを1ワードとした時のワードアドレス)から格納する。次にLine#0の次の8pixel分が#1のメモリの0番地から格納される。#0から#3の0番地への書込みが終わった場合(32pixel分書込み後)、次のLine#0の8画素は、#0の1番地に書込まれる。Line#0については、これを繰り返す。同様に参照画像のLine#1の左から8画素分のデータを#4のメモリの0番地から格納し、次の8画素を#5の0番地から格納する。
画像ブロックの読出しは、指定された座標を左上とするブロックの画像データを読み出すことで行われる。水平座標xは、メモリ構成から決定される粒度で指定され、垂直座標yは任意の座標が指定される。例えば、図3に示すように(x,y)=(8,16)の座標を左上とするブロックの画像データを読み出す場合、先に記述した参照画像の座標と内部メモリのデータ配置の関係を用い、各内部メモリのアドレスを決定して画像データを1度に読み出す。
座標(8、16)から(31、16)のデータは、内部メモリの#1から#3のLine#16領域の先頭アドレスに格納されており、(32、16)から(39、16)のデータは、内部メモリ#0のLine#16領域の先頭から+1したアドレスに格納されている。同様にLine#17からLine#31の画素のx座標が8から31は、内部メモリ#(4N+1)、#(4N+2)、#(4N+3)のそれぞれのLine#の領域に格納されており、x座標が32から39の画素データは、内部メモリの#4NのそれぞれのLine#領域の次のアドレスに格納される。
そのため、本例の場合、#4Nのメモリからは、それぞれのLine#領域の先頭から+1したアドレスを指定しデータを読み出し、#(4N+1)、#(4N+2)、#(4N+3)のメモリからは、それぞれのLine#領域の先頭アドレスを指定しデータを読み出す。これにより参照画像の左上が(8、16)、画像ブロックサイズが32x16pixelのデータを一度に読み出すことが可能となる。このように本メモリ構成をとることで、内部メモリの構成から決定される参照画像上での横軸の精度での任意の座標のデータを一度に読み出すことが可能となる。本構成は、横軸方向の精度を8画素としたが8画素のみに適用できるのではなく、例えば、内部メモリの構成を10bitx4画素=40bit構成にすることで、4画素精度で水平座標を任意に指定することが可能になる。
また、読み出す画像ブロックのサイズを32x16pixelの時を用いて説明したが、このサイズだけではなく、内部メモリ構成の一つのグループのメモリ数あるいは、メモリグループ毎のビット幅を変更することで、様々なサイズの画像ブロックを一度に読み出すことが可能になる。例えば、一つのメモリグループのビット幅を現在の10bitx32画素=320bitから640bitにし、そのグループ数を64/4=16から8にすることで、横64画素、縦8画素分の画像ブロックデータを一度に読み出すことが可能となる。
(メモリ出力データ選択部)
より詳しく画像ブロックの読出しを説明するため、メモリ出力データ選択部13と内部メモリ14の構成を図5に、メモリ出力データ選択部13が内部メモリ14から画像ブロックを読み出す際の処理動作を示すフローチャートを図6に示す。
メモリ出力データ選択部13は、複数の探索部参照画像読出制御部12−0〜Nと参照画像書込制御部15からの内部メモリ14へのアクセスを調停し、適切に探索部参照画像読出制御部12−0〜Nに内部メモリ14から読み出されたデータを送信する。
まず、メモリ出力データ選択部13は、各探索部参照画像読出制御部12−0〜Nから出力された座標値の中からタイムスロット信号と一致した探索部参照画像読出制御部12−0〜Nの座標値を選択する(ステップS1)。なお、タイムスロット信号は全体制御部11から入力されるものである。また、読み出し要求#k、垂直座標#k、水平座標#k(kは読み出し要求に対しては0〜N、垂直座標、水平座標については0〜N+1)は、ぞれぞれ探索部参照画像読出制御部12−0〜Nからの受け取る情報である。続いて、メモリ出力データ選択部13は、水平座標から行アドレス、垂直座標から列アドレスにそれぞれ変換する(ステップS2、S3)。
垂直座標から列アドレスに変換する前に参照画像バッファの縦画素数のモジュロ(除算により余りを求める)を取り、そのモジュロを用いて列アドレスに変換する。これは、参照画像バッファは参照画像のすべてを持つことは、メモリ容量的に困難であるため、探索に必要な容量のみ確保している。そのため、読み込んだ参照画像を参照画像バッファの縦サイズで折り返すことで、探索に必要となるメモリ容量を確保している。そのため、垂直座標から参照画像バッファの縦サイズのモジュロを列アドレスに変換する垂直座標として用いる。
水平座標をxとし、内部メモリ14の番号をXとした場合、内部メモリ14に対する4のモジュロ(X%4)が一致する内部メモリに対するアドレスは、同一になることは上記にすでに説明した。内部メモリ14のモジュロにより列アドレスは以下のように求められる。
X%4=0の場合、addrL=(x/8+3)/4
X%4=1の場合、addrL=(x/8+2)/4
X%4=2の場合、addrL=(x/8+1)/4
X%4=3の場合、addrL=(x/8+0)/4
ここで2のべき乗で除しているので、除算はシフト演算に置換えることも可能である。addrLは実際に内部メモリ14にアクセスするためのアドレスの下位8ビット分を表している。上位7ビットは、垂直座標yより求められる。参照画像バッファは、すべての参照画像データを格納しているわけではなく、探索部3−0〜Nが必要とする参照画像データのみを格納することで、メモリ容量の増加を抑えている。そのため、垂直座標はその参照画像バッファの縦方向のライン数により折り返される。例えば、参照画像バッファの縦方向つまりライン数が640ラインとすると、縦座標yからメモリアドレスを求めるためには、最初にyに対する640の余りを求める必要がある。そこで、Y=y%640として以降説明する。この場合、メモリアドレスの上位7bitは、以下のように求められる。
X/4=0の場合、addrH=(Y+15)/16
X/4=1の場合、addrH=(Y+14)/16
X/4=2の場合、addrH=(Y+13)/16

X/4=15の場合、addrH=(Y+0)/16
ここで、除算はシフトに置換えることも可能である。
次に、メモリ出力データ選択部13は、これら行アドレス変換と列アドレス変換を行い、結合してアドレス生成を行う(ステップS4)。すなわち、addrLは8bit、addrHは、7bitとしているので、内部メモリのデータを読み出すためのアドレスaddrは、
addr=addrH<<8|addrL
によって生成される。
ところで、変換された列アドレスaddrLは、メモリ番号を4で割った時の余りが同じ場合、同一の値になることから、図5のように各メモリグループ毎に列アドレス変換を行う必要はないので、共通化させることも可能である。図7に共通化させた場合のメモリ出力データ選択部13の構成の一部を示す。回路規模削減が必要な場合有効な手段である。
次に、メモリ出力データ選択部13は、先に示したアドレス指定にしたがい画像ブロックを読み出す(ステップS5)。読み出されたデータは、メモリグループ毎に最初に8画素単位に並べ替える(ステップS6)。8画素の並べ替えは、要求される水平座標を用いて行われる。各メモリグループのデータは、1ライン分のデータに相当し、32画素分のデータに相当する。
動作の説明をするに当たり、メモリグループ#0−#3の場合について説明する。各メモリ#0、#1、#2、#3は、それぞれ10bitの8画素分、計80bitのデータを出力する。それぞれの出力をD(#0)、D(#1)、D(#2)、D(#3)とすると、本データの並べ替えは以下のようになされる。
x%32=0〜7の場合、D(#0)、D(#1)、D(#2)、D(#3)
x%32=8〜15の場合、D(#1)、D(#2)、D(#3)、D(#0)
x%32=16〜23の場合、D(#2)、D(#3)、D(#0)、D(#1)
x%32=23〜31の場合、D(#3)、D(#0)、D(#1)、D(#2)
このように並べ替えることで、参照画像バッファから必要とされる画像ブロックのデータが8画素精度で水平方向に順に整列させられることになる。上記は、メモリグループ#0−#3の時のみを説明したが、他のメモリグループ#4−#7、...、#60−63に対しても同様な処理を行い、水平方向の整列を行う。
次に、メモリ出力データ選択部13は、1画素単位での並び替えにおいて、指定された水平座標が読み出される画像ブロックの左端に合わせる操作を行う(ステップS7)。先ほど同様水平座標がx、8画素単位で並び替えられた画素データをd[0]、d[1]、...、d[31]とすると、各メモリグループの画像データは、以下のように整列させられる。
x%8=0の場合、d[0]、d[1]、d[2]、d[3]、d[4]、d[5]、d[6]、d[7]、d[8]、...、d[31]
x%8=1の場合、d[1]、d[2]、d[3]、d[4]、d[5]、d[6]、d[7]、d[8]、...、d[31]、d[0]
x%8=2の場合、d[2]、d[3]、d[4]、d[5]、d[6]、d[7]、d[8]、...、d[31]、d[0]、d[1]
x%8=3の場合、d[3]、d[4]、d[5]、d[6]、d[7]、d[8]、...、d[31]、d[0]、d[1]、d[2]
x%8=4の場合、d[4]、d[5]、d[6]、d[7]、d[8]、...、d[31]、d[0]、d[1]、d[2]、d[3]
x%8=5の場合、d[5]、d[6]、d[7]、d[8]、...、d[31]、d[0]、d[1]、d[2]、d[3]、d[4]
x%8=6の場合、d[6]、d[7]、d[8]、...、d[31]、d[0]、d[1]、d[2]、d[3]、d[4]、d[5]
x%8=7の場合、d[7]、d[8]、...、d[31]、d[0]、d[1]、d[2]、d[3]、d[4]、d[5]、d[6]
これにより、画像データは1画素精度で画像ブロックの左端に揃えられた形になる。そして、メモリ出力データ選択部13は、計16個のメモリグループから出力された16個の32画素データを並べ替える(ステップS8)。並べ替えは、図5や図7に示すように、各々のライン単位並べ替え部によって実施され、各メモリグループからの計16個の出力の中から一つを選択することで実現する。その選択は、垂直座標yを用いて行われる。
図8に、垂直座標yに対する各ライン単位並べ替え部が選択するメモリグループの関係を示す。例えば、指定された画像ブロックの垂直座標が2である場合、各ライン単位並べ替え部0、1、2、...、15から出力されるメモリグループの出力は、G2、G3、G4、...、G1となる。
これらの操作により、探索部参照画像読出制御部12−0〜Nから要求された画像ブロックは、ライン単位並べ替え部0、1、...、15からの出力を順に読むことで、得ることができるようになる(ステップS9)。なお、ここでは説明を簡単にするため、特定の数字を使って説明してきたが、それに縛られるものではない。
(探索部参照画像読出制御部)
探索部参照画像読出制御部12−0〜Nは、映像符号化処理に使用される探索部3−0〜Nからのデータ読出し要求を受理し探索部3−0〜Nが求める座標および範囲の参照画像データを内部メモリ14から読出し送信する。図9は、図1に示す探索部参照画像読出制御部12−0の詳細な構成を示すブロック図である。ここでは、探索部参照画像読出制御部12−0の構成を説明するが、探索部参照画像読出制御部12−1〜Nそれぞれについても同様である。探索部参照画像読出制御部12−0は、図9に示すようにリード処理部121とデータ出力処理部122とを備え、各探索部3−0〜Nからの画像データの読出し要求に対して内部メモリ14の画像ブロックデータを転送する。
リード処理部121は、各探索部3−0〜Nからの要求信号、Coding Tree Unit(CTU)の座標、動きベクトル、CTU内の8x8画像ブロックの位置を表すインデックスおよび、前方向/後方向どちらの参照画像を用いるかの指定信号を受付け、内部メモリ14を読み出すタイミングで次の読出し要求を受け付けられることを示す受付完了信号を探索部3−0〜Nに出力する。ただし、連続した読出し要求を制限するために、必要に応じ受付完了信号を送信してから受信する読出し要求を指定した期間受け付けないようにする。
水平座標や垂直座標は、CTU座標、動きベクトル、そしてインデックス(8x8ブロック位置)から求める。CTUX:CTU水平座標、CTUY:CTU垂直座標、BLX:CTU内の8x8ブロック水平座標、BLY:CTU内の8x8ブロック垂直座標、そして、MVX:動きベクトルの水平方向、MVY:動きベクトルの垂直方向、TABX:水平前方のりしろサイズ、TABY:垂直前方のりしろサイズとする。この場合、メモリ内のデータを読み出すための座標(X、Y)は、
X=CTUXxCTUサイズ+BLXx8+MVX−TABX
Y=CTUYxCTUサイズ+BLYx8+MVY−TABY
となる。
インデックスとBLX/BLYの関係は、図10のように示される。図10は、インデックスとCTU内8x8ブロックの位置を示す図である。このインデックスの4、2、0bit目を抜きだし並べるとCTU内での8x8ブロックの水平位置となり、5、3、1ビット目を抜きだし並べるとCTU内での8x8ブロックの垂直位置となる。このようにすることで、容易にインデックスの値からCTU内での8x8ブロックの座標を求めることができる。さらにTABX/TABYで表される水平前方/垂直前方のりしろサイズは、サブペルフィルタリングや縮小画像生成時のフィルタリングのために必要なのりしろの大きさであり、各々のフィルタリングにより決められている。
ところで、内部メモリ14の容量を削減するために、後述する内部メモリデータの更新は、現在処理しているCTU座標から特定される探索部3−0〜Nが探索領域として使用しない領域に対して実施される。ただしマージ判定時は過去の情報が使われるなどするため、非常に大きな領域から必要とする画像ブロックデータを取得する場合がある。このため、本来更新前のデータを取得しなければならないのに、更新されたのちのデータを取得する可能性がある。加えて、未書込み領域のデータを取得する可能性もある。これらは、予測画像のドリフトを生じさせ、映像品質を大きく劣化させる。
そこで、現在処理しているCTUの座標からの水平座標と垂直座標により指定された領域をミスヒット領域として判定し、マージ判定を行う探索部3−0〜Nに当該領域のデータが存在しないことを伝える。例えば、図11に示す様に、データの書込みにより更新されていく書込み制限LIMX(水平)/LIMY(垂直)により指定される書込み(更新)許可領域のデータを読み出す場合には、ミスヒット信号を探索部3−0〜Nに伝え、当該領域を用いない様にすることを伝える。図11は、ミスヒット判定を示す説明図である。
内部メモリ14から読み出されたデータである画像ブロックデータは、自探索部参照画像読出制御部12−0〜Nに関係するタイムスロット番号でありかつ、データが有効な場合に、データ出力処理部122のレジスタ1222に一時的に蓄えられる。その後、探索部3−0〜Nと探索部参照画像読出制御部12−0〜Nとの間のデータ幅で、蓄えられたレジスタの値を時分割で送信する。例えば、読み出された32x16pixelの値が、レジスタのアドレス0から511に蓄えられるが、探索部3−0〜Nが10x10pixel必要とする場合、最初のデータ送信で、アドレス0から9のデータを画素値が10bitと仮定する場合、100bitのデータ幅で送信する。
次に、アドレス32から41のデータを100bitのデータ幅で送信する。以下同様に、アドレス288から297のデータまでを100bitのデータ幅で送信する。この場合、計10サイクルを用いてデータを探索部3−0〜Nに送信する。このデータ幅や転送に使用するサイクル数は、データ幅変更部1221によって探索部3−0〜Nが求めるデータ供給速度に合わせて設定される。もちろん、時分割にデータを送信するだけでなく、アドレス0〜9(第一ライン目)と32〜41(第二ライン目)を200bit幅で一度に読出し、計5サイクルで読み出すといった、様々な構成をとることも可能である。上記データが送信されている期間、探索部3−0〜Nに対してデータが有効であることを示すデータ有効信号を通知する。
(参照画像書込制御部)
参照画像書込制御部15は、映像符号化処理の進行に合わせ必要となる参照画像データを外部メモリ4から読み出す。図12は、図1に示す参照画像書込制御部15の詳細な構成を示すブロック図である。参照画像書込制御部15は、図12に示すように、制御部151と制御部151からの指示によりメモリバスを介して外部メモリ4からデータを読み出す読出し部152と読み出したデータを内部バッファに書込む前に一時的に蓄積する2ビット用バッファ(FIFOで処理するもの)153とバッファ154とを備える。
制御部151では、指定された書込み(更新)制限座標までの参照画像データを外部メモリ4より読み出し、内部メモリ14に書込むように読出し部152、2bit用バッファ153、バッファ154を制御する。内部メモリ14への書込み要求は、探索部参照画像読出制御部12−0〜Nと同様、メモリ出力データ選択部13に入力され、全体制御部11から送信されるタイムスロット番号が参照画像書込制御部15に割り当てられた値の時にデータは内部メモリ14に書込まれる。タイムスロット信号は、参照画像書込制御部15にも入力されており、参照画像書込制御部15に割り当てられたタイムスロットを得た時、バッファ154に一時的に蓄えられているデータを出力する。そして、次のデータ出力に備え、書込みアドレスやデータを更新する。
外部メモリ4へのアクセスは、外部メモリ4の特性に合わせ効率的に読み出すことができる画像ブロックサイズでデータを読み出す。例えば、外部メモリ4としてDDR3(Double-Data-Rate3)を用いた場合、できるだけ長く連続したアドレスで読み出した方が効率的である。しかしながら、画像データの場合、読出し行が変わるたびに連続アドレスでのアクセスができなくなる。そこで、DDR3の機能であるバンクインタリーブ機能を利用する。バンクインタリーブは、DDR3内の異なるメモリバンクを同時にアクティブにしておき、データを読み出すことで、バンクを跨り読出しアドレスが不連続になったとしても、内部的に読出しメモリバンクを切り替えるので、不連続アドレスであっても連続してデータを読み出すことが可能になる。
この特性を利用することで、図13に示すように2048pixel分のデータの外部メモリ4からの読出しは連続的に行われ、転送に伴うオーバヘッドを大きく削減することができる。この読出し図は、DDR3メモリのデータ幅を4Byte(32bit)としている。DDR3は一度のアクセスで、8回バースト転送が可能なので、1回のバーストで32Byte(4Bytex8回)読みだされ、それを連続して4回実行し、計128Byteのデータを読み出す。
例えば、図14に示すように、16x16画素のブロック単位にスキャン順にDDR3に格納されるとする場合、上記128Byteの読出しで、16x8画素の画像データを読み出したことになる。この16x8画素の読出しは、計16回行われることになる。ただし、画像データは、16x16画素ブロック単位にDDR3に書込まれているので、16x8画素の読出しは、連続して読み出される必要が有り(図13でいうと、8ビットデータ読出し時、Bank0が2回よばれている)結局、16x16画素の読出しを8回行うことになる。
ところで、1画素が8bit(1Byte)の場合、外部メモリより読み出されたデータは直接バッファに蓄えられるが、1画素が10bitの場合で、例えば、図14に示すように、画素データが8bitと2bitとに分けて格納されている場合、図13に示すように4回の512Byteバースト転送に続く512Byteのバースト転送で2bit分が転送されてくる。このため、一時的に2bit用バッファ153にデータを蓄積し、制御部151からの指示により、先に転送されバッファ154に格納されている8bitデータに2bitデータを結合し、10bitデータとしてバッファ154に蓄積する。あるいは、先に2bitデータを読み出し、一時的に2bit用バッファ153にデータを蓄積し、その後読み出される8bitと合わせて10bitデータとして出力することも考えられる。この外部メモリ4からのデータの読出しは、符号化処理の進行に応じて指定される更新書込み制限座標に至るまで実行される。
ところで、外部メモリデータの内部メモリ14への転送は符号化中常に一定の性能が求められているわけではなく、例えば、符号化開始前にはできる限り短期間に内部メモリ14全体にデータを書き込む必要があり、符号化中は符号化処理の進行に合わせたデータの更新が求められる。そのため、ピクチャ先頭処理においてできるだけ早く、内部メモリ14に外部メモリ4のデータを書き込むためには、すべてのタイムスロットを書込みに与えるように制御する必要がある。
また、階層探索を行う場合、探索開始前に探索部3−0〜Nが必要とする探索範囲全体のデータを読み出す必要があるため、タイムスロットの半分を書込み、半分を読出しに割り当てることで、外部メモリ4から内部メモリ14への画像データの書込みと並行して最初の探索部3−0〜Nに対して画像データを送信する。最初の探索部3−0〜Nが一度読み出せば後は、符号化処理の進行に合わせて外部メモリの画像データを内部メモリに書込むだけなので、タイムスロットの一つを用いて書込み他のタイムスロットとは複数の探索部3−0〜Nからの読出し用に割り当てる。このように制御することで、符号化処理の進行に合わせて必要となる外部メモリデータを読み出し内部メモリ14に書込む処理性能を調整する。これは、全体制御部11で説明した動作モード指示により切り替えることができる。
さらに、外部メモリ4は参照画像バッファのみが使用するのではなく、他の機能モジュールも使用するため、参照画像バッファが瞬間的に外部メモリバンドを占有し続けることを避け、できる限り外部メモリ4へのアクセスを平滑化する必要が有る。図15に本課題を解決するための平滑化の制御動作を示す。平滑化制御部は、図15(a)に示すような入出力を持ち、図12に示す読出し部152と制御部の間の要求信号と完了フラグの間に位置づけられる。本平滑化制御部はステートマシン(図15(c))と連続するリクエストの間隔を調整するためのwait_cntで特徴づけられる。図15(b)に平滑化制御部の動作を示す。wait_cntは正の場合ダウンカウントを行い、0に到達した時点でダウンカウントを停止する。
wait_cntへの値のロードは、wait_cntが0かつステートマシンがIdleであり、かつ外部メモリへデータの読出し要求を受け取った場合である。また、ステートマシンは、Idleとwait状態があり、一度読出し要求を行うと、wait状態に移り外部メモリ4の読出し完了フラグを受信するまで次の読出し要求を受けられるIdleに戻らない。外部メモリ4への読出し要求は、状態がwait状態となり、それを引き起こした読出し要求(Req_in)が1の時に出力される。これにより、どのように外部メモリ読出し要求がなされたとしても、最低init_cntの間隔をあけて外部メモリアクセスがなされるようになり、外部メモリアクセスを平滑化することが可能となる。
なお、全体制御部11からの指示により、内部メモリ14のアクセス帯域のすべてを用いて外部メモリ4から読み出したデータを内部メモリ14に書き込む、あるいは符号化処理の進行に合わせて内部メモリアクセス帯域の半分を用いる、符号化処理の進行に合わせて必要な領域のみ更新するといった書込み速度の調整により、探索部ごとに異なるアクセス特性に合わせるようにしてもよい。
<第2の実施形態>
次に、本発明の第2の実施形態による参照画像バッファを説明する。動き探索は、参照画面内だけでなく参照画面外のデータを必要とすることがある。簡単には、図16に示す様に、画面外のデータ部には画面端と同じ値を画面端のデータをとして水平垂直方向にコピーし、画面外データも含んだ形で内部メモリに読み込んでおくことが考えられる、また、探索範囲を拡大する目的で使用されるエリアホッピング適用時には、画面内データが指定されたオフセット位置に書込まれるため、ますます内部メモリの有効データ領域が少なくなる場合が有る(図17参照)。
さらに、当該参照画像メモリを有するLSIが扱う事の出来る映像サイズを超える映像を分割し、複数のLSIを連携させて符号化する場合、各々のLSIが外部メモリに格納しているデータを使って探索することで画面分割境界での映像品質劣化を減らす必要が有る。これは、隣接するLSIが持つデータの一部をコピーし共有することで分割境界を越えた探索が可能となることで、映像品質劣化を減らすことが出来る(図18参照)。
このように、通常時とエリアホッピング時に画面外データ生成が必要であり、加えて、エリアホッピング時と隣接LSIの参照画像データの共有のためにアドレス生成におけるオフセット処理機能が必要となる。これを実現するメモリ出力データ選択部構成を図19に示す。図19は第1の実施形態と同様、タイムスロット信号により複数の動き探索部からのデータ読出しを選択するセレクタ、動き探索部からの読出し画像ブロック左上の水平/垂直座標から画像ブロックデータを内部メモリから読み出すための行・列アドレスに変換する行アドレス変換部、列アドレス変換部、変換された行・列アドレスから内部メモリアドレスを生成するアドレス生成部、垂直方向640ライン分の参照画像データを蓄積する内部メモリ、内部メモリから読み出されたデータを水平方向に並べ替える8画素単位並べ替え部と1画素単位並べ替え部、そして、垂直方向にデータを並べ替えるライン単位並べ替え部からなる。
第1の実施形態に対して追加機能を持つ行アドレス変換部、列アドレス変換部、8画素単位並べ替え部、そして、ライン単位並べ替え部について説明する。行アドレス変換部の内、Nライン目にあたる行アドレス変換部131の構成を図20に示す。行アドレス変換部131は、垂直座標と垂直方向オフセット値とを加算する加算部132、垂直方向オフセット値と指定されたラインからのオフセットであるNを加算する加算部133、当該ラインが上画面外か下画面外か上画面端値や下画面端値と比較し判定する上画面外判定部134、下画面外判定部135、上画面端クリップアドレス選択信号と下画面端クリップアドレス選択信号により、上画面クリップアドレス値N、下画面クリップアドレス値N、オフセット値などが加算された行アドレスのいずれかを選択する選択器136、内部メモリの蓄積行数である640ラインでアドレスを折り返すための剰余計算機137からなる。
上画面外判定部134は、オフセットされた垂直座標が上画面端値未満のとき1を出力し、それ以外では0を出力する。下画面外判定部135は、オフセットされた垂直座標が下画面端値以上の時1を出力し、それ以外では、0を出力する。選択器136は、上画面端クリップアドレス選択信号が1の時、上画面端クリップアドレス値Nを選択し、下画面端クリップアドレス選択信号が1の時、下画面端クリップアドレス値Nを選択し、それ以外の場合、オフセットされた垂直座標を選択する。
上画面端値や下画面端値、垂直方向オフセット値、上画面端クリップアドレス値N、下画面端クリップアドレス値Nは、レジスタ等の記憶素子に設定され、取り扱う映像に合わせて柔軟に設定できるようにしている。例えば、3860x2160の映像を符号化する場合には、上画面端値は0、下画面端値は2160が設定される。また複数LSIとの連携に伴い必要となる参照画像データのコピー時のLSI1を考え、網掛け部を128ライン、もともとのLSI1の参照画像データが1088ラインと仮定すると、オフセット値は128、上画面端値は0、下画面端は1344となる。
当該行アドレス変換部131は、読出し画像ブロックのライン数存在し、その他ライン数を16とした場合、N=0〜15の上画面外判定結果Nすべてが画面外と判定される場合、読み出される画像ブロックの中に画面端データが存在しないことになるので、その場合、読出しアドレスをクリップする。そのため、上画面端クリップアドレス選択信号は、N=0〜15の上画面外判定結果が全て1であった場合、1として信号処理され、読出し行アドレスを上画面端クリップアドレス値Nを選択出力する。同様に下画面端クリップアドレス選択信号NがN=0〜15で全て1で有る場合、下画面端クリップアドレス選択信号が1になるように信号処理され、下画面端クリップアドレス値が選択出力される。上画面端クリップアドレス値Nは、上画面クリップアドレス値0の時に上画面端に合わせるよう設定し、上画面クリップアドレス値1は、上画面端+1、...、上画面クリップアドレス15は上画面端+15とする。これにより、読出し画像ブロックが参照画像の画面外であったとしても画面外処理に必要な画面端画素は読出し画像ブロック内に含まれるようになる。
同様に列アドレス変換部Mの構成を図21に示す。ここで説明する列アドレス変換部141は、図19に示す様に15個のメモリグループで共通的に使用する形の場合のものである。列アドレス変換部141は、左画面外判定部142、右画面外判定部143、読出し要求される水平座標に水平方向オフセット値を加算する加算部144と扱う列アドレスにより決められるオフセットを加算する加算部145、左画面端クリップアドレス選択信号と右画面端クリップアドレス選択信号により、オフセット加算された水平座標や左画面端クリップアドレス値M、右画面端クリップアドレス値Mを選択し出力する選択器146と、32画素境界でない列アドレスが指定されるときに、8画素単位のメモリアドレスに変換する加算部147と除算器148とを有している。
左画面外判定部142および、右画面外判定部143は、左画面端値および右画面端値とオフセット加算された水平座標を比較し、オフセット加算された水平座標が左画面端値未満の場合、左画面外判定結果Mを1とし、同様にオフセット加算された水平座標が右画面端値以上の場合、右画面外判定結果Mを1として当該列アドレスが画面外であることを示す。すべての左画面外判定結果0〜3が1すなわち読出し画像ブロックのすべてが左画面外の場合、左画面端クリップアドレス選択信号を1にするように信号処理を行い、左画面端クリップアドレス値Mの値を選択出力するようにし、読出し画像ブロック内に左画面端画素が含まれるように列アドレスを変換する。
同様に、すべての右画面外判定結果0〜3が1すなわち読出し画像ブロックのすべてが右画面外の場合、右画面端クリップアドレス選択信号を1にするように信号処理を行い、右画面端クリップアドレス値Mの値を選択出力するようにし、読出し画像ブロック内に右画面端画素が含まれるように列アドレスを出力する。
8画素単位の並べ替え部の一例として、メモリ#0−#3用の8画素単位並べ替え部の構成を図22に示す。8画素単位の並べ替え部は、8画素分の4つの出力毎に一つのモジュールからなり、入力される内部メモリ出力を各モジュールが選択することにより並べ替えを行う。各モジュールは、左画面端画素を選択するsel0、右側画面端画素を選択するsel1、当該モジュールの出力として選択する入力データを選択するsel2、左画面外判定が1であった時、sel0の出力を選択し、右画面外の時sel1の出力を選択し、画面内の時sel2の出力を選択するsel3から構成される。sel0やsel1の入力は一画素分であるが、出力は8画素に展開(コピー)したデータを出力する。
読出し要求画像ブロックの左上水平座標が、32n〜32n+7、32n+8〜32n+15、32n+16〜32n+23、32n+24〜32n+31の場合、図22の[8:15]画素のデータは、内部メモリ出力の[8:15]、[16:23]、[24;31]、[0:7]を選択する必要があるので、水平座標の32の剰余(%32)を求め、8で割る(/8)ことで、sel2の選択信号を作り、0、1、2、3の時それぞれ、[8:15]、[16:23]、[24;31]、[0:7]を選択することで、8画素単位の並べ替えを行う。
左画面外の場合、左画面端の画素を得る必要が有る。左画面端クリップアドレスが左画面端なので、読出し要求画像ブロックの考え方と同様、左画面端クリップアドレスが、32n、32n+8、32n+16、32n+24の時、[0]、[8]、[16]、[24]の位置の画素が左画面端となるので、左画面端クリップアドレスの32の剰余を8で除することで得られる選択信号により、左画面端の画素値を取得する。
右画面外の場合、右画面端の画素を得る必要が有る。右画面端クリップアドレスが、右画面端+1なので、左画面外の考え方と同様右画面端クリップアドレスが、32n、32n+8、32n+16、32n+24の時、[31]、[7]、[15]、[23]の位置の画素が右画面端となるので、右画面端クリップアドレスの32の剰余を8で除することで得られる選択信号により、右画面端の画素値を取得する。
line#1用のライン単位並べ替え部の構成を図23に示す。ライン単位並べ替え部は、上画面端画素ラインを選択するsel0、下画面端画素ラインを選択するsel1、ライン単位の並べ替えのため、当該ライン単位並べ替え部に対応する(図23はline#1用のため、32x16画素ブロックの2行目の画素ラインを選択する)画素ラインを選択するsel2、上画面外判定結果が1の時選択されたsel0出力の上画面端ラインを出力し、下画面外判定結果が1の時選択されたsel1出力の下画面端ラインを出力し、画面内の場合、sel2で選択された画素ラインを出力するsel3からなる。
上画面端クリップアドレスが16K+L(L=0〜15)の場合、上画面端画素ラインは内部メモリ#0−#3〜#60−#63に対応する。そのため、上画面端クリップアドレスの16の剰余を選択信号として、L=0、1、2、...、15の場合、水平方向の並べ替え後の内部メモリ出力の#0−#3、#4−#7、#8−#11、...、#60−#63が32x16画素ブロックの上端ラインになるので、#0−#3、#4−#7、#8−#11、...、#60−#63を選択しsel0の出力とする。
下画面端クリップアドレスが、16K+P(P=0〜15)の場合、下画面端画素ラインは内部メモリ#60−#63〜#56−#59に対応する。そのため、下画面端クリップアドレスの16の剰余を選択信号としてP=0、1、2、...、15の場合、水平方向の並べ替え後の内部メモリ出力の#60−#63、#0−#3、#4−#7、...、#56−#59が32x16画素ブロックの下端ラインになるので、#60−#63、#0−#3、#4−#7、...、#56−#59を選択しsel1の出力とする。
画面内の場合、探索部から要求される画像ブロックの垂直座標が16K+Q(Q=0〜15)の場合、水平方向の並び替え後の32x16画像ブロックのQライン目の位置が画像ブロックの上画面端ラインである。図23はline#1の画素ラインを出力する必要が有るので、Q+1ライン目(16ラインで折り返す)が出力するべき画素ラインである。そのため、垂直座標の16の剰余Qを選択信号とし、Q=0、1、2、...、15 の時、水平方向の並び替えが完了した内部メモリ出力の#4−#7、#8−#11、#12−#15、...、#0−#3を選択しsel2の出力とする。
このように、探索部参照画像読出し制御部から要求される垂直座標と水平座標から参照画像画面外判定を行い、要求される画像ブロック内に画面外領域が含まれる場合、前記メモリ出力データ選択部の内部メモリアクセス方法である、1サイクル読出しデータの中に、画面外データを生成するための境界データを含むように読出しアドレスをクリップし読み出したデータに変えて、境界データを出力することで、1サイクルアクセスを維持しながら画面外データ保持のためのメモリ量を削減することが可能となる。
以上説明したように、様々な読出し要求条件を持つ探索部に対して、高速に任意の座標の画像ブロックデータを供給するために、内部メモリからある座標間隔毎に1サイクルで必要となる画像ブロックデータを読み出し、探索範囲から外れた領域に対応する内部メモリに外部メモリからの画像ブロックデータを書き込み更新することで、内部メモリを有効に使用できる。
前述した実施形態における参照画像バッファの全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
外部メモリからの読出し速度を削減しながらも、検索モジュールに対して任意座標の画像ブロックを高速に供給することが不可欠な用途に適用できる。
1・・・参照画像バッファ、11・・・全体制御部、12−0〜N・・・探索部参照画像読出制御部、13・・・メモリ出力データ選択部、14・・・内部メモリ、15・・・参照画像書込制御部、2・・・外部ホスト、3−0〜N・・・探索部、4・・・外部メモリ

Claims (8)

  1. 映像符号化処理を行う際に、外部メモリに記憶された参照画像を一時記憶する参照画像バッファであって、
    前記参照画像バッファ全体の動作を統括して制御するタイムスロット信号を出力する全体制御部と、
    前記映像符号化処理に必要となる前記外部メモリに記憶されている前記参照画像の参照画像データを一時的に記憶する内部メモリと、
    前記映像符号化処理の進行に合わせ必要となる前記参照画像データを前記外部メモリから読み出して前記内部メモリに書き込みを行う参照画像書込制御部と、
    前記映像符号化処理に使用される探索部からのデータ読出し要求に応じて、前記探索部が求める座標で示される範囲の前記参照画像データを前記内部メモリから読出して送信する探索部参照画像読出制御部と、
    複数の前記探索部参照画像読出制御部と前記参照画像書込制御部とからの前記内部メモリへのアクセスを調停し、前記探索部参照画像読出制御部から出力された座標値を前記タイムスロット信号により選択し、前記探索部参照画像読出制御部に対して選択された前記内部メモリから読み出された前記参照画像データを送信するメモリ出力データ選択部と
    を備え、
    前記内部メモリは、複数のメモリが並列に接続されて複数のグループを形成し、前記参照画像データが、座標の一行分のデータ毎に各々の前記グループのメモリに配置された参照画像バッファ。
  2. 前記メモリ出力データ選択部は、前記座標値に基づき読み出すべき前記参照画像データのアドレスを生成し、該アドレスで示される前記参照画像データを読み出し、読み出した前記参照画像データがブロックデータとなるようにデータの並べ替えを行うことにより、前記参照画像データの特定ブロックを読み出す請求項1に記載の参照画像バッファ。
  3. 前記探索部参照画像読出制御部は、前記探索部が必要とする画像データブロックの座標とサイズを求め、前記メモリ出力データ選択部に対し読出し要求を行い、得られた画像データから必要とするサイズの画像を切り出し、前記探索部に送信する請求項1または2に記載の参照画像バッファ。
  4. 前記探索部参照画像読出制御部は、前記内部メモリのデータの更新位置を監視し、読み出すべき前記参照画像データの座標範囲が前記内部メモリのデータの更新された位置を含む場合、該参照画像データが無効であることを前記探索部に通知するミスヒット判定処理をさらに行う請求項1または2に記載の参照画像バッファ。
  5. 前記参照画像書込制御部は、前記全体制御部からの指示により、内部メモリアクセス帯域のすべてを用いて前記外部メモリから読み出した前記参照画像データを前記内部メモリに書き込む、あるいは前記映像符号化処理の進行に合わせて前記内部メモリのアクセス帯域の半分を用いる、あるいは前記映像符号化処理の進行に合わせて必要な領域のみ更新するのいずれかを行うことによって書込み速度の調整し、前記探索部ごとに異なるアクセス特性に合わせる請求項1または2に記載の参照画像バッファ。
  6. 前記参照画像書込制御部は、前記外部メモリのアクセスの間隔を制御し、アクセス間隔を短くすることで、短期間に前記内部メモリに前記参照画像データを蓄積する、あるいはアクセス間隔を広げ平均化することにより、前記外部メモリを共有する他のモジュールへの影響を平滑化する請求項1または2に記載の参照画像バッファ。
  7. 前記メモリ出力データ選択部は、前記探索部参照画像読出し制御部から要求される垂直座標と水平座標から参照画像画面外判定を行い、要求される画像ブロック内に画面外領域が含まれる場合、前記メモリ出力データ選択部の内部メモリアクセス方法である1サイクル読出しデータの中に、画面外データを生成するための境界データを含むように読出しアドレスをクリップし読み出したデータに変えて、境界データを出力することで、1サイクルアクセスを維持しながら画面外データ保持のためのメモリ量を削減する請求項3記載の参照画像バッファ。
  8. 前記探索部参照画像読出し制御部は、前記探索部が必要とする画像データブロックの座標に再設定可能なオフセットを加えることで、参照画像メモリ空間の任意の点を基準点とするアクセスを可能とすることで、共有される隣接LSIが保持する参照画像データの読出し及び広範囲の探索を可能と知るエリアホッピング時のマッピングの参照画像データの読出しを制御可能とする請求項3記載の参照画像バッファ。
JP2015202420A 2015-04-09 2015-10-13 参照画像バッファ Active JP6329521B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015080247 2015-04-09
JP2015080247 2015-04-09

Publications (2)

Publication Number Publication Date
JP2016201784A true JP2016201784A (ja) 2016-12-01
JP6329521B2 JP6329521B2 (ja) 2018-05-23

Family

ID=57424753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015202420A Active JP6329521B2 (ja) 2015-04-09 2015-10-13 参照画像バッファ

Country Status (1)

Country Link
JP (1) JP6329521B2 (ja)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0453389A (ja) * 1990-06-21 1992-02-20 Graphics Commun Technol:Kk 動ベクトル検出装置
JPH05260461A (ja) * 1992-03-13 1993-10-08 Fujitsu Ltd 動き補償予測装置
JPH09223973A (ja) * 1995-10-14 1997-08-26 Samsung Electron Co Ltd 可変長復号化器のメモリインタフェース方法及び回路
JPH10257498A (ja) * 1997-03-07 1998-09-25 Hitachi Ltd 動き検出lsi
JP2003296724A (ja) * 2002-04-05 2003-10-17 Hitachi Ltd 画像処理システム及びその方式
JP2006041898A (ja) * 2004-07-27 2006-02-09 Fujitsu Ltd 動画像データ復号装置、および復号プログラム
JP2007243366A (ja) * 2006-03-07 2007-09-20 Victor Co Of Japan Ltd 動きベクトル探索装置
JP2008061151A (ja) * 2006-09-04 2008-03-13 Fujitsu Ltd 動画像処理装置及びプリフェッチ制御方法
JP2008061156A (ja) * 2006-09-04 2008-03-13 Fujitsu Ltd 動画像処理装置
WO2008108129A1 (ja) * 2007-03-06 2008-09-12 Nec Corporation メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム
WO2011048764A1 (ja) * 2009-10-19 2011-04-28 パナソニック株式会社 復号装置、復号方法、プログラム、及び集積回路
JP2013258732A (ja) * 2006-05-24 2013-12-26 Panasonic Corp 画像符号化装置、画像符号化方法、及び画像符号化用集積回路
JP2014081672A (ja) * 2012-10-12 2014-05-08 Renesas Electronics Corp 半導体装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0453389A (ja) * 1990-06-21 1992-02-20 Graphics Commun Technol:Kk 動ベクトル検出装置
JPH05260461A (ja) * 1992-03-13 1993-10-08 Fujitsu Ltd 動き補償予測装置
JPH09223973A (ja) * 1995-10-14 1997-08-26 Samsung Electron Co Ltd 可変長復号化器のメモリインタフェース方法及び回路
JPH10257498A (ja) * 1997-03-07 1998-09-25 Hitachi Ltd 動き検出lsi
JP2003296724A (ja) * 2002-04-05 2003-10-17 Hitachi Ltd 画像処理システム及びその方式
JP2006041898A (ja) * 2004-07-27 2006-02-09 Fujitsu Ltd 動画像データ復号装置、および復号プログラム
JP2007243366A (ja) * 2006-03-07 2007-09-20 Victor Co Of Japan Ltd 動きベクトル探索装置
JP2013258732A (ja) * 2006-05-24 2013-12-26 Panasonic Corp 画像符号化装置、画像符号化方法、及び画像符号化用集積回路
JP2008061151A (ja) * 2006-09-04 2008-03-13 Fujitsu Ltd 動画像処理装置及びプリフェッチ制御方法
JP2008061156A (ja) * 2006-09-04 2008-03-13 Fujitsu Ltd 動画像処理装置
WO2008108129A1 (ja) * 2007-03-06 2008-09-12 Nec Corporation メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム
WO2011048764A1 (ja) * 2009-10-19 2011-04-28 パナソニック株式会社 復号装置、復号方法、プログラム、及び集積回路
JP2014081672A (ja) * 2012-10-12 2014-05-08 Renesas Electronics Corp 半導体装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TAKAYUKI ONISHI, ET AL.: "Single-chip 4K 60fps 4:2:2 HEVC Video Encoder LSI with 8K Scalability", 2015 SYMPOSIUM ON VLSI CIRCUITS (VLSI CIRCUITS), JPN6017050489, 17 June 2015 (2015-06-17), US, pages 54 - 55, ISSN: 0003713568 *

Also Published As

Publication number Publication date
JP6329521B2 (ja) 2018-05-23

Similar Documents

Publication Publication Date Title
US4809345A (en) Method of and apparatus for enlarging/reducing two-dimensional images
US8554962B2 (en) Data transfer control device and data transfer control method
JP5059058B2 (ja) 高速動き探索装置及びその方法
US9942510B2 (en) Method and device for processing input image data
US7554874B2 (en) Method and apparatus for mapping memory
JP3931577B2 (ja) メモリの使用方法、及び演算処理装置
CN111984189B (zh) 神经网络计算装置和数据读取、数据存储方法及相关设备
US20090132759A1 (en) Information processing apparatus and method for controlling information processing apparatus
CN116010299B (zh) 一种数据处理方法、装置、设备及可读存储介质
JP6159478B2 (ja) データ書き込み方法及びメモリシステム
US20110087821A1 (en) Apparatus to access multi-bank memory
JP2003186740A (ja) メモリ制御装置、及びメモリ制御方法
JP2007018222A (ja) メモリアクセス制御回路
JP6329521B2 (ja) 参照画像バッファ
CN110968538B (zh) 一种数据缓冲方法和装置
CN111459879A (zh) 一种数据处理方法和片上系统
US9767054B2 (en) Data transfer control device and memory-containing device
US20160232125A1 (en) Storage apparatus and method for processing plurality of pieces of client data
US10284743B2 (en) Image processing apparatus and method for controlling the same
WO2020107319A1 (zh) 图像处理方法和设备,以及视频处理器
JP2001125826A (ja) 集合メモリ用のインタフェースを有する複数のプロセッサを備える装置
JP6012207B2 (ja) データ転送装置
US20180052773A1 (en) Memory managing method and apparatus associated with cache in image processing system
US20180095929A1 (en) Scratchpad memory with bank tiling for localized and random data access
CN113658049A (zh) 一种图像转置的方法、设备和计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180312

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180420

R150 Certificate of patent or registration of utility model

Ref document number: 6329521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150