| 【発明の名称】 |
映像符号化並列処理方法,映像符号化装置,映像符号化プログラムおよびその記録媒体 |
| 【発明者】 |
【氏名】谷田 隆一
【氏名】清水 淳
|
| 【要約】 |
【課題】マクロブロック毎に演算量が異なる場合でも,符号化の並列処理を効率的に行うことができるようにする。
【構成】ブロックの符号化状態保持手段30は,各ブロックの符号化状態を保持する。並列にブロック単位の符号化処理を行う符号化手段10,20は,例えばラスタ順または斜め順の異なる順番で全画面分のブロックについて次に符号化処理を行うブロックを指定するブロック番号指定手段11,21を備えると共に,ブロック番号指定手段11,21が指定したブロックの符号化状態に従って,少なくともそのブロックの符号化処理を行うか,符号化処理をスキップするか,他の符号化手段による処理終了を待つかを判定するスキップ判定制御手段12,22を備える。 |
【特許請求の範囲】
【請求項1】 各ブロックの符号化状態を保持する符号化状態保持手段と,並列に動作可能な複数の符号化手段とを有し,映像もしくは画像をブロックに分割して前記複数の符号化手段により符号化する映像符号化並列処理方法であって, 前記符号化手段が, 各符号化手段毎に,それぞれ異なる順番で全画面分のブロックについて次に符号化処理を行う符号化対象ブロックを選択し, 前記選択された符号化対象ブロックの符号化状態を,前記符号化状態保持手段から取得し,その符号化状態に従って,少なくともその符号化対象ブロックの符号化処理を行うか,符号化処理をスキップするか,他の符号化手段による処理終了を待つかを判定し, 判定結果に応じた処理を実行する ことを特徴とする映像符号化並列処理方法。 【請求項2】 請求項1記載の映像符号化並列処理方法において, 前記符号化手段は, 前記符号化対象ブロックの符号化処理の開始時に前記符号化状態保持手段が保持する符号化対象ブロックの符号化状態を符号化前から符号化中の状態に更新し,符号化処理の終了時に符号化状態を符号化中から符号化済みに更新し, 前記選択された符号化対象ブロックが,符号化前の状態である場合に,そのブロックの符号化処理を行い,符号化中の状態である場合に,他の符号化手段によりそのブロックの符号化が終了するまで処理を待ち,符号化済みの状態の場合に,処理対象を次のブロックへとスキップする ことを特徴とする映像符号化並列処理方法。 【請求項3】 映像もしくは画像をブロックに分割して符号化する映像符号化装置であって, 各ブロックの符号化状態を保持する符号化状態保持手段と, ブロック単位の符号化処理を行う複数の符号化手段とを備え, 前記符号化手段は, 各符号化手段毎に,それぞれ異なる順番で全画面分のブロックについて次に符号化処理を行うブロックを指定するブロック番号指定手段と, 前記ブロック番号指定手段が指定したブロックの符号化状態を,前記符号化状態保持手段から得て,その符号化状態に従って,少なくともそのブロックの符号化処理を行うか,符号化処理をスキップするか,他の符号化手段による処理終了を待つかを判定する制御手段とを備える ことを特徴とする映像符号化装置。 【請求項4】 請求項3記載の映像符号化装置において, 前記符号化状態保持手段は,各ブロックの符号化状態として,符号化前,符号化中または符号化済みを示す情報を保持し, 前記制御手段は,前記ブロック番号指定手段により指定されたブロックが,符号化前の状態である場合に,そのブロックの符号化処理を行わせ,符号化中の状態である場合に,他の符号化手段によりそのブロックの符号化が終了するまで処理を待たせ,符号化済みの状態の場合に,処理対象を次のブロックへとスキップさせ, 前記符号化手段は,各ブロックの符号化処理の開始および終了時に,前記符号化状態保持手段が保持する符号化状態を更新するように構成される ことを特徴とする映像符号化装置。 【請求項5】 請求項1または請求項2記載の映像符号化並列処理方法を,コンピュータに実行させるための映像符号化プログラム。 【請求項6】 請求項1または請求項2記載の映像符号化並列処理方法を,コンピュータに実行させるための映像符号化プログラムを記録したコンピュータ読み取り可能な記録媒体。
|
【発明の詳細な説明】【技術分野】 【0001】 本発明は,映像あるいは静止画を複数の小領域に分割し,順次符号化処理を行う映像符号化技術に関し,特に,小領域単位で並列に効率よく符号化するための映像符号化並列処理方法,映像符号化装置,映像符号化プログラムおよびその記録媒体に関するものである。 【背景技術】 【0002】 MPEG−2やH.264をはじめ,現在広く用いられている映像符号化方式は,フレームを矩形の小領域に分割し,各領域毎に順次符号化する方法が主流となっている(非特許文献1,非特許文献2参照)。 【0003】 例として,映像符号化方式H.264を取り上げる。図6は,H.264のマクロブロックの符号化順序を示す。H.264では,入力映像を16×16画素のマクロブロックと呼ばれる単位に区切り,その単位で符号化処理を行う。符号化の順序は,通常左上のマクロブロック((x,y)=(0,0))から開始し,終わったら順次右隣のマクロブロックへと処理を進める。一ライン分のマクロブロックの処理が済むと,1段下の左端のマクロブロックへと移り,また右に向かって順に処理していく。 【0004】 H.264の符号化処理のフローチャートの一例を図7に示す。最初の符号化対象マクロブロックを左上((x,y)=(0,0))のマクロブロックとし(S301),左上のマクロブロックから順に,以下のような処理を行う。まず,符号化対象マクロブロックについてイントラ予測モードを決定し,その予測コストを求める(S302)。次に,動き探索を行ってインター予測モードを決定し,その予測コストを求める(S303)。そして,イントラ予測モードとインター予測モードとの予測コストを比較し,小さい方を予測モードとして決定する(S304)。 【0005】 その後,選択した予測モードについて,予測画像と原画像の差分である予測残差を求め,DCT変換・量子化を施し(S305),予測モード情報と共にエントロピー符号化を施す(S306)。 【0006】 一方,量子化値を逆量子化・逆変換してイントラ予測用の復号画像を生成した(S307)後に,デブロッキングフィルタを適用し,動き補償用の参照画像を生成する(S308)。そして,最後のマクロブロックかを判定し(S309),そうでないならば符号化対象を次のマクロブロックとし(S310),上記の処理(S302〜S310)を,最後のマクロブロックの符号化が終了するまで繰り返す。このような処理により,H.264の符号化を行うことができる。 【0007】 H.264符号化装置のブロック図の一例を図8に示す。H.264符号化装置は,MB番号生成部201,MB切り出し部202,減算器203,DCT部204,量子化部205,逆量子化部206,IDCT部207,加算器208,インター予測モード決定部209,イントラ予測モード決定部210,予測モード選択部211,スイッチ212,復号画像保存バッファ213,フィルタ214,参照画像保存バッファ215,符号化情報保存バッファ216,エントロピー符号化部217から構成される。 【0008】 MB番号生成部201は,符号化情報保存バッファ216から制御信号を受けると,次に符号化処理するマクロブロックの番号を生成し,MB切り出し部202に送る。MB切り出し部202は,MB番号生成部201からマクロブロック番号を受け取ると,その番号に対応する16×16画素を原画像から切り出し,減算器203,インター予測モード決定部209およびイントラ予測モード決定部210に送る。 【0009】 減算器203は16×16画素の原画像と予測画像との差分を取り,DCT部204へ送る。DCT部204は,予測差分にDCTを施し量子化部205へ送る。量子化部205は,予め定められた量子化ステップ幅で量子化を行い,その結果を符号化情報保存バッファ216と逆量子化部206へ送る。 【0010】 逆量子化部206は,入力された量子化値に逆量子化を施し,IDCT部207へ送る。IDCT部207は,逆量子化部206から送られてきた2次元周波数データに逆DCTを施し,加算器208に送る。加算器208は,スイッチ212から送られる予測信号とIDCT部207から送られる差分信号を加算し,復号画像を生成して復号画像保存バッファ213に送る。 【0011】 インター予測モード決定部209は,符号化情報保存バッファ216から送られる隣接ブロックの予測モード情報を使い,入力された原画像と参照画像保存バッファ215内の参照画像の間で動き補償を行って,求めた参照画像を予測画像としてスイッチ212へ出力する。同時に,動きベクトルなどの予測モード情報と予測コストを予測モード選択部211へ送る。 【0012】 イントラ予測モード決定部210は,原画像と復号画像保存バッファ213から入力された隣接画素を用いてイントラ予測モードを決定し,予測画像をスイッチ212へ出力すると共に,イントラ予測モードと予測コストを予測モード選択部211へ送る。 【0013】 予測モード選択部211は,インター予測モード決定部209とイントラ予測モード決定部210から送られる予測コストを比較し,予測コストが低い方を予測モードとして選択する。そして,選択した方の予測モード情報を符号化情報保存バッファ216に送信すると共に,選択した方の予測画像が出力されるように制御信号でスイッチ212を切り換える。スイッチ212は,予測モード選択部211から送られる制御信号に従って,入力の切り換えを行い,選択された予測モードの予測画像を減算器203と加算器208に送る。 【0014】 復号画像保存バッファ213は加算器208から送られる復号画像を保持し,順次,フィルタ214に送ると共に,イントラ予測モード決定部210に符号化対象マクロブロックの周辺画像を送る。フィルタ214は,復号画像にデブロッキングフィルタを施し,参照画像保存バッファ215に送る。参照画像保存バッファ215は,フィルタ214から送られるフィルタ処理後の復号画像を保持し,参照画像としてインター予測モード決定部209に送信する。 【0015】 符号化情報保存バッファ216は,量子化部205から送られてくる量子化値と,予測モード選択部211から送られる予測モード情報を保持し,順次,エントロピー符号化部217へ渡す。また,隣接ブロックの予測モード情報をインター予測モード決定部209へ送ると共に,次のマクロブロックの処理を促す制御信号をMB番号生成部201へ送る。エントロピー符号化部217は,符号化情報保存バッファ216に保持された符号化情報を,順次エントロピー符号化し,符号化ストリームを出力する。以上のような構成にすることで,図7に示す処理を行うことができる。 【0016】 このH.264の符号化処理を,複数の処理部を用いてマクロブロック単位で並列に行うことを考える。H.264では,マクロブロックの符号化に,隣接するマクロブロックの符号化結果を用いることで,符号化効率を高めている。詳しい符号化方法は本発明の本質と直接関係が無いため省略するが,図9に示すマクロブロックEの符号化の際には,隣接マクロブロックA,B,C,Dの符号化結果を必要とする(非特許文献3参照)。したがって,マクロブロック単位で並列に符号化処理を行う場合,既に周囲のマクロブロックA,B,C,Dの符号化が終わっているような組み合わせで符号化を行う必要がある。 【0017】 2並列処理の従来法の一例としては,図10のP,Qの位置関係にあるマクロブロックを同時に処理する方法がある。このような位置関係のマクロブロックであれば,図9に示す隣接マクロブロックの符号化が終わっていることになるので,マクロブロックPとQを同時に処理することができる。このときの各処理部のフローチャートの例を図11に示す。 【0018】 一つ目の処理系は処理を開始すると,左上((x,y)=(0,0))のマクロブロックをスタートとし(S401),以下の処理を繰り返す。まず,符号化対象マクロブロックの一つ上のマクロブロックMB[x][y−1]が符号化済みかをチェックし(S402),符号化が終了していなければ終了するまで待つ(S403)。一つ上のマクロブロックの符号化が終了していたなら,次に符号化対象マクロブロックの右上のマクロブロックMB[x+1][y−1]が符号化済みかをチェック(S404)し,符号化が終了していなければ終了するまで待つ(S405)。 【0019】 右上のマクロブロックの符号化も終了していたなら,図7のフローチャートに示す処理(S302〜S308)に従って符号化対象マクロブロックMB[x][y]の符号化を行う(S406)。その符号化が終了したら,xに1を加算し,一つ右のマクロブロックに移動する(S407)。右にマクロブロックがあれば,すなわち,x=x_max(x_maxは水平方向のマクロブロック数)でなければ(S408),そのマクロブロックについて上記の処理を繰り返す(S402〜S408)。右端だったならば,すなわち,x=x_maxになったならば,xを0とし,yに2を加算して,2つ下のラインの一番左のマクロブロックに移動する(S409)。そこにマクロブロックがあれば,すなわち,y≧y_max(y_maxは垂直方向のマクロブロック数)でなければ(S410),上記の処理を繰り返す(S402〜S410)。2つ下にマクロブロックが無ければ,すなわち,y≧y_maxになったならば,そこで処理を終了する。 【0020】 2つ目の処理系は,処理を開始すると2ライン下の左端のマクロブロック((x,y)=(0,1))からスタートし(S401),一つ目の処理系と同じ処理を行う(S402〜S410)。以上のように処理することで,2並列で符号化処理を行うことができる。 【0021】 図12に,上記の処理を実現させるためのブロック図の一例を示す。この装置は,2ラインおきMB番号生成部A301,2ラインおきMB番号生成部B302,制御部303,304,MB符号化器305,306,フレームメモリ307,ステータス保存メモリ308,参照画像保存バッファ309,フィルタ310,復号画像保存バッファ311,符号化情報保存バッファ312,エントロピー符号化部313から構成される。このうち,MB符号化器は図8の破線で囲まれた部分と同様の処理を行うものとする。また,フィルタ310,エントロピー符号化部313は,図8の同名のものと同等の機能を有する。参照画像保存バッファ309,復号画像保存バッファ311,符号化情報保存バッファ312は,図8の同名のものと同等の機能を持つが,入出力を2系統所持する。 【0022】 フレームメモリ307は原画像を保持し,符号化対象マクロブロックの画像を各MB符号化器305,306に送る。 【0023】 2ラインおきMB番号生成部A301,2ラインおきMB番号生成部B302は,符号化情報保存バッファ312から制御信号として前のマクロブロックの符号化終了信号を受け取ると,ステータス保存メモリ308に当該マクロブロックの符号化終了信号を送る。そして,次の符号化対象マクロブロック番号を生成して制御部303,304に送る。2ラインおきMB番号生成器A301,2ラインおきMB番号生成部B302が生成するマクロブロック番号の順序は,図13に示す通りである。 【0024】 制御部303,304は,2ラインおきMB番号生成部A301,2ラインおきMB番号生成部B302からMB番号を受けとると,ステータス保存メモリ308のステータス情報から,上,右上隣接マクロブロックが符号化済みかどうかを判断し,共に符号化済みであれば,符号化対象マクロブロック番号をMB符号化器305,もしくはMB符号化器306に送信する。 【0025】 このような構成にすることで,図11に示すフローチャートに従った処理を行うことができる。 【0026】 また,特許文献1には,イントラ予測を用いて符号化する画像符号化装置において,マクロブロックのパイプライン処理を容易化し,また,複数のマクロブロックに対する動きベクトル探索を並列化することを目的として,符号化するマクロブロックを選択するときに,現在マクロブロックと現在マクロブロックがイントラ予測あるいは動きベクトル探索で参照するマクロブロックの順序番号の差が2以上となるように,符号化するマクロブロックの順序を選択するマクロブロック順序選択手段を持つ画像符号化装置が開示されている。 【非特許文献1】MPEG−2:小野定康,鈴木純司,「わかりやすいJPEG/MPEG2の技術」,オーム社,PP.133(2001) 【非特許文献2】H.264: Text of ISO/IEC 14496 10 Advanced Video Coding 3rd Edition ,PP.19 (2004) 【非特許文献3】H.264の符号化依存関係:大久保榮,角野眞也,菊池義浩,鈴木輝彦,「H.264/AVC教科書」,インプレス,pp.108,111 ,120 (2004) 【特許文献1】特開2005−295526号公報 【発明の開示】 【発明が解決しようとする課題】 【0027】 図10で示したような並列処理手法は,マクロブロックP,Qの符号化にかかる処理時間が全く同じである場合には効率よく働く。しかし,処理の高速化のために動きベクトルの探索範囲を可変にする場合など,マクロブロック毎の処理時間が大きく異なるケースも存在する。このような場合,処理待ちが頻繁に入るため,処理効率が大きく低下するという問題がある。例えば探索範囲を限定させることで,マクロブロックQがPの10分の1の処理時間で符号化できたとしても,その右隣のマクロブロックの処理を開始するためにはマクロブロックPの処理が終わるまで待たなければならず,マクロブロックQの演算量削減効果が薄れてしまう。 【0028】 また,特許文献1に記載された方法を用いた場合にも,各マクロブロックの処理時間が全く同じ場合には有効に働くが,マクロブロック毎に処理時間が異なる場合には,「処理待ち」の時間が発生するという問題がある。 【0029】 本発明は上記問題点の解決を図り,マクロブロック毎に演算量が異なる場合でも,符号化の並列処理を効率的に行うことができるようにすることを目的とする。 【課題を解決するための手段】 【0030】 前記の課題を解決するために,本発明では,各処理系がそれ単体でも全マクロブロックの符号化ができるような順序でマクロブロック番号を順に指定する手段と,既に符号化済みのマクロブロックをスキップして次のマクロブロックの符号化処理を行う手段と,処理対象マクロブロックが処理開始できない場合には処理ができるまで待つ手段を,並列処理のタスクの数だけ持っていることを特徴とする。なお,各マクロブロック番号を生成する手段は,生成される番号の順序が処理系毎に全て異なっていることを特徴とする。 【0031】 図1は,本発明の概要を説明する図である。ブロック単位で並列に符号化処理を行う処理系として,符号化手段10による処理系Aと,符号化手段20による処理系Bとがある。ブロックの符号化状態保持手段30は,各ブロックが符号化済みであるか符号化中であるか符号化前(未処理)であるかの情報を保持する。 【0032】 処理系Aのブロック番号指定手段11は,図1の(a)に示すように,ラスタ順で符号化対象のブロック番号を指定する。一方,処理系Bのブロック番号指定手段21は,図1の(b)に示すように,斜め順で符号化対象のブロック番号を指定する。 【0033】 処理系Aのスキップ判定制御手段12および処理系Bのスキップ判定制御手段22は,それぞれブロックの符号化状態保持手段30を参照し,指定された符号化対象のブロック番号に該当するブロックの符号化状態に従ってそのブロックの符号化処理を直ぐに行うか,スキップするか,または一方の処理系による符号化処理の終了を待つかを判定する。 【0034】 スキップ判定制御手段12または22による制御のもとに,符号化手段10または20において,一つのブロックの符号化を開始すると,ブロックの符号化状態保持手段30が保持するブロックの符号化状態は,符号化前から符号化中の状態に更新され,符号化が終了すると,符号化中から符号化済みの状態に更新される。 【0035】 各スキップ判定制御手段12,22は,符号化対象のブロックの符号化状態が符号化前の場合には,符号化手段10,20に符号化処理を実施させる。また,符号化対象のブロックの符号化状態が符号化済みの場合には,処理対象を次の符号化対象のブロックへとスキップさせる。また,符号化対象ブロックの符号化状態が符号化中である場合には,他の符号化手段20,10によりそのブロックの符号化が終了するまで,符号化処理を待たせる。 【0036】 ブロック番号指定手段11,21が,画面すべてのマクロブロック番号を符号化対象として指示し,スキップ判定制御手段12,22が,指示されたマクロブロックが既に符号化済みの場合には,それを飛ばしてさらに次のマクロブロックへと処理対象を移していく点が従来技術と顕著に異なる。このような特徴により,符号化済みマクロブロックを飛ばして処理可能なマクロブロックを探していくため,各マクロブロックがどのプロセスで符号化されるかは,状況によって毎回変わることになり,結果的に処理の待ち時間が少なくなる。 【0037】 処理系Aと処理系Bの2系列の並列処理の例を示したが,3系列以上であっても同様に本発明を実施することができる。 【0038】 本発明による並列符号化処理のフローチャートの一例を図2に示す。図中,マクロブロックをMBと記している。このフローは,本発明における各処理系の処理手順の例である。処理が始まると,符号化対象マクロブロックの処理開始点(x,y)を設定し(S1),開始点として設定された符号化対象マクロブロックから順に,以下の処理(S2〜S7)を繰り返す。 【0039】 まず,処理対象マクロブロックが符号化済みかどうかを,ブロックの符号化状態保持手段30を参照して調べ(S2),もし符号化済みならば,ステップS6へ進み,次のマクロブロックに移動する。符号化済みでないならば,処理対象マクロブロックが符号化中かどうかを調べ(S3),符号化中ならば,符号化が終了するまで待つ(S4)。それ以外ならば,処理対象マクロブロックは符号化前の未処理状態であるため,処理対象マクロブロックを図7の手順(S302〜S308)に従って符号化処理し(S5),次のマクロブロックに移動する(S6)。全マクロブロックの符号化処理が終了したならば,そこで符号化処理を終了し(S7),まだ終了していないならば上記ステップS2〜S7の処理を繰り返す。 【0040】 以上の映像符号化の並列処理は,コンピュータとソフトウェアプログラムとによっても実現することができ,そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することも,ネットワークを通して提供することも可能である。 【発明の効果】 【0041】 本発明によれば,各々の符号化手段が並列に異なる順序でマクロブロックの符号化処理を行う。また,各符号化手段がそれ単体でも1画面分の符号化が可能な順序のため,マクロブロック毎に演算量が異なる場合でも,待ちが発生する回数やその影響が少なくなり,効率的な符号化処理を行うことができる。 【発明を実施するための最良の形態】 【0042】 以下,本発明の実施の形態を図面を用いて説明する。 【0043】 本実施の形態では,ラスタ順にマクロブロックの符号化を行う処理系Aと,斜め順にマクロブロックの符号化を行う処理系Bの二つを並列に動作させた場合について述べる。それぞれの処理系を単独で動作させた場合のマクロブロックの処理順序は,図1の(a),(b)に示す通りである。処理系Aは,左上の(0,0)マクロブロックから始まり,右に向かって符号化処理を行う。処理系Bは,開始位置(x,y)=(0,0)から,斜め順に符号化処理を行う。処理系Aはもちろん単体で符号化処理が可能であるが,処理系Bも単体で1画面分の符号化処理を行うことができる。また,処理系には優先順位を設け,同じマクロブロックを同時にアクセスした場合には処理系Aを優先するとする。 【0044】 まず,処理系Aのフローチャートの例を図3に示す。符号化が始まると,まず左上のマクロブロック((x,y)=(0,0))をスタートとし(S101),以下の処理(S102〜S109)を繰り返す。 【0045】 まず,処理対象マクロブロックMB[x][y]が符号化済みかどうかを調べ(S102),もし符号化済みならば,ステップS106へ進む。処理対象マクロブロックMB[x][y]が符号化中ならば(S103),符号化が終了するまで待つ(S104)。それ以外ならば,ステップS105へ進み,処理対象マクロブロックMB[x][y]を,図7の手順(S302〜S308)に従って符号化処理する。 【0046】 その後,xに1を加算して,一つ右隣のマクロブロックに移動する(S106)。右にマクロブロックがあれば,すなわち,x=x_max(x_maxは水平方向のマクロブロック数)でなければ(S107),そのマクロブロックについて上記の処理を繰り返す(S102〜S107)。もし右端を外れた場合には,すなわち,x=x_maxになったならば,xを0とし,yに1を加算して,一段下の左端のマクロブロックに移動する(S108)。最後のマクロブロックまで処理が終了したかどうか,すなわち,y=y_max(y_maxは垂直方向のマクロブロック数)になったかどうかを判定し(S109),まだ未処理のマクロブロックがあれば,上記の処理(S102〜S109)を繰り返す。最後のマクロブロックまで処理が終了した場合には,そこで処理を終了する。このような手順で処理することで,処理系Aは,処理系Bによって符号化が完了しているマクロブロックを抜かしながら,図1(a)に示す順序でマクロブロックの符号化を行うことができる。 【0047】 次に,処理系Bのフローチャートの例を図4に示す。符号化が始まると,まず左上のマクロブロック((x,y)=(0,0))をスタートとし(S201),以下の処理(S202〜S212)を繰り返す。 【0048】 まず,処理対象マクロブロックMB[x][y]が符号化済みかどうかを調べ(S202),もし符号化済みならば,ステップS206へ進む。処理対象マクロブロックMB[x][y]が符号化中ならば(S203),符号化が終了するまで待つ(S204)。それ以外ならば,ステップS205へ進み,処理対象マクロブロックMB[x][y]を図7の手順(S302〜S308)に従って符号化処理する。 【0049】 その後,xから1を減算し,yに1を加算して,次のマクロブロックへ移動する(S206)。xの値が負になり,移動先にマクロブロックが存在しない場合には(S207),xにyの値を代入し,yを0にする(S208)。次に,y=y_max(y_maxは垂直方向のマクロブロック数)になったかどうかを判定し(S209),yがy_maxになった場合には,移動先にマクロブロックが存在しないので,xにx+y+1の値を代入し,yを0にし,移動先を右斜め上の最上行のマクロブロックにする(S210)。次に,x≧x_max(x_maxは水平方向のマクロブロック数)かどうかを判定し(S211),x≧x_maxであった場合,すなわち,移動先のマクロブロックが右端を越えている場合には,ステップS212に進む。それ以外の場合には,上記のステップS202〜S211の処理を繰り返す。 【0050】 ステップS212では,全マクロブロックの処理が終了したかどうか,すなわち,xがx_max+y_max−1になったかどうかを判定し,もし全マクロブロックの処理が終了したならば,そこで処理を終了する。まだ終了していないならば,ステップS206へ戻り,上記の処理(S202〜S212)を繰り返す。 【0051】 このような手順で処理することで,処理系Bは,処理系Aによって符号化が完了しているマクロブロックを抜かしながら,図1(b)に示す順序でマクロブロックの符号化を行うことができる。なお,アクセスが競合した場合には,処理系Aを優先するとしているため,0番目のマクロブロック(0,0)と1番目のマクロブロック(1,0)の符号化は処理系Aが行い,処理系Bは実質的には2番目のマクロブロック(0,1)から符号化処理を行うことになる。 【0052】 次に,本実施の形態による符号化装置のブロック図の一例を図5に示す。図中の点線で囲まれた2箇所が本発明の適用部分である。この装置はラスタ順MB番号生成部101(図1のブロック番号指定手段11に相当する),斜め順MB番号生成部102(図1のブロック番号指定手段21に相当する),スキップ付き制御部103(図1のスキップ判定制御手段12に相当する),スキップ付き制御部104(図1のスキップ判定制御手段22に相当する),MB符号化器105,106,フレームメモリ107,ステータス保存メモリ108(図1のブロックの符号化状態保持手段30に相当する),参照画像保存バッファ109,フィルタ110,復号画像保存バッファ111,符号化情報保存バッファ112,エントロピー符号化部113から構成される。 【0053】 MB符号化器105,106,フレームメモリ107,ステータス保存メモリ108,参照画像保存バッファ109,フィルタ110,復号画像保存バッファ111,符号化情報保存バッファ112,エントロピー符号化部113は,前述した図8または図12における同名のものと同等の機能を有する。ただし,ステータス保存メモリ108は,処理系Aと処理系Bのアクセスが競合した場合には,処理系Aの処理を優先するものとする。 【0054】 ラスタ順MB番号生成部101は,スキップ付き制御部103から制御信号を受けると,次の符号化対象マクロブロック番号を生成してスキップ付き制御部103に送る。生成されるブロック番号の順序は,図1(a)に示す通りである。 【0055】 斜め順MB番号生成部102は,スキップ付き制御部104から制御信号を受けると,次の符号化対象マクロブロック番号を生成してスキップ付き制御部104に送る。生成されるブロック番号の順序は,図1(b)に示す通りである。 【0056】 スキップ付き制御部103,104は,符号化情報保存バッファ112から制御信号として前のマクロブロックの符号化終了信号を受け取ると,ステータス保存メモリ108に当該マクロブロックの符号化終了信号を送ると共に,ラスタ順MB番号生成部101もしくは斜め順MB番号生成部102に制御信号を送り,これらから次の符号化対象マクロブロック番号を受け取る。 【0057】 次に,スキップ付き制御部103,104は,受け取ったマクロブロックの符号化状態をステータス保存メモリ108から送られるステータス情報から判定し,もし符号化されていなければそのマクロブロック番号をMB符号化器105もしくは106に送ると共に,当該マクロブロックが符号化中であることを示す制御信号をステータス保存メモリ108に送る。もし符号化中ならば符号化終了まで待つ。符号化が終了しているならば,ラスタ順MB番号生成部101もしくは斜め順MB番号生成部102に制御信号を送り,これらから次の符号化対象マクロブロック番号を受け取る。以上のような構成を用いることで,図3,図4に示す処理を行うことができる。 【0058】 以上の実施の形態では,あるマクロブロックMB[x][y]の処理終了後,次に処理するマクロブロックMBは,処理系Aの場合,すぐ横のマクロブロックMB[x+1][y](図1(a))とし,処理系Bの場合,左斜め下のマクロブロックMB[x−1][y+1](図1(b))とした。 【0059】 他にも,MB[x][y]の次に処理するマクロブロックMBを, 例2:MB[x−2][y+1] 例3:MB[x−3][y+1] ・・ ・・・ 例N:MB[x−N][y+1] とする順番で処理することもでき,3以上の処理系によって並列処理する場合に,これらの中から異なるものを選択して,本発明を実施することができる。 【0060】 本発明の検証実験を次のように行った。ソフトウェアのプロセス(スレッド)により,マクロブロックの符号化順序が異なる二つのスレッドを並列動作させた。まず,4種類のテストシーケンス(720×480画素,30fps)について,打ち切り処理がある木探索を用い,SAD計算時の絶対値演算回数を各マクロブロック毎に計測した。なお,動き補償ブロックサイズは,8×8固定,探索範囲は±16×16とした。 【0061】 次に,絶対値演算1回を1ステップとして,各マクロブロックの演算回数を演算時間に見立て,2スレッドで1フレームを並列探索する場合の処理待ちステップ数の合計を,従来技術を用いた場合と本発明を用いた場合とで比較した。従来技術としては,図10で説明した方法を用いた。また,本発明による各スレッドのマクロブロック処理順の概要は,図1(a),(b)に示す通りとした。 【0062】 処理待ちステップ数の比較結果は,4種類のテストシーケンスについて,以下のとおりであった。 ============================================================================ シーケンス(720×480) 従来技術 本発明 削減率 "Yachting" 6310 3645 −42.2% "Rustling Leaves" 11911 6533 −45.2% "Soccer" 11842 6430 −45.7% "Bronze with Credits" 13276 5248 −60.5% ============================================================================ 数値は,1フレームの符号化処理の間に「処理待ち」に費やした時間の合計値を示している。数値の単位は,ステップ(1ステップ中に絶対値演算1回を行うことが可能)である。削減率は,本発明を用いた場合に,従来技術と比較して処理待ちステップ数がどの程度削減されたかを割合で示したものである。この結果から,本発明を用いた場合,従来技術より処理待ちのステップ数がほぼ半減していることがわかる。これは,スレッド毎に処理するマクロブロックの順番が大きく異なることで,「待ち」の発生確率が低減されたためと考えられる。 【図面の簡単な説明】 【0063】 【図1】本発明の概要を説明する図である。 【0064】 【図2】本発明による並列符号化処理のフローチャートの一例を示す図である。 【図3】本実施の形態による処理系Aの処理手順を示すフローチャートである。 【図4】本実施の形態による処理系Bの処理手順を示すフローチャートである。 【図5】本実施の形態による符号化装置のブロック図である。 【図6】H.264のマクロブロックの符号化順序を示す図である。 【図7】H.264の符号化処理のフローチャートの一例を示す図である。 【図8】H.264符号化装置の一例のブロック図である。 【図9】符号化対象マクロブロックの符号化に必要となる隣接マクロブロックを説明する図である。 【図10】2並列処理するマクロブロックの位置関係(従来技術)を示す図である。 【図11】2並列で符号化する場合の符号化処理フローチャート(従来技術)の一例を示す図である。 【図12】2並列で符号化する場合の符号化装置(従来技術)の一例を示すブロック図である。 【図13】2並列で符号化する場合のマクロブロックの符号化順序(従来技術)を示す図である。 【符号の説明】 【0065】 10,20 符号化手段 11,21 ブロック番号指定手段 12,22 スキップ判定制御手段 30 ブロックの符号化状態保持手段 101 ラスタ順MB番号生成部 102 斜め順MB番号生成部 103,104 スキップ付き制御部 105,106 MB符号化器 107 フレームメモリ 108 ステータス保存メモリ 109 参照画像保存バッファ 110 フィルタ 111 復号画像保存バッファ 112 符号化情報保存バッファ 113 エントロピー符号化部
|
| 【出願人】 |
【識別番号】000004226 【氏名又は名称】日本電信電話株式会社
|
| 【出願日】 |
平成18年7月27日(2006.7.27) |
| 【代理人】 |
【識別番号】100087848 【弁理士】 【氏名又は名称】小笠原 吉義
【識別番号】100095072 【弁理士】 【氏名又は名称】岡田 光由
【識別番号】100121511 【弁理士】 【氏名又は名称】小田 直
|
| 【公開番号】 |
特開2008−35029(P2008−35029A) |
| 【公開日】 |
平成20年2月14日(2008.2.14) |
| 【出願番号】 |
特願2006−204320(P2006−204320) |
|