以下、添付図面を参照しながら各実施例について詳細に説明する。実施例で説明する動画像符号化装置は、動画像データに含まれる各ピクチャをグループ単位で符号化し、符号化データとしてビットストリームを出力する。
なお、ピクチャは、フレーム又はフィールドの何れであってもよい。フレームは、動画像データ中の一つの静止画像であり、一方、フィールドは、フレームから奇数行のデータあるいは偶数行のデータのみを取り出すことにより得られる静止画像である。
また、符号化対象の動画像は、カラー動画像であってもよく、又はモノクロ動画像であってもよい。
[実施例1]
<構成>
図7は、実施例1による動画像符号化装置100の概略構成の一例を示すブロック図である。動画像符号化装置100は、符号化処理部110と、符号量制御部120と、グループ決定部130と、復号時刻決定部140と、出力時刻決定部150とを有する。
符号化処理部110は、直交変換部111と、量子化部112と、エントロピー符号化部113とを有する。
符号量制御部120は、量子化値算出部121と、バッファ占有量算出部122と、ビットカウンタ123とを有する。
符号量制御部120は、グループに含まれる全てのブロックの出力に必要なデータが、所定の伝送レートで復号装置に伝送された場合に、算出された出力時刻と決定された出力遅延により表される時刻までに出力装置の復号バッファに到達するように符号量を制御する。
グループ決定部130は、グループ構成決定部131と、グループ情報付加部132とを有する。
復号時刻決定部140は、グループ復号時刻算出部141と、グループ復号遅延決定部142と、グループ復号遅延情報付加部143とを有する。
出力時刻決定部150は、グループ出力時刻算出部151と、グループ出力遅延決定部152と、グループ出力遅延情報付加部153とを有する。
動画像符号化装置100が有するこれらの各部は、それぞれ、別個の回路として動画像符号化装置100に実装される。あるいは、動画像符号化装置100が有するこれらの各部は、その各部の機能を実現する回路が集積された一つの集積回路として動画像符号化装置100に実装されてもよい。あるいはまた、動画像符号化装置100が有するこれらの各部は、動画像符号化装置100が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールであってもよい。
動画像データに含まれる符号化対象ピクチャは、図示しない制御部によりブロック単位に分割され、ブロックごとに直交変換部111に入力される。各ブロックは、例えば、16×16画素を有する。
直交変換部111は、図示しないフレームメモリに蓄積された局所復号済ピクチャからイントラ予測値もしくはインター予測値を算出し、入力ブロックとの差分演算を行いブロック予測誤差を算出する。更にブロック予測誤差に対し直交変換を行う。
量子化部112は、直交変換したブロック予測誤差に対し量子化演算を行う。量子化演算における量子化パラメータ(制御情報)は、量子化値算出部121から与えられる。この結果である、量子化直交変換係数、及びイントラ予測もしくはインター予測のパラメータ(イントラ予測方向、動きベクトル情報等)は、ブロック圧縮データとしてエントロピー符号化部113に出力される。量子化された直交変換係数は、図示しない局所復号部により、逆量子化・逆直交変換を行った後、イントラ予測値もしくはインター予測値を加算して局所復号ブロックを生成後、図示しないフレームメモリに蓄積する。
エントロピー符号化部113は、量子化部112から出力されるブロック圧縮データに対しエントロピー符号化を行う。
量子化値算出部121は、バッファ占有量算出部122から出力される、理想復号装置の受信バッファの状態及び次に符号化するブロックの発生情報量上限とから各ブロックの量子化値を計算する。
バッファ占有量算出部122は、ビットカウンタ123から出力される、符号化データのビット量累積値と、グループ構成決定部131から出力されるグループ情報、グループ復号遅延決定部142から出力されるグループの復号時刻及びグループの復号遅延から、理想復号装置の受信バッファの状態及び次に符号化するブロックの発生情報量上限を計算する。
ビットカウンタ123は、エントロピー符号化部113の出力ビット数をカウントし、符号化データの累積値を出力する。
グループ構成決定部131は、複数のブロックに対し、各ブロックが属するグループを決定する。グループ構成決定部131は、例えば符号化処理中のブロックが属するグループを、図示しない制御部から受け取ったブロックカウント情報と図示しない制御部より受け取った符号化方法指定情報とを用いて所定方法に従って決定する。
ブロックカウント情報は、ピクチャに含まれる各ブロックの番号を表す情報であり、例えば、ピクチャの左上端のブロックに対する番号が1に設定され、ラスタスキャン順に従って各ブロックに番号が割り当てられる。そして、ピクチャの右下端のブロックに対して、最大の番号が割り当てられる。なお、ブロックカウント情報は、他の順序に従って各ブロックに割り当てられた番号を含んでもよい。
グループ構成決定部131は、グループ毎の復号処理時間を均等化するために、各グループに含まれるブロックの数が出来る限り等しくなるように複数のグループを決定することが好ましい。
例えば、グループ構成決定部131は、ブロックライン単位で各ブロックをグループに分割すれば、任意のピクチャサイズにおいて各グループに含まれるブロックの数を等しくすることができる。
例えば、ピクチャサイズが、高精細度テレビジョン放送(High Definition Television、HDTV)相当の1920画素×1088画素であり、ブロックサイズが16画素×16画素であれば、ブロックライン数は68である。したがって、この場合、符号化対象ピクチャに含まれる各ブロックは、68個のグループの何れかに分類される。
グループに含まれるブロックの数は、1から画面全体のブロック数までの間の値に設定しても良い。
グループ構成決定部131は、符号化対象ブロックが属するグループの識別情報をバッファ占有量算出部122へ通知する。グループ構成決定部131は、各グループに含まれるブロックの情報をグループ復号時刻算出部141とグループ出力時刻算出部151へ通知する。なお、グループ構成決定部131は、各グループの先頭に位置するブロックのインデックスをグループ復号時刻算出部141とグループ出力時刻算出部151へ通知してもよい。
グループ情報付加部132は、ピクチャ内のグループ数と各グループ内のブロック情報とを示すグループ情報を符号化データに付加する。
グループ復号時刻算出部141は、グループ構成決定部131から出力されるグループ情報から各グループの復号時刻を算出し、グループ復号遅延決定部142に通知する。
グループ復号遅延決定部142は、各グループの復号遅延を決定し、各グループの復号時刻と共にバッファ占有量算出部122とグループ復号遅延情報付加部143とに通知する。決定された復号遅延は、遅延情報として通知される。
グループ復号遅延情報付加部143は、グループの復号時刻と復号遅延とを受け取り、グループ復号遅延情報として符号化データに付加する。
グループ出力時刻算出部151は、図示しない制御部より受け取った符号化方法指定情報と、グループ構成決定部131から出力されるグループ情報より、各グループの出力時刻(表示時刻とも呼ぶ)を算出し、出力時刻情報をグループ出力遅延決定部152へ通知する。
グループ出力遅延決定部152は、各グループの出力時刻から、各グループの出力遅延を決定し、出力遅延情報をグループ出力遅延情報付加部153へ通知する。
グループ出力遅延情報付加部153は、各グループの出力時刻と出力遅延とを受け取り、グループ出力遅延情報として符号化データに付加する。
≪復号遅延≫
i番目のピクチャP(i)内の各ブロックをdt(i−1)からdt(i)までの間で等間隔にて瞬時復号した場合を考える。この場合、消費した符号化データの累積値グラフf(t)は、ブロック当たりの情報量の下限・上限を設定する等の適切なレート制御により、ブロック伝送遅延を小さくすることが可能である。また、この情報を動画像復号装置に通知することで、ブロックの復号開始最早時刻を更に早めることが可能である。図8を用いて説明する。
図8は、P(i)に着目した場合の符号化データの累積値を表す図である。グラフ60は、レートがRである符号化データの到着量累積値である。グラフ61は、ピクチャ単位で瞬時復号した場合の消費した符号化データの累積値である。
符号62〜66は、符号67〜71で表される各グループ(G0〜G4)にて復号のために消費した符号化データの累積値である。
各グループの存在範囲とグラフ60との関係を見ると、G(1)〜G(4)においては、常にレートが符号化データの累積値より上であるため、G(1)〜G(4)の各ブロックの瞬時復号をdt(i−1)からdgt(i,1)の間で等間隔に行った場合でもアンダーフローは発生しない。
G(0)においては、G(0)の符号化データの累積値がレートを超えてしまうため、アンダーフローが発生する。このアンダーフローを回避するためには、符号化データの累積値がレートを超えなければよく、その最小値は間隔Δtとなる。
Δtは、どのグループで発生してもdgt(i,n)−dgt(i,n−1)よりも小さくなる。動画像復号装置は、P(i)における、それぞれのグループのΔtの最大値を用いて、P(i)の先頭ブロックの復号開始時刻をdt(i−1)+Δt(i)とすることで、全ブロックをアンダーフローすることなく、等間隔で瞬時復号することが出来る。
シーケンス全体では、全ピクチャのΔt(i)の最大値Δtから、最初のピクチャの先頭ブロック復号開始時刻dinitを以下の式のようにすることで、全ピクチャの全ブロックをアンダーフローすることなく、等間隔で瞬時復号することが出来る。
またP(i)内でn番目のグループの復号開始が可能となる時刻の最早値r(i,n)は、以下の式で表される。
動画像符号化装置にて、Δtがdgt(i,n)−dgt(i,n−1)より小さい値になるように各ピクチャ、各グループの発生情報量を制御し、Δtの値を明示的に動画像復号装置に伝送する。動画像復号装置にて、グループG(i,n)の瞬時復号時刻をr(i, n)とすることで、確実に各ブロックの復号開始時刻を保証することができる。
動画像復号装置側のグループは、動画像符号化装置から通知されたグループと必ずしも一致しなくても良い。動画像復号装置側のグループが、動画像符号化装置から通知されたグループと一致する場合には、r(i,n)=dgt(i,n)となる。
≪表示遅延≫
対象とするグループの表示遅延を明示的に付加拡張情報とすることで、復号装置の方に最も早い表示タイミングを通知することができ、表示遅延を最小のものとすることができる。例えば、図5に示すようなタイル分割かつグループ分割であった場合の表示遅延の指定方法を図5と図9を用いて説明をする。
図5に示す場合、最も表示遅延が大きくなるのは、グループ0(s41)の最上段の表示である。グループ0(s41)の最上段の表示を開始するためには、少なくともグループ2(s43)のピクチャ最上段の画素値の復号が終わっている必要がある。そこで、表示遅延を明示的に付加拡張情報として通知する。
図9は、表示遅延を説明するための図である。グループ0(s41)の最上段の表示が可能になる時刻を図9に示すogt(0)とする。ogt(0)はグループ2の引き抜き時刻dgt(2)よりも、その復号にかかる時間が遅く設定されている。この時の表示時刻は、ピクチャの復号がある一定の速さで行われるとして、以下の式であらわされる。
ogt(0)=dgt(0)+(dgt(2)−dgt(1))+l/L(dgt(3)−dgt(2)) ・・・式(5)
Lはs43で表されるグループ2内の垂直方向の総ライン数、lはs43で表されるグループ2内でピクチャ右上端が何ライン目かを表す。l/L(dgt(3)−dgt(2))は、グループを復号するために、1グループ時間かかると仮定したとき、s43で表されるグループ2のピクチャ右上端の復号が完了する時刻を表す。
つまり、表示可能時刻は、s41で表されるグループ0の復号時刻dgt(0)に対し、s41で表されるグループ0の瞬時復号時刻からs43で表されるグループ2の瞬時復号時刻までの時間を足す。さらに、表示可能時刻は、グループ2のピクチャ右上端の復号が完了するまでに実際にかかる時間を足したものである。
動画像符号化装置側では、上式で表される時間を明示的に付加拡張情報として送信することで、復号装置側に、実復号時間も考慮した適切な時刻を通知することが可能になり、遅延の少ない表示を保証することができる。
また、上記の例で、表示時刻の内のグループ2のピクチャ右上端の復号が完了する時刻の部分を、s43で表されるグループ2全ての復号が実際に完了する時間dgt(3)−dgt(2)としても、1ピクチャの復号が完了した時刻を表示可能時刻とするよりも早い時刻を通知することができるため、遅延の少ない表示を保証することができる。
≪復号時刻の算出≫
実施例1におけるグループ復号時刻情報の算出方法を説明する。以降の説明は、符号化対象ピクチャに含まれる総ブロック数をMとする。
グループ復号時刻算出部141は、まず、符号化順番でi番目のピクチャP(i)の入力時刻t(i)から所定の遅延時間dly分遅延させたP(i)の復号時刻dt(i){=t(i)+dly}に基づいて、ピクチャP(i)のn番目のグループG(i,n)が復号される時刻を表す復号時刻dgt(i,n)を算出する。または、グループ復号時刻算出部141は、復号時刻として、dgt(i,n)の代わりに、dgt(i,n)と等価な{dgt(i,n)−dgt(i,n−1)}を算出してもよい。また、グループ復号時刻算出部141は復号時刻を適当な単位、例えば1/90000秒単位の倍数となるように丸めてもよい。
グループ復号時刻算出部141は、各グループの復号時刻を、各グループに含まれる各ブロックの復号処理に要する時間を均等とするために、1ピクチャ当たりの復号処理に要する時間をグループ数Nで等分割するように決定する。この場合、G(i,n)(n=1,2,...,N)の復号時刻dgt(i,n)は、次式に従って算出される。
なお、dt(i)はP(i)の復号時刻である。d(i+1)−d(i)はiによらず一定であり、以降sと表現する。
さらにグループ復号時刻算出部141は、2番目以降に符号化・復号されるグループの復号時刻dgt(i,n)(n≧2)を、次式のように決定してもよい。
さらに、グループ復号時刻算出部141は、2番目以降に符号化・復号されるグループの復号時刻dgt(i,n)(n≧2)を、次式のように決定してもよい。
グループ復号遅延決定部142は、ピクチャ全体のブロック遅延最大値Δtを符号化開始前に決定する。Δtは次式で表される範囲の値にする。
バッファ占有量算出部122は、理想復号装置の受信バッファのバッファ占有量、及び次に符号化するブロックの発生情報量上限を、以下のように計算する。
図10は、P(i)の符号化処理における、理想復号装置の受信バッファに到着した符号化データのビット量の累積値と、P(i)内の各ブロックでの発生情報量の累積値との関係を示す図である。
グラフ72は、理想復号装置の受信バッファに到着した符号化データのビット量の累積値R(t)である。グラフ75は、グラフ72をΔtだけ左にずらしたものであり、R´(t)とする。R´(t)=R(t+Δt)の関係がある。
図10に示すB(i)は、P(0)からP(i)までの発生符号化データの累積値を表す。b(i)はP(i)全体の発生情報量を表し、B(i)−B(i−1)と同じである。
グラフ73は、時刻dt(i−1)での値がB(i−1)、時刻dt(i)での値がB(i)であり、傾きがb(i)/sとなる直線V(t)である。sは1ピクチャ時間であり、dt(i)−dt(i−1)と同じである。
グラフ73は、時刻dt(i−1)からdt(i)までの間に、各ブロックを均等間隔で復号化し、また発生情報量が等しくb(i)/Mとなる場合の、ブロック単位の符号化データの消費曲線f(t)に相当する。
グラフ74は、実際のブロック単位の符号化データの消費曲線f(t)であり、点77は、m番目のブロックまで復号した場合のブロック単位の符号化データの消費量累積値である。
理想復号装置が、グループ復号時刻情報から算出されるグループ復号開始早時刻r(i,n)にグループnを復号したときに受信バッファのアンダーフローを生じさせないためには、以下の条件を満たす必要がある。量子化値算出部121は、常に以下の条件が満たされるように量子化値を算出する。
領域76は、f(t)が、時刻dtg(i,u−1)からdtg(i,u)までの間で取ることが許される範囲を示す。
≪量子化値算出≫
量子化値算出部121における、ブロックmの量子化値算出方法を以下に説明する。実施例1では、各グループに含まれるブロック数は等しくM/Nとしている。
ブロックmが属するn番目のグループG(i,n)の先頭ブロックの処理を開始するに当たり、G(i,n)の目標情報量T(i,n)を以下の式に従い計算する。ここでn=Ceil(m*N/M)である。
T(i)はP(i)全体の目標情報量であり、T'(i,n)はG(i,n)の実発生情報量である。T(i)は、公知の方式を用いて、P(0)からP(i−1)までの実発生情報量の総和によって決定される。
量子化値算出部121は例えば、MPEG−2における標準化団体参照ソフトウェアTest Model5(非特許文献2を参照)における量子化値算出方法に従い、G(i,n)の実発生情報量がT(i,n)に近づくように量子化値を算出する。
次に量子化値算出部121は、G(i,n)全体の符号化処理が終了した時のP(i)内の発生情報量累積値の期待値b'(i,n)と、n番目のグループをエントロピー符号化する前のP(i)内の発生情報量累積値B(i,n−1)との差d1を所定の閾値DTH1と比較する。
b'(i,n)は以下の式で計算される。
b0は量子化値をその取り得る値の範囲のうちの最大値とした場合に、各ブロックで発生する最大の符号量である。((M/N)−m)は、G(i,m)で符号化処理が終わっていないブロック数に相当する。offsetはマージン項である。
d1<DTH1となる場合には、量子化値算出部121は、量子化値を最大値とする。
なおb0は、周波数係数を全て0としたときのブロックの符号量を用いても良い。d1<DTH1となる場合には、量子化値算出部121は、符号化対象ブロックの全ての周波数係数が0に量子化されるように量子化値を決定する。この制御により、グループ内の符号化処理が済んでいない残りブロックの符号量の平均値がb0を超えなければ、T(i,n)≧T'(i,n)、即ちf(dtg(i,n))≦V(dtg(i,n))が保証される。そして理想復号装置の受信バッファがアンダーフローしないことが保証される。
以上により、量子化値算出部121は、動画像符号化装置100からの出力ストリームを実際に所定のレートRに従って動画像復号装置へ伝送すれば、動画像復号装置の受信バッファがアンダーフローしないように動画像データの符号量を制御することが可能となる。
量子化値算出部121は、求めた量子化値を量子化部112へ通知する。
≪出力時刻算出≫
次に、実施例1における、グループ出力時刻情報の算出方法について説明する。図11は、グループ出力時刻情報の算出を説明するための図である。
以降の説明は、符号化対象ピクチャに含まれる総ブロック数をMとする。また、ピクチャの幅と高さ、タイルの幅と高さ、CTBの幅と高さをそれぞれ(widthp,heightp)、(widtht,heightt)、(widthc,heightc)とする。ここで、すべてのタイル(t80〜t83)のサイズは等しく、タイルはラスタスキャン順sc83に処理されるとする。つまり、図11に示す例では、タイル0(t80)、タイル1(t81)、タイル2(t82)、タイル3(t83)の順番に処理される。
さらに、図11に示す例では、グループは17個のCTBを持つとし、すべてのグループで、CTBの個数は等しいとする。この時、グループ0(s81)はピクチャ内のCTBのインデックス0から3列目の4行目までとなる。
このように考えると右上のタイル1(t81)の最上段のCTB列は、グループ2(s83)に含まれることになる。そのため、ディスプレイがラスタスキャン順に表示される場合、少なくとも、グループ0(s81)はグループ2(s83)が復号されたのちにしか表示することは出来ない。
グループ2(s83)が復号されたのち表示する場合、まず、瞬時復号であることを仮定し、グループkの引き抜きタイミングをd(k)とすれば、グループ0(s81)の出力時刻ogt(0)は次式のように表される。
また、復号に1ピクチャ時間sかかり、ピクチャ内のグループの数をNとする場合、グループの復号に必要な時間は、s/Nとなる。つまり、瞬時復号時の復号時刻dgtを利用すると、グループ2の復号が完了する時刻dgt'(2)とグループ0(s81)の表示時刻ogt(0)は次式のように表される。
ここで、動画像符号化装置100は、前復号ピクチャの復号時刻より、グループの出力時刻を減算した出力遅延時間を復号装置に通知することで、復号装置側において、表示時刻を保証することが出来る。
また、非特許文献1で開示されるHEVCにおけるデブロッキングフィルタのような、ポストフィルタにおいても、当該グループを表示するために、当該グループに後に復号されるグループの復号を待たなければならない場合が存在する。その様な場合でも、後に復号されるグループの復号時刻を考慮し、適切に表示遅延を設定してやることで、1ピクチャ時間未満の表示遅延を達成することが可能である。
≪出力ストリーム≫
動画像符号化装置100は、動画像復号装置と、各ブロックが属するグループ、グループ復号遅延、及びグループ出力遅延を共有するために、少なくとも、各グループに属するブロックを表すグループ情報、グループ復号遅延情報、及びグループ出力遅延情報を出力データストリームに付加して、動画像復号装置へ通知する。出力データストリームは、単に出力ストリームとも呼ぶ。
そこで、グループ復号遅延情報付加部143は、例えば、グループ復号遅延を、各ピクチャもしくは所定のピクチャ間隔で、出力データストリームのヘッダ情報に付加する。
また、グループ出力遅延情報付加部153は、例えばグループ出力遅延を、各ピクチャもしくは所定のピクチャ間隔で、出力データストリームのヘッダ情報に付加する。
また、グループ情報付加部132は、例えばグループ情報を、各ピクチャもしくは所定のピクチャ間隔で、出力データストリームのヘッダ情報に付加する。
ヘッダ情報は、例えば、MPEG−2に規定される、シーケンスヘッダー(Sequence Header)、またはH.264に規定されるシーケンスパラメータセット(Sequence Parameter Set)若しくはSupplemental Enhancement Informationとすることができる。なお、グループごとの復号時刻は、MPEG−2に規定されるピクチャヘッダー(Picture Header)、またはH.264に規定されるスライスヘッダー(Slice Header)など、各ピクチャに必ず付随されるヘッダ情報に付加されてもよい。
各グループに含まれるブロックの数が等しくなるようにグループが決定されている場合、動画像符号化装置100は動画像復号装置へ全ブロックがN個のグループに等分割されたことを通知する。そのために、グループ構成決定部131から、グループ情報付加部132に、グループ情報としてグループ数Nが通知される。
グループ情報付加部132は、そのグループ情報を符号化する。MPEG−2及びH.264では、マクロブロックと呼ばれる16x16画素のブロック単位で符号化が行われており、このブロック数は通常20bitで表現可能な範囲を超えない。グループの数Nの最大値は、せいぜいブロック数の最大値と等しいことから、Nの符号化も固定bit長で符号化すればよい。
また、各グループに含まれるブロックの数が等しいと限らない場合、グループ構成決定部131からグループ情報付加部132に対して、グループ数Nとともに、各グループの先頭ブロックのインデックス情報がグループ情報として通知される。
グループ情報付加部132は、まず、グループ数Nを符号化し、順次各グループの先頭ブロックのインデックス情報を符号化する。先頭ブロックのインデックス情報に対する符号化方法も、例えば、固定bit長の符号化方式が用いられる。また、グループ情報付加部132は、グループ数N及び各グループの先頭ブロックのインデックス情報を符号化するために、ハフマン符号といった可変長符号化方式など、他の符号化方式を用いてもよい。
<動作>
次に、実施例1における動画像符号化装置100の動作について説明する。図12は、実施例1における動画像符号化処理の一例を示すフローチャートである。
ステップS100で、シーケンスの符号化動作開始に当たり、まずグループ復号遅延Δtが決定される。Δtは、シーケンス内にて内包するブロック数が最小となるグループの時間より小さくなるように決定される。
ステップS101で、グループ復号遅延情報付加部143は、グループ情報、グループ復号時刻遅延情報をデータストリームに付加する。
ステップS102で、グループ構成決定部131は、各ピクチャの符号化開始に当たり、まずピクチャ内のグループを決定する。シーケンス内の各ピクチャにおけるグループ数及び各グループが内包するブロック数はピクチャ毎に決定することが可能である。またはシーケンス内の全ピクチャで同じグループ数とし、また各グループが内包するブロック数を均等にしても良い。
ステップS103で、グループ復号遅延決定部142は、グループ毎にグループ復号遅延を算出する(ステップS103)。
ステップS104で、バッファ占有量算出部122は、各グループの復号開始に当たり、理想復号装置の受信バッファのバッファ状態、及び次に符号化するグループの発生情報量上限を推定する。
ステップS105で、量子化値算出部121は、受信バッファのバッファ状態、及び次に符号化するグループの発生情報量上限を元に、グループの復号開始最早時刻までにグループの全データが受信バッファに到着するように、ブロックの量子化値を計算する。
ステップS106で、符号化処理部110は、計算した量子化値を用いてブロックの符号化を行う。
次に、実施例1における動画像符号化装置100の出力処理について説明する。図13は、実施例1における出力処理の一例を示すフローチャートである。
ステップS200で、出力時刻決定部150は、グループ情報をデータストリームから抽出する。
ステップS201で、グループ出力遅延決定部152は、グループ出力遅延情報を決定する。グループ出力遅延時刻は、上述したようにして決定することができる。
ステップS202で、グループ出力遅延情報付加部153は、グループ出力遅延情報をデータストリームに付加する。
以上、実施例1によれば、1ピクチャ時間未満のコーデック遅延を実現する際、グループの復号又は出力を早めることで、さらなる低遅延化を実現することができる。
[実施例2]
次に、実施例2における動画像復号装置について説明する。実施例2では、実施例1における動画像符号化装置100で符号化されたストリームを適切に復号する。
<構成>
図14は、実施例2における動画像復号装置200の概略構成の一例を示すブロック図である。動画像復号装置200は、受信バッファ205と、ブロック復号部210と、フレームメモリ211と、グループ出力部212と、復号時刻算出部220と、出力時刻算出部230と、グループ情報抽出部240とを有する。
グループ情報抽出部240は、入力したストリーム(入力ストリームとも呼ぶ)から、各ブロックを所定の間隔で分割したグループを示すグループ情報を抽出する。
復号時刻算出部220は、グループ復号遅延情報抽出部221と、グループ復号時刻算出部222とを有する。
出力時刻算出部230は、グループ出力遅延情報抽出部231と、グループ出力時刻算出部232とを有する。
動画像復号装置200が有するこれらの各部は、それぞれ、別個の回路として動画像復号装置200に実装される。あるいは、動画像復号装置200が有するこれらの各部は、その各部の機能を実現する回路が集積された一つの集積回路として動画像復号装置200に実装されてもよい。あるいはまた、動画像復号装置200が有するこれらの各部は、動画像復号装置200が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールであってもよい。
受信バッファ205は、動画像符号化装置100により送信されたストリームを受信し、バッファリングする。
ブロック復号部210は、グループ復号時刻算出部222から出力されるグループの復号開始時刻に、受信バッファ205からデータを取得し、先頭ブロックから順に復号処理を行い、復号したブロックを順次出力する。復号開始時刻は、単に復号時刻とも呼ぶ。
フレームメモリ211は、ブロック復号部210から出力される復号ブロックを保存する。フレームメモリ211は、例えば出力対象グループが出力される前にバッファリングされる復号バッファとしても機能する。また、復号バッファは、フレームメモリ211とは異なる構成であってもよい。
グループ出力部212は、グループ出力時刻算出部232から出力されるグループ出力時刻に、該当グループの出力を行う。
グループ復号遅延情報抽出部221は、符号化データである入力ストリームから、グループ復号遅延情報を抽出する。
グループ復号時刻算出部222は、グループ情報抽出部240から出力されるグループ情報と、グループ復号遅延情報抽出部221から出力されるグループ復号遅延情報から各グループの復号開始時刻を算出する。
グループ復号時刻算出部222は、例えばi番目のピクチャP(i)の先頭ブロックの復号開始時刻dtb(i)を、以下の式で計算する。
グループ出力遅延情報抽出部231は、符号化データである入力ストリームから、グループ出力遅延情報を抽出する。
グループ出力時刻算出部232は、グループ情報抽出部240から出力されるグループ情報と、グループ復号遅延情報抽出部221から出力されるグループ出力遅延情報から各グループの出力時刻を算出する。
動画像復号装置200は、通知されたグループ数N、グループの復号遅延情報に基づき、各復号グループの復号開始時刻を算出する。また、通知されたグループ数N、グループの出力遅延情報に基づき、各復号グループの出力時刻を算出する。
<動作>
次に、実施例2における動画像復号装置200の動作について説明する。図15は、実施例2における動画像復号処理の一例を示すフローチャートである。図15に示すステップS300で、グループ情報抽出部240は、各ピクチャの復号開始に当たり、まず、グループ情報をデータストリームから抽出する。
ステップS301で、グループ復号遅延情報抽出部221は、グループ復号遅延情報をデータストリームから抽出する。
ステップS302で、グループ復号時刻算出部222は、先頭グループの復号開始時刻を算出する。
シーケンス内の各ピクチャにおける復号グループ数及び各復号グループが内包するブロック数はピクチャ毎に決定することが可能である。またはシーケンス内の全ピクチャで同じ復号グループ数とし、また各復号グループが内包するブロック数を均等にしても良い。更に、復号グループは、ブロック復号時刻情報に記述されているグループと同じとしても良い。
ステップS303で、ブロック復号部210は、グループ復号ループ内で、グループの復号時刻まで待つ。
ステップS304で、ブロック復号部210は、受信バッファ205からデータを取得し、各ブロックを復号する。
ステップS305で、グループ復号時刻算出部222は、次のグループの復号開始時刻を計算する。
ステップS306で、ブロック復号部210は、復号された復号ブロックをフレームメモリに出力する。
次に、実施例2における動画像復号装置200の出力処理について説明する。図16は、実施例2における出力処理の一例を示すフローチャートである。
ステップS400で、グループ復号遅延情報抽出部221は、各ピクチャの復号開始に当たり、まずグループ出力遅延情報をデータストリームから抽出する。
ステップS401で、グループ復号時刻算出部222は、次に、グループ出力遅延情報から、P(i)の先頭グループの出力開始時刻を算出する。
ステップS402で、グループ出力時刻算出部232は、グループの出力開始時間を算出
ステップS403で、ブロック復号部210は、グループの出力開始時刻に従い、グループに属する復号ブロックを算出する。
以上、実施例2によれば、実施例1における動画像符号化装置100で符号化されたストリームを適切に復号することができる。
[実施例3]
次に、実施例3における動画像符号化装置について説明する、実施例3では、グループ単位でアンダーフローが発生する場合に、どのような処理を行うか規定する。
<構成>
図17は、実施例3による動画像符号化装置300の概略構成の一例を示すブロック図である。動画像符号化装置301は、符号化処理部310と、符号量制御部320と、グループ決定部330と、復号時刻決定部340と、出力時刻決定部350とを有する。
符号化処理部310、グループ決定部330、復号時刻決定部340、出力時刻決定部350は、図7に示す符号化処理部110、グループ決定部130、復号時刻決定部140、出力時刻決定部150と同様の処理を行う。
符号量制御部320は、量子化値算出部321と、バッファ占有量算出部322と、ビットカウンタ323と、フィラー付加部324とを有する。
符号量制御部320は、グループに含まれる全てのブロックの復号に必要なデータが、所定の伝送レートで復号装置に伝送された場合に、決定された復号時刻により表される時刻までに復号装置の受信バッファに到達するように符号量を制御する。
量子化値算出部321、ビットカウンタ323は、図7に示す量子化値算出部121、ビットカウンタ123と同様の処理を行う。
バッファ占有量算出部322は、図7に示すバッファ占有量算出部122の動作に加え、グループの発生情報量が目標値を上回り、復号開始時刻までにグループの全データが理想復号装置の受信バッファに到達しない、バッファアンダーフロー状態になるどうかを調べる。
バッファアンダーフロー状態を検出した場合、フィラー付加部324に対し処理ピクチャの最後にダミーデータを入れるように指示すると共に、図示しない全体制御部に対してバッファアンダーフロー状態を通知する。図示しない全体制御部はバッファアンダーフロー状態を通知された場合、次に符号化するピクチャの符号化処理をスキップするように制御する。
フィラー付加部324は、処理ピクチャの最後にダミーデータを挿入する。挿入するダミーデータの量はバッファ占有量算出部322から指示される。
フィラー付加部324は、グループに含まれる全てのブロックの復号に必要なデータが復号時刻までに復号装置の受信バッファに到達しない場合には、出力ストリームにフィラーデータを付加する。また、フィラー付加部324は、フィラーデータを付加することで、グループを含むピクチャ最後のブロックの復号に必要なデータが、復号時刻までに復号装置の受信バッファに到達しないように制御する。
なお、本実施例では、ピクチャ内のグループにおいてアンダーフローが発生した場合に、Filler Dataを挿入する例を示したが、図17の量子化値算出部321で量子化値を制御することにより、該当ピクチャ全体の情報量を増やし、該当ピクチャを故意にアンダーフローさせることも可能である。
具体的には、図18のように、ピクチャが4個のグループから構成されているとする。ここで最初のグループがdgt(0)でアンダーフローを起こした場合、量子化算出部では、ピクチャの発生情報量を制御し、次のピクチャの到着時刻 dt(0)=dgt(3)でピクチャがアンダーフローを起こすように、グループ1乃至3の量子化器を制御する。同様に、第nのグループでアンダーフローを起こした場合には、第(n+1)番目以降のグループの量子化器を適切に制御することで、該当ピクチャがアンダーフローを起こすようにする。
このように、本実施例では、あるピクチャ内のグループのうち一つのグループでもアンダーフローが発生した場合に、該当ピクチャ全体がアンダーフローとなるように、該当ピクチャの発生情報量を制御する。
上記の通り、フィラー付加部324は、情報量制御部としての機能を有し、グループに含まれる全てのブロックの復号に必要なデータが復号時刻までに復号装置の受信バッファに到達しない場合には、次のピクチャの最初のデータが復号時刻までに復号装置の受信バッファに到達しないように制御する。
《アンダーフロー時の処理》
まず、図18を用いて、ピクチャ内のグループにおいて、アンダーフローが起こった場合を考える。図18は、アンダーフローの発生を説明するための図である。図18に示すグラフ90のように、基本的に、グループ単位の復号時刻を定義したときも、符号化装置側はSEIメッセージなどの追加情報で復号装置に送る情報通りにスケジューリングされた復号時刻で復号できるように、符号量の調整を行う。
しかし、図18に示すグラフ91のように、dgt(0)において、最初のグループのアンダーフローが発生した場合、復号に必要なビットがバッファに受信されるまで、復号を行わないことは上記と同様である。
留意すべきは、1ピクチャの表示が保証される必要があり、グループのアンダーフローが発生した場合でも、表示を1ピクチャ遅らせなければならないことである。なぜなら、グループのアンダーフローが発生した場合、1グループの復号に必要なビットがバッファに受信されるまで待つためである。次の復号タイミングは、図18に示すグラフ91に示すdgt'となる。
この場合、その後の復号時刻もその分だけ遅延してしまうため、そのグループの属するピクチャが復号され、表示される時刻dt(0)になっても、全てのグループの復号が完了しなくなるので、1ピクチャ表示を遅らせる。
ここで、グループとしてはアンダーフローを起こしても、ピクチャとしてはアンダーフローを起こしていなかった場合を考える。グループ単位ではアンダーフローを起こしているため、グループ復号を遅らせ、かつ1ピクチャ表示を遅らせ、次のピクチャをスキップしようとする。
しかし、ピクチャ単位ではアンダーフローを起こしていないため、通常の時刻でピクチャ表示を行おうとする、という矛盾した状況が発生する。この場合、グループの復号が遅れているため、通常のピクチャのタイミングでは復号が終わっておらず、適切なピクチャを出力することができない。
さらに、その次のピクチャの表示タイミングでも、その次のピクチャに必要な復号が終わっておらず、適切なピクチャを出力することができない。といったように、ピクチャの表示タイミングに適切なピクチャが復号されなくなる。
そこで、図19に示すように、グループでアンダーフローが起こった場合には、ピクチャとしても、アンダーフローが起こるように該当ピクチャの発生情報量を制御し、1ピクチャ表示を遅らせ、その次に表示されるべきピクチャをスキップさせる。これにより、グループ単位で復号した場合と、ピクチャ単位で復号した場合で同一のピクチャをスキップさせることができるため、グループ単位の復号とピクチャ単位の復号で各ピクチャ間の表示間隔を同一とすることができる。
図19は、アンダーフロー発生時の処理を説明するための図である。例えば、図19に示す例において、dgt(1)でアンダーフローが起こった場合、dt(1)で復号されるべきピクチャの量は符号95で示したように、符号化ストリーム到着レート96よりも小さいにもかかわらず、dt(1)においてアンダーフローが起こったものとする。これにより、1ピクチャ表示を遅らせ、dt(1)で表示されるピクチャをdt(2)で表示し、dt(2)で表示されるべきピクチャをスキップする。
また符号化装置側においても、グループでアンダーフローが起こった場合には、ピクチャの符号化データに該当ピクチャの次のグループ以降での量子化制御やfiller data追加などを行い、該当ピクチャでアンダーフローを故意に起こすことで、グループ単位とピクチャ単位の双方で復号した場合に同一のピクチャをスキップすることが出来るため、両者で各ピクチャ間のスキップまで含めた表示間隔を同一とし、整合性をとることが可能である。
≪アンダーフロー検出、ピクチャ情報量制御≫
実施例3による動画像符号化装置における、アンダーフロー検出方法、及びピクチャの発生情報量制御方法を以下に示す。
まず、符号量制御部320は、実施例1の場合と同様の動作を行うとする。アンダーフローは、バッファ占有量算出部322において検出される。このとき、少なくとも一つのグループで、上記の条件(2)に示される条件が満たされない場合、当該ピクチャに含まれるグループで、アンダーフローが発生したと検出される。
この時、バッファ占有量算出部322は、フィラー付加部324にアンダーフロー発生情報を通知する。フィラー付加部324は、アンダーフロー発生情報を受け取り、アンダーフローが発生したことを確認したとき、ピクチャの表示がスキップされるような処理を行う。
例えば、Filler dataを出力ストリームに付与することで、ピクチャ単位でのアンダーフローを故意に発生させ、ピクチャの表示をスキップさせる。Filler dataの付加方法は、容易に類推できるため、ここでは説明を省略する。
あるいは、バッファ占有量算出部322で、あるピクチャのあるグループでアンダーフローを検出した場合には、該当ピクチャ内の該当グループの次のグループ以降で、該当ピクチャがアンダーフローするよう、量子化値算出部で量子化値を制御してピクチャ全体の発生情報量を制御し、該当ピクチャのアンダーフローを故意に発生させる。
以上の処理を行うことで、ピクチャの表示をスキップさせることで、ピクチャの表示順番がずれることを防ぐことが出来る。
<動作>
次に、実施例3における動画像符号化装置300の動作について説明する。図20は、実施例3における動画像符号化装置の処理の一例を示すフローチャートである。
ステップS500で、バッファ占有量算出部322は、復号装置の受信バッファのバッファ占有量に基づいて、グループ単位にアンダーフローするかどうかを確認する。
ステップS501で、バッファ占有量算出部322は、グループ単位でアンダーフローが発生すると判断したら、ピクチャ単位に見てもアンダーフローするように、ピクチャの発生情報量の制御を行う。その制御の例としては、たとえばフィラー付加部324で出力ストリームにフィラーを負荷する、あるいは、量子化値を制御する、などの方法がある。アンダーフローを起こしたピクチャは、ビッグピクチャとも呼ばれる。
以上、実施例3によれば、グループ単位でアンダーフローが発生する場合にも適切に処理することができる。
[実施例4]
次に、実施例4における動画像復号装置について説明する、実施例4では、実施例3における動画像符号化装置により符号化された符号化データを適切に復号することができる。
<構成>
図21は、実施例4における動画像復号装置400の概略構成の一例を示すブロック図である。動画像復号装置400は、受信バッファ405と、グループ復号遅延情報抽出部421と、グループ出力遅延情報抽出部431と、グループ復号時刻算出部422と、グループ出力時刻算出部と432と、グループ情報抽出部440と、ブロック復号部410と、フレームメモリ411と、グループ出力部412と、表示制御部413とを有する。
動画像復号装置400が有するこれらの各部は、それぞれ、別個の回路として動画像復号装置400に実装される。あるいは、動画像復号装置400が有するこれらの各部は、その各部の機能を実現する回路が集積された一つの集積回路として動画像復号装置400に実装されてもよい。あるいはまた、動画像復号装置400が有するこれらの各部は、動画像復号装置400が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールであってもよい。
≪アンダーフロー検出、ストリーム編集≫
実施例4による動画像復号装置400における、アンダーフロー検出方法、及びビットストリーム編集方法を説明する。
まず、ブロック復号部410は、実施例1の場合と同様の動作を行うとする。アンダーフローは、ブロック復号部410において検出される。ブロック復号部410は、図示しないエントロピー復号部からのビット量情報を受け取る。
このとき、少なくとも一つのグループで、上記の条件(2)に示される条件が満たされない場合、当該ピクチャに含まれるグループで、アンダーフローが発生したと検出される。例えば、図18に示すグラフ91においては、dgt(1)でアンダーフローが発生していることを示している。
この時、ブロック復号部410は、表示制御部413にアンダーフロー発生情報を通知する。表示制御部413は、アンダーフロー発生情報を受け取ったことでアンダーフローが発生したことを確認し、ピクチャの表示をスキップする処理を行う。
つまり、復号時刻がdt(k)である当該ピクチャのグループdgt(l)においてアンダーフローが発生した場合、dt(k)にピクチャとしては復号可能なビット量がバッファに蓄えられていても、dt(k)はdt(k+1)に表示される。また、本来dt(k+1)に表示されるはずだったピクチャは、スキップされる。
例えば、図19に示す例では、dt(1)に表示されるはずだったピクチャはdt(2)に表示され、dt(2)に表示されるはずだったピクチャはスキップされる。なお、この例では復号は瞬時だとし、さらに出力(表示)は復号と同時に行うことが出来るとしている。
これにより、ピクチャの表示をスキップさせることで、ピクチャの表示順番がずれることを防ぐことが出来る。
<動作>
次に、実施例4における動画像復号装置400の動作について説明する。図22は、実施例4における動画像復号装置400の処理の一例を示すフローチャートである。
ステップS600で、ブロック復号部410は、受信バッファ405のバッファ占有量に基づいて、グループ単位にアンダーフローするかどうかを確認する。
ステップS601で、ブロック復号部410は、グループ単位でアンダーフローが発生していると判断したら、表示制御部413にアンダーフロー発生情報を通知する。表示制御部413は、アンダーフロー発生情報が通知されると、表示ピクチャのタイミングが正しくなるように修正する。
以上、実施例4によれば、実施例3における動画像符号化装置300により符号化された符号化データを適切に復号することができる。
[実施例5]
図23は、動画像処理装置500の概略構成の一例を示すブロック図である。動画像処理装置500は、各実施例で説明した動画像符号化装置、又は動画像復号装置の一例である。図23に示すように、動画像処理装置500は、制御部501、主記憶部502、補助記憶部503、ドライブ装置504、ネットワークI/F部506、入力部507、表示部508を含む。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
制御部501は、コンピュータの中で、各装置の制御やデータの演算、加工を行うCPUである。また、制御部501は、主記憶部502や補助記憶部503に記憶されたプログラムを実行する演算装置であり、入力部507や記憶装置からデータを受け取り、演算、加工した上で、表示部508や記憶装置などに出力する。
主記憶部502は、ROM(Read Only Memory)やRAM(Random Access Memory)などであり、制御部501が実行する基本ソフトウェアであるOSやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
補助記憶部503は、HDD(Hard Disk Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
ドライブ装置504は、記録媒体505、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
また、記録媒体505は、所定のプログラムを格納する。この記録媒体505に格納されたプログラムは、ドライブ装置504を介して動画像処理装置500にインストールされる。インストールされた所定のプログラムは、動画像処理装置500により実行可能となる。
ネットワークI/F部506は、有線及び/又は無線回線などのデータ伝送路により構築されたLAN(Local Area Network)、WAN(Wide Area Network)などのネットワークを介して接続された通信機能を有する周辺機器と動画像処理装置500とのインターフェースである。
入力部507は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部508の表示画面上でキーの選択等を行うためのマウスやスライドパッド等を有する。また、入力部507は、ユーザが制御部501に操作指示を与えたり、データを入力したりするためのユーザインターフェースである。
表示部508は、LCD(Liquid Crystal Display)等を有し、制御部501から入力される表示データに応じた表示が行われる。なお、表示部508は、外部に設けられてもよく、その場合は、動画像処理装置500は、表示制御部を有する。
このように、前述した各実施例で説明した動画像符号化処理又は動画像復号装置は、コンピュータに実行させるためのプログラムとして実現されてもよい。このプログラムをサーバ等からインストールしてコンピュータに実行させることで、前述した動画像符号化処理又は動画像復号装置を実現することができる。
また、この動画像符号化プログラム又は動画像復号プログラムを記録媒体505に記録し、このプログラムが記録された記録媒体505をコンピュータや携帯端末に読み取らせて、前述した処理を実現させることも可能である。
なお、記録媒体505は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。なお、記録媒体505には、搬送波は含まれない。
動画像処理装置500で実行されるプログラムは、各実施例で説明した各部を含むモジュール構成となっている。実際のハードウェアとしては、制御部501が補助記憶部503からプログラムを読み出して実行することにより上記各部のうち1又は複数の各部が主記憶部502上にロードされ、1又は複数の各部が主記憶部502上に生成されるようになっている。
また、前述した各実施例で説明した動画像符号化処理は、1つ又は複数の集積回路に実装してもよい。
上述した各実施例による動画像符号化装置は、様々な用途に利用される。例えば、この動画像符号化装置又は動画像復号装置は、ビデオカメラ、映像送信装置、映像受信装置、テレビ電話システム、コンピュータあるいは携帯電話機に組み込まれる。
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
なお、以上の各実施例に関し、さらに以下の付記を開示する。
(付記1)
動画像データに含まれる各ピクチャを複数のブロックに分割して符号化する動画像符号化装置であって、
複数のブロックに対し、各ブロックの属するグループを決定するグループ構成決定部と、
前記各ブロックの属するグループ情報を出力ストリームに付加するグループ情報付加部と、
前記グループ毎に復号時刻を算出し出力ストリームに付加する復号時刻決定部と、
グループに含まれる全てのブロックの復号に必要なデータが、所定の伝送レートで復号装置に伝送された場合に、前記復号時刻決定部より算出された復号時刻により表される時刻までに復号装置の受信バッファに到達するように符号量を制御する符号量制御部と、
前記符号量制御部の制御情報に基づいて符号化を行う符号化処理部と、
グループに含まれる全てのブロックの復号に必要なデータが前記復号時刻までに復号装置の受信バッファに到達しない場合には、当該グループを含むピクチャ最後のブロックの復号に必要なデータが前記ピクチャの復号時刻までに復号装置の受信バッファに到達しないように制御する情報量制御部と、
を備える動画像符号化装置。
(付記2)
動画像データに含まれる各ピクチャを複数のブロックに分割して符号化する動画像符号化方法であって、
複数のブロックに対し、各ブロックの属するグループを決定し、
前記各ブロックの属するグループ情報を出力ストリームに付加し、
前記グループ毎に復号時刻を算出し出力ストリームに付加し、
グループに含まれる全てのブロックの復号に必要なデータが、所定の伝送レートで復号装置に伝送された場合に、前記復号時刻により表される時刻までに復号装置の受信バッファに到達するように符号量を制御し、
前記制御された符号量に基づいて符号化を行い、
グループに含まれる全てのブロックの復号に必要なデータが前記復号時刻までに復号装置の受信バッファに到達しない場合には、当該グループを含むピクチャ最後のブロックの復号に必要なデータが前記ピクチャの復号時刻までに復号装置の受信バッファに到達しないように情報量を制御する処理を
コンピュータが実行する動画像符号化方法。