(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を用いて説明する。
【0015】
図1は、本実施形態に係る映像処理装置の構成を示す機能ブロック図である。同図に示す映像処理装置1は、前段処理部11、デブロッキングフィルタ(DF)処理部12および後段処理部13を備える。
【0016】
前段処理部11は、ピクチャのデータを取り込み、DF処理部12がデブロッキングフィルタ処理をするCTUの順に、CTU単位で画素データをDF処理部12へ出力する。前段処理部11は、DF処理部12の処理に必要な各種データ、例えば、入力されたピクチャのサイズや、CTUサイズ、タイル分割の有無、CTUの処理順などを保持する。
【0017】
DF処理部12は、前段処理部11からCTU単位の画素データを取り込み、CTUを構成する8×8ブロックの左側垂直境界(VE)と上側水平境界(HE)をVE,HEの順にデブロッキングフィルタ処理を行う。なお、DF処理部12の詳細については後述する。
【0018】
DF処理部12は、DF制御部121、垂直DF処理部122、水平DF処理部123、垂直ラインメモリ124、中間メモリ125、水平ラインメモリ126およびタイルメモリ127を備える。
【0019】
DF制御部121は、前段処理部11からデブロッキングフィルタ処理に必要な情報を取得し、垂直DF処理部122および水平DF処理部123に提供する。取得する情報としては、例えば、処理しようとしているピクチャのサイズ、処理しようとしているピクチャにおけるCTUサイズ、垂直DF処理部122あるいは水平DF処理部123がこれから処理するCTU(以下、「カレントCTU」と称する。)の位置情報(ピクチャ内の左から何番目、上から何番目のCTUか)、処理しようとしているピクチャのタイル情報(タイルの有無と、タイルに分割されている場合は垂直/水平タイル境界の位置)がある。
【0020】
垂直DF処理部122は、前段処理部11からCTU単位の画素データを取り込み、DF制御部121から取得した情報に基づき、当該CTUに含まれる8×8ブロックの左側VEに対して平滑化処理(以下、「VEフィルタ処理」と称する。)を行う。VEフィルタ処理がなされたCTUの画素データは中間メモリ125へ格納される。
【0021】
水平DF処理部123は、中間メモリ125に格納されたVEフィルタ処理済みの画素データをCTU単位で取り込み、DF制御部121から取得した情報に基づき、当該CTUに含まれる8×8ブロックの上側HEに対して平滑化処理(以下、「HEフィルタ処理」と称する。)を行う。HEフィルタ処理がなされたCTUの画素データは後段処理部13へ出力される。
【0022】
垂直ラインメモリ124は、垂直DF処理部122でVEフィルタ処理することができなかった画素データを格納するバッファである。中間メモリ125は、垂直DF処理部122でVEフィルタ処理がなされた画素データを格納するバッファである。水平ラインメモリ126は、水平DF処理部123でHEフィルタ処理することができなかった画素データを格納するバッファである。タイルメモリ127は、垂直DF処理部122でVEフィルタ処理することができなかった画素データであって、垂直タイル境界に隣接した画素データを格納するバッファである。垂直DF処理部122および水平DF処理部123は、これらのメモリを介して画素データをやり取りする。
【0023】
なお、DF制御部121、垂直DF処理部122および水平DF処理部123は、汎用プロセッサをソフトウェアで制御することにより実現される構成であってもよい。あるいは、ロジック回路で実現される構成であってもよい。垂直ラインメモリ124、中間メモリ125、水平ラインメモリ126およびタイルメモリ127は、例えばSRAMあるいはDRAMなどの揮発性メモリであってもよい。例えば、1つのSRAMあるいはDRAMのメモリ領域を分割し、分割したそれぞれのメモリ領域を、垂直ラインメモリ124、中間メモリ125、水平ラインメモリ126およびタイルメモリ127に割り当てる構成であってもよい。もちろん、これらメモリのうち幾つかは、個別のSRAMあるいはDRAMを用いる構成であってもよい。
【0024】
後段処理部13は、ピクチャの符号化あるいは復号を行う際、デブロッキングフィルタ処理に続く処理を行う。例えば、インループフィルタにDF処理部12が組み込まれるのであれば、後段処理部13は、例えば、適応オフセットフィルタであればよい。
【0025】
次に、映像処理装置1が処理するピクチャとCTUに対するデブロッキングフィルタ処理について説明する。
【0026】
図2は、映像処理装置1が処理するピクチャのイメージである。
図2のピクチャは、太実線で示した垂直タイル境界および水平タイル境界で複数のタイルに分割されている。
図2では、実線で囲まれた四角形の領域が16×16画素からなるCTUを示しており、各CTUには、DF処理部12が処理する順番を付与している。ピクチャが複数のタイルに分割される場合、タイルがラスタスキャン順に処理され、タイル内でもCTUがラスタスキャン順に処理される。つまり、
図2のピクチャでは、左上のタイル、右上のタイル、左下のタイル、右下のタイルの順に処理され、タイル毎にCTUが左から右に1段ずつ処理される。なお、
図2では、各CTUを点線で分割し、DF処理部12がデブロッキングフィルタ処理を行う最小のブロック単位である8×8ブロックを示している。DF処理部12は、
図2の実線および点線に沿ってデブロッキングフィルタ処理をする。
【0027】
図3は、
図2の5番目のCTU(以下、「CTU−5」と称する。)に対して行うデブロッキングフィルタ処理を説明する図である。まず、垂直DF処理部122は前段処理部11からCTU−5の画素データを取り込み、
図3(a)に示すように、CTU−5内の4つの8×8ブロックそれぞれの左側VEを中心として左右4画素からなる8×1画素の領域(以下、「VEフィルタ処理単位」と称する。)を設定し、VEフィルタ処理単位ごとに所定の演算によりフィルタ強度を算出する。各VEフィルタ処理単位では、算出したフィルタ強度に基づき平滑化処理を行う。この平滑化処理を、各VEに沿って上側のVEフィルタ処理単位から下側のVEフィルタ処理単位に向けて実行する。VEフィルタ処理されたCTU−5の画素データは、中間メモリ125へ格納される。
【0028】
CTU−5がVEフィルタ処理されると、水平DF処理部123は中間メモリ125からCTU−5の画素データを取り込み、
図3(b)に示すように、CTU−5内の4つの8×8ブロックそれぞれの上側HEを中心として上下4画素からなる1×8画素の領域(以下、「HEフィルタ処理単位」と称する。)を設定し、HEフィルタ処理単位ごとに所定の演算によりフィルタ強度を算出する。各HEフィルタ処理単位では、算出したフィルタ強度に基づき平滑化処理を行う。この平滑化処理を、各HEに沿って左側のHEフィルタ処理単位から右側のHEフィルタ処理単位に向けて実行する。HEフィルタ処理されたCTU−5の画素データは、後段処理部13へ出力される。
【0029】
次に、本実施形態に係る映像処理装置のDF処理部の動作について説明する。
【0030】
図4は、本実施形態に係る映像処理装置1の垂直DF処理部122の処理の流れを示すフローチャートである。
【0031】
処理が開始されると、垂直DF処理部122は、前段処理部11からカレントCTUの画素データを取り込む(ステップS101)。
【0032】
垂直DF処理部122は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの左端のCTUであるか否かを判定する(ステップS102)。カレントCTUがピクチャの左端のCTUの場合(ステップS102のYES)、カレントCTUの左側には、カレントCTUと共にVEフィルタ処理する画素がないので、ステップS106に進む。
【0033】
カレントCTUがピクチャの左端のCTUでない場合(ステップS102のNO)、垂直DF処理部122は、DF制御部121から取得したタイル情報に基づき、カレントCTUが垂直タイル境界の右隣に位置するCTUであるか否かを判定する(ステップS103)。カレントCTUが垂直タイル境界の右隣に位置するCTUでない場合(ステップS103のNO)、垂直DF処理部122は、垂直ラインメモリ124からカレントCTUの左側に隣接する4画素列を取り込む(ステップS104)。垂直ラインメモリ124には、1つ前のCTU処理時間において処理された左隣のCTUの右端4画素列が格納されている。CTUが16×16画素の場合はCTUの右端の4×16画素が垂直ラインメモリ124に格納されている。
【0034】
カレントCTUが垂直タイル境界の右隣に位置するCTUの場合(ステップS103のYES)、垂直DF処理部122は、タイルメモリ127からカレントCTUの左側に隣接する4画素列を取り込む(ステップS105)。カレントCTUが垂直タイル境界の右隣に位置する場合、カレントCTUが属するタイルと左隣のCTUが属するタイルは異なり、左隣のCTUの右端4画素列は垂直ラインメモリ124ではなく、タイルメモリ127に格納されている。
【0035】
続いて、垂直DF処理部122は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの右端のCTUであるか否かを判定する(ステップS106)。カレントCTUがピクチャの右端のCTUの場合(ステップS106のYES)、カレントCTUの右端4画素列はVEフィルタ処理をしないため、カレントCTUの右端4画素列を垂直ラインメモリ124やタイルメモリ127に格納せずに、ステップS110に進む。
【0036】
カレントCTUがピクチャの右端のCTUでない場合(ステップS106のNO)、垂直DF処理部122は、DF制御部121から取得したタイル情報に基づき、カレントCTUが垂直タイル境界の左隣に位置するCTUであるか否かを判定する(ステップS107)。カレントCTUが垂直タイル境界の左隣に位置するCTUでない場合(ステップS107のNO)、垂直DF処理部122は、垂直ラインメモリ124にカレントCTUの右端4画素列を格納する(ステップS108)。
【0037】
カレントCTUが垂直タイル境界の左隣に位置するCTUの場合(ステップS107のYES)、垂直DF処理部122は、タイルメモリ127にカレントCTUの右端4画素列を格納する(ステップS109)。カレントCTUが垂直タイル境界の左隣に位置する場合、カレントCTUの右端4画素列は次のCTU処理時間でVEフィルタ処理されないので、垂直ラインメモリ124ではなく、タイルメモリ127に格納する。タイルメモリ127に格納されたカレントCTUの右端4画素列は、垂直タイル境界を挟んで隣接する別のタイルのCTUを処理するときに合わせて処理される。
【0038】
上記の処理を終えた後、垂直DF処理部122は、
図3(a)で示したように、カレントCTUの8×8ブロックの左側VEに対してVEフィルタ処理を行い(ステップS110)、VEフィルタ処理を終えた画素データを中間メモリ125へ格納し(ステップS111)、ステップS101に戻り、次のCTUを処理する。
【0039】
図5は、本実施形態に係る映像処理装置1の水平DF処理部123の処理の流れを示すフローチャートである。
【0040】
処理が開始されると、水平DF処理部123は、中間メモリ125からカレントCTUの画素データを取り込む(ステップS201)。
【0041】
水平DF処理部123は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの上端のCTUであるか否かを判定する(ステップS202)。カレントCTUがピクチャの上端のCTUの場合(ステップS202のYES)、カレントCTUの上側には、カレントCTUと共にHEフィルタ処理する画素がないので、ステップS206に進む。
【0042】
カレントCTUがピクチャの上端のCTUでない場合(ステップS202のNO)、水平DF処理部123は、DF制御部121から取得したタイル情報に基づき、カレントCTUが垂直タイル境界の右隣に位置するCTUであるか否かを判定する(ステップS203)。カレントCTUが垂直タイル境界の右隣に位置するCTUでない場合(ステップS203のNO)、カレントCTUの左側には、カレントCTUと共にHEフィルタ処理する画素がないので、ステップS205に進む。
【0043】
カレントCTUが垂直タイル境界の右隣に位置するCTUの場合(ステップS203のYES)、水平DF処理部123は、中間メモリ125からカレントCTUの左側に隣接する4画素列を取り込む(ステップS204)。垂直タイル境界の左隣に位置するCTU(カレントCTUの左隣のCTU)の右端4画素列は、当該CTUがHEフィルタ処理されるときにタイルメモリ127に格納されていたのでHEフィルタ処理されていない。そこで、このタイミングでカレントCTUと共にHEフィルタ処理をする。
【0044】
水平DF処理部123は、水平ラインメモリ126からカレントCTUの上側に隣接する画素行を取り込む(ステップS205)。水平ラインメモリ126には、以前のCTU処理時間において処理された上側に隣接するCTUの下端4画素列が格納されている。CTUが16×16画素の場合はCTUの下端の16×4画素が水平ラインメモリ126に格納されている。なお、カレントCTUが垂直タイル境界に隣接しない場合、カレントCTUが垂直タイル境界の左隣に位置する場合、およびカレントCTUが垂直タイル境界の右隣に位置する場合のそれぞれで水平ラインメモリ126から取り込む画素行の大きさが変化する。詳細については後述の具体例で説明する。
【0045】
続いて、水平DF処理部123は、DF制御部121から取得したカレントCTUの位置情報に基づき、カレントCTUがピクチャの下端のCTUであるか否かを判定する(ステップS206)。カレントCTUがピクチャの下端のCTUの場合(ステップS206のYES)、カレントCTUの下端4画素列はHEフィルタ処理をしないため、カレントCTUの下端4画素列を水平ラインメモリ126に格納せずに、ステップS208に進む。
【0046】
カレントCTUがピクチャの下端のCTUでない場合(ステップS206のNO)、水平DF処理部123は、水平ラインメモリ126にカレントCTUの下端4画素行を格納する(ステップS207)。
【0047】
上記の処理を終えた後、水平DF処理部123は、
図3(b)で示したように、カレントCTUの8×8ブロックの上側HEに対してHEフィルタ処理を行い(ステップS208)、HEフィルタ処理を終えた画素データを後段処理部13へ出力し(ステップS209)、ステップS201に戻り、次のCTUを処理する。
【0048】
次に、本実施形態に係る映像処理装置1のDF処理部12の処理を具体例を用いて説明する。
【0049】
図6は、垂直DF処理部122と水平DF処理部123におけるパイプライン処理を説明する図である。
図6中の四角形は、垂直DF処理部122と水平DF処理部123のそれぞれが処理するCTUを示す。水平DF処理部123は、垂直DF処理部122においてVEフィルタ処理が終わったCTUを処理する。例を挙げて説明すると、垂直DF処理部122がCTU−1の処理を終えたときにCTU−0の右端の画素列のVEフィルタ処理が完了するので、垂直DF処理部122がCTU−2を処理するときに、水平DF処理部123はCTU−0を処理する。以下では、
図6中の点線で囲まれたCTU−6,5、CTU−11、およびCTU−18を垂直DF処理部122と水平DF処理部123が処理する例について説明する。
【0050】
まず、
図7A〜
図7Cを用いて、垂直DF処理部122がCTU−6を処理する例について説明する。以下の説明中には、
図4のフローチャートの対応するステップを記載している。
【0051】
図7Aに示すように、垂直DF処理部122は、前段処理部11からカレントCTUの画素データとしてCTU−6の画素データを取り込むとともに(ステップS101)、垂直ラインメモリ124からCTU−6の左隣のCTU−5の右端4画素列を取り込む(ステップS104)。CTU−5の右端4画素列は、垂直DF処理部122が1CTU処理時間前に取り込んだCTU−5の画素データのうち、VEフィルタ処理されていない画素列である。
【0052】
垂直DF処理部122は、CTU−6がピクチャの右端のCTUでなく(ステップS106のNO)、垂直タイル境界の左側に隣接するCTUでないと判定すると(ステップS107のNO)、
図7Bに示すように、CTU−6の画素データの右端4画素列を垂直ラインメモリ124へ格納する(ステップS108)。CTU−6の右側のVE、すなわち、CTU−6の右端4画素列は、CTU−6の右隣のCTU−7の画素データが取り込まれない限り、VEフィルタ処理されない。そのため、垂直DF処理部122は、同CTU処理時間にVEフィルタ処理されないCTU−6の右端4画素列を垂直ラインメモリ124へ退避させる。なお、ピクチャの右端に位置するCTU(
図2の例では、CTU−14,17,20,31,34)では、当該CTUの右端4画素列を垂直ラインメモリ124へ格納しない。
【0053】
そして、垂直DF処理部122は、CTU−6に含まれる全ての8×8ブロックの左側VEに対してVEフィルタ処理を行う(ステップS110)。
図7Bでは、上向き実線矢印によりVEフィルタ処理がなされたVEを示している。
【0054】
図7Cに示すように、垂直DF処理部122は、VEフィルタ処理を終えた画素、すなわち、CTU−5の右端4画素列と、右端4画素列を除くCTU−6の画素データを中間メモリ125へ格納する(ステップS111)。中間メモリ125には、1つ前のCTU処理時間においてVEフィルタ処理した、右端4画素列を除くCTU−5の画素データが格納されているので、今回のCTU処理時間でVEフィルタ処理した画素データを中間メモリ125へ格納することで、中間メモリ125には、CTU−5の全ての画素データが格納されることになる。したがって、水平DF処理部123は、次のCTU処理時間で、CTU−5をHEフィルタ処理することができる。
【0055】
続いて、
図8A〜
図8Cを用いて、水平DF処理部123が、CTU−5をHEフィルタ処理する例について説明する。以下の説明中には、
図5のフローチャートの対応するステップを記載している。
【0056】
図8Aに示すように、水平DF処理部123は、中間メモリ125からカレントCTUの画素データとしてCTU−5の画素データを取り込むとともに(ステップS201)、水平ラインメモリ126からCTU−5の上側のCTU−1の下端4画素行を取り込む(ステップS205)。CTU−1の下端4画素行は、水平DF処理部123が以前に処理したCTU−1の画素データのうち、HEフィルタ処理されていない画素行である。
【0057】
そして、水平DF処理部123は、CTU−5がピクチャの下端のCTUでないと判定すると(ステップS206のNO)、
図8Bに示すように、CTU−5の画素データの下端4画素行を水平ラインメモリ126へ格納する(ステップS207)。CTU−5の下側のHE、すなわち、CTU−5の下端4画素行は、CTU−5の下側のCTU−9の画素データが取り込まれない限り、HEフィルタ処理されない。そのため、水平DF処理部123は、同CTU処理時間にHEフィルタ処理されないCTU−5の下端4画素を水平ラインメモリ126へ退避させる。なお、ピクチャの下端に位置するCTU(
図2の例では、CTU−25〜28,32〜34)では、当該CTUの下端4画素行を水平ラインメモリ126へ格納しない。
【0058】
そして、水平DF処理部123は、CTU−5に含まれる全ての8×8ブロックの上側HEに対してHEフィルタ処理を行う(ステップS208)。
図8Bでは、右向き点線矢印によりHEフィルタ処理がなされたHEを示している。
【0059】
図8Cに示すように、水平DF処理部123は、HEフィルタ処理を終えた画素、すなわち、CTU−1の下端4画素行と、下端4画素行を除くCTU−5の画素データを後段処理部13へ出力する(ステップS209)。
【0060】
次に、垂直DF処理部122が垂直タイル境界に隣接するCTU−11,18を処理する例について説明する。
【0061】
まず、
図9A〜9Cを用いて、垂直DF処理部122が垂直タイル境界の左側に位置するCTU−11を処理する例について説明する。以下の説明中には、
図4のフローチャートの対応するステップを記載している。
【0062】
図9Aに示すように、垂直DF処理部122は、前段処理部11からカレントCTUの画素データとしてCTU−11の画素データを取り込むとともに(ステップS101)、垂直ラインメモリ124からCTU−11の左隣のCTU−10の右端4画素列を取り込む(ステップS104)。
【0063】
そして、垂直DF処理部122は、CTU−11が垂直タイル境界の左側に隣接するCTUであると判定すると(ステップS107のYES)、
図9Bに示すように、CTU−11の画素データの右端4画素列をタイルメモリ127へ格納する(ステップS109)。CTU−11の右隣のCTU−18は、CTU−11が属するタイルと異なるタイルに属しているため、CTU−18に隣接するCTU−11の右端4画素列は、垂直ラインメモリ124ではなくタイルメモリ127へ格納する。
【0064】
そして、垂直DF処理部122は、CTU−11に含まれる全ての8×8ブロックの左側VEに対してVEフィルタ処理を行う(ステップS110)。
【0065】
図9Cに示すように、垂直DF処理部122は、VEフィルタ処理を終えた画素、すなわち、CTU−10の右端4画素列と、右端4画素列を除くCTU−11の画素データを中間メモリ125へ格納する(ステップS111)。
【0066】
続いて、
図10A〜10Cを用いて、垂直DF処理部122が垂直タイル境界の右側に位置するCTU−18を処理する例について説明する。以下の説明中には、
図4のフローチャートの対応するステップを記載している。
【0067】
図10Aに示すように、垂直DF処理部122は、前段処理部11からカレントCTUの画素データとしてCTU−18の画素データを取り込むとともに(ステップS101)、タイルメモリ127からCTU−18の左隣のCTU−11の右端4画素列を取り込む(ステップS105)。CTU−18の左隣のCTU−11は、CTU−18が属するタイルとは異なるタイルに属しているため、CTU−11の画素データの右端4画素列は垂直ラインメモリ124ではなくタイルメモリ127に格納されている。
【0068】
そして、垂直DF処理部122は、CTU−18がピクチャの右端のCTUでなく(ステップS106)、垂直タイル境界の左側に位置するCTUでないと判定すると(ステップS107)、
図10Bに示すように、CTU−18の画素データの右端4画素列を垂直ラインメモリ124へ格納する(ステップS108)。
【0069】
そして、垂直DF処理部122は、CTU−18に含まれる全ての8×8ブロックの左側VEに対してVEフィルタ処理を行う(ステップS110)。
【0070】
図10Cに示すように、垂直DF処理部122は、VEフィルタ処理を終えた画素、すなわち、CTU−11の右端4画素列と、右端4画素列を除くCTU−18の画素データを中間メモリ125へ格納する(ステップS111)。
【0071】
このように、垂直DF処理部122は、垂直タイル境界を挟んで隣接するCTUの画素列をタイルメモリ127を用いてやり取りする。具体的には、垂直DF処理部122は、垂直タイル境界の左側のCTUを処理するときに当該CTUの右端4画素列をタイルメモリ127へ格納し、垂直タイル境界の右側のCTUを処理するときにタイルメモリ127から画素列を取り込む。
【0072】
次に、水平DF処理部123が垂直タイル境界に隣接するCTU−11,18を処理する例について説明する。
【0073】
まず、
図11A〜11Cを用いて、水平DF処理部123が垂直タイル境界の左側に位置するCTU−11を処理する例について説明する。以下の説明中には、
図5のフローチャートの対応するステップを記載している。
【0074】
図11Aに示すように、水平DF処理部123は、中間メモリ125からカレントCTUの画素データとしてCTU−11の画素データを取り込むとともに(ステップS201)、水平ラインメモリ126からCTU−11の上側のCTU−7の下端4画素行を取り込む(ステップS205)。CTU−11は、垂直タイル境界の左側に位置するので、CTU−11の右端4画素列はタイルメモリ127に格納されている。したがって、ここでは右端4画素列を除くCTU−11の画素データが中間メモリ125から取り込まれる。また、水平ラインメモリ126から取り込むCTU−7の画素行についても、中間メモリ125から取り込んだCTU−11の画素データの幅に合わせて、右端4画素列を除くCTU−7の下端4画素行が取り込まれる。
【0075】
そして、水平DF処理部123は、CTU−11がピクチャの下端のCTUでないと判定すると(ステップS206)、
図11Bに示すように、CTU−11の画素データの下端4画素行を水平ラインメモリ126へ格納する(ステップS207)。ここでは右端4画素列を除くCTU−11の下端4画素行が水平ラインメモリ126に格納される。
【0076】
そして、水平DF処理部123は、CTU−11に含まれる全ての8×8ブロックの上側HEに対してHEフィルタ処理を行う(ステップS208)。
【0077】
図11Cに示すように、水平DF処理部123は、HEフィルタ処理を終えた画素、すなわち、右端4画素列を除く、CTU−7の下端4画素行と下端4画素行を除くCTU−11の画素データを後段処理部13へ出力する(ステップS209)。
【0078】
続いて、
図12A〜12Cを用いて、水平DF処理部123が垂直タイル境界の右側に位置するCTU−18を処理する例について説明する。以下の説明中には、
図5のフローチャートの対応するステップを記載している。
【0079】
図12Aに示すように、水平DF処理部123は、中間メモリ125からカレントCTUの画素データとしてCTU−18の画素データと、CTU−18の左隣のCTU−11の右端4画素列を取り込むとともに(ステップS201,S204)、水平ラインメモリ126からCTU−11,18の上側のCTU−7,15の下端4画素行を取り込む(ステップS205)。水平DF処理部123は、CTU−18を処理するときにCTU−11の右端4画素列も合わせて処理する。
【0080】
そして、水平DF処理部123は、CTU−18がピクチャの下端のCTUでないと判定すると(ステップS206)、
図12Bに示すように、CTU−11の右端4画素列とCTU−18の画素データの下端4画素行を水平ラインメモリ126へ格納する(ステップS207)。
【0081】
そして、水平DF処理部123は、CTU−18に含まれる全ての8×8ブロックの上側HEに対してHEフィルタ処理を行う(ステップS208)。
【0082】
図12Cに示すように、水平DF処理部123は、HEフィルタ処理を終えた画素、すなわち、CTU−7,11,15,18の画素データを後段処理部13へ出力する(ステップS209)。
【0083】
なお、水平タイル境界に隣接するCTUの処理は、
図7A〜7Cと
図8A〜8Cを用いて説明した処理と同様である。水平タイル境界と垂直タイル境界の両方に隣接するCTUの処理は、垂直タイル境界とCTUとの関係により、
図9A〜9Cと
図11A〜11C、あるいは
図10A〜10Cと
図12A〜12Cのいずれかと同様に処理できる。
【0084】
また、水平タイル境界の上側に隣接するCTUを処理するときに当該CTUの下端4画素行をタイルメモリ127へ格納しておき、水平タイル境界の下側に隣接するCTUを処理するときにタイルメモリ127から取り込んでもよい。
【0085】
以上説明したように、本実施の形態によれば、垂直DF処理部122は、カレントCTUが垂直タイル境界の左隣に位置するCTUであると判定した場合、カレントCTUの右端4画素列をタイルメモリ127へ格納した後、カレントCTUの8×8ブロックの左側VEに対してVEフィルタ処理を行い、水平DF処理部123が当該カレントCTUの8×8ブロックの上側HEに対してHEフィルタ処理するときは、タイルメモリ127に格納された右端4画素列を除く画素データに対してHEフィルタ処理を行い、垂直DF処理部122は、カレントCTUが垂直タイル境界の右隣に位置するCTUであると判定した場合、タイルメモリ127からカレントCTUの左隣のCTUの右端4画素列を取り込んだ後、カレントCTUの8×8ブロックの左側VEに対してVEフィルタ処理を行い、水平DF処理部123が当該カレントCTUの8×8ブロックの上側HEに対してHEフィルタ処理するときは、タイルメモリ127に格納された右端4画素列を含む画素データに対してHEフィルタ処理を行うことにより、垂直タイル境界の左側に隣接する4画素列がVEフィルタ処理される前にHEフィルタ処理されないようタイルメモリ127へ退避されるので、垂直タイル境界に対しても、H.265/HEVCの規格に沿ったデブロッキングフィルタ処理を行うことができる。
【0086】
なお、複数のDF処理部12を備えて、各タイルを並列処理してもよい。その場合、タイル境界のデブロッキングフィルタ処理については、共通のタイルメモリ127を用いて画素データをやり取りできる。