以下、実施形態を図面を用いて説明する。
図1は、一実施形態における動画像符号化装置EDEVの例を示している。
動画像符号化装置EDEVは、例えば、H.264/MPEG−4 Part 10 Advanced Video Coding(以下、H.264とも称する)に準拠した動画像符号化装置である。例えば、動画像符号化装置EDEVは、フレームメモリFMEM1、FMEM2、FMEM3、FMEM4および入力部INPにスイッチ部SWを介して接続されている。例えば、フレームメモリFMEM1−FMEM4は、SDRAMであり、入力部INPが受けた入力画像や動画像符号化装置EDEVにより生成された参照画像を一時的に記憶する。
動画像符号化装置EDEVは、複数の画像符号化部ENC1、ENC2、ENC3、ENC4およびエントロピ符号化部ECODを有し、4つのスライスに分割された画像を符号化する。なお、画像の分割数および画像符号化部ENCの数は、4つに限定されない。また、エントロピ符号化部ECODは、複数設けられてもよい。例えば、動画像符号化装置EDEVは、画像符号化部ENC1、ENC2、ENC3、ENC4にそれぞれ対応する4つのエントロピ符号化部ECODを有してもよい。
画像符号化部ENC1、ENC2、ENC3、ENC4は、例えば、互いに同じ構成である。各画像符号化部ENCは、例えば、インター予測モード決定部MD1、イントラ予測モード決定部MD2およびデブロッキングフィルタ部DBFを有している。なお、インター予測モード決定部MD1、イントラ予測モード決定部MD2およびデブロッキングフィルタ部DBF以外の画像符号化部ENC1の詳細は、図3で説明する。
インター予測モード決定部MD1は、例えば、H.264に規定されているインター予測に用いるモードを決定する。また、イントラ予測モード決定部MD2は、例えば、H.264に規定されているイントラ予測に用いるモードを決定する。このように、インター予測モード決定部MD1およびイントラ予測モード決定部MD2は、例えば、マクロブロックを符号化する際のパラメータをH.264の規格に基づいて設定するモード決定部として機能する。さらに、インター予測モード決定部MD1およびイントラ予測モード決定部MD2は、被参照画像のマクロブロックのうち、上端、左端および右端のいずれかのエッジがスライスの境界エッジであるマクロブロックに対して、図2に示すように各パラメータを設定する。
なお、例えば、被参照画像でない画像(以下、非被参照画像とも称する)では、図2に示した設定に制限されずに、モードが決定される。エンコード時における非被参照画像は、以降の画像のエンコード処理によって参照されないため、ローカルデコード画像としてフレームメモリFMEMに記憶されなくてもよい。このため、非被参照画像に対するデブロッキングフィルタ処理は、実施されなくてもよい。この結果、非被参照画像では、図2に示した制限が不要である。
デブロッキングフィルタ部DBFは、ブロック境界を平滑化するためのデブロッキングフィルタ処理を実施する。例えば、画像符号化部ENC1、ENC2、ENC3のデブロッキングフィルタ部DBFは、スライスの境界エッジ以外のデブロッキングフィルタ処理を実施してから、スライスの境界エッジのデブロッキングフィルタ処理を実施する。また、例えば、画像符号化部ENC4のデブロッキングフィルタ部DBFは、スライスの境界エッジ以外のデブロッキングフィルタ処理を実施する。すなわち、デブロッキングフィルタ部DBFは、互いに隣接するスライスの境界エッジ以外のデブロッキングフィルタ処理を実施するフィルタ部として機能する。
エントロピ符号化部ECODは、画像符号化部ENC1−ENC4から受けたデータを可変長符号化する。これにより、出力ストリーム(符号化された画像)が生成される。
図2は、図1に示したインター予測モード決定部MD1およびイントラ予測モード決定部MD2により設定されるパラメータの一部の例を示している。なお、図2は、上端、左端および右端のいずれかのエッジがスライスの境界エッジであるマクロブロックに設定されるパラメータの例を示している。図2の“−”は、特に制限されることなく、H.264の規定に基づいて設定されることを示している。
例えば、イントラ予測モード決定部MD2は、被参照画像のマクロブロックのうち、上端、左端および右端のいずれかのエッジがスライスの境界エッジであるIマクロブロックに対して、MB−typeをINxNに設定し、かつ、transform_size_8x8_flagを“1”に設定する。
また、インター予測モード決定部MD1は、被参照画像のマクロブロックのうち、上端、左端および右端のいずれかのエッジがスライスの境界エッジであるPマクロブロックに対して、例えば、MB−typeをP_skipに設定する。MB−typeがP_skipに設定されたマクロブロックは、デブロッキングフィルタ処理が実施されない。このため、MB−typeがP_skipに設定されたときには、transform_size_8x8_flagの設定は、制限されない。なお、インター予測モード決定部MD1は、MB−typeをP_Skipに設定しないときには、transform_size_8x8_flagを“1”に設定する。
また、インター予測モード決定部MD1は、被参照画像のマクロブロックのうち、上端、左端および右端のいずれかのエッジがスライスの境界エッジであるBマクロブロックに対して、transform_size_8x8_flagを“1”に設定する。さらに、インター予測モード決定部MD1は、direct_8x8_inference_flagが“0”のときには、B_skipおよびB_Direct_16x16のMB−typeを使用しない条件に設定するとともに、B_Direct_8x8のSub−MB−typeを使用しない条件に設定する。
図2に示したように各パラメータを設定することにより、スライスの境界エッジに対するデブロッキングフィルタ処理が実施されるマクロブロックの変換サイズは、8x8画素に設定される、または8x8ブロックの内部エッジに対するbSは0となりフィルタによる画素更新が行われない。これにより、図12および図13で説明するように、例えば、スライスの境界エッジに対するデブロッキングフィルタ処理と他のデブロッキングフィルタ処理との間のデータの依存関係の一部が解消される。
図3は、図1に示した画像符号化部ENC1の例を示している。画像符号化部ENC1は、インター予測モード決定部MD1、インター予測部IP1、イントラ予測モード決定部MD2、イントラ予測部IP2、セレクタ制御部SCL、セレクタSEL、差分算出部DIF、直交変換部ORT、量子化部QNT、逆量子化部IQNT、逆直交変換部IORT、加算部ADDおよびデブロッキングフィルタ部DBFを有している。
インター予測モード決定部MD1は、例えば、図1に示したフレームメモリFMEM1から入力画像(原画像)IDATA1および参照画像RDATA1を読み出し、動きベクトルを検出する。そして、インター予測モード決定部MD1は、インター予測に用いるモードを決定する。なお、参照画像RDATA1がフレームメモリFMEM2に記憶されているときには、インター予測モード決定部MD1は、フレームメモリFMEM2から参照画像RDATA1を読み出す。また、インター予測モード決定部MD1は、入力部INPから入力画像IDATA1を受けてもよい。インター予測部IP1は、インター予測モード決定部MD1により決定されたモードと、それと同時に送られる参照画像RDATA1に基づいて、動き補償処理を実施し、フレーム間予測画像(PマクロブロックやBマクロブロックの予測画像)を生成する。なお、インター予測部IP1は、参照画像RDATA1を、インター予測モード決定部MD1からではなく、フレームメモリFMEMから読み出してもよい。
イントラ予測モード決定部MD2は、例えば、図1に示したフレームメモリFMEM1から入力画像IDATA1を読み出し、イントラ予測に用いるモードを決定する。なお、イントラ予測モード決定部MD2は、入力部INPから入力画像IDATA1を受けてもよい。イントラ予測部IP2は、イントラ予測モード決定部MD2により決定されたモードと、加算部ADDの出力のうちの一部に基づいて、フレーム内予測を実施し、イントラ予測画像(Iマクロブロックの予測画像)を生成する。
なお、インター予測モード決定部MD1は、インター予測部IP1内に設けられてもよいし、イントラ予測モード決定部MD2は、イントラ予測部IP2内に設けられてもよい。すなわち、被参照画像のマクロブロックのうち、上端、左端および右端のいずれかのエッジがスライスの境界エッジであるマクロブロックに対して、図2に示したように各パラメータを設定するモード決定部は、例えば、インター予測部IP1内やイントラ予測部IP2内に設けられてもよい。
セレクタ制御部SCLは、例えば、インター予測モード決定部MD1およびイントラ予測モード決定部MD2から受ける圧縮率等の情報に基づいて、セレクタSELを制御する。セレクタSELは、セレクタ制御部SCLの制御に応じて、インター予測部IP1の出力(フレーム間予測画像)およびイントラ予測部IP2の出力(イントラ予測画像)のいずれかを選択する。
差分算出部DIFは、入力画像IDATA1とセレクタSELにより選択された予測画像との差分を算出する。直交変換部ORTは、差分算出部DIFから受けたデータ(差分画像)を直交変換する。量子化部QNTは、直交変換部ORTから受けたデータを量子化する。量子化部QNTにより量子化されたデータQDATA1は、逆量子化部IQNTおよび図1に示したエントロピ符号化部ECODに出力される。
逆量子化部IQNTは、量子化部QNTから受けたデータQDATA1を逆量子化する。逆直交変換部IORTは、逆量子化部IQNTから受けたデータを逆直交変換する。加算部ADDは、逆直交変換部IORTから受けたデータとセレクタSELにより選択された予測画像とを加算して、復号画像をデブロッキングフィルタ部DBFに出力する。
デブロッキングフィルタ部DBFは、加算部ADDから受けた復号画像に対して、デブロッキングフィルタ処理を実施する。なお、デブロッキングフィルタ処理の詳細は、図8−図13で説明する。デブロッキングフィルタ部DBFは、デブロッキングフィルタ処理後の画像DDATA1(参照画像)を、例えば、図1に示したフレームメモリFMEM1に書き込む。
画像符号化部ENC2、ENC3の動作は、画像符号化部ENC1と同じである。また、画像符号化部ENC4の動作は、デブロッキングフィルタ部DBFの動作を除いて、画像符号化部ENC1と同じである。例えば、画像符号化部ENC4のデブロッキングフィルタ部DBFは、スライスの境界エッジのデブロッキングフィルタ処理を実施しない。
図4は、画像IMGを複数のスライスSLに分割したときのスライスSLとフレームメモリFMEMとの対応関係の例を示している。なお、図4は、3840x2160画素のUHDTV(Ultra High Definition Television)画像IMGを縦方向に4分割したときの例を示している。すなわち、画像IMGは、複数のスライスSLに水平エッジで分割されている。図4の符号SEGは、互いに隣接するスライスSLの境界エッジSEGを示している。
1マクロブロックラインLは、16行の画素ラインを含んで構成される。スライスSL1は、マクロブロックラインL0−L33(544行の画素ライン)により構成され、フレームメモリFMEM1に格納される。スライスSL2は、マクロブロックラインL34−L67(544行の画素ライン)により構成され、フレームメモリFMEM2に格納される。スライスSL3は、マクロブロックラインL68−L101(544行の画素ライン)により構成され、フレームメモリFMEM3に格納される。スライスSL4は、マクロブロックラインL102−L134(528行の画素ライン)により構成され、フレームメモリFMEM4に格納される。
また、スライスSL1−SL4は、図1に示した画像符号化部ENC1−ENC4によりそれぞれ処理される。なお、マクロブロックラインL34、L68、L102のマクロブロックは、例えば、図2に示したように設定される。これにより、各境界エッジSEGのデブロッキングフィルタ処理(図4の網掛け部分の画素を使用するデブロッキングフィルタ処理)は、境界エッジSEG以外のデブロッキングフィルタ処理とは別に実施される。例えば、スライスSL1とスライスSL2との境界エッジSEGのデブロッキングフィルタ処理は、画像符号化部ENC1によりマクロブロックラインL33の処理と一緒に実施される。
図5は、画像符号化部ENC1−ENC4の処理タイミングの例を示している。なお、図5は、図4に示したように画像IMGを4つのスライスSLに分割したときの処理タイミングの例を示している。図5の期間T10は、フレームレートに対応する時間(例えば、1/60秒)を示している。図5の網掛けは、互いに隣接するスライスSLの境界エッジSEGのデブロッキングフィルタ処理を含むデブロッキングフィルタ処理DFL1、DFL2、DFL3を示している。例えば、デブロッキングフィルタ処理DFLの結果は、デブロッキングフィルタ処理DFL以外のデブロッキングフィルタ処理には使用されない。
画像符号化部ENC1は、ピクチャI0(Iピクチャ)のマクロブロックラインL0−L33を順次処理する。例えば、画像符号化部ENC1は、マクロブロックラインL0−L33のデブロッキングフィルタ処理を、H.264の規定に基づいた順序(例えば、図9に示す順序)で実施する。その後、画像符号化部ENC1は、デブロッキングフィルタ処理DFL1を実施する。例えば、デブロッキングフィルタ処理DFL1は、スライスSL1のマクロブロックラインL33とスライスSL2のマクロブロックラインL34との境界エッジSEGのデブロッキングフィルタ処理を含む。
なお、ピクチャI0のマクロブロックラインL34の処理は、マクロブロックラインL0の処理とほぼ同じタイミングで、画像符号化部ENC2により実施されている。したがって、デブロッキングフィルタ処理DFL1が実施されるときには、マクロブロックラインL34の処理は、終了している。これにより、画像符号化部ENC1は、マクロブロックラインL33とマクロブロックラインL34との境界エッジSEGの上下4画素を使用するデブロッキングフィルタ処理DFL1を、マクロブロックラインL33の処理に引き続き実施できる。
画像符号化部ENC2は、ピクチャI0のマクロブロックラインL34−L67を順次処理する。例えば、画像符号化部ENC2は、マクロブロックラインL34のデブロッキングフィルタ処理のうち、デブロッキングフィルタ処理DFL1を除くデブロッキングフィルタ処理を、H.264の規定に基づいた順序で実施する。そして、画像符号化部ENC2は、マクロブロックラインL35−L67のデブロッキングフィルタ処理を、H.264の規定に基づいた順序で実施する。その後、画像符号化部ENC2は、デブロッキングフィルタ処理DFL2を実施する。例えば、デブロッキングフィルタ処理DFL2は、スライスSL2のマクロブロックラインL67とスライスSL3のマクロブロックラインL68との境界エッジSEGのデブロッキングフィルタ処理を含む。
なお、ピクチャI0のマクロブロックラインL68の処理は、マクロブロックラインL0、L34の処理とほぼ同じタイミングで、画像符号化部ENC3により実施されている。したがって、デブロッキングフィルタ処理DFL2が実施されるときには、マクロブロックラインL68の処理は、終了している。これにより、画像符号化部ENC2は、マクロブロックラインL67とマクロブロックラインL68との境界エッジSEGの上下4画素を使用するデブロッキングフィルタ処理DFL2を、マクロブロックラインL67の処理に引き続き実施できる。
画像符号化部ENC3は、ピクチャI0のマクロブロックラインL68−L101を順次処理する。例えば、画像符号化部ENC3は、マクロブロックラインL68のデブロッキングフィルタ処理のうち、デブロッキングフィルタ処理DFL2を除くデブロッキングフィルタ処理を、H.264の規定に基づいた順序で実施する。そして、画像符号化部ENC3は、マクロブロックラインL69−L101のデブロッキングフィルタ処理を、H.264の規定に基づいた順序で実施する。その後、画像符号化部ENC3は、デブロッキングフィルタ処理DFL3を実施する。例えば、デブロッキングフィルタ処理DFL3は、スライスSL3のマクロブロックラインL101とスライスSL4のマクロブロックラインL102との境界エッジSEGのデブロッキングフィルタ処理を含む。
なお、ピクチャI0のマクロブロックラインL102の処理は、マクロブロックラインL0、L34、L68の処理とほぼ同じタイミングで、画像符号化部ENC4により実施されている。したがって、デブロッキングフィルタ処理DFL3が実施されるときには、マクロブロックラインL102の処理は、終了している。これにより、画像符号化部ENC3は、マクロブロックラインL101とマクロブロックラインL102との境界エッジSEGの上下4画素を使用するデブロッキングフィルタ処理DFL3を、マクロブロックラインL101の処理に引き続き実施できる。
画像符号化部ENC4は、ピクチャI0のマクロブロックラインL102−L134を順次処理する。例えば、画像符号化部ENC4は、マクロブロックラインL102のデブロッキングフィルタ処理のうち、デブロッキングフィルタ処理DFL3を除くデブロッキングフィルタ処理を、H.264の規定に基づいた順序で実施する。そして、画像符号化部ENC4は、マクロブロックラインL103−L134のデブロッキングフィルタ処理を、H.264の規定に基づいた順序で実施する。
このように、画像符号化部ENC1−ENC4は、スライスSL1−SL4の処理を並列に実施する。そして、下端のエッジがスライスSLの境界エッジであるマクロブロックを含むスライスSLを処理する画像符号化部ENC1−ENC3(より詳細には、画像符号化部ENC1−ENC3のデブロッキングフィルタ部DBF)は、デブロッキングフィルタ処理DFL以外のデブロッキングフィルタ処理を実施してからデブロッキングフィルタ処理DFLを実施する。
なお、デブロッキングフィルタ処理DFL1、DFL2、DFL3は、例えば、画像符号化部ENC2、ENC3、ENC4でそれぞれ実施されてもよい。あるいは、デブロッキングフィルタ処理DFL1、DFL2、DFL3は、2つの画像符号化部ENCで実施されてもよいし、1つの画像符号化部ENCで実施されてもよい。すなわち、デブロッキングフィルタ処理DFL1、DFL2、DFL3は、少なくとも1つの画像符号化部ENCのデブロッキングフィルタ部DBFで実施される。
ここで、画像が複数のスライスSLに垂直エッジで分割されたときにも、互いに隣接するスライスSLの境界エッジSEGのデブロッキングフィルタ処理を含むデブロッキングフィルタ処理DFLは、他のデブロッキングフィルタ処理とは別に実施される。例えば、右端のエッジがスライスSLの境界エッジであるマクロブロックを含むスライスSLを処理する画像符号化部ENCのデブロッキングフィルタ部DBFは、デブロッキングフィルタ処理DFL以外のデブロッキングフィルタ処理を実施してからデブロッキングフィルタ処理DFLを実施する。
このように、この実施形態では、デブロッキングフィルタ処理DFLが他のデブロッキングフィルタ処理の後に実施されるため、符号化処理をフレーム内で並列に実施できる。これにより、この実施形態では、符号化処理を並列に実施する際の処理遅延を小さくできる。
図5に示したピクチャB1(Bピクチャ)およびピクチャB2(Bピクチャ)は、例えば、被参照画像でない画像である。したがって、ピクチャB1、B2の処理では、デブロッキングフィルタ処理は、実施されない。なお、ピクチャP3(Pピクチャ)は、例えば、被参照画像である。このため、ピクチャP3では、ピクチャI0の処理と同様にデブロッキングフィルタ処理が実施される。すなわち、被参照画像では、Iピクチャか否かにかかわらず、上述したピクチャI0の処理と同様にデブロッキングフィルタ処理が実施される。
図6は、図5に示した処理タイミングの比較例を示している。なお、図6は、マクロブロックラインL34、L68、L102のマクロブロックが図2に示したように設定されていないときの処理タイミングの例を示している。図6の例では、デブロッキングフィルタ処理間にデータの依存関係があるため、デブロッキングフィルタ処理は、マクロブロックアドレス順(ラスタスキャン順)に順次実施される。したがって、マクロブロックラインL34以降のデブロッキングフィルタ処理ADFL1、ADFL2、ADFL3は、依存関係によって順番に処理される必要がある。
なお、デブロッキングフィルタ処理ADFL1は、マクロブロックラインL34−L67のデブロッキングフィルタ処理を示している。また、デブロッキングフィルタ処理ADFL2は、マクロブロックラインL68−L101のデブロッキングフィルタ処理を示している。そして、デブロッキングフィルタ処理ADFL3は、マクロブロックラインL102−L134のデブロッキングフィルタ処理を示している。
画像符号化部ENC1は、マクロブロックラインL0−L33を順次処理する。なお、画像符号化部ENC1は、図5に示したデブロッキングフィルタ処理DFL1を実施しない。画像符号化部ENC2は、先ず、マクロブロックラインL34−L67に対して、マクロブロックラインL34−L67のデブロッキングフィルタ処理ADFL1以外の処理を順次処理する。そして、画像符号化部ENC2は、画像符号化部ENC1によるマクロブロックラインL33のデブロッキングフィルタ処理の完了後、マクロブロックラインL34−L67のデブロッキングフィルタ処理ADFL1を実施する。
画像符号化部ENC3は、先ず、マクロブロックラインL68−L101に対して、マクロブロックラインL68−L101のデブロッキングフィルタ処理ADFL2以外の処理を順次処理する。そして、画像符号化部ENC3は、画像符号化部ENC2によるデブロッキングフィルタ処理ADFL1の完了後、マクロブロックラインL68−L101のデブロッキングフィルタ処理ADFL2を実施する。
画像符号化部ENC4は、先ず、マクロブロックラインL102−L134に対して、マクロブロックラインL102−L134のデブロッキングフィルタ処理ADFL3以外の処理を順次処理する。そして、画像符号化部ENC4は、画像符号化部ENC3によるデブロッキングフィルタ処理ADFL2の完了後、マクロブロックラインL102−L134のデブロッキングフィルタ処理ADFL3を実施する。
このように、図6の例では、マクロブロックラインL34以降のデブロッキングフィルタ処理ADFL1、ADFL2、ADFL3を実施する時間を別途設ける必要がある。なお、デブロッキングフィルタ処理ADFL1、ADFL2、ADFL3の処理対象は、画面の約3/4にわたる。このため、デブロッキングフィルタ処理ADFL1、ADFL2、ADFL3の処理量は、デブロッキングフィルタ処理DFL1、DFL2、DFL3(スライス境界のフィルタ処理のみ)に比べて、非常に多い。このため、図6の例では、符号化処理を並列に実施する際の処理遅延が大きい。なお、図6の例において、図5に示した処理タイミングと同じフレームレート(例えば、期間T10’が1/60秒)を達成するためには、符号化等の各処理をより高速に実施する必要がある。
また、デブロッキングフィルタ処理ADFL1、ADFL2、ADFL3では、画像の3/4に対してリード/ライトを実施する。これに対し、デブロッキングフィルタ処理DFL1、DFL2、DFL3では、処理対象になる画素だけのリード/ライトでよい。このため、この実施形態では、フレームメモリFMEM1−FMEM4を構成するSDRAM等の帯域を削減できる。
すなわち、上端、左端および右端のいずれかのエッジがスライス境界であるマクロブロックの各パラメータを図2に示したように設定しない構成では、符号化処理を並列に実施しても、デブロッキングフィルタ処理を効率よく実施できない。
なお、この実施形態では、デブロッキングフィルタ処理DFL1、DFL2、DFL3の完了前に、デブロッキングフィルタ処理ADFL1、ADFL2、ADFL3に相当する処理を実施することができるため、デブロッキングフィルタ処理を効率よく並列に実施できる。これにより、この実施形態では、符号化処理を並列に実施する際の処理遅延を小さくできる。
図7は、画像符号化部ENC1−ENC4とフレームメモリFMEM1−FMEM4との接続の例を示している。図7の破線の矢印は、フレームメモリFMEMから画像符号化部ENCに読み出されるデータのパス(リード)を示している。また、図7の実線の矢印は、画像符号化部ENCからフレームメモリFMEMに書き込まれるデータのパス(ライト)を示している。なお、この実施形態では、符号化の際に参照されるマクロブロックの範囲は、隣接するスライスSLを超えない範囲に設定されている。このため、例えば、図4に示したスライスSL1のマクロブロックを符号化する際に、スライスSL3、SL4のマクロブロックが参照されることはない。
画像符号化部ENC1−ENC4は、フレームメモリFMEM1−FMEM4にスイッチ部SWを介して接続されている。画像符号化部ENC1−ENC4とフレームメモリFMEM1−FMEM4との間の信号ラインは、スイッチ部SWにより切り替えられる。
画像符号化部ENC1は、フレームメモリFMEM1、FMEM2のデータを読み出し可能に接続され、かつ、フレームメモリFMEM1、FMEM2にデータを書き込み可能に接続されている。例えば、画像符号化部ENC1は、マクロブロックラインL0−L33のデブロッキングフィルタ処理により平滑化された画素の値(データ)をフレームメモリFMEM1に書き込む。また、画像符号化部ENC1は、例えば、デブロッキングフィルタ処理DFL1により平滑化されたマクロブロックL34の画素の値を、フレームメモリFMEM2に書き込む。
画像符号化部ENC2は、フレームメモリFMEM1−FMEM3のデータを読み出し可能に接続され、かつ、フレームメモリFMEM2、FMEM3にデータを書き込み可能に接続されている。例えば、画像符号化部ENC2は、マクロブロックラインL34−L67のデブロッキングフィルタ処理により平滑化された画素の値をフレームメモリFMEM2に書き込む。また、画像符号化部ENC2は、例えば、デブロッキングフィルタ処理DFL2により平滑化されたマクロブロックL68の画素の値を、フレームメモリFMEM3に書き込む。
画像符号化部ENC3は、フレームメモリFMEM2−FMEM4のデータを読み出し可能に接続され、かつ、フレームメモリFMEM3、FMEM4にデータを書き込み可能に接続されている。例えば、画像符号化部ENC3は、マクロブロックラインL68−L101のデブロッキングフィルタ処理により平滑化された画素の値をフレームメモリFMEM3に書き込む。また、画像符号化部ENC3は、例えば、デブロッキングフィルタ処理DFL3により平滑化されたマクロブロックL102の画素の値を、フレームメモリFMEM4に書き込む。
画像符号化部ENC4は、フレームメモリFMEM3、FMEM4のデータを読み出し可能に接続され、かつ、フレームメモリFMEM4にデータを書き込み可能に接続されている。例えば、画像符号化部ENC4は、マクロブロックラインL102−L134のデブロッキングフィルタ処理により平滑化された画素の値をフレームメモリFMEM4に書き込む。
このように、この実施形態では、フレーム内の並列化を実現するために、各画像符号化部ENCと全てのフレームメモリFMEM1−FMEM4とをリード/ライト可能に接続する必要はない。したがって、フレームメモリFMEM1−FMEM4を構成するSDRAM等と各画像符号化部ENC間の接続パス数の増加を抑制できる。例えば、リードのパスは、画像符号化部ENCの数をnとしたとき、(n×3−2)本である。また、ライトのパスは、画像符号化部ENCの数をnとしたとき、(n×2−1)本である。
なお、デブロッキングフィルタ処理DFLを実施しない構成では、ライトの(n−1)本のパスを省くことができる。換言すれば、デブロッキングフィルタ処理DFL用に追加されるパスは、ライトの(n−1)本である。このように、この実施形態では、フレームメモリFMEM1−FMEM4を構成するSDRAMと各画像符号化部ENC間の接続パス数の増加を抑制しつつ、デブロッキングフィルタ処理DFLを実施可能に構成できる。
ここで、図1に示した画像符号化装置EDEVは、デブロッキングフィルタ処理DFL以外のデブロッキングフィルタ処理の結果を一時的に保持するバッファを有してもよい。
図8は、垂直エッジEGに対するデブロッキングフィルタ処理の概要を示している。なお、図8は、マクロブロックMBの最も左側の垂直エッジEGに対するデブロッキングフィルタ処理を示している。図8の網掛けは、デブロッキングフィルタ処理により、値が書き換えられる画素PXを示している。また、ブロックPBaは、4x4画素のブロックを示している。
マクロブロックMBの1つの垂直エッジEGに対するデブロッキングフィルタ処理は、16個の画素PXの垂直エッジEGに対するフィルタ処理である。すなわち、マクロブロックMBの1つの垂直エッジEGに対するデブロッキングフィルタ処理は、1画素PXの垂直エッジEGに対するサブフィルタ処理を16個集めたものである。サブフィルタ処理間にデータの依存関係がないため、サブフィルタ処理は、並列あるいは任意の順序で実施可能である。サブフィルタ処理では、サブフィルタ処理の対象となる1画素PXの垂直エッジEGの左右4画素PXの情報に基づいて、左右3画素PX(図の網掛け部分)の値を書き換える。
以下、マクロブロックMBの1つの垂直エッジEGに対するデブロッキングフィルタ処理を垂直エッジフィルタ処理とも称する。なお、マクロブロックMBの1つの水平エッジに対するデブロッキングフィルタ処理は、垂直エッジフィルタ処理の縦横を変えた処理である。以下、マクロブロックMBの1つの水平エッジに対するデブロッキングフィルタ処理を水平エッジフィルタ処理とも称する。
図9は、マクロブロックMBのデブロッキングフィルタ処理の概要を示している。なお、図9は、マクロブロックMBの変換サイズが4x4画素に設定されたときのデブロッキングフィルタ処理の概要を示している。図9の濃い網掛けは、デブロッキングフィルタ処理が実施されている画素(より詳細には、値が書き換えられる画素)を示している。図9の薄い網掛けは、デブロッキングフィルタ処理が完了した画素(より詳細には、値が書き換えられた画素)を示している。すなわち、図9の薄い網掛けの画素の値は、濃い網掛け部分のデブロッキングフィルタ処理より先に実施されたデブロッキングフィルタ処理により、書き換えられている。
先ず、マクロブロックMBに存在する4つの垂直エッジに対して、垂直エッジフィルタ処理が実施される。垂直エッジフィルタ処理は、左側の垂直エッジから順に実施される(図9(a、b、c、d))。その後、マクロブロックMBに存在する4つの水平エッジに対して、水平エッジフィルタ処理が実施される。水平エッジフィルタ処理は、上側の水平エッジから順に実施される(図9(e、f、g、h))。
図10は、複数のマクロブロックMBに対するデブロッキングフィルタ処理の概要を示している。なお、図10は、互いに隣接する4つのマクロブロックMBのデブロッキングフィルタ処理の概要を示している。図10の例では、各マクロブロックMBの変換サイズは、4x4画素に設定されている。図10の太い線の四角形は、マクロブロックMBを示し、マクロブロックMB内の四角形は、4x4画素のブロックを示している。なお、図10の濃い網掛けおよび薄い網掛けの意味は、図9と同じである。
先ず、図10(a)に示すように、左上のマクロブロックMBのデブロッキングフィルタ処理が、図9に示した順序で実施される。そして、図10(b、c)に示すように、右上のマクロブロックMBのデブロッキングフィルタ処理が、図9に示した順序で実施される。例えば、図10(b)に示すように、左上のマクロブロックMBのデブロッキングフィルタ処理が完了した後、右上のマクロブロックMBの最も左側の垂直エッジに対して、垂直エッジフィルタ処理が実施される。
右上のマクロブロックMBのデブロッキングフィルタ処理が完了した後(図10(c))、左下のマクロブロックMBのデブロッキングフィルタ処理が、図9に示した順序で実施される。例えば、図10(d)に示すように、左下のマクロブロックMBの垂直エッジフィルタ処理が完了した後、左下のマクロブロックMBの最も上側の水平エッジに対する水平エッジフィルタ処理が実施される。
左下のマクロブロックMBのデブロッキングフィルタ処理が完了した後、右下のマクロブロックMBのデブロッキングフィルタ処理が、図9に示した順序で実施される。例えば、図10(e)に示すように、左下のマクロブロックMBのデブロッキングフィルタ処理が完了した後、右下のマクロブロックMBの最も左側の垂直エッジに対して、垂直エッジフィルタ処理が実施される。そして、図10(f)に示すように、右下のマクロブロックMBの垂直エッジフィルタ処理が完了した後、右下のマクロブロックMBの最も上側の水平エッジに対する水平エッジフィルタ処理が実施される。その後、残りの水平エッジに対する水平エッジフィルタ処理が実施され、4つのマクロブロックMBに対する全てのデブロッキングフィルタ処理が完了する。
このように、4つのマクロブロックMBのデブロッキングフィルタ処理は、左上のマクロブロックMB、右上のマクロブロックMB、左下のマクロブロックMB、右下のマクロブロックMBの順に実施される。
ここで、図10の網掛け部分の重なり(角の丸い長方形同士の重なり)は、背面側の網掛けに対応するデブロッキングフィルタ処理の結果が前面側の網掛けに対応するデブロッキングフィルタ処理に使用されることを示している。すなわち、図10の網掛け部分の重なりは、デブロッキングフィルタ処理間にデータの依存関係があることを示している。
例えば、図10(d)の濃い網掛けに対応するデブロッキングフィルタ処理は、左上のマクロブロックMBの垂直エッジフィルタ処理、左上のマクロブロックMBの最後に実施される水平エッジフィルタ処理および左下のマクロブロックMBの垂直エッジフィルタ処理のそれぞれの結果を使用する。また、図10(d)の濃い網掛けに対応するデブロッキングフィルタ処理の結果は、例えば、左下のマクロブロックMBの2番目に実施される水平エッジフィルタ処理および右下のマクロブロックMBの最初に実施される垂直エッジフィルタ処理に使用される。
なお、図10では、図を見やすくするために、デブロッキングフィルタ処理により書き換えられる画素(エッジの両側の3画素)を網掛け(角の丸い長方形)で示している。実際には、デブロッキングフィルタ処理は、図8で説明したように、例えば、エッジの両側4画素を使用する。
図11は、デブロッキングフィルタ処理の依存関係の例を示している。なお、図11は、図10(f)に示した状態から残りの水平エッジに対する水平エッジフィルタ処理が実施された状態に対応し、4つのマクロブロックMBに対する全てのデブロッキングフィルタ処理が完了した状態を示している。図11の網掛けおよび網掛けの重なりの意味は、図10と同じである。
互いに隣接するマクロブロックMBのデブロッキングフィルタ処理間には、データの依存関係がある。このため、例えば、各マクロブロックMBの垂直エッジフィルタ処理が実施されるときには、垂直エッジフィルタ処理が実施されるマクロブロックMBの左側のマクロブロックMBのデブロッキングフィルタ処理が完了している必要がある。また、各マクロブロックMBの水平エッジフィルタ処理が実施されるときには、水平エッジフィルタ処理が実施されるマクロブロックMBの上側のマクロブロックMBのデブロッキングフィルタ処理が完了している必要がある。また、変換サイズが4x4画素に設定されたマクロブロックMBでは、マクロブロックMB内のデブロッキングフィルタ処理間に完全な依存関係がある。
したがって、例えば、4x4画素のブロックの全てのエッジにデブロッキングフィルタ処理が実施されるときには、データの依存関係により、図10に示した順序で複数のマクロブロックMBのデブロッキングフィルタ処理を実施する必要がある。さらに、図9に示した順序(H.264に規定されている順序)でマクロブロックMB内のデブロッキングフィルタ処理を実施する必要がある。この場合、デブロッキングフィルタ処理は、例えば、図6で説明したように、マクロブロックラインL0から順次実施される。
なお、図2に示したように各パラメータを設定することにより、図12に示すようにデータの依存関係の一部を解消することができる。したがって、この実施形態では、図5に示したように、例えば、マクロブロックラインL33のデブロッキングフィルタ処理の完了前に、デブロッキングフィルタ処理DFL1を除くマクロブロックラインL34以降のデブロッキングフィルタ処理を実施できる。
図12は、デブロッキングフィルタ処理の依存関係の別の例を示している。なお、図12は、互いに隣接するマクロブロックMBの境界エッジ(水平エッジEG10)を上端に有するマクロブロックMBの変換サイズが8x8画素に設定された、または8x8ブロックの内部エッジに対するbSが0となるときのデブロッキングフィルタ処理の依存関係を示している。図12の薄い網掛けおよび網掛けの重なりの意味は、図11と同じである。図12の濃い網掛けは、図9および図10で説明した順序と異なるタイミングで実施されても問題のないデブロッキングフィルタ処理を示している。なお、濃い網掛け内では、図9および図10で説明した順序に従ってデブロッキングフィルタ処理が実施される。
変換サイズが8x8画素に設定された、または8x8ブロックの内部エッジに対するbSが0となるマクロブロックMBでは、8x8画素のブロックのエッジに対してのみ、デブロッキングフィルタ処理が実施される。すなわち、変換サイズが8x8画素に設定されたマクロブロックMBでは、図9(b、d、f、h)に示したデブロッキングフィルタ処理(8x8画素のブロック内部のデブロッキングフィルタ処理)は、実施されない。
このため、図12(a)に示すように、変換サイズが8x8画素に設定された、または8x8ブロックの内部エッジに対するbSが0となるマクロブロックMB(水平エッジEG10の下側の2つのマクロブロックMB)では、水平エッジフィルタ処理間のデータの依存関係および垂直エッジフィルタ処理間のデータの依存関係が解消される。また、図8で説明したように、水平エッジフィルタ処理および垂直エッジフィルタ処理のサブフィルタ処理間には、データの依存関係はない。このため、例えば、垂直エッジフィルタ処理は、任意の画素のエッジで分割されて別のタイミングで実施されても問題ない。
したがって、図12(b)に示すように、例えば、垂直エッジフィルタ処理は、水平エッジEG10から4画素目のポイントPT10で分割されて、別のタイミングで実施されても問題ない。なお、図12の濃い網掛けは、水平エッジEG10のデブロッキングフィルタ処理と水平エッジEG10のデブロッキングフィルタ処理に付随するデブロッキングフィルタ処理とを示している。例えば、水平エッジEG10がスライス境界のエッジのとき、図12の濃い網掛けは、図5に示したデブロッキングフィルタ処理DFLに対応する。したがって、この実施形態では、上端のエッジがスライス境界のエッジであるマクロブロックMBに対して図2に示したように各パラメータを設定することにより、図12(b)の濃い網掛けで示したデブロッキングフィルタ処理を、薄い網掛けで示したデブロッキングフィルタ処理より後に実施できる。
図13は、デブロッキングフィルタ処理の依存関係の別の例を示している。なお、図13は、垂直エッジEG20に隣接する4つのマクロブロックMBの変換サイズが8x8画素に設定された、または8x8ブロックの内部エッジに対するbSが0となるときのデブロッキングフィルタ処理の依存関係を示している。図13の網掛けおよび網掛けの重なりの意味は、図12と同じである。例えば、図13の濃い網掛けは、垂直エッジEG20のデブロッキングフィルタ処理と垂直エッジEG20のデブロッキングフィルタ処理に付随するデブロッキングフィルタ処理とを示している。
図13(a)に示すように、変換サイズが8x8画素に設定された、または8x8ブロックの内部エッジに対するbSが0となるマクロブロックMB(垂直エッジEG20の両側のマクロブロックMB)では、水平エッジフィルタ処理間のデータの依存関係および垂直エッジフィルタ処理間のデータの依存関係が解消される。このため、例えば、水平エッジフィルタ処理は、任意の画素のエッジで分割されて別のタイミングで実施されても問題ない。
したがって、図13(b)に示すように、例えば、水平エッジフィルタ処理は、垂直エッジEG20から左右4画素目のポイントPT20、PT30で分割されて、別のタイミングで実施されても問題ない。したがって、この実施形態では、左端および右端のいずれかのエッジがスライス境界のエッジであるマクロブロックMBに対して図2に示したように各パラメータを設定することにより、図13(b)の濃い網掛けで示したデブロッキングフィルタ処理を、薄い網掛けで示したデブロッキングフィルタ処理より後に実施できる。なお、濃い網掛け内では、図9および図10で説明した順序に従ってデブロッキングフィルタ処理が実施される。
図14−図17は、MBAFFの画像を符号化する際のデブロッキングフィルタ処理の分割ポイントの例を示している。なお、図14−図17は、スライスの境界エッジSEGが水平エッジのときのデブロッキングフィルタ処理の分割ポイントの例を示している。H.264に規定されているMBAFFの画像では、水平エッジに対するデブロッキングフィルタ処理(水平エッジフィルタ処理)間の依存関係が図8−図13で説明した依存関係と異なる。なお、垂直エッジに対するデブロッキングフィルタ処理(垂直エッジフィルタ処理)間の依存関係は、MBAFFの画像でも、図8−図13で説明した依存関係と同じである。図14−図17に示したマクロブロックペアMBP(MBP10、MBP11、MBP20、MBP21)の組み合わせおよび分割ポイントPT(PT10、PT11、PT12)を示す情報は、例えば、図18に示す制御部CNTから画像符号化部ENC1、ENC2、ENC3、ENC4に通知される。
図14−図17では、スライスの境界エッジSEGを挟んで互いに隣接するマクロブロックペアMBPを図の左側に示している。マクロブロックペアMBP10、MBP11は、Frame−MB−pairである。マクロブロックペアMBP20、MBP21は、Field−MB−pairである。マクロブロックペアMBPの網掛け部分は、マクロブロックアドレスが奇数((マクロブロックアドレス%2)==1)のマクロブロックの画素を示している。したがって、マクロブロックペアMBPの網掛けのない部分は、マクロブロックアドレスが偶数((マクロブロックアドレス%2)==0)のマクロブロックの画素を示している。
また、スライスの境界エッジSEGの下側のマクロブロックペアMBP(MBP11、MBP21)の水平エッジフィルタ処理の対象画素を図の右側に示している。図では、H.264に準拠した処理順序に対応させて水平エッジフィルタ処理の対象画素を示している。例えば、時間的に先に実施される水平エッジフィルタ処理の対象画素を相対的に左側に示している。破線より左側に示した画素は、(マクロブロックアドレス%2)==0のマクロブロックの水平エッジフィルタ処理の対象画素である。破線より右側に示した画素は、(マクロブロックアドレス%2)==1のマクロブロックの水平エッジフィルタ処理の対象画素である。なお、図の右側の四角形(図の縦方向に並んだ8つの正方形の各グループや各長方形)は、各水平エッジフィルタ処理のうちの1つのサブフィルタ処理の対象画素(8画素)を示している。また、破線の四角形は、実施されない水平エッジフィルタ処理に対応する画素を示している。例えば、マクロブロックの各パラメータが図2に示したように設定されたとき、破線の四角形で示した画素を使用する水平エッジフィルタ処理は、実施されない。
図14は、スライスの境界エッジSEGの上下のマクロブロックペアMBP10、MBP11が両方ともFrame−MB−pairのときのデブロッキングフィルタ処理の分割ポイントPT10の例を示している。スライスの境界エッジSEGの上下のマクロブロックペアMBP10、MBP11が両方ともFrame−MB−pairのときは、水平エッジフィルタ処理間の依存関係は、MBAFFでない画像の依存関係(図8−図13で説明した依存関係)と同じである。このため、垂直エッジフィルタ処理は、スライスの境界エッジSEG(水平エッジ)から4画素目のポイントPT10で分割される。したがって、この実施形態では、境界エッジSEGとポイントPT10との間の画素を使用する垂直エッジフィルタ処理と境界エッジSEGの水平エッジフィルタ処理とを、他のデブロッキングフィルタ処理より後に実施できる。
図15は、スライスの境界エッジSEGの上下のマクロブロックペアMBP20、MBP21が両方ともField−MB−pairのときのデブロッキングフィルタ処理の分割ポイントPT11の例を示している。スライスの境界エッジSEGの下側のマクロブロックペアMBP21がField−MB−pairのときは、スライスの境界エッジSEGの水平エッジフィルタ処理は、奇数行目の画素および偶数行目の画素のそれぞれに対して実施される。このため、垂直エッジフィルタ処理は、スライスの境界エッジSEGから8画素目のポイントPT11で分割される。なお、スライスの境界エッジSEGの下側のマクロブロックペアMBP21(Field−MB−pair)では、マクロブロックペアMBP21を構成する両方((マクロブロックアドレス%2)==0および(マクロブロックアドレス%2)==1)のマクロブロックの各パラメータが図2に示したように設定される。これにより、この実施形態では、境界エッジSEGとポイントPT11との間の画素を使用する垂直エッジフィルタ処理と境界エッジSEGの水平エッジフィルタ処理とを、他のデブロッキングフィルタ処理より後に実施できる。
図16は、スライスの境界エッジSEGの上下のマクロブロックペアMBP20、MBP11がそれぞれField−MB−pair、Frame−MB−pairのときのデブロッキングフィルタ処理の分割ポイントPT12の例を示している。スライスの境界エッジSEGの上側のマクロブロックペアMBP20がField−MB−pairであるため、スライスの境界エッジSEGの水平エッジフィルタ処理は、奇数行目の画素および偶数行目の画素のそれぞれに対して実施される。
このため、マクロブロックペアMBP20にスライスの境界エッジSEGを挟んで隣接するマクロブロックペアMBP11では、垂直エッジフィルタ処理をスライスの境界エッジSEGから4画素目のポイントで分割することができない。また、スライスの境界エッジSEGから8画素目のポイントでは、8x8画素のブロックに対する水平エッジフィルタ処理が実施される。
したがって、スライスの境界エッジSEGの上下のマクロブロックペアMBP20、MBP11がそれぞれField−MB−pair、Frame−MB−pairのときは、垂直エッジフィルタ処理は、スライスの境界エッジSEG(水平エッジ)から12画素目のポイントPT12で分割される。これにより、この実施形態では、境界エッジSEGとポイントPT12との間の画素を使用する垂直エッジフィルタ処理と境界エッジSEGの水平エッジフィルタ処理とを、他のデブロッキングフィルタ処理より後に実施できる。
図17は、スライスの境界エッジSEGの上下のマクロブロックペアMBP10、MBP21がそれぞれFrame−MB−pair、Field−MB−pairのときのデブロッキングフィルタ処理の分割ポイントPT11の例を示している。スライスの境界エッジSEGの下側のマクロブロックペアMBP21がField−MB−pairであるため、図15で説明したように、垂直エッジフィルタ処理は、スライスの境界エッジSEGから8画素目のポイントPT11で分割される。なお、スライスの境界エッジSEGの下側のマクロブロックペアMBP21では、マクロブロックペアMBP21を構成する両方のマクロブロックの各パラメータが図2に示したように設定される。これにより、この実施形態では、境界エッジSEGとポイントPT11との間の画素を使用する垂直エッジフィルタ処理と境界エッジSEGの水平エッジフィルタ処理とを、他のデブロッキングフィルタ処理より後に実施できる。
図18は、図1に示した動画像符号化装置をLSIに適用したときのチップ構成の例を示している。なお、図18に示したエンコーダチップECHIPも動画像符号化装置の一態様を構成する。エンコーダチップECHIPは、例えば、画像符号化部ENC1−ENC4、エントロピ符号化部ECOD、制御部CNT、情報メモリIMEM、バッファ部BUF、入力部INP、スイッチ部SWを有している。また、エンコーダチップECHIPは、フレームメモリFMEM1−FMEM4に接続されている。
制御部CNTは、画像符号化部ENC1−ENC4の動作を制御する。例えば、制御部CNTは、図5に示したタイミングで画像符号化部ENC1−ENC4が動作するように、画像符号化部ENC1−ENC4の起動制御等を実施する。また、制御部CNTは、例えば、画像符号化部ENC1−ENC4から処理完了通知を受信する。さらに、制御部CNTは、例えば、インターレースの画像をMBAFFで符号化するか否かを決定する。そして、制御部CNTは、MBAFFの画像を複数のスライスに水平エッジで分割して符号化する際に、例えば、スライスの境界エッジ(以下、スライス境界とも称する)を挟んで隣接するマクロブロックペアMBPの組み合わせ等を示す情報を、画像符号化部ENC1−ENC4に通知する。
例えば、制御部CNTは、MBAFFの画像を符号化する際に、スライス境界(水平エッジ)に隣接する下側の全てのマクロブロックペア(スライス境界の下側のマクロブロックペアのうちの最も上側のマクロブロックペアの全て)をFrame−MB−pairあるいはField−MB−pairに設定する。そして、制御部CNTは、例えば、スライス境界を挟んで隣接するマクロブロックペアの組み合わせに応じた分割ポイント(図14−図17のポイントPT10、PT11、PT12のいずれか)を示す情報を、画像符号化部ENC1−ENC4に通知する。
なお、スライス境界に隣接する下側のマクロブロックペアの全てがFrame−MB−pairに設定されたときのデブロッキングフィルタ処理の分割ポイントは、以下に示すように、スライス境界に隣接する上側のマクロブロックペア(スライス境界の上側のマクロブロックペアのうちの最も下側のマクロブロックペア)の組み合わせに応じて決定される。
例えば、スライス境界に隣接する上側のマクロブロックペアの全てがFrame−MB−pairに設定されたとき、デブロッキングフィルタ処理の分割ポイントは、図14に示したように、スライス境界から4画素目のポイントPT10に設定される。また、スライス境界に隣接する上側のマクロブロックペアのうちの少なくとも1つがField−MB−pairに設定されたとき、デブロッキングフィルタ処理の分割ポイントは、図16に示したように、スライス境界から12画素目のポイントPT12に設定される。
ここで、スライス境界に隣接する下側のマクロブロックペアの全てがField−MB−pairに設定されたときのデブロッキングフィルタ処理の分割ポイントは、スライス境界に隣接する上側のマクロブロックペアの組み合わせにかかわらず、図15および図17に示したように、スライス境界から8画素目のポイントPT11に設定される。なお、この場合、スライス境界に隣接する下側のマクロブロックペアの両方のマクロブロックは、例えば、図2に示したようなパラメータに設定される。
制御部CNTの制御により、例えば、画像符号化部ENC1−ENC4は、複数のスライスの処理を並列に実施できる。なお、画像符号化部ENC2−ENC4は、例えば、図5に示したマクロブロックラインL34、L68、L102の処理完了通知を、画像符号化部ENC1−ENC3にそれぞれ通知する。これにより、画像符号化部ENC1−ENC3は、デブロッキングフィルタ処理DFL1、DFL2、DFL3を適切に実施できる。なお、画像符号化部ENC1−ENC3は、マクロブロックラインL34、L68、L102の処理完了通知を、制御部CNTを介して受信してもよい。また、画像符号化部ENC1−ENC4は、スライス境界に隣接するマクロブロックペアMBPの組み合わせに基づいて、分割ポイントを算出してもよい。
情報メモリIMEMは、画像符号化部ENC1−ENC4に接続され、スライス境界のデブロッキングフィルタ処理に必要な情報を保持する。例えば、スライス境界のデブロッキングフィルタ処理に必要な情報は、スライス上端および下端のMB−type(符号化モード)、動きベクトル、量子化パラメータ等である。なお、情報メモリIMEMは、制御部CNT内に設けられてもよい。
エントロピ符号化部ECODから出力されたデータは、バッファ部BUFを介してエンコーダチップECHIPの外部に出力される。なお、バッファ部BUFは、エントロピ符号化部ECODと画像符号化部ENC1−ENC4との間に設けられてもよい。ここで、画像符号化部ENC1−ENC4は、複数のLSIに分けて設けられてもよい。
図19は、図1に示した動画像符号化装置を2つのLSIに分けたときのチップ構成の例を示している。なお、図19に示したエンコーダチップECHIP1、ECHIP2も動画像符号化装置の一態様を構成する。図19のエンコーダチップECHIP1、ECHIP2間の太い線は、入力画像や参照画像等の画像データのパスを示し、エンコーダチップECHIP1、ECHIP2間のその他の線は、起動制御等に使用される制御信号のパスを示している。
エンコーダチップECHIP1は、例えば、画像符号化部ENC1、ENC2、制御部CNT、情報メモリIMEM、入力部INP、スイッチ部SW1、データ転送部DTRを有している。また、エンコーダチップECHIP1は、フレームメモリFMEM1、FMEM2に接続されている。
エンコーダチップECHIP2は、例えば、画像符号化部ENC3、ENC4、エントロピ符号化部ECOD、バッファ部BUF、スイッチ部SW2、データ転送部DTRを有している。また、エンコーダチップECHIP2は、フレームメモリFMEM3、FMEM4に接続されている。
画像データ、スライス境界のデブロッキングフィルタ処理に必要な情報、制御信号等は、エンコーダチップECHIP1、ECHIP2のそれぞれのデータ転送部DTRにより、エンコーダチップECHIP1、ECHIP2間で送受信される。これにより、エンコーダチップECHIP1、ECHIP2は、複数のスライスの処理を並列に実施できる。
以上、この実施形態では、上端、左端および右端のいずれかのエッジがスライス境界であるマクロブロックの水平エッジフィルタ処理間のデータの依存関係および垂直エッジフィルタ処理間のデータの依存関係を解消させることができる。これにより、デブロッキングフィルタ部DBFは、スライス境界のデブロッキングフィルタ処理とスライス境界のデブロッキングフィルタ処理に付随するデブロッキングフィルタ処理とを、他のデブロッキングフィルタ処理とは別に実施できる。
例えば、画像符号化部ENC1−ENC4は、画像を複数のスライスに分割して符号化するときに、互いに隣接するスライスSLの境界エッジSEGのデブロッキングフィルタ処理を含むデブロッキングフィルタ処理DFLとデブロッキングフィルタ処理DFL以外のデブロッキングフィルタ処理とにデブロッキングフィルタ処理を分割できる。これにより、画像符号化部ENC1−ENC4は、少なくともデブロッキングフィルタ処理DFL以外のデブロッキングフィルタ処理を並列に実施できる。
したがって、この実施形態では、符号化処理を並列に実施したときにもデブロッキングフィルタ処理を効率よく実施できる。この結果、符号化処理を並列に実施する際の処理遅延を小さくできる。すなわち、この実施形態では、符号化処理を並列に実施した際の処理遅延が小さく、符号化処理を並列に実施したときにもデブロッキングフィルタ処理を実施可能な動画像符号化装置を提供できる。
図20は、別の実施形態における動画像符号化装置の例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。なお、図20は、動画像符号化装置をLSIに適用したときのチップ構成の例を示している。この実施形態のエンコーダチップECHIP10は、図18に示したエンコーダチップECHIPにフィルタ部DBF10が追加されている。さらに、エンコーダチップECHIP10は、図18に示した画像符号化部ENC1、ENC2、ENC3、ENC4、制御部CNTおよびスイッチ部SWの代わりに画像符号化部ENC11、ENC12、ENC13、ENC14、制御部CNT10およびスイッチ部SW10が設けられている。エンコーダチップECHIP10のその他の構成は、図18に示したエンコーダチップECHIPと同じである。
したがって、図20に示したエンコーダチップECHIP10も動画像符号化装置の一態様を構成する。なお、動画像符号化装置の最小構成は、例えば、画像符号化部ENC11、ENC12、ENC13、ENC14、フィルタ部DBF10およびエントロピ符号化部ECODである。また、画像符号化部ENCの数は、4つに限定されない。エントロピ符号化部ECODは、複数設けられてもよい。
画像符号化部ENC11−ENC14は、図5に示したデブロッキングフィルタ処理DFL1、DFL2、DFL3を実施しない。画像符号化部ENC11−ENC14のその他の構成および動作は、上述した実施形態の画像符号化部ENC1−ENC4と同じである。
フィルタ部DBF10は、例えば、スイッチ部SW10を介して各フレームメモリFMEM1−FMEM4に接続されている。そして、フィルタ部DBF10は、例えば、図21に示すように、デブロッキングフィルタ処理DFL1、DFL2、DFL3を実施する。
スイッチ部SW10は、例えば、フィルタ部DBF10とフレームメモリFMEM1−FMEM4との間の信号ラインの切り替えおよび画像符号化部ENC1−ENC4とフレームメモリFMEM1−FMEM4との間の信号ラインの切り替えを実施する。スイッチ部SW10内およびスイッチ部SW10に接続された信号線の破線の矢印および実線の矢印の意味は、図7と同じである。例えば、画像符号化部ENC11−ENC14およびフィルタ部DBF10とフレームメモリFMEM1−FMEM4との間のリードのパス(破線の矢印)は、画像符号化部ENCの数をnとしたとき、(n×3−2+n)本である。また、画像符号化部ENC11−ENC14およびフィルタ部DBF10とフレームメモリFMEM1−FMEM4との間のライトのパス(実線の矢印)は、画像符号化部ENCの数をnとしたとき、(n×2)本である。
制御部CNT10は、例えば、画像符号化部ENC11、ENC12、ENC13、ENC14およびフィルタ部DBF10の動作を制御する。例えば、制御部CNT10は、図21に示すように、デブロッキングフィルタ処理DFL1、DFL2、DFL3を、図1に示したデブロッキングフィルタ部DBFの代わりにフィルタ部DBF10に実施させる。制御部CNT10のその他の動作は、上述した実施形態の制御部CNTと同じである。
図21は、画像符号化部ENC11−ENC14およびフィルタ部DBF10の処理タイミングの例を示している。なお、図21は、図4に示したように画像IMGを4つのスライスSLに分割したときの処理タイミングの例を示している。図21の符号および網掛けの意味は、図5と同じである。
画像符号化部ENC11−ENC14の処理タイミングは、デブロッキングフィルタ処理DFL1、DFL2、DFL3を実施しないことを除いて、図5と同じである。例えば、画像符号化部ENC11は、ピクチャI0(Iピクチャ)のマクロブロックラインL0−L33を順次処理する。画像符号化部ENC12は、ピクチャI0のマクロブロックラインL34−L67を順次処理する。画像符号化部ENC13は、ピクチャI0のマクロブロックラインL68−L101を順次処理する。画像符号化部ENC14は、ピクチャI0のマクロブロックラインL102−L134を順次処理する。なお、画像符号化部ENC11−ENC14の符号化処理は、図21に示すように、並列に実施される。
フィルタ部DBF10は、例えば、デブロッキングフィルタ処理DFL1に使用するマクロブロックラインL33、L34の画素の処理が完了したときに、デブロッキングフィルタ処理DFL1を実施する。そして、フィルタ部DBF10は、デブロッキングフィルタ処理DFL2、DFL3を順次実施する。これにより、この実施形態では、符号化処理を並列に実施する際の処理遅延を小さくできる。なお、各デブロッキングフィルタ処理DFLの順番は、他のデブロッキングフィルタ処理DFLに依存しない。例えば、デブロッキングフィルタ処理DFL3は、デブロッキングフィルタ処理DFL1、DFL2より先に実施されてもよいし、デブロッキングフィルタ処理DFL2は、デブロッキングフィルタ処理DFL1より先に実施されてもよい。
図22は、図20に示した動画像符号化装置を2つのLSIに分けたときのチップ構成の例を示している。なお、図22に示したエンコーダチップECHIP11、ECHIP12も動画像符号化装置の一態様を構成する。図22のエンコーダチップECHIP1、ECHIP2間の太い線等の意味は、図19と同じである。
エンコーダチップECHIP11は、例えば、画像符号化部ENC11、ENC12、制御部CNT10、フィルタ部DBF10、情報メモリIMEM、入力部INP、スイッチ部SW11、データ転送部DTRを有している。また、エンコーダチップECHIP11は、フレームメモリFMEM1、FMEM2に接続されている。
エンコーダチップECHIP12は、例えば、画像符号化部ENC13、ENC14、エントロピ符号化部ECOD、バッファ部BUF、スイッチ部SW12、データ転送部DTRを有している。また、エンコーダチップECHIP12は、フレームメモリFMEM3、FMEM4に接続されている。
画像データ、スライス境界のデブロッキングフィルタ処理に必要な情報、制御信号等は、エンコーダチップECHIP11、ECHIP12のそれぞれのデータ転送部DTRにより、エンコーダチップECHIP11、ECHIP12間で送受信される。これにより、エンコーダチップECHIP11、ECHIP12は、複数のスライスの処理を並列に実施できる。以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。