H.264符号化方式に対応した画像復号装置に本発明を適用した実施の形態について、図面を参照しながら説明する。なお、本実施の形態では、H.264符号化方式に対応した画像復号装置を示したが、動き補償予測を行う動画像符号化方式に対応した画像復号装置であれば、同様の形態で実現することができる。
(実施の形態1)
図3は、本発明の実施の形態1における画像復号装置100の機能構成を示すブロック図である。
画像復号装置100は、所定の画素数のブロックごとに分割され符号化された符号化画像データの復号を、ブロックごとに行う装置である。ここで、所定の画素数のブロックとは、マクロブロックである。
同図に示すように、画像復号装置100は、外部メモリ110、ストリームパーサ部120、復号制御部130、マクロブロック復号部140、マクロブロック復号部150、マクロブロック復号部160、デブロッキングフィルタ部170、及び隣接MB情報メモリ180を備えている。
隣接MB情報メモリ180には、マクロブロックの復号処理に必要となる周辺隣接マクロブロックの情報が格納されている。
外部メモリ110には、符号化ストリーム、復号ストリーム、参照画像、及び復号画像が格納されている。符号化ストリームは、入力される符号化画像データである。復号ストリームは、ストリームパーサ部120によって可変長復号された符号化画像データである。参照画像は、符号化画像データの復号が行われる際に参照される画像である。復号画像は、符号化画像データが復号された画像である。
なお、外部メモリ110は、請求の範囲に記載の「記憶部」に相当する。
なお、外部メモリ110は、本実施の形態の画像復号装置100とは異なる他の装置のメモリと共用されてもよい。その場合、外部メモリ110には、符号化ストリーム、復号ストリーム、参照画像、及び復号画像以外のデータも格納されることになる。
ストリームパーサ部120は、符号化ストリームの可変長復号を行い、復号ストリームを生成すると共に、マクロブロック復号時に外部メモリ110から取得する参照画像のデータ量を予測するために必要なパラメータを、復号制御部130に送る。
具体的には、ストリームパーサ部120は、H.264で符号化された符号化ストリームを外部メモリ110から読み出し、可変長復号を行い、復号した復号ストリームを外部メモリ110に書き戻す。この時、本実施の形態1では、可変長復号して得られたパラメータのうち、少なくとも、符号化画像データの復号が行われる際にマクロブロックごとに参照される参照画像の枚数を示す参照情報が、復号制御部130に送られる。ここで、参照情報は、符号化画像データに含まれるマクロブロックのマクロブロックタイプ情報である。
なお、ストリームパーサ部120は、請求の範囲に記載の「プリデコード部」に相当する。
マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160は、復号制御部130からの指示に従って、外部メモリ110から復号ストリームを読み出し、並列にマクロブロックの復号処理を行い、再構成した画素データをデブロッキングフィルタ部170に出力する。この時、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160は、外部メモリ110から動き補償予測に用いる参照画像の画素データの読出しを必要に応じて行う。
なお、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160のそれぞれは、請求の範囲に記載の「ブロック復号部」に相当する。
デブロッキングフィルタ部170は、再構成した画素データに対してブロックノイズを除去するデブロッキングフィルタ処理を行い、復号画像を外部メモリ110に出力する。この時、以降の復号処理で参照画像として用いられる復号画像は、参照画像としても外部メモリに保存される。
復号制御部130は、ストリームパーサ部120、マクロブロック復号部140、マクロブロック復号部150、マクロブロック復号部160、及びデブロッキングフィルタ部170に対して、処理開始指示を出して画像復号処理全体の制御を行っている。
また、復号制御部130は、データ転送量予測部131及びブロック決定部132を備えている。
データ転送量予測部131は、マクロブロックごとに、マクロブロックタイプ情報を用いて、符号化画像データの復号が行われる際に外部メモリ110から読み出される参照画像の予測データ量を計算する。つまり、データ転送量予測部131は、ストリームパーサ部120から送られてきたパラメータを用いて、マクロブロック復号処理の動き補償予測の時に、外部メモリ110から取得を要する参照画像のデータ量をマクロブロック単位で予測する。
具体的には、データ転送量予測部131は、マクロブロックタイプ情報で示される参照画像の枚数に当該参照画像のデータ量を乗じて、予測データ量を計算する。
ブロック決定部132は、外部メモリ110から読み出されるデータ量の変動が小さくなるように、データ転送量予測部131が計算した予測データ量を用いて、並列に復号が行われる複数のマクロブロックを決定する。具体的には、ブロック決定部132は、この予測データ量に基づいて、マクロブロック復号時に、外部メモリ110から取得する参照画像のデータ量が瞬間的に増大しないように、予めマクロブロックの復号順序を決定しておく。
予め決定した復号順序に従って、復号制御部130は、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160のマクロブロック復号処理を制御している。復号制御部130は、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160に復号開始指示を出す場合、隣接MB情報メモリ180から、復号対象のマクロブロックの復号に必要な周辺隣接マクロブロックの情報を読み出して、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160に渡す。
マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160は、ブロック決定部132が決定した複数のマクロブロックを並列に復号する。マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160がマクロブロックの復号処理を終えると、復号したマクロブロックの情報のうち、以降の復号処理に周辺隣接マクロブロック情報として必要となる情報を、復号制御部130に渡す。復号制御部130はこれを隣接MB情報メモリ180に格納する。
次に、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160の構成について、詳細に説明する。なお、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160は、共に同じ構成であるため、以下、マクロブロック復号部140の構成について説明を行う。
図4は、本実施の形態1におけるマクロブロック復号部140の機能構成を示すブロック図である。
同図に示すように、マクロブロック復号部140は、逆量子化部141、逆直交変換部142、画面内予測部143、動き補償予測部144及び加算回路145を備えている。
逆量子化部141は、外部メモリ110から読み出した復号ストリームから、量子化された係数データを読み出して逆量子化を行い、係数データを逆直交変換部142に出力する。
逆直交変換部142は、係数データに対して逆直交変換を行い、空間領域の画素データを生成する。
画面内予測部143と動き補償予測部144は、復号ストリームから読み出される予測モードによって、どちらか一方が起動され、予測画像の画素データを生成する。
画面内予測部143は、予測モードがイントラ予測であった場合に起動され、画面内予測を行うことで、予測画像の画素データを生成する。
動き補償予測部144は、予測モードがインター予測であった場合に起動され、復号された動きベクトルに応じた参照画像の画素データを取得して、動き補償予測を行うことで、予測画像の画素データを生成する。
なお、画面内予測部143及び動き補償予測部144は、画面内予測及び動き補償予測を、復号制御部130から渡された周辺隣接マクロブロックの情報を用いて行う。
加算回路145は、逆直交変換部142が出力した画素データと、画面内予測部143または動き補償予測部144が出力した予測画像の画素データとを加算して、再構成された画素データを出力する。
次に、一般的なH.264符号化ストリームの構成について説明する。
図5は、一般的なH.264符号化ストリームの構成を示す図である。
同図に示すように、符号化ストリームの先頭にはSPS(Sequence Parameter Set)ヘッダ502があり、その後にPPS(Picture Parameter Set)ヘッダ503、スライスヘッダ504、スライスデータ505が続く。
SPSヘッダ502、PPSヘッダ503、及びスライスヘッダ504の先頭にはデータの区切りを示すスタートコード(SC:Start Code)501が挿入されている。そのため、符号化ストリームに対してスタートコードサーチを行い、スタートコード501に続くデータを解析することで、符号化ストリームの中からSPSヘッダ502、PPSヘッダ503、及びスライスヘッダ504を探索することができる。
ピクチャの先頭にはPPSヘッダ503が存在し、次のPPSヘッダ503が現れるまでの一連のデータが1ピクチャ分のデータになっている。1ピクチャのデータの中には、スライスヘッダ504とスライスデータ505のセットが、そのピクチャに存在するスライスの数分存在する。
次に、画像復号装置100の動作について、詳細に説明する。
図6は、本発明の実施の形態1における画像復号装置100の動作の一例を示すフローチャートである。
まず、ストリームパーサ部120は、外部メモリ110から符号化ストリームを読み出し、SPSヘッダ502の復号(S102)、PPSヘッダ503の復号(S104)、スライスヘッダ504の復号(S106)を順次行う。
そして、ストリームパーサ部120は、スライスヘッダ504の復号(S106)が完了すると、スライスデータに含まれるマクロブロックの可変長復号のみを行い、復号ストリームを生成する(S108)。
ここで、ストリームパーサ部120が生成する復号ストリームには、以降の処理でマクロブロックを並列に復号する時にマクロブロックの先頭が分かるように、マクロブロックの先頭にMB(Macroblock)スタートコードが挿入されている。本実施の形態では、MBスタートコードを0x000001F0とした。なお、MBスタートコードは、他のコードと重複しないユニークな値であれば何でもよい。
また、復号ストリームの生成と合わせて、ストリームパーサ部120は、復号したパラメータのうち、mb_type(Macroblock Type)、sub_mb_type(Sub−Macroblock Type)と、ref_idx(Reference Index)やmvd(Motion Vector Difference)などの動きベクトルを算出するために必要なパラメータを復号制御部130に送る。
なお、本実施の形態1では、ストリームパーサ部120は、復号したパラメータのうち、少なくともmb_typeを復号制御部130に送る。また、mb_typeは、請求の範囲に記載の「マクロブロックタイプ情報」に包含される。
ストリームパーサ部120は、1スライス分の可変長復号を完了すると、復号を行ったスライスがピクチャの終端であるかどうかを判断する(S110)。ピクチャに含まれるスライスの数は、PPSヘッダ503にあるnum_slice_groups_minus1を復号することで分かる。このため、復号したスライスの数から1を引いた数と、num_slice_groups_minus1が一致すれば、ピクチャの終端であると判断する。
ストリームパーサ部120は、ピクチャの終端でないと判断した場合は(S110でNO)、ピクチャの終端になるまで、スライスヘッダ504の復号(S106)及びスライスデータ505の可変長復号(S108)を順次行う。
そして、ストリームパーサ部120がピクチャの終端であると判断した場合は(S110でYES)、復号制御部130のデータ転送量予測部131が、マクロブロックの復号処理の、動き補償予測の時に、外部メモリ110から取得しなければならない参照画像の予測データ量を、マクロブロック単位で計算する(S112)。データ転送量予測部131が予測データ量を計算する処理の詳細については、後ほど述べる。
データ転送量予測部131がマクロブロック毎の参照画像のデータ転送量の予測を1ピクチャ分終えると、ブロック決定部132は、その予測値に従って、並列に復号が行われる複数のマクロブロックを決定する(S114)。具体的には、ブロック決定部132は、マクロブロックの復号順序を決定する。ブロック決定部132が並列復号するマクロブロックを決定する処理の詳細については、後ほど述べる。
ブロック決定部132が1ピクチャ分のマクロブロックの復号順序を決定すると、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160は、それぞれ復号制御部130の指示に従って、外部メモリ110から復号ストリームを読み出し、復号対象マクロブロックの復号処理を並列に行う(S116)。マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160のそれぞれが、マクロブロックの復号を行う処理の詳細については、後ほど述べる。
復号制御部130は、ブロック決定部132が決定した復号順序に従って、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160にマクロブロック単位で復号開始の指示を出している。
マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160が復号対象マクロブロックの復号を完了すると、復号制御部130は、復号が行われたマクロブロックがピクチャの終端であるか否かを判断する(S118)。
そして、復号制御部130が、復号が行われたマクロブロックがピクチャの終端でないと判断した場合(S118でNO)、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160は、ピクチャの終端になるまでマクロブロックの復号処理(S116)を行う。
復号制御部130が、復号が行われたマクロブロックがピクチャの終端であると判断した場合(S118でYES)、デブロッキングフィルタ部170が1ピクチャ分の再構成画素データに対して、デブロッキングフィルタ処理を行う(S120)。
デブロッキングフィルタ部170がデブロッキングフィルタ処理を完了すると、次に復号制御部130が、デブロッキングフィルタ処理を行ったピクチャがストリームの終端であるか否かを判断する(S122)。
後続にストリームが続いている場合は、復号制御部130は、当該ピクチャがストリームの終端でないと判断し(S122でNO)、ストリームパーサ部120がPPSヘッダ503の復号(S104)を再度行うことにより、符号化ストリームを次々と復号していく。
復号制御部130が、当該ピクチャがストリームの終端であると判断した場合は(S122でYES)、処理を終了する。
以上により、画像復号装置100が符号化ストリームを復号する処理は終了する。
次に、データ転送量予測部131が予測データ量を計算する処理(図6のS112)の詳細について、説明する。
本実施の形態では、マクロブロックレイヤにあるmb_typeを用いたマクロブロックタイプによる予測方法により、データ転送量予測部131が予測データ量を計算する。
図7は、本実施の形態1におけるデータ転送量予測部131が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、1つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部131は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
同図に示すように、まず、データ転送量予測部131は、ストリームパーサ部120が復号したmb_typeから、復号対象のマクロブロックのマクロブロックタイプを取得する(S202)。なお、mb_typeは、ストリームパーサ部120が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部120から復号制御部130に予め送られている。
ここで、マクロブロックのマクロブロックタイプは、Iマクロブロックタイプ、Pマクロブロックタイプ、及びBマクロブロックタイプの3種類がある。このため、データ転送量予測部131が、mb_typeから、この3種類のマクロブロックタイプのうちのどのマクロブロックタイプを取得するかを、以下に説明する。
図8は、Pスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
図9は、Bスライスにおけるマクロブロックタイプとマクロブロック分割パターンを示す図である。
ストリームパーサ部120で復号された、復号対象のマクロブロックを含むスライスのスライスヘッダ504に含まれるslice_typeから、当該スライスは、Iスライス、Pスライス、又はBスライスのどのスライスタイプかが得られる。
そして、図8に示すように、PスライスはPマクロブロックとIマクロブロックとで構成されている。具体的には、mb_typeが「0〜4」のマクロブロックは、Pマクロブロックであり、mb_typeが「5〜25」のマクロブロックは、Iマクロブロックである。
このため、データ転送量予測部131は、Pスライスのマクロブロックのmb_typeが「0〜4」の場合は、当該マクロブロックはPマクロブロックタイプであり、mb_typeが「5〜25」の場合は、当該マクロブロックはIマクロブロックタイプであるとして、マクロブロックタイプを取得する。
また、図9に示すように、BスライスはBマクロブロックとIマクロブロックとで構成されている。具体的には、mb_typeが「0〜22」のマクロブロックは、Bマクロブロックであり、mb_typeが「23〜25」のマクロブロックは、Iマクロブロックである。
このため、データ転送量予測部131は、Bスライスのマクロブロックのmb_typeが「0〜22」の場合は、当該マクロブロックはBマクロブロックタイプであり、mb_typeが「23〜25」の場合は、当該マクロブロックはIマクロブロックタイプであるとして、マクロブロックタイプを取得する。
また、IスライスはIマクロブロックのみで構成されている。このため、データ転送量予測部131は、IスライスのマクロブロックはIマクロブロックタイプであるとして、マクロブロックタイプを取得する。
図7に戻り、データ転送量予測部131は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する(S204)。
データ転送量予測部131は、取得したマクロブロックタイプがIマクロブロックタイプであると判断した場合(S204で「I」)、予測データ量は0バイトであると計算する(S206)。
つまり、Iマクロブロックタイプのマクロブロックは、画面内予測によって予測画像を生成して、動き補償予測は行われないため、参照画像データを必要としない。
データ転送量予測部131は、取得したマクロブロックタイプがPマクロブロックタイプであると判断した場合(S204で「P」)、予測データ量は256バイトであると計算する(S208)。
つまり、Pマクロブロックタイプのマクロブロックは、時間的に近い1枚のフレームを参照画像として用いて動き補償予測を行うため、マクロブロック1つ分、つまり256バイト(16画素×16画素×1)の参照画像データを必要とする。
データ転送量予測部131は、取得したマクロブロックタイプがBマクロブロックタイプであると判断した場合(S204で「B」)、予測データ量は512バイトであると計算する(S210)。
つまり、Bマクロブロックタイプのマクロブロックは、時間的に近い2枚のフレームを参照画像として用いて動き補償予測を行うため、マクロブロック2つ分、つまり512バイト(16画素×16画素×2)の参照画像データを必要とする。
このように、マクロブロックタイプによって動き補償予測に必要となる参照画像の予測データ量を計算することができる。つまり、本実施の形態のマクロブロックタイプによる予測方法では、この予測データ量を外部メモリ110から取得する参照画像の予測データ量であるとする。
以上により、本実施の形態1におけるデータ転送量予測部131が予測データ量を計算する処理(図6のS112)は、終了する。
次に、ブロック決定部132が並列復号するマクロブロックを決定する処理(図6のS114)の詳細について、説明する。
本実施の形態では、ブロック決定部132は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、マクロブロックの復号順序を入れ替えることで、並列に復号が行われる複数のマクロブロックを決定する。
図10は、本実施の形態1におけるブロック決定部132が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
まず、ブロック決定部132は、所定の数のマクロブロックの予測データ量の平均値を算出する(S302)。ここで、所定の数のマクロブロックとは、ピクチャ内の全てのマクロブロックでもよいし、ブロック決定部132が既に復号順序を決定したマクロブロックでもよい。
そして、ブロック決定部132は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、並列に復号するマクロブロックを選択する(S304)。ここでは、所定の数のマクロブロックは、ピクチャ内の全てのマクロブロックであることとする。
以下に、このブロック決定部132が予測データ量の平均値を算出し(S302)、並列に復号するマクロブロックを選択する(S304)処理について、具体的に説明する。
マクロブロックの復号順序は図2に記載の順序で行い、基本的には、同図のマクロブロックに付けられた番号順に復号していく。しかし、本実施の形態では、マクロブロック復号部は3つしかないため、並列に復号可能なマクロブロックが3個より多い場合、同じ番号のマクロブロックを一度には復号することができない。
例えば、11番のマクロブロックは6個あるが、マクロブロック復号部の数が3個であるため、2回に分けて復号する必要がある。どのマクロブロックを始めに復号し、どのマクロブロックを後で復号するかの判断に、参照画像の予測データ量を用いる。
つまり、ブロック決定部132は、並列に復号するマクロブロックの、参照画像の予測データ量の平均値が、各マクロブロックの予測データ量の平均値となるべく近くなるように、並列に復号するマクロブロックを選択する。これは、ブロック決定部132が、並列に復号するマクロブロックの全組み合わせパターンを求め、各組み合わせパターンで参照画像の予測データ量の平均値を算出して、これが全体の平均値と最も近くなる組み合わせを求めることで行う。
そして、ブロック決定部132は、選択した複数のマクロブロックが並列に復号されるように、マクロブロックの復号順序を入れ替える(S306)。
このようにすることで、外部メモリ110から瞬間的に多くのデータが転送されることを防ぎ、小さなメモリバンド幅で、H.264で符号化された画像データを並列復号することができる。
なお、H.264の符号化画像を復号する上で必要となるデータ転送は、動き補償予測のための参照画像の取得転送以外にもある。しかし、この参照画像の取得転送が復号に必要なデータ転送量の大部分を占めているため、参照画像取得のデータ転送量の瞬間的な増加を抑えることで、外部メモリ110のメモリバンド幅を抑えることができる。
以上により、ブロック決定部132が並列復号するマクロブロックを決定する処理(図6のS114)は、終了する。
次に、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160のそれぞれが、マクロブロックの復号を行う処理(図6のS116)の詳細について、説明する。
図11は、本実施の形態1におけるマクロブロック復号部140がマクロブロックの復号を行う処理の一例を示すフローチャートである。なお、マクロブロック復号部150及びマクロブロック復号部160がマクロブロックの復号を行う処理は、マクロブロック復号部140がマクロブロックの復号を行う処理と同様であるため、省略する。
まず、同図に示すように、マクロブロック復号部140は、復号制御部130からマクロブロック復号開始の指示を受けると、外部メモリ110から復号対象マクロブロックの復号ストリームを読み出す(S402)。
次に、マクロブロック復号部140は、復号ストリームから予測モードを読み出し、予測モードがイントラ予測かインター予測かを判断する(S404)。
マクロブロック復号部140は、予測モードがイントラ予測であると判断した場合(S404で「イントラ予測」)、画面内予測部143が起動して、画面内予測処理を行い、予測ブロックの画素データを生成する(S406)。
マクロブロック復号部140は、予測モードがインター予測であると判断した場合(S404で「インター予測」)、動き補償予測部144が起動して、動き補償予測処理を行い、予測ブロックの画素データを生成する(S408)。
次に、マクロブロック復号部140は、復号ストリームから予測誤差データを読み出し、逆量子化部141で逆量子化し、逆直交変換部142で逆直交変換することで、予測ブロックに対する予測誤差画素データを生成する(S410)。
最後に、マクロブロック復号部140は、予測ブロックの画素データと、予測誤差画素データを加算回路145で加算して再構成画素データを得る(S412)。
このように、1マクロブロックの復号処理が完了すると、マクロブロック復号部140は、復号制御部130にマクロブロック完了を通知する(S414)。また、それとともに、マクロブロック復号部140は、復号したマクロブロックの情報のうち、後の復号に周辺隣接マクロブロック情報として使用する情報を、復号制御部130に渡す。
以上により、マクロブロック復号部140、マクロブロック復号部150及びマクロブロック復号部160のそれぞれが、マクロブロックの復号を行う処理(図6のS116)は、終了する。
以上のことから、本実施の形態における画像復号装置100によれば、参照画像の枚数から参照画像の予測データ量を計算し、並列に復号が行われる符号化画像データの複数のブロックを決定することで、複数のブロックを並列に復号する。つまり、符号化画像データを並列に復号する場合に、予め、メモリから取得する予測データ量を正確に計算することができるため、外部メモリ110から読み出されるデータ量の変動が小さくなるように、並列に復号するブロックを適切に選択することができる。
また、参照画像の枚数を示す参照情報として、マクロブロックタイプ情報の復号が行われる。これにより、簡易に参照画像の枚数を取得することができる。
また、ブロックの復号順序を入れ替えることで、並列に復号が行われる複数のブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、ブロックの復号順序を入れ替えることができる。なお、この方法に最も効果がある符号化画像データであったとすれば、外部メモリ110のメモリバンド幅を最大で半分近く低減することが可能となる。
また、複数のブロックの予測データ量の平均値が、所定の数のブロックの予測データ量の平均値に近付くように、並列に復号が行われる複数のブロックを決定する。これにより、並列復号が行われるブロックの予測データ量が平均的な値となる。
これらにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
(実施の形態2)
本実施の形態2では、符号化画像データの復号が行われる際に、符号化画像データの各マクロブロックをさらに小さなブロックに分割した分割ブロックを単位とした参照画像を参照する場合、ストリームパーサ部120は、符号化画像データに含まれる、分割ブロックのサイズを示すブロック分割パターン情報を、さらに復号制御部130に送る。
そして、データ転送量予測部131は、ブロック分割パターン情報で示されるサイズの分割ブロックごとに、さらに、整数画素位置の参照画像が参照される確率と小数画素位置の参照画像が参照される確率とを用いて、整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。
なお、ブロック分割パターン情報は、マクロブロックの分割パターンであるマクロブロック分割パターンと、サブマクロブロックの分割パターンであるサブマクロブロック分割パターンとを包含している。つまり、本実施の形態2では、ストリームパーサ部120は、復号したパラメータのうち、少なくともmb_type及びsub_mb_typeを復号制御部130に送る。詳細については、後述する。
ここで、本実施の形態2では、図6に示されたデータ転送量予測部131が予測データ量を計算する処理(図6のS112)が、実施の形態1と異なる処理であり、それ以外の処理は実施の形態1と同様であるため、当該処理(図6のS112)の詳細について、以下に説明する。
図12は、本実施の形態2におけるデータ転送量予測部131が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、1つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部131は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
同図に示すように、まず、データ転送量予測部131は、ストリームパーサ部120が復号したmb_typeから、復号対象のマクロブロックのマクロブロックタイプを取得する(S502)。詳細については、実施の形態1の図7でのマクロブロックタイプを取得する処理(図7のS202)と同様であるため、省略する。
そして、データ転送量予測部131は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する(S504)。
データ転送量予測部131は、取得したマクロブロックタイプがIマクロブロックタイプであると判断した場合(S504で「I」)、予測データ量は0バイトであると計算し(S506)、処理を終了する。
データ転送量予測部131は、取得したマクロブロックタイプがPマクロブロックタイプ又はBマクロブロックタイプであると判断した場合(S504で「PまたはB」)、mb_typeから、復号対象のマクロブロックのマクロブロック分割パターンを取得する(S508)。
図13は、マクロブロック分割パターンを説明する図である。
同図に示すように、mb_typeによって、16画素×16画素、16画素×8画素、8画素×16画素、8画素×8画素の4種類のマクロブロック分割パターンが定義されている。
また、マクロブロックが分割された各分割ブロックには、mbPartIdx(Macroblock Partiotion Index)と呼ばれる番号が付けられている。例えば、8画素×8画素のマクロブロック分割パターンであれば、マクロブロックは、mbPartIdxが0〜3の4つの分割ブロックに分割されている。
そして、図8及び図9に示されたように、mb_typeの値から、マクロブロック分割パターンを取得することができる。つまり、図8及び図9に示された「Name of mb_type」はマクロブロック分割パターンを示している。また、「NumMbPart(mb_type)」はマクロブロックの分割ブロックの個数を示し、「MbPartWidth(mb_type)」はマクロブロックの分割ブロックの幅を示し、「MbPartHeight(mb_type)」はマクロブロックの分割ブロックの高さを示している。
このように、ストリームパーサ部120が、符号化ストリームに含まれるmb_typeを復号することで、データ転送量予測部131は、mb_typeから、復号対象のマクロブロックのマクロブロック分割パターンを取得する。
図12に戻り、データ転送量予測部131は、取得したマクロブロック分割パターンがどのマクロブロック分割パターンかを判断する(S510)。
データ転送量予測部131は、マクロブロック分割パターンが8画素×8画素のマクロブロック分割パターンであると判断した場合(S510で「8×8」)、idx=0とする(S512)。ここでは、idxは、0以上の整数である。
次に、データ転送量予測部131は、mbPartIdx=idxのサブマクロブロックのsub_mb_typeから、サブマクロブロック分割パターンを取得する(S514)。なお、sub_mb_typeは、ストリームパーサ部120が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部120から復号制御部130に予め送られている。
図14は、サブマクロブロック分割パターンを説明する図である。
同図に示すように、8画素×8画素のマクロブロック分割パターンの場合には、8画素×8画素の分割ブロックであるサブマクロブロックをさらに分割する分割パターンである、8画素×8画素、8画素×4画素、4画素×8画素、4画素×4画素のサブマクロブロック分割パターンが定義されている。
また、サブマクロブロックが分割された各分割ブロックには、subMbPartIdx(Sub−Macroblock Partiotion Index)と呼ばれる番号が付けられている。例えば、4画素×4画素のサブマクロブロック分割パターンであれば、サブマクロブロックは、subMbPartIdxが0〜3の4つの分割ブロックに分割されている。
図15は、Pマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
図16は、Bマクロブロックにおけるサブマクロブロックタイプとサブマクロブロック分割パターンを示す図である。
これらの図に示すように、mb_typeの値によって、分割ブロックのサイズが8画素×8画素であった場合には、その8画素×8画素のサブマクロブロックごとに、さらにsub_mb_typeが定められている。そして、sub_mb_typeの値から、サブマクロブロック分割パターンを取得することができる。
つまり、これらの図に示された「Name of sub_mb_type」はサブマクロブロック分割パターンを示している。また、「NumMbPart(sub_mb_type)」はサブマクロブロックの分割ブロックの個数を示し、「MbPartWidth(sub_mb_type)」はサブマクロブロックの分割ブロックの幅を示し、「MbPartHeight(sub_mb_type)」はサブマクロブロックの分割ブロックの高さを示している。
このように、ストリームパーサ部120が、符号化ストリームに含まれるsub_mb_typeを復号することで、データ転送量予測部131は、sub_mb_typeから、復号対象のマクロブロックのサブマクロブロック分割パターンを取得する。
図12に戻り、データ転送量予測部131は、取得したサブマクロブロック分割パターンがどのサブマクロブロック分割パターンかを判断する(S516)。
データ転送量予測部131は、サブマクロブロック分割パターンが8画素×8画素のサブマクロブロック分割パターンであると判断した場合(S516で「8×8」)、予測データ量は121バイトであると計算する(S518)。
また、データ転送量予測部131は、サブマクロブロック分割パターンが4画素×4画素のサブマクロブロック分割パターンであると判断した場合(S516で「4×4」)、予測データ量は49バイト×4であると計算する(S520)。
データ転送量予測部131は、サブマクロブロック分割パターンが8画素×4画素又は4画素×8画素のサブマクロブロック分割パターンであると判断した場合(S516で「8×4または4×8」)、予測データ量は77バイト×2であると計算する(S522)。
そして、データ転送量予測部131は、idxに1加算し(S524)、idxが3よりも大きいか否かを判断する(S526)。
データ転送量予測部131は、idxが3以下であると判断した場合(S526でNO)、予測データ量を計算する処理(S514〜S524)を繰り返す。つまり、データ転送量予測部131は、全てのサブマクロブロックの分割ブロックについて、予測データ量を計算する。
また、データ転送量予測部131は、マクロブロック分割パターンが16画素×16画素のマクロブロック分割パターンであると判断した場合(S510で「16×16」)、予測データ量は361バイトであると計算する(S528)。
また、データ転送量予測部131は、マクロブロック分割パターンが16画素×8画素又は8画素×16画素のマクロブロック分割パターンであると判断した場合(S510で「16×8または8×16」)、予測データ量は209バイト×2であると計算する(S530)。
ここで、データ転送量予測部131がマクロブロック分割パターン又はサブマクロブロック分割パターンから予測データ量を計算する処理(S518〜S522、S528、S530)について、詳細に説明する。
H.264では、1/4画素精度で動き補償予測を行うため、小数位置画素の参照画像を必要とする場合がある。この場合、画素と画素との間の小数位置の画素値を計算するために、余分に参照画像データを外部メモリ110から読み出す必要がある。この点を考慮したのが、マクロブロック分割パターン又はサブマクロブロック分割パターンを用いた予測方法である。
図17は、本実施の形態2におけるH.264の動き補償予測における小数位置画素の、参照画像の画素値の計算方法を示す図である。
同図に示すように、画素と画素との中間に位置する1/2位置画素の画素値は、6タップのFIR(Finite Impulse Response)フィルタ演算によって計算される。そのため、1/2位置画素の画素値を計算するためには、周辺隣接の整数位置の6画素が必要となる。
例えば、動きベクトルが水平方向と垂直方向の両方で小数位置を指している場合、16画素×16画素の参照画像を生成するには、水平方向、垂直方向にそれぞれ余分に5画素必要となり、21画素×21画素の参照画像データが必要となる。
また、動きベクトルが水平方向又は垂直方向のいずれか一方で小数位置を指している場合、16画素×16画素の参照画像を生成するには、水平方向、垂直方向のいずれか一方に余分に5画素必要となり、16画素×21画素又は21画素×16画素の参照画像データが必要となる。
1/4位置画素の画素値は、同図に示す通り、隣接する整数位置画素または1/2位置画素の画素値の平均をとって算出する。このため、1/4位置画素の画素値を計算するためには、1/2位置画素の画素値を計算する場合と同じデータ量の参照画像データが必要となる。
このように動きベクトルが小数位置を指す場合、画素値計算のために余分に参照画像が必要となるため、動きベクトルによって外部メモリ110から取得する参照画像のデータ量は異なる。
また、H.264では、マクロブロックの大きさである16画素×16画素だけでなく、16画素×8画素、8画素×16画素、8画素×8画素、8画素×4画素、4画素×8画素、4画素×4画素のブロック単位で動き補償予測が可能である。どの単位で分割するかをマクロブロック単位に自由に選択・組み合わせることが可能になっている。
16画素×16画素よりも細かい単位で動き補償予測する場合でも、動き補償予測する上で小数位置画素の参照画像が必要となると、動き補償予測の単位ブロックに対して水平方向、垂直方向にそれぞれ5画素分、余分に必要となる。そのため、動き補償予測する上で小数位置画素の参照画像が必要となる場合は、より細かい単位でマクロブロックを分割して動き補償予測を行うほど、余分に必要となる参照画像のデータ量が大きくなる。
図18は、本実施の形態2におけるH.264の動き補償予測の単位ブロックと予測データ量との関係を示す図である。
同図に示すように、「動き補償予測の単位ブロック」の欄は、動き補償予測の単位ブロックの大きさを示している。
また、「水平、垂直位置の両方が整数画素位置」の欄は、動き補償予測する上で、水平位置及び垂直位置の両方が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。なお、動きベクトルの水平、垂直位置の両方が整数画素位置を指す場合は、動き補償予測に必要な参照画像のデータ量は、動き補償予測の単位ブロックのデータ量と同じである。
同様に、「水平位置が小数画素位置」の欄は、動き補償予測する上で、水平位置が小数画素位置の参照画像、及び垂直位置が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
また、「垂直位置が小数画素位置」の欄は、動き補償予測する上で、垂直位置が小数画素位置の参照画像、及び水平位置が整数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
また、「水平、垂直位置の両方が小数画素位置」の欄は、動き補償予測する上で、水平位置及び垂直位置の両方が小数画素位置の参照画像が必要となる場合の、参照画像の大きさとそのデータ量を示している。
「予測データ量」の欄は、実際に外部メモリ110から取得する参照画像の、データ量の予測値を示している。参照画像のデータ量の予測値は、動きベクトルの指す位置が整数位置、小数位置のどの位置も等確率であるとして算出している。
つまり、図17に示したように、「水平、垂直位置の両方が整数画素位置」の画素は、画素C、D、I、Lの4個である。また、「水平位置が小数画素位置」の画素は、画素a〜fの6個である。また、「垂直位置が小数画素位置」の画素は、g〜lの6個である。また、「水平、垂直位置の両方が小数画素位置」の画素は、画素m〜uの9個である。
このため、「水平、垂直位置の両方が整数画素位置」、「水平位置が小数画素位置」、「垂直位置が小数画素位置」及び「水平、垂直位置の両方が小数画素位置」の参照画像のデータ量を、それぞれ4:6:6:9で重み付けすることで、予測データ量が算出される。
具体的には、データ転送量予測部131は、以下の式により、予測データ量を算出する。
(「水平、垂直位置の両方が整数画素位置」の参照画像のデータ量×4
+「水平位置が小数画素位置」の参照画像のデータ量×6
+「垂直位置が小数画素位置」の参照画像のデータ量×6
+「水平、垂直位置の両方が小数画素位置」の参照画像のデータ量×9)/25
このように、データ転送量予測部131は、分割ブロックごとに、水平位置及び垂直位置がともに整数画素位置である第1参照画像が参照される確率を第1確率とし、水平位置が小数画素位置であり垂直位置が整数画素位置である第2参照画像が参照される確率を第2確率とし、水平位置が整数画素位置であり垂直位置が小数画素位置である第3参照画像が参照される確率を第3確率とし、水平位置及び垂直位置がともに小数画素位置である第4参照画像が参照される確率を第4確率とした場合、第1参照画像、第2参照画像、第3参照画像及び第4参照画像のデータ量に、それぞれ第1確率、第2確率、第3確率及び第4確率を乗じて加算することで、予測データ量を計算する。
図12に戻り、次に、データ転送量予測部131は、復号対象のマクロブロックのマクロブロックタイプがどのマクロブロックタイプかを判断する(S532)。
データ転送量予測部131は、マクロブロックタイプがPマクロブロックタイプであると判断した場合は(S532で「P」)、処理を終了する。
また、データ転送量予測部131は、マクロブロックタイプがBマクロブロックタイプであると判断した場合(S532で「B」)、予測データ量を2倍にし(S534)、処理を終了する。
つまり、マクロブロック分割パターンを用いた予測方法では、マクロブロックレイヤにあるmb_type、sub_mb_typeからマクロブロックタイプとマクロブロックの分割パターンを求める。そして、マクロブロック内の各分割ブロックに対応する予測データ量の総和を、外部メモリ110から取得する参照画像のデータ量であるとする。
この時、分割ブロックのマクロブロックタイプがBマクロブロックタイプである場合は、参照画像が2枚必要であることを考慮して、図18の予測データ量の、2倍の値を予測値とする。Pマクロブロックパターンである場合は、参照画像が1枚必要であることを考慮して、図18の予測データ量を予測値とし、Iマクロブロックパターンである場合は、動き補償予測は行われないため予測値はゼロとして計算する。
動き補償予測の単位ブロックが8画素×8画素よりも大きい場合は、mb_typeから得られるMbPartWidthとMbPartHeightが、分割ブロックの幅と高さになる。動き補償予測の単位ブロックが8画素×8画素以下の場合は、8画素×8画素ブロック毎にsub_mb_typeがある。この、sub_mb_typeから得られるMbPartWidthとMbPartHeightが、分割ブロックの幅と高さになる。
以上により、本実施の形態2におけるデータ転送量予測部131が予測データ量を計算する処理(図6のS112)は、終了する。
以上のように、本実施の形態2における画像復号装置100によれば、分割ブロック単位で参照画像を参照する場合、ブロック分割パターン情報を用いて、予測データ量を計算する。これにより、分割ブロック単位で参照画像を参照する必要がある場合でも、予測データ量を計算することができる。
また、分割ブロックごとに、さらに整数画素位置の参照画像のデータ量と小数画素位置の参照画像のデータ量とに重み付けを行うことで、予測データ量を計算する。これにより、整数画素位置の参照画像のデータ量だけではなく、小数画素位置の参照画像のデータ量も考慮した予測データ量を計算することができる。このため、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
また、水平位置又は垂直位置が整数画素位置又は小数画素位置の参照画像が参照される確率を用いて、予測データ量を計算する。これにより、水平位置又は垂直位置が整数画素位置か小数画素位置かを考慮して計算が行われるため、予測データ量をさらに正確に計算することができる。
したがって、分割ブロック単位で参照画像を参照する必要がある場合でも、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
(実施の形態3)
本実施の形態3では、ストリームパーサ部120は、マクロブロックごとに、復号対象のマクロブロックの画像と参照画像との間の動き量を示す動き情報を、さらに復号制御部130に送り、データ転送量予測部131は、マクロブロックごとに、さらに動き情報を用いて、予測データ量を計算する。
つまり、本実施の形態3では、ストリームパーサ部120は、復号したパラメータのうち、少なくともmb_type、sub_mb_type及びmvdを復号制御部130に送る。
具体的には、データ転送量予測部131は、動き情報が示す参照画像の位置が小数画素位置であるか否かを判断し、参照画像の位置が小数画素位置であると判断した場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。
ここで、本実施の形態3では、図6に示されたデータ転送量予測部131が予測データ量を計算する処理(図6のS112)が、実施の形態1と異なる処理であり、それ以外の処理は実施の形態1と同様であるため、当該処理(図6のS112)の詳細について、以下に説明する。
図19は、本実施の形態3におけるデータ転送量予測部131が予測データ量を計算する処理の一例を示すフローチャートである。なお、同図では、1つのマクロブロックについての予測データ量を計算する処理を示しているが、データ転送量予測部131は、ピクチャ内の全てのマクロブロックについて、同図に示す処理を行う。
同図に示すように、まず、データ転送量予測部131は、ストリームパーサ部120が復号したmb_typeから、復号対象のマクロブロックのマクロブロックタイプを取得する(S602)。詳細については、実施の形態1の図7でのマクロブロックタイプを取得する処理(図7のS202)と同様であるため、省略する。
そして、データ転送量予測部131は、取得したマクロブロックタイプがどのマクロブロックタイプかを判断する(S604)。
データ転送量予測部131は、取得したマクロブロックタイプがIマクロブロックタイプであると判断した場合(S604で「I」)、予測データ量は0バイトであると計算し(S606)、処理を終了する。
データ転送量予測部131は、取得したマクロブロックタイプがPマクロブロックタイプ又はBマクロブロックタイプであると判断した場合(S604で「PまたはB」)、mb_typeから、復号対象のマクロブロックのマクロブロック分割パターンを取得する(S608)。詳細については、実施の形態2の図12でのマクロブロック分割パターンを取得する処理(図12のS508)と同様であるため、省略する。
そして、データ転送量予測部131は、idx=0とする(S610)。
そして、データ転送量予測部131は、取得したマクロブロック分割パターンがどのマクロブロック分割パターンかを判断する(S612)。
データ転送量予測部131は、マクロブロック分割パターンが8画素×8画素のマクロブロック分割パターンであると判断した場合(S612で「8×8」)、8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する(S614)。このデータ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理については、後述する。
また、データ転送量予測部131は、マクロブロック分割パターンが8画素×8画素以外のマクロブロック分割パターンであると判断した場合(S612で「8×8以外」)、当該マクロブロック分割パターンの場合の予測データ量を計算する(S616)。このデータ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理については、後述する。
そして、データ転送量予測部131は、idxに1加算し(S618)、idxが「マクロブロックの分割数−1」よりも大きいか否かを判断する(S620)。
データ転送量予測部131は、idxが「マクロブロックの分割数−1」以下であると判断した場合(S620でNO)、予測データ量を計算する処理(S612〜S618)を繰り返す。つまり、データ転送量予測部131は、全てのマクロブロックの分割ブロックについて、予測データ量を計算する。
データ転送量予測部131は、idxが「マクロブロックの分割数−1」よりも大きいと判断した場合(S620でYES)、処理を終了する。
以上により、本実施の形態3におけるデータ転送量予測部131が予測データ量を計算する処理(図6のS112)は、終了する。
次に、データ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS614)の詳細について、説明する。
図20は、本実施の形態3におけるデータ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
復号対象のマクロブロックのマクロブロック分割パターンが8画素×8画素の場合は、8画素×8画素のサブマクロブロックにサブマクロブロック分割パターンが存在する。
このため、まず、データ転送量予測部131は、mbPartIdx=idxのサブマクロブロックのsub_mb_typeから、サブマクロブロック分割パターンを取得する(S702)。なお、sub_mb_typeは、ストリームパーサ部120が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部120から復号制御部130に予め送られている。
そして、データ転送量予測部131は、subIdx=0とする(S704)。ここで、subIdxは、0以上の整数である。
そして、データ転送量予測部131は、mbPartIdx=idxのサブマクロブロックの分割サイズを取得し、subW及びsubHに代入する(S706)。
具体的には、データ転送量予測部131は、図15又は図16に示された、サブマクロブロックの分割ブロックの幅である「MbPartWidth(sub_mb_type)」及びサブマクロブロックの分割ブロックの高さである「MbPartHeight(sub_mb_type)」を取得する。そして、データ転送量予測部131は、MbPartWidth(sub_mb_type)をsubWに代入し、及びMbPartHeight(sub_mb_type)をsubHに代入する。
そして、データ転送量予測部131は、subMbPartIdx=subIdxのサブマクロブロックの分割ブロックの動きベクトルを算出する(S708)。つまり、まず、データ転送量予測部131は、subMbPartIdx=0のサブマクロブロックの分割ブロックの動きベクトルを算出する。なお、データ転送量予測部131は、ストリームパーサ部120が復号制御部130に送ったmvdから、当該動きベクトルを算出する。
そして、データ転送量予測部131は、動きベクトルが指す水平位置が小数画素位置か否かを判断する(S710)。
データ転送量予測部131は、動きベクトルが指す水平位置が小数画素位置であると判断した場合(S710でYES)、subWに5加算する(S712)。つまり、データ転送量予測部131は、サブマクロブロックの分割ブロックの幅を5画素広げる。
データ転送量予測部131は、動きベクトルが指す水平位置が小数画素位置でないと判断した場合は(S710でNO)、subWに加算することなく、次の処理(S714)へ進む。
次に、データ転送量予測部131は、動きベクトルが指す垂直位置が小数画素位置か否かを判断する(S714)。
データ転送量予測部131は、動きベクトルが指す垂直位置が小数画素位置であると判断した場合(S714でYES)、subHに5加算する(S716)。つまり、データ転送量予測部131は、サブマクロブロックの分割ブロックの高さを5画素広げる。
データ転送量予測部131は、動きベクトルが指す垂直位置が小数画素位置でないと判断した場合は(S714でNO)、subHに加算することなく、次の処理(S718)へ進む。
次に、データ転送量予測部131は、subWにsubHを乗じた値を予測データ量として計算する(S718)。
そして、データ転送量予測部131は、subIdxに1加算し(S720)、subIdxがmbPartIdx=idxのサブマクロブロックの分割数から1差し引いた値よりも大きいか否かを判断する(S722)。
データ転送量予測部131は、subIdxがmbPartIdx=idxのサブマクロブロックの分割数から1差し引いた値以下であると判断した場合(S722でNO)、予測データ量を計算する処理(S706〜S720)を繰り返す。つまり、データ転送量予測部131は、サブマクロブロックの全ての分割ブロックについて、予測データ量を計算する処理(S706〜S720)を行う。
データ転送量予測部131は、subIdxがmbPartIdx=idxのサブマクロブロックの分割数から1差し引いた値よりも大きいと判断した場合は(S722でYES)、処理を終了する。
以上により、本実施の形態3におけるデータ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS614)は、終了する。
次に、データ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS616)の詳細について、説明する。
図21は、本実施の形態3におけるデータ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
復号対象のマクロブロックのマクロブロック分割パターンが8画素×8画素以外の場合は、サブマクロブロックにサブマクロブロック分割パターンが存在せず、サブマクロブロックが復号処理の最小単位である。
このため、まず、データ転送量予測部131は、サブマクロブロックのサイズを取得し、w及びhに代入する(S802)。
具体的には、データ転送量予測部131は、図8又は図9に示された、マクロブロックの分割ブロックの幅である「MbPartWidth(mb_type)」及びマクロブロックの分割ブロックの高さである「MbPartHeight(mb_type)」を取得する。そして、データ転送量予測部131は、MbPartWidth(mb_type)をwに代入し、及びMbPartHeight(mb_type)をhに代入する。
そして、データ転送量予測部131は、mbPartIdx=idxのサブマクロブロックの動きベクトルを算出する(S804)。つまり、まず、データ転送量予測部131は、mbPartIdx=0のサブマクロブロックの動きベクトルを算出する。
そして、データ転送量予測部131は、動きベクトルが指す水平位置が小数画素位置か否かを判断する(S806)。
データ転送量予測部131は、動きベクトルが指す水平位置が小数画素位置であると判断した場合(S806でYES)、wに5加算する(S808)。つまり、データ転送量予測部131は、サブマクロブロックの幅を5画素広げる。
データ転送量予測部131は、動きベクトルが指す水平位置が小数画素位置でないと判断した場合は(S806でNO)、wに加算することなく、次の処理(S810)へ進む。
次に、データ転送量予測部131は、動きベクトルが指す垂直位置が小数画素位置か否かを判断する(S810)。
データ転送量予測部131は、動きベクトルが指す垂直位置が小数画素位置であると判断した場合(S810でYES)、hに5加算する(S812)。つまり、データ転送量予測部131は、サブマクロブロックの高さを5画素広げる。
データ転送量予測部131は、動きベクトルが指す垂直位置が小数画素位置でないと判断した場合は(S810でNO)、hに加算することなく、次の処理(S814)へ進む。
次に、データ転送量予測部131は、wにhを乗じた値を予測データ量として計算する(S814)。
以上により、本実施の形態3におけるデータ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS616)は、終了する。
以上のように、本実施の形態3における画像復号装置100によれば、動き情報を用いて、予測データ量を計算する。これにより、予測データ量をより正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
また、参照画像の位置が小数画素位置である場合、小数画素位置の参照画像のデータ量を予測データ量として計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。
これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
(実施の形態4)
本実施の形態4では、データ転送量予測部131は、動き情報が示す参照画像のアドレスが、アライメントされたアドレスか否かを判断し、参照画像のアドレスがアライメントされたアドレスではないと判断した場合、参照画像のアドレスをアライメントされたアドレスに補正して、予測データ量を計算する。
つまり、外部メモリ110から読み出す参照画像データのアドレスが、アライメントされていないアドレスであった場合、アライメントされたアドレスから読み出さなければならない。そのため、その分、余分に外部メモリ110から読み出す必要がある。動きベクトルが分かれば、参照画像を読み出す外部メモリ110のアドレスも計算できるために、アドレスのアラインも考慮してデータ量を予測することができる。このように、動きベクトル自体を完全に算出して用いる予測方法では、参照画像の転送データ量を完全に予測することができる。
なお、ストリームパーサ部120は、復号したパラメータのうち、少なくともmb_type、sub_mb_type、ref_idx及びmvdなどの動きベクトルを算出するために必要なパラメータを復号制御部130に送る。
ここで、本実施の形態4では、図19に示されたデータ転送量予測部131が予測データ量を計算する処理(図19のS614及びS616)が、実施の形態3と異なる処理であり、それ以外の処理は実施の形態3と同様であるため、当該処理(図19のS614及びS616)の詳細について、以下に説明する。
まず、データ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS614)の詳細について、説明する。
図22は、本実施の形態4におけるデータ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
まず、データ転送量予測部131は、mbPartIdx=idxのサブマクロブロックのsub_mb_typeから、サブマクロブロック分割パターンを取得する(S902)。なお、sub_mb_typeは、ストリームパーサ部120が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部120から復号制御部130に予め送られている。
そして、データ転送量予測部131は、subIdx=0とする(S904)。
そして、データ転送量予測部131は、subMbPartIdx=subIdxのサブマクロブロックの分割ブロックの動きベクトルを算出する(S906)。つまり、まず、データ転送量予測部131は、subMbPartIdx=0のサブマクロブロックの分割ブロックの動きベクトルを算出する。なお、データ転送量予測部131は、ストリームパーサ部120が復号制御部130に送ったmvdから、当該動きベクトルを算出する。
そして、データ転送量予測部131は、マクロブロックタイプ、サブマクロブロック分割パターン、subMbPartIdx=subIdxの分割ブロックの動きベクトル、及び参照画像に用いるフレームがどのフレームであるかを示すref_idxから、subMbPartIdx=subIdxの分割ブロックの動き補償に必要となる参照画像の外部メモリ110上のアドレスを算出する(S908)。なお、ref_idxは、ストリームパーサ部120が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部120から復号制御部130に予め送られている。
次に、データ転送量予測部131は、算出した参照画像のアドレスがアライメントされた位置か否かを判断する(S910)。
データ転送量予測部131は、算出した参照画像のアドレスがアライメントされた位置でないと判断した場合(S910でNO)、当該参照画像のアドレスをアライメントされたアドレスに補正する(S912)。
ここで、データ転送量予測部131が、アライメントされた位置にない参照画像のアドレスをアライメントされたアドレスに補正することについて、以下に説明する。
図23は、本実施の形態4におけるデータ転送量予測部131が参照画像をアライメントされたアドレスに補正することを説明する図である。
同図の(a)に示すように、外部メモリ110が、8バイトのメモリアライメント(8バイト転送のメモリ)の場合、13×13バイトの参照画像は、メモリアライメントの境界を跨いでいる。このような、メモリアライメントの境界を跨ぐようなアドレスの参照画像を転送する場合、アライメントされたアドレスから転送しなければならない。
このため、同図の(b)に示すように、参照画像のアドレスをアライメントされたアドレスに補正する必要がある。つまり、当該参照画像のデータ転送量は、13×13=169バイトから、24×13=312バイトに増加する。
このように、データ転送量予測部131は、アライメントされた位置にない参照画像のアドレスを、アライメントされたアドレスに補正する。
図22に戻り、データ転送量予測部131は、算出した参照画像のアドレスがアライメントされた位置であると判断した場合(S910でYES)、次の処理(S914)へ進む。
次に、データ転送量予測部131は、参照画像のアドレスから、当該参照画像のデータ転送量を算出する(S914)。例えば、図23に示された場合であれば、データ転送量予測部131は、当該参照画像のデータ転送量として、312バイトと算出する。
そして、データ転送量予測部131は、算出した当該参照画像のデータ転送量を、当該参照画像の予測データ量として計算する(S916)。
そして、データ転送量予測部131は、subIdxに1加算し(S918)、subIdxがmbPartIdx=idxのサブマクロブロックの分割数から1差し引いた値よりも大きいか否かを判断する(S920)。
データ転送量予測部131は、subIdxがmbPartIdx=idxのサブマクロブロックの分割数から1差し引いた値以下であると判断した場合(S920でNO)、予測データ量を計算する処理(S906〜S918)を繰り返す。つまり、データ転送量予測部131は、サブマクロブロックの全ての分割ブロックについて、予測データ量を計算する処理(S906〜S918)を行う。
データ転送量予測部131は、subIdxがmbPartIdx=idxのサブマクロブロックの分割数から1差し引いた値よりも大きいと判断した場合は(S920でYES)、処理を終了する。
以上により、本実施の形態4におけるデータ転送量予測部131が8画素×8画素のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS614)は、終了する。
次に、データ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS616)の詳細について、説明する。
図24は、本実施の形態4におけるデータ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理の一例を示すフローチャートである。
まず、データ転送量予測部131は、mbPartIdx=idxのサブマクロブロックの動きベクトルを算出する(S1002)。なお、データ転送量予測部131は、ストリームパーサ部120が復号制御部130に送ったmvdから、当該動きベクトルを算出する。
そして、データ転送量予測部131は、マクロブロックタイプ、マクロブロック分割パターン、mbPartIdx=idxのサブマクロブロックの動きベクトル、及び参照画像に用いるフレームがどのフレームであるかを示すref_idxから、mbPartIdx=idxのサブマクロブロックの動き補償に必要となる参照画像の外部メモリ110上のアドレスを算出する(S1004)。なお、ref_idxは、ストリームパーサ部120が符号化ストリームを可変長復号した時に得られるパラメータで、ストリームパーサ部120から復号制御部130に予め送られている。
次に、データ転送量予測部131は、算出した参照画像のアドレスがアライメントされた位置か否かを判断する(S1006)。
データ転送量予測部131は、算出した参照画像のアドレスがアライメントされた位置でないと判断した場合(S1006でNO)、当該参照画像のアドレスをアライメントされたアドレスに補正する(S1008)。
データ転送量予測部131は、算出した参照画像のアドレスがアライメントされた位置であると判断した場合(S1006でYES)、次の処理(S1010)へ進む。
次に、データ転送量予測部131は、参照画像のアドレスから、当該参照画像のデータ転送量を算出する(S1010)。例えば、図23に示された場合であれば、データ転送量予測部131は、当該参照画像のデータ転送量として、312バイトと算出する。
そして、データ転送量予測部131は、算出した当該参照画像のデータ転送量を、当該参照画像の予測データ量として計算する(S1012)。
以上により、本実施の形態4におけるデータ転送量予測部131が8画素×8画素以外のマクロブロック分割パターンの場合の予測データ量を計算する処理(図19のS616)は、終了する。
以上のように、本実施の形態4における画像復号装置100によれば、参照画像のアドレスがアライメントされたアドレスではない場合、参照画像のアドレスをアライメントされたアドレスに補正して予測データ量を計算する。これにより、予測データ量をさらに正確に計算することができるため、並列に復号するブロックを適切に選択することができる。これにより、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
(実施の形態5)
本実施の形態5では、ブロック決定部132は、外部メモリ110から読み出されるデータ量の変動が小さくなるように、予測データ量を用いて、並列に復号が行われるマクロブロックの数を変更することで、並列に復号が行われる符号化画像データの複数のマクロブロックを決定する。
ここで、本実施の形態5では、図6に示されたブロック決定部132が並列復号するマクロブロックを決定する処理(図6のS114)が、実施の形態1と異なる処理であり、それ以外の処理は実施の形態1と同様であるため、当該処理(図6のS114)の詳細について、以下に説明する。
図25は、本実施の形態5におけるブロック決定部132が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
まず、ブロック決定部132は、所定の数のマクロブロックの予測データ量の平均値を算出する(S1102)。ここで、所定の数のマクロブロックとは、ピクチャ内の全てのマクロブロックでもよいし、ブロック決定部132が既に復号順序を決定したマクロブロックでもよい。
そして、ブロック決定部132は、並列に復号が行われる複数のマクロブロックの予測データ量の平均値が、所定の数のマクロブロックの予測データ量の平均値に近付くように、並列に復号するマクロブロックの数を決定する(S1104)。
図26は、本実施の形態5におけるブロック決定部132が並列に復号するマクロブロックの数を決定することを説明する図である。
同図に示すように、マクロブロックの復号順序は、同図に記載の順序で行い、基本的には、同図のマクロブロックに付けられた番号順に復号していく。つまり、1つ下の行の2列左側のマクロブロックを、3行単位で並列に復号処理していく。
図2に記載の復号順序では、並列に復号できるマクロブロックがマクロブロック復号部の数よりも多くなることがあった。図26に記載の復号順序は、マクロブロック復号部が3つしかない点を考慮して、並列に復号するマクロブロック数を3つ以下になるようにしている。
しかし、図26に記載の順序で復号する場合、並列に復号するマクロブロックが、多くのデータを外部メモリ110から取得しなければならないマクロブロックであった場合、その瞬間に多くのデータを転送しなければならない。
そこで、この方法では、同じ番号が付いたマクロブロックを並列に復号するマクロブロックの候補として、まず、これらの復号候補マクロブロックの、予測転送データ量の総和を求める。
求めた予測転送データ量が、予め定めた転送データ量よりも大きいかどうかを判定し、小さい場合は、これら3つの復号候補マクロブロックを復号する。しかし、大きい場合は、復号候補マクロブロックのうち、どれか1つを復号しないようにする。復号しないマクロブロックはどれを選んでも良いが、例えば、最も下の行に位置するマクロブロックは復号しないようにする。
つまり、並列に復号するマクロブロックを2つまでに抑えることで、外部メモリ110から転送データ量を抑える。復号されなかったマクロブロックは、次のマクロブロックの復号タイミングで、復号候補マクロブロックに加えて、再び復号するかどうかの判定を行っていく。
例えば、図26の6番の番号が付いた3つのマクロブロックが、復号候補マクロブロックであった場合を考える。まず、6番のマクロブロックの、予測転送データ量の総和を求め、所定の転送データ量よりも小さければ、この3つのマクロブロックを復号する。所定の転送データ量よりも大きい場合は、上から3行目にある6番のマクロブロックを除き、上から1行目と2行目にある6番のマクロブロックを復号するようにする。
次に、1行目と2行目にある7番のマクロブロックと、先ほど復号されなかった、3行目の6番のマクロブロックとを復号候補マクロブロックとして、復号するマクロブロックを決定していく。
なお、並列に復号するマクロブロックの数を2つに抑えても、求めた予測転送データ量が、予め定めた転送データ量よりも大きい場合は、さらに並列に復号するマクロブロックの数を減らしてもよい。
このようにすることで、外部メモリ110の転送データ量が予め定めた転送データ量よりも大きくなることを防ぐことができる。また、これによって、外部メモリ110を、他の装置と共用していた場合に、本実施の形態5の画像復号装置がメモリのバンド幅を占有して、他の装置が外部メモリ110からデータを転送できないという状態を防ぐことができる。
以上により、本実施の形態5におけるブロック決定部132が並列復号するマクロブロックを決定する処理(図6のS114)は、終了する。
以上のように、本実施の形態5における画像復号装置100によれば、外部メモリ110から読み出されるデータ量の変動が小さくなるように、並列に復号が行われるマクロブロックの数を変更することで、並列に復号が行われる複数のマクロブロックを決定する。これにより、瞬間的にデータ転送量が増加しないように、マクロブロックの数を変更することができる。したがって、瞬間的なデータ転送量の増加を抑え、小さなメモリバンド幅で画像データの並列復号を行うことができる。
(実施の形態6)
上記実施の形態1では、マクロブロックの復号処理を行う前にマクロブロックの復号順序を決定したが、参照画像のデータ転送量の予測だけを予め行っておき、マクロブロックの並列復号を行いながら、復号順序を適応的に決定していっても良い。例えば、実施の形態1の画像復号装置100以外の他の装置も、外部メモリ110にアクセスするのであれば、当該他の装置が外部メモリ110にアクセスする時は、参照画像のデータ転送量が小さいマクロブロックを選んで復号する。こうすれば、画像復号装置100も他の装置も同時に動作させることができる。
このように、本実施の形態6では、ブロック決定部132は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が、外部メモリ110から読み出されるデータ転送可能な最大データ量から他の装置がデータ転送を行うデータ量を差し引いたデータ量である差分データ量に近付くように、並列に復号が行われる複数のマクロブロックを決定する。
つまり、ブロック決定部132は、当該差分データ量が大きい場合は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が大きくなるように、並列に復号が行われる複数のマクロブロックを決定する。
また、ブロック決定部132は、当該差分データ量が小さい場合は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のマクロブロックを決定する。
図27は、本実施の形態6における他の装置200が画像復号装置100の外部メモリ110にアクセスする場合の機能構成を示すブロック図である。ここで、画像復号装置100は、図3で説明した実施の形態1における画像復号装置100と同じ構成であるため、詳細な説明は省略する。
同図に示すように、他の装置200は、画像復号装置100の外部メモリ110にアクセスする、画像復号装置100とは異なる装置である。なお、他の装置200は、1つの装置であってもよいし、複数の装置であってもよい。
また、他の装置200は、例えば、画像符号化ブロック、音声復号ブロック、音声符号化ブロック、プロセッサブロック、又はグラフィックアクセラレータなどである。なお、他の装置200は、画像復号装置100と外部メモリ110を共用するものであれば、どのような装置であってもよい。
外部メモリ転送量制御部300は、他の装置200から、他の装置200と外部メモリ110との間のデータ転送量を受け取る。そして、外部メモリ転送量制御部300は、外部メモリ110が持つ最大転送性能(転送量)から、他の装置200のデータ転送量を差し引いたデータ転送量を、画像復号装置100の復号制御部130に通知する。
復号制御部130は、予測データ量がこの通知されたデータ転送量に近付くように、マクロブロックを選択して復号処理を実施していく。
次に、ブロック決定部132が並列復号するマクロブロックを決定する処理について、説明する。
ここで、本実施の形態6では、図6に示されたブロック決定部132が並列復号するマクロブロックを決定する処理(図6のS114)が、実施の形態1と異なる処理であり、それ以外の処理は実施の形態1と同様であるため、当該処理(図6のS114)の詳細について、以下に説明する。
図28は、本実施の形態6におけるブロック決定部132が並列復号するマクロブロックを決定する処理の一例を示すフローチャートである。
同図に示すように、まず、外部メモリ転送量制御部300が、他の装置200から、他の装置200と外部メモリ110との間のデータ転送量を取得する(S1202)。
そして、外部メモリ転送量制御部300は、外部メモリ110から読み出されるデータ転送可能な最大データ転送量から他の装置200のデータ転送量を差し引いた差分データ量を算出し(S1204)、ブロック決定部132に送信する。
ブロック決定部132は、並列に復号が行われる複数のマクロブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のマクロブロックを決定する(S1206)。具体的には、ブロック決定部132は、当該合計値が、差分データ量以下になるように、当該複数のマクロブロックを決定する。
以上により、本実施の形態6におけるブロック決定部132が並列復号するマクロブロックを決定する処理(図6のS114)は、終了する。
以上のように、本実施の形態6における画像復号装置100によれば、並列に復号が行われる複数のブロックの予測データ量の合計値が、差分データ量に近付くように、並列に復号が行われる複数のブロックを決定する。つまり、差分データ量が大きい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が大きくなるように、差分データ量が小さい場合は、並列に復号が行われる複数のブロックの予測データ量の合計値が小さくなるように、並列に復号が行われる複数のブロックを決定する。これにより、予め設定されたメモリバンド幅で画像データの並列復号を行うことができる。
具体的には、他の装置200のデータ転送量が大きい時は、画像復号装置100のデータ転送量が小さくなるように制御するため、他の装置200の転送を妨げることがなく、画像復号装置100と同時に他の装置200を動作させても、他の装置200の処理を遅延させることなく、動作させることができる。
また、他の装置200のデータ転送量が小さい時は、画像復号装置100のデータ転送量が大きくなるように制御するため、復号処理における参照画像の転送を高速に行うことができ、画像復号処理自体を高速化できる。
なお、外部メモリ転送量制御部300が無く、復号制御部130と他の装置200とが直接通信するようにしてもよい。つまり、ブロック決定部132が、他の装置200から、他の装置200のデータ転送量を取得し、差分データ量を算出することにしてもよい。
また、上記実施の形態1〜6において、画像復号装置100は、構成要件の全部あるいはその一部を1つの集積回路上に実装してもよいし、1つの基板上に実装した複数の集積回路であってもよいし、ネットワークやバスを介して接続される独立した装置であっても構わない。
図29は、画像復号装置100を制御する集積回路400の一例を示す図である。
同図に示すように、集積回路400は、図3に示された画像復号装置100の外部メモリ110以外の機能を備えている。
なお、集積回路400は、各処理部が個別に1チップ化されても良いし、一部又は全ての処理部を含むように1チップ化されても良い。
また、集積回路400は、隣接MB情報メモリ180やデブロッキングフィルタ部を含まないことにしてもよい。つまり、集積回路400は、ストリームパーサ部120、データ転送量予測部131、ブロック決定部132、及びマクロブロック復号部140〜160を備えていればよく、これらの構成により本発明の目的を達成することができる。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
以上、本発明に係る画像復号装置について、上記実施の形態を用いて説明したが、本発明は、これに限定されるものではない。
例えば、上記実施の形態1〜6では、3つのマクロブロック復号部を用いて並列にマクロブロックの復号を行ったが、マクロブロック復号部の個数は3個でなくてもよい。特許文献1には、3個以上のマクロブロック復号部を使って並列にマクロブロックを復号する方法が記載されており、この方法に従えば、3個以上のマクロブロック復号部を用いても復号することができる。また、ブロック決定部132は、マクロブロックの復号順序を決定する場合も、並列に復号するマクロブロックの、参照画像の予測転送データ量の平均値が、各マクロブロックの予測転送データ量の平均値となるべく近くなるように、マクロブロックを選択すればよい。このため、マクロブロック復号部の個数とは関係なく復号処理を行うことができる。
また、上記実施の形態1〜6では、ストリームパーサ部120が完全に可変長復号した復号ストリームを外部メモリ110に出力している。しかし、ストリームパーサ部120では、参照画像のデータ転送量の予測に必要なパラメータだけを復号さえできればよく、必ずしも完全に可変長復号した復号ストリームを出力する必要はない。例えば、ストリームパーサ部120では必要なパラメータの復号だけを行っておき、マクロブロックの並列復号を行うために必要な部分だけを復号した中間ストリームを外部メモリ110に出力する方法が考えられる。この場合、マクロブロック復号部140〜160には、中間ストリームを復号するために可変長復号部を搭載させる必要がある。
また、上記実施の形態1〜6では、データ転送量予測部131がピクチャ内の全てのマクロブロックについて予測データ量を計算した後に、ブロック決定部132は、並列復号するマクロブロックを決定することとした。しかし、データ転送量予測部131が一部のマクロブロックの予測データ量を計算するごとに、ブロック決定部132は、並列復号するマクロブロックを決定することにしてもよい。
また、上記実施の形態1〜6では、データ転送量予測部131は、mb_typeから、復号対象のマクロブロックのマクロブロックタイプを取得することとした。しかし、データ転送量予測部131は、スライスヘッダに含まれるslice_typeから、復号対象のマクロブロックのマクロブロックタイプを取得することにしてもよい。この場合、正確ではないが、Iスライス、Pスライス、及びBスライスのマクロブロックは、それぞれIマクロブロックタイプ、Pマクロブロックタイプ、及びBマクロブロックタイプであるとして、復号対象のマクロブロックのマクロブロックタイプを取得することができる。
また、上記実施の形態1〜6では、復号制御部130のデータ転送量予測部131が予測データ量を計算することにしたが、ストリームパーサ部120が予測データ量を計算することにしてもよい。
また、上記実施の形態1〜6では、画像復号装置100は、外部メモリ110、ストリームパーサ部120、復号制御部130、マクロブロック復号部140〜160、デブロッキングフィルタ部170、及び隣接MB情報メモリ180を備えており、復号制御部130は、データ転送量予測部131及びブロック決定部132を備えていることとした。しかし、デブロッキングフィルタ部170及び隣接MB情報メモリ180は、本発明の目的を達成するために必須の構成ではない。つまり、画像復号装置100は、外部メモリ110、ストリームパーサ部120、データ転送量予測部131、ブロック決定部132、及びマクロブロック復号部140〜160を備えていればよく、これらの構成により本発明の目的を達成することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
また、発明の趣旨を逸脱しない範囲で、上記複数の実施の形態における各構成要素を任意に組み合わせても良い。