(57)【特許請求の範囲】
【請求項１】
単位画像毎に入力される外部入力信号を複数のマクロブロックに分割し、当該マクロブロック単位で当該外部入力信号を符号化し、当該符号化により生成された一以上の前記マクロブロックの符号から構成されるビデオパケットを出力する符号化装置であって、
前記マクロブロック単位で前記外部入力信号をインター符号化、又はイントラ符号化し、当該インター符号化、又はイントラ符号化により生成される符号を出力する符号化手段と、
前記単位画像における符号化がインター符号化の場合、又はイントラ符号化の場合、それぞれの符号化タイプの場合に対応する固定符号を出力する固定符号出力手段と、
前記符号化手段から出力される前記符号、又は前記固定符号手段から出力される前記固定符号を蓄積する蓄積手段と、
前記符号化手段から出力される前記符号、又は前記固定符号化出力手段から出力される前記固定符号のいずれか一方を選択して前記蓄積手段に蓄積させる符号の符号量を制御する符号量制御手段と
を備え、
前記符号量制御手段は、現マクロブロックの符号の符号量ｍｂ＿ｂｉｔ、前記単位画像の先頭のマクロブロックから現マクロブロックの一つ前のマクロブロックまでの符号の符号量Ｓｃ、前記蓄積手段がオーバーフローしないように、又はＶＢＶバッファがアンダーフローしないように設定される最大符号量Ｔｍａｘ、前記単位画像において現マクロブロックに続いて処理されるべきマクロブロック数Ｍ、前記符号化タイプにより決まる、各マクロブロックに対して前記固定符号出力手段が出力する前記固定符号の符号長Ｌ、前記単位画像において前記現マクロブロック以降で発生する前記ビデオパケット単位の付加的な符号の総符号量αの間の関係が、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
（ただし、α≧０）
である場合に、前記固定符号出力手段が出力する前記固定符号を選択するよう制御すること
を特徴とする符号化装置。
【請求項２】
符号量制御手段は、
現マクロブロックの一つ前のマクロブロックにおいて、
固定符号出力手段から出力される固定符号が選択されている場合は、現マクロブロックにおいても前記固定符号出力手段から出力される前記固定符号を選択し、
前記固定符号出力手段から出力される前記固定符号が選択されていない場合は、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
なる関係の判定を行うよう制御すること
を特徴とする請求項１に記載の符号化装置。
【請求項３】
符号量制御手段は、
現マクロブロックにおいて固定符号出力手段から出力される固定符号が選択されている場合、単位画像において前記現マクロブロックに続いて処理されるべきＭ個のマクロブロックに対しても、前記固定符号出力手段から出力される前記固定符号を選択するよう制御すること
を特徴とする請求項１又は２に記載の符号化装置。
【請求項４】
固定符号出力手段から出力される固定符号は、
それぞれの符号化タイプにおいて、マクロブロックの符号の符号量として最小となる符号であること
を特徴とする請求項１から３のいずれか１項に記載の符号化装置。
【請求項５】
符号量制御手段は、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
なる関係がなりたち、かつ、単位画像における符号化タイプがイントラ符号化であり、かつ、現マクロブロックの一つ前のマクロブロックにおいて符号化手段から出力される符号を選択している場合に、当該現マクロブロックから新しいビデオパケットを構成するよう制御すること
を特徴とする請求項１から４のいずれか１項に記載の符号化装置。
【請求項６】
符号量制御手段は、蓄積手段がオーバーフローしないように、以下の式を満たす最大符号量Ｔｍａｘを設定すること
を特徴とする請求項１から５のいずれか１項に記載の符号化装置。
Ｔｍａｘ≦Ｂｓ−Ｂ
ただし、Ｔｍａｘは最大符号量、Ｂｓは前記蓄積手段の容量、及びＢは前記蓄積手段における占有量である。
【請求項７】
符号量制御手段は、ＶＢＶバッファがアンダーフローしないように、以下の式を満たす最大符号量Ｔｍａｘを設定すること
を特徴とする請求項１から５のいずれか１項に記載の符号化装置。
Ｔｍａｘ≦ｖｂｖ＿ｂｉｔｓ＋Ｒｐ
ここに、Ｒｐ＝Ｒ／Ｆ
ただし、Ｔｍａｘは最大符号量、Ｒｐは単位画像における蓄積手段から読み出されるビット数、Ｒは前記蓄積手段から読み出されるビットレート、Ｆは単位画像における符号化のレート、ｖｂｖ＿ｂｉｔｓは直前の単位画像における前記ＶＢＶバッファの占有量である。
【請求項８】
符号量制御手段は、蓄積手段がオーバーフローしないように、かつ、ＶＢＶバッファがアンダーフローしないように、以下の式を満たす最大符号量Ｔｍａｘを設定すること
を特徴とする請求項１から５のいずれか１項に記載の符号化装置。
Ｔｍａｘ≦ｍｉｎ（ｖｂｖ＿ｂｉｔｓ＋Ｒｐ，Ｂｓ−Ｂ）
ここに、Ｒｐ＝Ｒ／Ｆ
ただし、Ｔｍａｘは最大符号量、Ｒｐは単位画像における前記蓄積手段から読み出されるビット数、Ｒは前記蓄積手段から読み出されるビットレート、Ｆは単位画像における符号化のレート、ｖｂｖ＿ｂｉｔｓは直前の単位画像における前記ＶＢＶバッファの占有量、Ｂｓは前記蓄積手段の容量、及びＢは前記蓄積手段における占有量であり、ｍｉｎ（ａ，ｂ）は、ａまたはｂのいずれか小さい方をその値とすることを示す。
【請求項９】
蓄積手段から読み出されるビットレートＲが可変であること
を特徴とする請求項７又は８に記載の符号化装置。
【請求項１０】
単位画像毎に入力される外部入力信号を複数のマクロブロックに分割し、当該マクロブロック単位で当該外部入力信号を符号化し、当該符号化により生成された一以上の前記マクロブロックの符号から構成されるビデオパケットを出力する符号化方法であって、
前記マクロブロック単位で前記外部入力信号をインター符号化、又はイントラ符号化し、当該インター符号化、又はイントラ符号化により生成される符号を出力する符号化ステップと、
前記単位画像における符号化がインター符号化の場合、又はイントラ符号化の場合、それぞれの符号化タイプの場合に対応する固定符号を出力する固定符号出力ステップと、
前記符号化ステップから出力される前記符号、又は前記固定符号ステップから出力される前記固定符号を蓄積する蓄積ステップと、
前記符号化ステップから出力される前記符号、又は前記固定符号化出力ステップから出力される前記固定符号のいずれか一方を選択して前記蓄積ステップにおいて蓄積させることにより、当該蓄積される符号から構成され、前記蓄積ステップから出力されるビデオパケットの符号量を制御する符号量制御ステップと
を備え、
前記符号量制御ステップは、現マクロブロックの符号の符号量ｍｂ＿ｂｉｔ、前記単位画像の先頭のマクロブロックから現マクロブロックの一つ前のマクロブロックまでの符号の符号量Ｓｃ、前記蓄積ステップにおいてオーバーフローが発生しないように、又はＶＢＶバッファがアンダーフローしないように設定される最大符号量Ｔｍａｘ、前記単位画像を構成する現マクロブロックに続いて処理されるべきマクロブロック数Ｍ、前期符号化タイプにより決まる、各マクロブロックに対して前記固定符号出力ステップが出力する前記固定符号の符号長Ｌ、前記単位画像において前記現マクロブロック以降で発生する前記ビデオパケット単位の付加的な符号の総符号量αの間の関係が、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
（ただし、α≧０）
である場合に、前記固定符号出力ステップが出力する前記固定符号を選択するよう制御すること
を特徴とする符号化方法。
【請求項１１】
符号量制御ステップは、
現マクロブロックの一つ前のマクロブロックにおいて、
固定符号出力ステップから出力される固定符号が選択されている場合は、現マクロブロックにおいても前記固定符号出力ステップから出力される前記固定符号を選択し、
前記固定符号出力ステップから出力される前記固定符号が選択されていない場合は、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
なる関係の判定を行うよう制御すること
を特徴とする請求項１０に記載の符号化方法。
【請求項１２】
符号量制御ステップは、
現マクロブロックにおいて固定符号出力ステップから出力される固定符号が選択されている場合、単位画像において前記現マクロブロックに続いて処理されるべきＭ個のマクロブロックに対しても、前記固定符号出力ステップから出力される前記固定符号を選択するよう制御すること
を特徴とする請求項１０又は１１に記載の符号化方法。
【請求項１３】
固定符号出力ステップから出力される固定符号は、
それぞれの符号化タイプにおいて、マクロブロックの符号の符号量として最小となる符号であること
を特徴とする請求項１０から１２のいずれか１項に記載の符号化方法。
【請求項１４】
符号量制御ステップは、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
なる関係がなりたち、かつ、単位画像における符号化タイプがイントラ符号化であり、かつ、現マクロブロックの一つ前のマクロブロックにおいて符号化ステップから出力される符号を選択している場合に、当該現マクロブロックから新しいビデオパケットを構成するよう制御すること
を特徴とする請求項１０から１３のいずれか１項に記載の符号化方法。
【請求項１５】
符号量制御ステップは、蓄積ステップにおいてオーバーフローが発生しないように、以下の式を満たす最大符号量Ｔｍａｘを設定すること
を特徴とする請求項１０から１４のいずれか１項に記載の符号化方法。
Ｔｍａｘ≦Ｂｓ−Ｂ
ただし、Ｔｍａｘは最大符号量、Ｂｓは前記蓄積ステップの容量、及びＢは前記蓄積ステップにおける占有量である。
【請求項１６】
符号量制御ステップは、ＶＢＶバッファがアンダーフローしないように、以下の式を満たす最大符号量Ｔｍａｘを設定すること
を特徴とする請求項１０から１４のいずれか１項に記載の符号化方法。
Ｔｍａｘ≦ｖｂｖ＿ｂｉｔｓ＋Ｒｐ
ここに、Ｒｐ＝Ｒ／Ｆ
ただし、Ｔｍａｘは最大符号量、Ｒｐは単位画像における蓄積ステップから読み出されるビット数、Ｒは前記蓄積ステップから読み出されるビットレート、Ｆは単位画像における符号化のレート、ｖｂｖ＿ｂｉｔｓは直前の単位画像における前記ＶＢＶバッファの占有量である。
【請求項１７】
符号量制御ステップは、蓄積ステップにおいてオーバーフローが発生しないように、かつ、ＶＢＶバッファがアンダーフローないように、以下の式を満たす最小符号量Ｔｍｉｎを設定すること
以下の式を満たすように最大符号量Ｔｍａｘを設定すること
を特徴とする請求項１０から１４のいずれか１項に記載の符号化方法。
Ｔｍａｘ≦ｍｉｎ（ｖｂｖ＿ｂｉｔｓ＋Ｒｐ，Ｂｓ−Ｂ）
ここに、Ｒｐ＝Ｒ／Ｆ
ただし、Ｔｍａｘは最大符号量、Ｒｐは単位画像における前記蓄積ステップから読み出されるビット数、Ｒは前記蓄積ステップから読み出されるビットレート、Ｆは単位画像における符号化のレート、ｖｂｖ＿ｂｉｔｓは直前の単位画像における前記ＶＢＶバッファの占有量、Ｂｓは前記蓄積手段の容量、及びＢは前記蓄積手段における占有量であり、ｍｉｎ（ａ，ｂ）は、ａまたはｂのいずれか小さい方をその値とすることを示す。
【請求項１８】
蓄積ステップから読み出されるビットレートＲが可変であること
を特徴とする請求項１６又は１７に記載の符号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、リアルタイムで映像信号を符号化する、例えば携帯電話やＴＶ電話システム等に関わる符号化装置および符号化方法に関するものである。
【０００２】
【従来の技術】
図１５は、例えば「ＭＰＥＧ−４のすべて」（工業調査会）ｐ．３９〜ｐ．４０に示された従来の符号化装置のブロック図であり、図１６は、この従来の符号化装置の入力信号を示した説明図、図１７はビットストリームの構成を示した説明図、図１８はビデオパケットの画面（表示された状態）上の位置（配置）を示した説明図である。
【０００３】
図１５において、１は外部から入力される外部入力信号（図中の例では、輝度信号、色差信号）を第一の入力とする減算器であり、減算器１の出力はＤＣＴ（離散コサイン変換。Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）手段２、量子化器３を通して、直流（ＤＣ）成分、交流（ＡＣ）成分の量子化値を予測するためのＤＣ／ＡＣ予測器４と逆量子化器６に入力される。ＤＣ／ＡＣ予測器４の出力は可変長符号化手段５の第一の入力に与えられ、可変長符号化手段５はビットストリームを出力する。
【０００４】
一方、量子化器３の出力が入力される逆量子化器６の出力は、逆ＤＣＴ手段７を通して、加算器８の第一の入力に与えられる。加算器８の出力はメモリ９に与えられ、メモリ９の出力は予測画像作成手段１０の第一の入力と動き検出手段１１の第一の入力に与えられる。
【０００５】
動き検出手段１１の第二の入力には外部入力信号が与えられ、動き検出手段１１の出力は予測画像作成手段１０の第二の入力と動きベクトル予測器１２に与えられる。
【０００６】
動きベクトル予測器１２の出力は可変長符号化手段５の第二の入力に与えられる。また、予測画像作成手段１０の出力は減算器１の第二の入力と加算器８の第二の入力に与えられる。
【０００７】
次に動作について説明する。まず、映像信号は図１６に示すように基本処理単位であるマクロブロックに分割され、外部入力信号として入力される（ここにおける外部入力信号は基本的にマクロブロックとして入力されるのであり、直接にマクロブロックが入力されても、前段にマクロブロック生成のための手段が備えられてマクロブロックへの変換がなされるように構成されていてもよい）。
【０００８】
入力される映像信号が４：２：０の場合、輝度信号（Ｙ）の１６画素×１６ラインが、２つの色差信号（Ｃｂ、Ｃｒ）の８画素×８ラインと画面上で同じ大きさとなる。従って、８画素×８ラインのブロックが６つ（輝度信号に対するブロックが４、色差信号に対するブロックが２の合わせて６のブロック）で、１つのマクロブロックが構成される。
【０００９】
なお、ここでは、外部入力として入力されるＶｉｄｅｏ  Ｏｂｊｅｃｔ  Ｐｌａｎｅ（ＶＯＰ。単位画像。）は矩形形状で、フレームと同一であることを前提とする。
【００１０】
各ブロックは離散コサイン変換（ＤＣＴ）を施してから量子化手段３において量子化する。量子化されたＤＣＴ係数はＤＣ／ＡＣ予測器４においてＤＣ、ＡＣ各成分の係数の予測を行った後、量子化パラメータなどの付加情報とともに可変長符号化する。
【００１１】
これがイントラ符号化（フレーム内符号化と称する場合もある）である。すべてのマクロブロックに対してイントラ符号化を適用するＶＯＰをＩ−ＶＯＰ（Ｉｎｔｒａ−ＶＯＰ）と呼ぶ。
【００１２】
一方、量子化されたＤＣＴ係数は、逆量子化手段６において逆量子化、逆ＤＣＴ手段７において逆ＤＣＴを行って復号され、復号画像はメモリ９に記憶される。このメモリ９に記憶された復号画像はインター符号化（フレーム間符号化と称する場合もある）を行うときに使用される。
【００１３】
インター符号化の場合は、動き検出手段１１において、外部入力信号として入力されたマクロブロックの動きを示す動きベクトルを検出する。この動きベクトルとは、メモリ９に記憶された復号画像の中で、入力されたマクロブロックとの誤差が最も小さくなるような位置を示すものである。
【００１４】
予測画像作成手段１０は動き検出手段１１において検出された動きベクトルに基づいて、予測画像を作成する。
【００１５】
続いて、入力されたマクロブロックと予測画像作成手段１０において作成された予測画像との差分信号を求め、その差分信号に対してＤＣＴ手段２においてＤＣＴを施し、量子化手段３において量子化を行う。
【００１６】
量子化されたＤＣＴ係数は、予測符号化された動きベクトルおよび量子化パラメータなどの付加情報とともに可変長符号化される。また、量子化されたＤＣＴ係数は、逆量子化手段６において逆量子化、逆ＤＣＴ手段７において逆ＤＣＴを行った後、加算器８によって予測画像と加算されて、メモリ９に記憶される。
【００１７】
インター符号化には、画像の表示順で時間的に前にあるＶＯＰだけから予測する片方向予測と、時間的に前のＶＯＰと後ろのＶＯＰの両方から予測する両方向予測とがある。片方向予測で符号化するＶＯＰをＰ−ＶＯＰ（Ｐｒｅｄｉｃｔｉｖｅ  ＶＯＰ）と呼び、両方向予測で符号化されたＶＯＰをＢ−ＶＯＰ（Ｂｉｄｉｒｅｃｔｉｏｎａｌｌｙ  Ｐｒｅｄｉｃｔｉｖｅ  ＶＯＰ）と呼ぶ。
【００１８】
次に、図１７を参照しながら可変長符号化手段５から出力されるビットストリームの構成について説明する。１ＶＯＰのビットストリームは図１７（ａ）のように、一つ以上のビデオパケットから構成される。
【００１９】
ここで、１つのビデオパケットは１つ以上のマクロブロックの符号化データから成り立っており、ＶＯＰの最初のビデオパケットについては、先頭にＶＯＰヘッダが付され、最後にはバイトアラインのためのスタッフビットが付される（図１７（ｂ））。
【００２０】
２つ目以降のビデオパケットの場合は、先頭にビデオパケットの先頭を検出するためのＲｅｓｙｎｃ  Ｍａｒｋｅｒとビデオパケットヘッダが付され、最後にはスタッフビットが付される（図１７（ｃ））。
【００２１】
ここにおけるスタッフビットとは、ビデオパケットの最後につけるバイトアラインの調整のために、１〜８ビット単位でビデオパケットの終端（切れ目）まで付加されるものであり、以下に述べるスタッフィングとその意味が区別される。
【００２２】
また、図１７（ｄ）のようにビデオパケットの中に任意の数のスタッフィングを入れることもできる。例えば、ＭＰＥＧ４  Ｖｉｄｅｏの場合、このスタッフィングはスタッフィング・マクロブロックと呼ばれ、マクロブロックと同じ扱いで任意のビデオパケットにいれることができる。このスタッフィングは復号装置側において、廃棄される（実質利用されない）。
【００２３】
ここにおけるスタッフィングとは、符号量を増加させるための９ビットや１０ビットというようなワードとして用いられるものであり、バイトアラインメント（例えば、ビデオパケットの終端を調整すること）とは無関係に用いられ、マクロブロックの間に挿入されて用いられるものであり、上述のスタッフビットとその意味が区別される。
【００２４】
１つのビデオパケットに入れることのできるマクロブロックの数は任意であるが、エラー伝播を考慮した場合、一般に各ビデオパケットの符号量がほぼ一定になるように構成するのがよいとされている。このようにビデオパケットの符号量がほぼ一定とされる場合、各ビデオパケットの１ＶＯＰ内において占める面積は図１８のように一定でなくなる。
【００２５】
次に、図１９を参照しながら、ＤＣ／ＡＣ予測器４の動作の詳細を説明する（ここでは、マクロブロックのＹ成分について説明する）。
上述したように、ＤＣ／ＡＣ予測器４は、イントラ符号化の場合に量子化器３から出力される量子化されたＤＣＴ係数のＤＣ成分、ＡＣ成分の係数の予測を行う。インター符号化の場合は、ＤＣ成分、ＡＣ成分の予測を行わず、量子化器３から出力される量子化されたＤＣＴ係数をそのまま可変長符号化手段５へ出力する。なお、この場合、輝度信号Ｙと色差信号Ｃとについて別々にＤＣ／ＡＣ予測を行う。
【００２６】
以下ではイントラ符号化の場合のＤＣ成分、ＡＣ成分の予測について説明する。
現在符号化しているブロックの量子化されたＤＣＴ係数をＦｘ（ｉ，ｊ）（０≦ｉ≦７、０≦ｊ≦７）、このブロックの左隣のブロックの量子化されたＤＣＴ係数をＦａ（ｉ，ｊ）（０≦ｉ≦７、０≦ｊ≦７）、上隣のブロックの量子化されたＤＣＴ係数をＦｃ（ｉ，ｊ）（０≦ｉ≦７、０≦ｊ≦７）、左上のブロックの量子化されたＤＣＴ係数をＦｂ（ｉ，ｊ）（０≦ｉ≦７、０≦ｊ≦７）とすると、まず、左上のブロックの量子化されたＤＣＴ係数のＤＣ成分Ｆｂ（０，０）と左隣のブロックの量子化されたＤＣＴ係数のＤＣ成分Ｆａ（０，０）と上隣のブロックの量子化されたＤＣＴ係数のＤＣ成分Ｆｃ（０，０）とから、予測方向を決定する。
【００２７】
例えば、左隣のブロックのＤＣ成分の量子化ステップ幅をＱｄａ、左上のブロックのＤＣ成分の量子化ステップ幅をＱｄｂ、上隣のブロックのＤＣ成分の量子化ステップ幅をＱｄｃとすると、
ｆａ（０，０）＝Ｆａ（０，０）×Ｑｄａ
ｆｂ（０，０）＝Ｆｂ（０，０）×Ｑｄｂ
ｆｃ（０，０）＝Ｆｃ（０，０）×Ｑｄｃ
により、逆量子化後のＤＣ成分ｆａ（０，０）、ｆｂ（０，０）、ｆｃ（０，０）をそれぞれ求め、
｜ｆａ（０，０）−ｆｂ（０，０）｜＜｜ｆｂ（０，０）−ｆｃ（０，０）｜なる関係が成り立てば上下方向の相関が強いと考えられるので上隣のブロックの逆量子化後のＤＣ成分ｆｃ（０，０）から予測を行い、上記の関係が成り立たない場合には左右方向の相関が強いと考えられるので左隣のブロックの逆量子化後のＤＣ成分ｆａ（０，０）から予測を行う。
【００２８】
上隣のブロックからＤＣ成分の予測を行う場合は、
Ｐｘ（０，０）＝Ｆｘ（０，０）−ｆｃ（０，０）／Ｑｄｘ
とし、左隣のブロックからＤＣ成分の予測を行う場合は、
Ｐｘ（０，０）＝Ｆｘ（０，０）−ｆａ（０，０）／Ｑｄｘ
として、予測後のＤＣ成分Ｐｘ（０，０）を求める。ただし、Ｑｄｘは現在のブロックのＤＣ成分の量子化ステップ幅であり、上記の割り算は、例えば、四捨五入で計算する。
【００２９】
続いて、上記のＤＣ成分の予測方向を用いて、ＡＣ成分の予測を行う。すなわち、左隣のブロックの量子化パラメータをＱｐａ、上隣のブロックの量子化パラメータをＱｐｃ、現在のブロックの量子化パラメータをＱｐｘとすると、上隣のブロックからＤＣ成分の予測を行った場合は、ＡＣ成分の予測を、
Ｐｘ（ｉ，０）＝Ｆｘ（ｉ，０）−（Ｆｃ（ｉ，０）×Ｑｐｃ）／Ｑｐｘ
（ｉ＝１、…、７）
に基づいて行う。
【００３０】
また、左隣のブロックからＤＣ成分の予測を行った場合は、ＡＣ成分の予測を、
Ｐｘ（０，ｊ）＝Ｆｘ（０，ｊ）−（Ｆａ（０，ｊ）×Ｑｐａ）／Ｑｐｘ
（ｊ＝１、…、７）
に基づいて行い、予測後のＡＣ成分Ｐｘ（ｉ，０）またはＰｘ（０，ｊ）を求める。ただし、上記の割り算は、例えば、四捨五入で計算するものとする。
【００３１】
１マクロブロックを構成する６つのブロックに対して、上記のＡＣ成分の予測を独立に行った後、ＡＣ成分の予測を行うかどうかを、以下に述べるようにマクロブロック単位で決定する（いずれのブロックとの関係で予測を行ったかによりマクロブロック毎に決定する）。
【００３２】
ここで、元の映像信号のまま（ＡＣ成分の予測を行わない）が良いのか、予測を施した方が良いのかの判断を行うことを示す指標として、ブロックのＡＣ予測判断指標ＳＢを以下のように求める。例えば、１マクロブロックを構成する６つのブロックの各ブロックに対して、そのブロック（ＡＣ予測判断指標ＳＢを求める対象となるブロック）が上隣のブロックから予測を行った場合は、
【００３３】
【数１】
0003669281.tif 000002
【００３４】
によりＡＣ予測判断指標ＳＢを求め、そのブロックが左隣のブロックから予測を行った場合は、
【００３５】
【数２】
0003669281.tif 000003
【００３６】
によりＡＣ予測判断指標ＳＢを求め、１マクロブロックを構成する６つのブロックのＡＣ予測判断指標ＳＢの和ＳＢＳ（各ブロックについて求められたＡＣ予測判断指標の和）が、
ＳＢＳ≧０
の場合にはＡＣ成分の予測を行い、そうでなければ、ＡＣ成分の予測を行わない。
【００３７】
なお、ＡＣ成分の予測を行う場合はａｃ＿ｐｒｅｄ＿ｆｌａｇ＝１、ＡＣ成分の予測を行わない場合はａｃ＿ｐｒｅｄ＿ｆｌａｇ＝０として、このａｃ＿ｐｒｅｄ＿ｆｌａｇをマクロブロック毎に付加情報として付加した後、各マクロブロックを可変長符号化手段５によって符号化する。
【００３８】
ａｃ＿ｐｒｅｄ＿ｆｌａｇ＝１のマクロブロックに属するブロックについては、そのブロックが上隣のブロックから予測した場合は、
【００３９】
【数３】
0003669281.tif 000004
【００４０】
により、Ｏｘ（ｉ，ｊ）を求め、そのブロックが左隣のブロックから予測した場合は、
【００４１】
【数４】
0003669281.tif 000005
【００４２】
により、Ｏｘ（ｉ，ｊ）を求める。
また、ａｃ＿ｐｒｅｄ＿ｆｌａｇ＝０のマクロブロックに属するブロックについては、
【００４３】
【数５】
0003669281.tif 000006
【００４４】
により、Ｏｘ（ｉ，ｊ）を求め、このＯｘ（ｉ，ｊ）をＤＣ／ＡＣ予測器４の出力として、可変長符号化手段５へ出力する。
【００４５】
なお、上記予測において、現在のブロックが単位画像の左端（単位画像が１画面である場合には、この１画面の左端）のブロックである場合、現在のブロックの左隣のブロックおよび左上のブロックが存在しないので、上記予測で用いる逆量子化後のＤＣ成分ｆａ（０，０）およびｆｂ（０，０）の値を予め定めた定数βとする。また、この場合、上記予測で用いるＡＣ成分Ｆａ（ｉ，ｊ）、Ｆｂ（ｉ，ｊ）（（ｉ，ｊ）≠（０，０））を０とする。
【００４６】
ここで予め定めた定数βは、例えば、ＤＣＴ手段２から出力されるＤＣＴ係数のうち、ＤＣ成分の値の範囲の中間値とする。すなわち、ＤＣＴ手段２から出力されるＤＣ成分が１１ｂｉｔで０から２０４７の値を取り得る場合、β＝１０２４とする。
【００４７】
同様に、上記予測において、現在のブロックが単位画像の上端（単位画像が１画面である場合には、この１画面の上端）のブロックである場合、現在のブロックの上隣のブロックおよび左上のブロックが存在しないので、上記予測で用いる逆量子化後のＤＣ成分ｆｃ（０，０）およびｆｂ（０，０）の値を上記の定数βとし、ＡＣ成分Ｆｃ（ｉ，ｊ）、Ｆｂ（ｉ，ｊ）（（ｉ，ｊ）≠（０，０））を０とする。
【００４８】
さらに、上記予測において、現在のブロックの左隣のブロックが、現在のブロックとは異なるビデオパケットに属する場合、上記予測で用いる逆量子化後のＤＣ成分ｆａ（０，０）を上記の定数βとし、ＡＣ成分Ｆａ（ｉ，ｊ）（（ｉ，ｊ）≠（０，０））を０とする。
【００４９】
同様に、上記予測において、現在のブロックの上隣のブロックが、現在のブロックとは異なるビデオパケットに属する場合、上記予測で用いる逆量子化後のＤＣ成分ｆｃ（０，０）を上記の定数βとし、ＡＣ成分Ｆｃ（ｉ，ｊ）（（ｉ，ｊ）≠（０，０））を０とする。
【００５０】
また、上記予測において、現在のブロックの左上のブロックが、現在のブロックとは異なるビデオパケットに属する場合、上記予測で用いる逆量子化後のＤＣ成分ｆｂ（０，０）を上記の定数βとし、ＡＣ成分Ｆｂ（ｉ，ｊ）（（ｉ，ｊ）≠（０，０））を０とする。
【００５１】
このように、ＤＣ／ＡＣ予測器４においては、異なるビデオパケットに属するブロック間ではＤＣ成分、ＡＣ成分の係数を参照しないようにすることで、送信したビットストリームにエラーが混入した場合にも、ＤＣ／ＡＣ予測によるエラーの伝播がビデオパケット内で収まるように構成されている。
【００５２】
【発明が解決しようとする課題】
上記のような従来の符号化装置においては、送信バッファのオーバーフローや、受信側の仮想バッファであるＶＢＶバッファのアンダーフローを回避するための処理が十分に考慮されている訳ではなかった。
【００５３】
また、通常は、量子化器３で用いる量子化パラメータを調節して符号量を増減するが、量子化パラメータを最大（最も粗い量子化を行うようにして発生する符号量を抑える）にしても、送信バッファのオーバーフローが起こるような場合についての処理が考慮されていなかった。
【００５４】
また、入力されるＶＯＰのレートがＦ（１／ｓｅｃ）である場合、１ＶＯＰを構成する全てのマクロブロックを１／Ｆ（ｓｅｃ）か、それよりも短い時間で符号化することが要求される。
【００５５】
しかしながら、例えば、動き検出手段１１がＶＯＰ内のオブジェクトの動きに応じて適応的に動きベクトルの探索範囲を変えるよう構成されている場合、動き検出手段１１が各マクロブロックの動きベクトルを検出するのに要する時間は、マクロブロック毎に変化し、そのため、１ＶＯＰの処理時間は一定でなくなる。このような場合における、１ＶＯＰを構成する全てのマクロブロックを所定の時間内に符号化するための制御が、従来は考慮されていなかった。
【００５６】
この発明は、上述のような課題を解消するためになされたもので、送信バッファのオーバーフローおよびＶＢＶバッファのアンダーフローを効果的に回避できる符号化装置および符号化方法を提案するものである。
【００５７】
また、この発明は、１マクロブロックの符号化に要する時間が一定でない場合にも、所定の時間内で１ＶＯＰ分の符号化を終了できる符号化装置および符号化方法を提示するものである。
【００５８】
【課題を解決するための手段】
この発明に係る符号化装置は、単位画像毎に入力される外部入力信号を複数のマクロブロックに分割し、マクロブロック単位で外部入力信号を符号化し、符号化により生成された一以上のマクロブロックの符号から構成されるビデオパケットを出力する符号化装置であって、マクロブロック単位で外部入力信号をインター符号化、又はイントラ符号化し、インター符号化、又はイントラ符号化により生成される符号を出力する符号化手段と、単位画像における符号化がインター符号化の場合、又はイントラ符号化の場合、それぞれの符号化タイプの場合に対応する固定符号を出力する固定符号出力手段と、符号化手段から出力される符号、又は固定符号手段から出力される固定符号を蓄積する蓄積手段と、符号化手段から出力される符号、又は固定符号化出力手段から出力される固定符号のいずれか一方を選択して前記蓄積手段に蓄積させる符号の符号量を制御する符号量制御手段とを備え、符号量制御手段は、現マクロブロックの符号の符号量ｍｂ＿ｂｉｔ、単位画像の先頭のマクロブロックから現マクロブロックの一つ前のマクロブロックまでの符号の符号量Ｓｃ、蓄積手段がオーバーフローしないように、又はＶＢＶバッファがアンダーフローしないように設定される最大符号量Ｔｍａｘ、単位画像において現マクロブロックに続いて処理されるべきマクロブロック数Ｍ、符号化タイプにより決まる、各マクロブロックに対して固定符号出力手段が出力する固定符号の符号長Ｌ、単位画像において現マクロブロック以降で発生する前記ビデオパケット単位の付加的な符号の総符号量αの間の関係が、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
（ただし、α≧０）
である場合に、固定符号出力手段が出力する固定符号を選択するよう制御することを特徴とする。
【００８２】
【発明の実施の形態】
以下、この発明をその実施の形態を示す図面に基づいて具体的に説明する。
実施の形態１．
図１はこの発明の実施の形態１である符号化装置を示すものである。同図において、１は外部入力信号を第一の入力とする減算器であり、減算器１の出力はＤＣＴ手段２、量子化器３を通して、ＤＣ／ＡＣ予測器４と逆量子化器６に入力される。ＤＣ／ＡＣ予測器４の出力は可変長符号化手段５ａの第一の入力に与えられる。
【００８３】
一方、逆量子化器６の出力は、逆ＤＣＴ手段７を通して、加算器８の第一の入力に与えられる。加算器８の出力はメモリ９の第一の入力に与えられ、メモリ９の出力は予測画像作成手段１０の第一の入力と動き検出手段１１の第一の入力に与えられる。
【００８４】
動き検出手段１１の第二の入力には外部入力信号が与えられ、動き検出手段１１の出力は予測画像作成手段１０の第二の入力と動きベクトル予測器１２に与えられる。予測画像作成手段１０の出力は減算器１の第二の入力と加算器８の第二の入力に与えられる。
【００８５】
また、動きベクトル予測器１２の出力は可変長符号化手段５ａの第二の入力に与えられる。なお、符号化手段は、上述の外部入力信号が入力される減算器１から、この外部入力信号に対応する可変長符号が出力される可変長符号化手段５ａまでを含んで構成される（もちろん、ここに示された構成は一例にしか過ぎず、外部入力信号に対応する符号化を行うことができる既知の構成を用いることができる。）。
【００８６】
可変長符号化手段５ａの第一の出力は一時バッファ１０１の第一の入力に与えられ、可変長符号化手段５ａの第二の出力は符号量制御手段１０２の入力に与えられる。
【００８７】
一時バッファ１０１の第二の入力には固定符号出力手段１０４の出力が与えられ、一時バッファ１０１の第三の入力には符号量制御手段１０２の第一の出力が与えられる。一時バッファ１０１の出力は送信バッファ１０３の第一の入力に与えられる（ここでは、一時バッファ１０１または送信バッファ１０３が蓄積手段に相当する）。
【００８８】
符号量制御手段１０２の第二の出力はメモリ９の第二の入力に与えられる。送信バッファ１０３の出力はビットストリームとして出力（送信）される。
【００８９】
この出力（送信）されたビットストリームは、復号装置側において受信され復号処理が施される。
【００９０】
次に動作について説明する。
まず、映像信号は図１６に示したように基本処理単位であるマクロブロックに分割され、減算器１および動き検出手段１１に入力マクロブロックとして入力される。例えば、入力される映像信号が４：２：０の場合、輝度信号（Ｙ）の１６画素×１６ラインが、２つの色差信号（Ｃｂ、Ｃｒ）の８画素×８ラインと画面上で同じ大きさとなるので、８画素×８ラインのブロックが６つで、１つのマクロブロックが構成される。
【００９１】
イントラ符号化を行う場合、各ブロックはＤＣＴを施してから量子化する。量子化されたＤＣＴ係数はＤＣ／ＡＣ予測器４において係数の予測を行った後、量子化パラメータなどの付加情報とともに可変長符号化手段５ａにより可変長符号化する。量子化されたＤＣＴ係数は、逆量子化器６によって逆量子化され、逆ＤＣＴ手段７によって逆ＤＣＴを行って復号され、この逆ＤＣＴ手段７の出力である復号画像はメモリ９に記憶される。
【００９２】
インター符号化の場合は、動き検出手段１１において、入力されたマクロブロックの動きを示す動きベクトルを検出する。動きベクトルは、メモリ９に記憶された復号画像の中で、入力マクロブロックとの誤差が最も小さくなるような位置を示すものである。
【００９３】
予測画像作成手段１０は、動き検出手段１１によって検出された動きベクトルに基づいて予測画像を作成する。次に、入力マクロブロックとこの予測画像の差分を求め、その差分信号に対してＤＣＴ手段２によりＤＣＴを施し、量子化器３により量子化を行う。
【００９４】
量子化器３の出力である量子化されたＤＣＴ係数は、ＤＣ／ＡＣ予測器４において予測された係数、動きベクトル予測器１２により予測符号化された動きベクトルおよび量子化パラメータなどの付加情報とともに可変長符号化手段５ａにより可変長符号化される。また、量子化されたＤＣＴ係数は、逆量子化器６によって逆量子化、逆ＤＣＴ手段７によって逆ＤＣＴを行った後、予測画像作成手段１０より出力される予測画像と加算されて、メモリ９に記憶される。
【００９５】
次に可変長符号化手段５ａの動作を詳しく説明する。
可変長符号化手段５ａは、マクロブロック毎に、量子化されたＤＣＴ係数と付加情報を符号化して（符号化工程）一時バッファ１０１に書き込み、その符号量を符号量制御手段１０２に出力する。
【００９６】
例えば、ＭＰＥＧ４のＩ−ＶＯＰの場合、まず、ＤＣ／ＡＣ予測器４から出力される各ブロックのＤＣＴ係数のＡＣ成分をジグザグスキャン等の方法で１次元スキャンし、０の個数と非零の係数の組み合わせを符号化するランレングス符号化を行う。このランレングス符号化された各ブロックのＡＣ成分データは一時バッファ１０１に書き込まれる。
【００９７】
図２（ａ）に示すように、各ブロックの係数データの後には、イントラ／インター等を示すマクロブロックタイプ（ＭＴＹＰＥ）と色差の各ブロックに非零のＡＣ係数があったかどうかを示すｃｂｐｃをまとめて符号化したｍｃｂｐｃ、量子化パラメータを示すｄｑｕａｎｔ、各ブロックのＤＣＴ係数のＤＣ成分、ＡＣ予測を行ったかどうかを示すａｃ＿ｐｒｅｄ＿ｆｌａｇ、Ｙの各ブロックに非零のＡＣ係数があったかどうかを示すｃｂｐｙが順に符号化されて一時バッファ１０１に書き込まれる。
【００９８】
なお、マクロブロック毎にこれらの符号量の合計が符号量制御手段１０２に出力される。
【００９９】
同様に、ＭＰＥＧ４のＰ−ＶＯＰの場合は図３（ａ）のような順で符号化したデータが一時バッファ１０１に書き込まれる。
【０１００】
符号量制御手段１０２は、可変長符号化手段５ａから出力される各マクロブロックの符号量に基づいて、各ビデオパケットの長さが予め定められた値以下になるようにマクロブロックをまとめ、一時バッファ１０１から送信バッファへと転送する。
【０１０１】
例えば、ＭＰＥＧ４の場合、図２（ｂ）、図３（ｂ）に示したように、ビデオパケットの先頭にはヘッダを付加し、規定されたビットストリームの順に並べ替えて転送する。
【０１０２】
また、符号量制御手段１０２は、送信バッファ１０３がオーバーフローを起こさないように、あるいは、ＶＢＶ（Ｖｉｄｅｏ  Ｂｕｆｆｅｒｉｎｇ  Ｖｅｒｉｆｉｅｒ）バッファ（受信側におけるビットストリーム受信に要する仮想的なバッファ（必要とされる容量は、例えば、送信ビットストリーム中のヘッダに記述される）。通常、最低Ｉ−ＶＯＰ分の容量が設定される。）がアンダーフローを起こさないように、ＶＯＰ毎に最大符号量Ｔｍａｘを設定し、当該ＶＯＰの符号量がＴｍａｘより多くならないように、可変長符号化手段５ａの出力または固定符号出力手段１０４の出力のうち、一時バッファ１０１に書きこむ固定符号を選択する。
【０１０３】
なお、ここにおける最大符号量Ｔｍａｘとは、送信バッファ１０３がオーバーフローを起こさず、ＶＢＶバッファがアンダーフローしないための符号量の上限値といえる。
【０１０４】
以下、動作の詳細について述べる。
符号量制御手段１０２は、各ＶＯＰの符号化を始める前に、当該ＶＯＰの最大符号量Ｔｍａｘを求める。例えば、送信バッファ１０３の容量がＢｓ（ｂｉｔｓ）、送信バッファ１０３の現在の残量（すなわち、送信バッファやＶＢＶバッファ等の記憶手段に蓄積され、当該送信バッファやＶＢＶバッファ等の記憶手段より読み出されていない（送信バッファやＶＢＶバッファ等の記憶手段に残留している（保存されている））データの量（残容量）であり、このようなデータの量のことを一般的にはバッファ占有量、あるいは占有量（ｏｃｃｕｐａｎｃｙ）と表現する。以下、単に占有量と称す。）がＢ（ｂｉｔｓ）とすると、送信バッファ１０３がオーバーフローを起こさないためには、当該ＶＯＰの符号量をＢｓ−Ｂ以下とすれば十分である。従って、最大符号量Ｔｍａｘを
Ｔｍａｘ≦Ｂｓ−Ｂ
と設定すればよい。
【０１０５】
また、ＶＢＶバッファの管理をする場合、送信バッファ１０３の読み出しビットレートがＲ（ｂｉｔｓ／ｓｅｃ）、符号化するＶＯＰのレートがＦ（１／ｓｅｃ）とすると、１ＶＯＰ期間に送信バッファ１０３から読み出されるビット数Ｒｐは、
Ｒｐ＝Ｒ／Ｆ
となり、１ＶＯＰ期間にＶＢＶバッファが受信するビット数もＲｐとなる。
【０１０６】
そこで、現在のＶＯＰの１つ前のＶＯＰのデコード時間におけるＶＢＶバッファの占有量をｖｂｖ＿ｂｉｔｓ（ｂｉｔｓ）とすると、ＶＢＶバッファがアンダーフローしないためには、当該ＶＯＰの符号量をｖｂｖ＿ｂｉｔｓ＋Ｒｐ以下とすればよい。すなわち、最大符号量Ｔｍａｘを
Ｔｍａｘ≦ｖｂｖ＿ｂｉｔｓ＋Ｒｐ
と設定すればよい。
【０１０７】
従って、符号量制御手段１０２は、各ＶＯＰの符号化を始める前に、当該ＶＯＰの最大符号量Ｔｍａｘを
Ｔｍａｘ＝ｍｉｎ（ｖｂｖ＿ｂｉｔｓ＋Ｒｐ，Ｂｓ−Ｂ）
と設定する。（ｍｉｎ（ａ，ｂ）は、ａまたはｂのいずれか小さい方をその値とすることを示す）。
【０１０８】
なお、ＶＢＶバッファの占有量ｖｂｖ＿ｂｉｔｓは、受信側における占有量を推定するものであるが、受信側でアンダーフローが起きた場合はデコード時間を遅らせるなどの対処を行う場合は、ＶＢＶバッファのアンダーフローを管理する必要がない。このようにＶＢＶバッファのアンダフローを管理する必要がない場合は、
Ｔｍａｘ＝Ｂｓ−Ｂ
と設定すればよい。
【０１０９】
送信バッファ１０３の占有量Ｂは時間的に変化するため、最大符号量Ｔｍａｘの値も時間的に変化するものとなるが、この最大符号量ＴｍａｘはＶＯＰ毎に計算されるものである。
【０１１０】
次に、符号量制御手段１０２は、マクロブロック毎に現在のＶＯＰの符号量を求め、図４および図５に示すフローチャートに従って、当該マクロブロックに対して、可変長符号化手段５ａから出力される符号または固定符号出力手段１０４から出力される固定符号のうち、一時バッファ１０１に蓄積する符号または固定符号のいずれかを選択して（選択して蓄積するように制御する。符号量制御工程。）、一時バッファ１０１に符号または固定符号のいずれかを蓄積する（蓄積工程。一時バッファ１０１から送信バッファ１０３への送信を含めて蓄積工程としてもよい）。
【０１１１】
なお、図４は現在のＶＯＰがＰ−ＶＯＰ（符号化タイプがインター）の場合のフローチャートを示しており、図５は現在のＶＯＰがＩ−ＶＯＰ（符号化タイプがイントラ）の場合のフローチャートを示している。
【０１１２】
（Ｐ−ＶＯＰの場合の符号量制御について）
まず、Ｐ−ＶＯＰの場合の符号量制御１０２の動作を説明する。
Ｐ−ＶＯＰの場合、可変長符号化手段５ａは図３（ａ）に示したように各ブロックの係数データ、ｎｏｔ＿ｃｏｄｅｄ、ｍｃｂｐｃ、動きベクトル、ｃｂｐｙ、ｄｑｕａｎｔを各マクロブロックに対して出力するが、これらの符号は必ずしも全てが存在するわけではなく、例えば、各ブロックの係数データが全て０であり、かつ、動きベクトルが（０，０）である場合は、ｎｏｔ＿ｃｏｄｅｄ＝１の１ｂｉｔのみが存在する。これが、Ｐ−ＶＯＰのマクロブロックで最小符号量となる符号である。
【０１１３】
そこで、Ｐ−ＶＯＰの場合、固定符号出力手段１０４は、固定符号としてｎｏｔ＿ｃｏｄｅｄ＝１の１ｂｉｔのみを出力する（固定符号出力工程。なお、後述するようにＩ−ＶＯＰに対しても固定符号を出力する場合も固定符号出力工程と称する）。つまり、固定符号出力手段１０４は、現在のＶＯＰの符号化タイプに対して、最小符号量となるマクロブロックの固定符号を出力する。
【０１１４】
例えば、各ブロックの係数データが全て０であり、かつ、動きベクトルが（０，０）である場合は、ｎｏｔ＿ｃｏｄｅｄ＝１の１ｂｉｔのみが存在するので、Ｐ−ＶＯＰの場合、固定符号出力手段１０４が出力する固定符号の符号長ＬはＬ＝１となる。
【０１１５】
符号量制御手段１０２は、マクロブロック毎に現在のＶＯＰの符号量を求め、残りのマクロブロックすべてに対して固定符号出力手段１０４から出力される固定符号を選択したとしても、ＶＯＰを構成するすべてのマクロブロックの符号量が当該ＶＯＰの最大符号量Ｔｍａｘを越える場合に、現在のマクロブロックの符号を固定符号出力手段１０４から出力される固定符号に置き換える。
【０１１６】
すなわち、ＶＯＰを構成するマクロブロックの総数をＡとし、現在のマクロブロックのマクロブロック番号をＫ（ただし、０≦Ｋ≦Ａ−１）とすると、これに続く符号化されるべきマクロブロック数Ｍ（残りのマクロブロック数Ｍ）は
Ｍ＝Ａ−Ｋ−１
と表される。
【０１１７】
現在のＶＯＰを構成するマクロブロック番号０のマクロブロックから、マクロブロック番号Ｋ−１のマクロブロックまでの符号量をＳｃとし、現在のマクロブロック（マクロブロック番号Ｋ）に対して可変長符号化手段５ａが出力する符号の符号量をｍｂ＿ｂｉｔとすると、残りのＭ個のマクロブロックに対して固定符号出力手段１０４の固定符号（符号長がＬ）を選択した場合のＶＯＰ全体の符号量は、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α
となる。ここでαは、マクロブロック番号Ｋ以降のマクロブロックで発生し得るＲｅｓｙｎｃ  Ｍａｒｋｅｒ、ビデオパケットヘッダ、スタッフビット、ｍｏｔｉｏｎ＿ｍａｒｋｅｒ等のビデオパケット単位で発生する付加的な符号の符号量（ここでは、付加符号量と称す）であり、α≧０である。
【０１１８】
そこで、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
となる場合は、現在のマクロブロック（マクロブロック番号Ｋ）に対して、固定符号出力手段１０４が出力する固定符号を一時バッファ１０１に書きこみ、そうでない場合は可変長符号化手段５ａが出力する符号を一時バッファ１０１に書きこむよう制御する（図４）。
【０１１９】
なお、付加符号量αの値としては、例えば、Ｐ−ＶＯＰにおけるＲｅｓｙｎｃＭａｒｋｅｒ、ビデオパケットヘッダ、スタッフビット、ｍｏｔｉｏｎ＿ｍａｒｋｅｒの符号量の合計が最大でＣｐ（ｂｉｔ）、予め定められたビデオパケットの長さがＶＰｌｅｎ（ｂｉｔ）とすると、現在のマクロブロック（マクロブロック番号Ｋ）以降のマクロブロックで発生する符号量は、少なくとも
（Ｍ＋１）×Ｌ
であり、
（Ｍ＋１）×Ｌ／ＶＰｌｅｎ＋１
個のビデオパケットが発生し得るので、付加符号量αは、
α＝（（Ｍ＋１）×Ｌ／ＶＰｌｅｎ＋１）×Ｃｐ
とすればよい。
【０１２０】
また、ＶＯＰを構成するマクロブロックの総数Ａを用いれば、
Ｍ＋１≦Ａ
であることから、演算を簡略化するために、付加符号量αは、
α＝（Ａ×Ｌ／ＶＰｌｅｎ＋１）×Ｃｐ
として、Ｐ−ＶＯＰに固定の値としてもよい。
【０１２１】
なお、Ｐ−ＶＯＰについて、固定符号出力手段１０４から出力される固定符号を一時バッファ１０１に記憶した場合は、強制的にｎｏｔ＿ｃｏｄｅｄ（符号化されていない）扱いとするためにメモリ９に記憶された現在のマクロブロックの復号画像を、メモリ９に記憶された一つ前のＶＯＰの同一位置のマクロブロックの復号画像に置き換えておく。
【０１２２】
すなわち、メモリ９内で、一つ前のＶＯＰのマクロブロック番号Ｋのマクロブロックの復号画像を、現在のＶＯＰのマクロブロック番号Ｋのマクロブロックの復号画像エリアにコピーする。Ｐ−ＶＯＰの場合は、固定符号出力手段１０４が出力する固定符号がｎｏｔ＿ｃｏｄｅｄ＝１であるので、このように一つ前のＶＯＰの復号画像をコピーすることにより、固定符号出力手段１０４から出力される固定符号に応じた復号画像が得られる。
【０１２３】
（Ｉ−ＶＯＰの場合の符号量制御について）
次に、Ｉ−ＶＯＰの場合の符号量制御手段１０２の動作を説明する。
Ｉ−ＶＯＰの場合、可変長符号化手段５ａは図２（ａ）に示したように各ブロックのＡＣ成分データ、ｍｃｂｐｃ、ｄｑｕａｎｔ、ＤＣ成分、ａｃ＿ｐｒｅｄ＿ｆｌａｇ、ｃｂｐｙを各マクロブロックに対して出力するが、これらの符号は必ずしも全てが存在するわけではなく、例えば、ｍｃｂｐｃが示すｃｂｐｃの値とｃｂｐｙの値が共に０である場合は、各ブロックの係数データは存在しない。また、ｍｃｂｐｃが示すマクロブロックタイプがｄｑｕａｎｔを持たないことを表している場合は、ｄｑｕａｎｔも存在しない。
【０１２４】
そこで、Ｉ−ＶＯＰの場合、固定符号出力手段１０４は、各ブロックのＤＣ成分およびＡＣ成分がすべて０で、かつ、ｄｑｕａｎｔ＝０、ａｃ＿ｐｒｅｄ＿ｆｌａｇ＝０であるようなマクロブロックに対する符号を、固定符号として出力する。なお、ＭＰＥＧ２、ＭＰＥＧ４など既存のほとんどの符号化方式においては、このような符号が、Ｉ−ＶＯＰのマクロブロックの最小符号量となる。
【０１２５】
Ｐ−ＶＯＰの場合と同様に、符号量制御手段１０２は、マクロブロック毎に現在のＶＯＰの符号量を求め、残りのマクロブロックすべてに対して固定符号出力手段１０４から出力される固定符号を選択したとしても、ＶＯＰを構成するすべてのマクロブロックの符号量が当該ＶＯＰの最大符号量Ｔｍａｘを越える場合に、現在のマクロブロックの符号を、固定符号出力手段１０４から出力される固定符号に置き換える。
【０１２６】
ここでは、ＶＯＰを構成するビデオパケットをくずさない（ビデオパケットを構成するマクロブロックがすべて含まれる）ことが求められるので、残りのマクロブロックに対応する符号化されたデータを生成する必要があるが、ＶＯＰを構成するすべてのマクロブロックの符号量が最大符号量Ｔｍａｘを越える場合には、上述のように固定符号への置き換えを行うことになるため、この固定符号分の裕度を見込んでおく必要がある。
【０１２７】
すなわち、現在のマクロブロック（マクロブロック番号Ｋ）に対して可変長符号化手段５ａが出力する符号の符号量をｍｂ＿ｂｉｔ、固定符号出力手段１０４が出力する固定符号の符号長をＬ、現在のＶＯＰを構成するマクロブロック番号０のマクロブロックからマクロブロック番号Ｋ−１のマクロブロックまでの符号量をＳｃとすると、図５に示すように、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
（Ｍ＝Ａ−Ｋ−１）
となる場合は、現在のマクロブロック（マクロブロック番号Ｋ）に対して、固定符号出力手段１０４が出力する固定符号を一時バッファ１０１に書きこみ、そうでない場合は可変長符号化手段５ａが出力する符号を一時バッファ１０１に書きこむよう制御する。
【０１２８】
ここでαは、マクロブロック番号Ｋ以降のマクロブロックで発生し得るＲｅｓｙｎｃ  Ｍａｒｋｅｒ、ビデオパケットヘッダ、スタッフビット、ｄｃ＿ｍａｒｋｅｒ等のビデオパケット単位で発生する符号の符号量（付加符号量）であり、α≧０である。
【０１２９】
なお、付加符号量αの値としては、例えば、Ｉ−ＶＯＰにおけるＲｅｓｙｎｃＭａｒｋｅｒ、ビデオパケットヘッダ、スタッフビット、ｄｃ＿ｍａｒｋｅｒの符号量の合計が最大でＣｉ（ｂｉｔ）、予め定められたビデオパケットの長さがＶＰｌｅｎ（ｂｉｔ）とすると、現在のマクロブロック（マクロブロック番号Ｋ）以降のマクロブロックで発生する符号量は、少なくとも
（Ｍ＋１）×Ｌ
であり、
（Ｍ＋１）×Ｌ／ＶＰｌｅｎ＋１
個のビデオパケットが発生し得るので、
α＝（（Ｍ＋１）×Ｌ／ＶＰｌｅｎ＋１）×Ｃｉ
とすればよい。
【０１３０】
また、ＶＯＰを構成するマクロブロックの総数Ａを用いれば、
Ｍ＋１≦Ａ
であることから、演算を簡略化するために、
α＝（Ａ×Ｌ／ＶＰｌｅｎ＋１）×Ｃｉ
として、Ｉ−ＶＯＰに固定の値としてもよい。
【０１３１】
なお、Ｉ−ＶＯＰの場合、現在のマクロブロック（マクロブロック番号Ｋ）に対して固定符号出力手段１０４から出力される固定符号を一時バッファ１０１に記憶した場合で、かつ、一つ前のマクロブロック（マクロブロック番号Ｋ−１）に対しては固定符号出力手段１０４の出力（固定符号）を選択しなかった場合（可変長符号化手段５ａの出力を選択した場合）は、図５に示すように、現在のマクロブロックから新しいビデオパケットを構成する。
【０１３２】
Ｉ−ＶＯＰの場合、ａｃ＿ｐｒｅｄ＿ｆｌａｇ＝０であってもＤＣ予測を行うので、一時バッファ１０１に記憶されたＤＣ成分が０の場合、これはＤＣ／ＡＣ予測器４の出力する予測後のＤＣ成分Ｏｘ（０，０）が０であることを示すものであり、量子化器３が出力するＤＣ成分Ｆｘ（０，０）が０であることを示すものではない。
【０１３３】
このため、固定符号出力手段１０４が各ブロックのＤＣ成分およびＡＣ成分がすべて０でかつ、ｄｑｕａｎｔ＝０、ａｃ＿ｐｒｅｄ＿ｆｌａｇ＝０であるようなマクロブロックに対する固定符号を出力する場合、この固定符号を復号して得られる画像は一般には一定ではない（すなわち、固定符号自体は固定のものであっても画像表現に関わる値は固定の値ではなく任意の値をとり得る）。
【０１３４】
しかしながら、ＤＣ／ＡＣ予測器４においては、異なるビデオパケットに属するブロック間ではＤＣ成分の係数の参照を行わず、ＤＣ成分の値の範囲の中間値である定数βを参照値とするので、上述のように、固定符号出力手段１０４から出力される固定符号を一時バッファ１０１に記憶するよう選択した場合、当該マクロブロックから新しいビデオパケットを構成するように制御すれば、前記固定符号出力手段１０４から出力される固定符号が表す各ブロックの逆量子化後のＤＣ成分ｆｘ（０，０）は
ｆｘ（０，０）＝β
となる。
【０１３５】
従って、Ｉ−ＶＯＰの場合、固定符号出力手段１０４から出力される固定符号を復号すると、マクロブロックの全ての画素が定数γであるような画像（画面全体が同じ色等の、いわゆる、ベタ画像）が得られる。ここで定数γは、入力されるマクロブロックの画素値の範囲の中間値である。例えば、入力されるマクロブロックが８ビットで０から２５５の値を取り得る場合、γ＝１２８である。
【０１３６】
なお、固定符号出力手段１０４から出力される固定符号を一時バッファ１０１に記憶するよう選択した場合、上述のように、当該マクロブロック（マクロブロック番号Ｋ）の各ブロックの逆量子化後のＤＣ成分は定数βに等しくなるので、当該マクロブロックの次のマクロブロック（マクロブロック番号Ｋ＋１）で固定符号出力手段１０４の出力（固定符号）を選択する場合は、新しいビデオパケットを構成しなくても、逆量子化後のＤＣ成分が定数βとなり、復号画像は画素値がすべて定数γの画像（ベタ画像）となる。
【０１３７】
従って、図５に示すように、固定符号出力手段１０４から出力される固定符号を一時バッファ１０１に記憶した場合で、かつ、一つ前のマクロブロックに対しては固定符号出力手段１０４の出力（固定符号）を選択しなかった場合に、現在のマクロブロックから新しいビデオパケットを構成するよう制御すればよい。
【０１３８】
なお、固定符号出力手段１０４から出力される固定符号を一時バッファ１０１に記憶した場合は、メモリ９に記憶された現在のマクロブロックの復号画像を、画素値がすべて定数γの画像に置き換えておく。すなわち、メモリ９の現在のＶＯＰの現在のマクロブロックの復号画像エリアに定数γを書きこむ。
【０１３９】
このように図４および図５のフローチャートに基づいて、可変長符号化手段５ａから出力される符号または固定符号出力手段１０４から出力される固定符号のうち、一時バッファ１０１に記憶する符号を選択することにより、各ＶＯＰの符号量が最大符号量Ｔｍａｘを超えないように制御することができる。
【０１４０】
また、図５のフローチャートに基づいて、現在のマクロブロックから新しいビデオパケットを構成するか否かを決定することにより、Ｉ−ＶＯＰの場合も、固定符号出力手段１０４から出力される固定符号に対応する復号画像を、新たな演算を行うことなく、メモリ９に書きこむので、少ない演算量で単位画像の符号量が必ず最大符号量Ｔｍａｘ以下となるように制御できる。
【０１４１】
実施の形態２．
上記実施の形態１においては、符号量制御手段１０２が図４および図５のフローチャートに基づいて可変長符号化手段５ａまたは固定符号出力手段１０４の出力（固定符号）を選択するよう制御するとしたが、符号量制御手段１０２は、図６および図７に示すフローチャートに基づいて、可変長符号化手段５ａまたは固定符号出力手段１０４の出力（固定符号）を選択するよう構成してもよい。
【０１４２】
なお、図６は現在のＶＯＰがＰ−ＶＯＰ（符号化タイプがインター）の場合のフローチャートを示しており、図７は現在のＶＯＰがＩ−ＶＯＰ（符号化タイプがイントラ）の場合のフローチャートを示している。
【０１４３】
（Ｐ−ＶＯＰの場合の符号量制御について）
まず、Ｐ−ＶＯＰの場合を図６に従って説明する。
符号量制御手段１０２は、実施の形態１の場合と同様に、現在のマクロブロック（マクロブロック番号Ｋ）に対して可変長符号化手段５ａが出力する符号の符号量をｍｂ＿ｂｉｔ、固定符号出力手段１０４が出力する固定符号の符号長をＬ、現在のＶＯＰを構成するマクロブロック番号０のマクロブロックからマクロブロック番号Ｋ−１のマクロブロックまでの符号量をＳｃ、現在のＶＯＰを構成するマクロブロックＫ＋１以降のマクロブロックの数をＭとすると、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ                  （１）
となる場合、現在のマクロブロック（マクロブロック番号Ｋ）に対して、固定符号出力手段１０４が出力する固定符号を一時バッファ１０１に書きこむよう制御する。
【０１４４】
ここでαは、マクロブロック番号Ｋ以降のマクロブロックで発生し得るＲｅｓｙｎｃ  Ｍａｒｋｅｒ、ビデオパケットヘッダ、スタッフビット、ｍｏｔｉｏｎ＿ｍａｒｋｅｒ等のビデオパケット単位で発生する符号の符号量（付加符号量）であり、α≧０である。実施の形態１で説明したように、αはマクロブロック毎に演算しても、ＶＯＰの符号化タイプ毎に固定値としてもよい。
【０１４５】
ところで、現在のマクロブロックに対して上記（１）式が成り立つ場合、符号量としては累積されていくものであるから、次のマクロブロックに対しても（１）式が成り立つ可能性が非常に高い。
【０１４６】
例えば、マクロブロック番号Ｋに対して（１）式が成り立つとすると、マクロブロック番号０からマクロブロック番号Ｋまでのマクロブロックの符号量Ｓｃ’は、マクロブロック番号Ｋ−１のマクロブロックまでの符号量Ｓｃに固定符号出力手段１０４が出力する固定符号の符号長Ｌを加算した、
Ｓｃ’＝Ｓｃ＋Ｌ
となる。ここで、マクロブロック番号Ｋのマクロブロックに対して可変長符号化手段５ａが出力する符号の符号量ｍｂ＿ｂｉｔと、マクロブロック番号Ｋ＋１のマクロブロックに対して可変長符号化手段５ａが出力する符号の符号量ｍｂ＿ｂｉｔ’が等しく、かつ、上記αの値が両マクロブロックに対して同じであれば、
Ｓｃ’＋ｍｂ＿ｂｉｔ’＋（Ｍ−１）×Ｌ＋α
＝Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α
＞Ｔｍａｘ
となり、マクロブロック番号Ｋ＋１に対しても（１）式が成り立つ。
【０１４７】
そこで、マクロブロック番号Ｋに対して（１）式が成立した場合は、マクロブロック番号Ｋ以降のマクロブロックに対しても（１）式が成立するものとして、演算を省略することができる。
【０１４８】
すなわち、図６に示すように、まず現在のマクロブロック（マクロブロック番号Ｋ）の一つ前のマクロブロック（マクロブロック番号Ｋ−１）に対して、固定符号出力手段１０４の出力（固定符号）を選択したかどうかを判断し、一つ前のマクロブロックで固定符号出力手段１０４の出力（固定符号）を選択した場合は、現在のマクロブロックに対しても固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶する。
【０１４９】
一方、一つ前のマクロブロックで固定符号出力手段１０４の出力（固定符号）を選択しなかった場合は、上記（１）式を判断し、（１）式が成り立つ場合は固定符号出力手段１０４の出力（固定符号）を、成り立たない場合は可変長符号化手段５ａの出力を一時バッファ１０１に記憶する。
【０１５０】
（Ｉ−ＶＯＰの場合の符号量制御について）
Ｉ−ＶＯＰの場合も同様で、図７に示すように、まず現在のマクロブロック（マクロブロック番号Ｋ）の一つ前のマクロブロック（マクロブロック番号Ｋ−１）に対して、固定符号出力手段１０４の出力（固定符号）を選択したかどうかを判断し、一つ前のマクロブロックで固定符号出力手段１０４の出力（固定符号）を選択した場合は、現在のマクロブロックに対しても固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶する。この場合、実施の形態１で説明したように、現在のマクロブロックから新しいビデオパケットを構成する必要はない。
【０１５１】
一方、一つ前のマクロブロックで固定符号出力手段１０４の出力（固定符号）を選択しなかった場合は、上記（１）式を判断し、（１）式が成り立つ場合は固定符号出力手段１０４の出力（固定符号）を、成り立たない場合は可変長符号化手段５ａの出力を一時バッファ１０１に記憶する。また、上記（１）式が成り立つ場合は、現在のマクロブロックから新しいビデオパケットを構成する。
【０１５２】
なお、実施の形態２においては、１ＶＯＰの中のあるマクロブロックに対して（１）式が成立すると、そのＶＯＰを構成する当該マクロブロック以降のすべてのマクロブロックに対して、固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に書きこむよう制御するので、当該マクロブロックに続いて符号化されるマクロブロックにおいては、減算器１、ＤＣＴ手段２、量子化器３、ＤＣ／ＡＣ予測器４、可変長符号化手段５ａ、逆量子化器６、逆ＤＣＴ手段７、加算器８、予測画像作成手段１０、動き検出手段１１および動きベクトル予測手段１２からなる符号化手段は動作する必要がない。
【０１５３】
従って、１ＶＯＰの中のあるマクロブロックに対して（１）式が成立する場合は、そのＶＯＰを構成する当該マクロブロックに続いて符号化されるマクロブロックにおいては、減算器１、ＤＣＴ手段２、量子化器３、ＤＣ／ＡＣ予測器４、可変長符号化手段５ａ、逆量子化器６、逆ＤＣＴ手段７、加算器８、予測画像作成手段１０、動き検出手段１１および動きベクトル予測手段１２は動作を止める（符号化されたマクロブロックより後のマクロブロックからＶＯＰの最後迄演算を停止する）ことにより、演算量の減少、消費電力の削減を図ることができる。
【０１５４】
実施の形態３．
実施の形態３においては、符号量制御手段１０２は、図８に示すフローチャートに基づいて、可変長符号化手段５ａまたは固定符号出力手段１０４の出力（固定符号）を選択するよう制御する。なお、図８はＰ−ＶＯＰ（符号化タイプがインター）の場合のフローチャートを示している。
【０１５５】
（Ｐ−ＶＯＰの場合の符号量制御について）
例えば、動き検出手段１１がＶＯＰ内のオブジェクトの動きに応じて適応的に動きベクトルの探索範囲を変えるよう構成されている場合、動き検出手段１１が各マクロブロックの動きベクトルを検出するのに要する時間は、マクロブロック毎に変化し、そのため、１ＶＯＰの処理時間は一定でなくなる。
【０１５６】
このような場合に、１ＶＯＰを構成する全てのマクロブロックを所定の時間内に符号化するために、処理時間が少なくなった場合は、減算器１、ＤＣＴ手段２、量子化器３、ＤＣ／ＡＣ予測器４、可変長符号化手段５ａ、逆量子化器６、逆ＤＣＴ手段７、加算器８、予測画像作成手段１０、動き検出手段１１および動きベクトル予測手段１２の演算を行わず、固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶する。
【０１５７】
従って、符号量制御手段１０２は、図８に示すように、現在のＶＯＰを構成する先頭のマクロブロック（マクロブロック番号０）が入力されてからの経過時間を計測し、この経過時間があらかじめ定められた処理時間Ｔｐを越えた場合は、常に固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶するよう制御し、そうでない場合は前記（１）式に基づいて、固定符号出力手段１０４の出力（固定符号）と可変長符号化手段５ａの出力を選択して一時バッファ１０１に記憶する。
【０１５８】
なお、この場合のあらかじめ定められた処理時間Ｔｐは、最大１ＶＯＰ期間に設定される（１ＶＯＰ分の処理は１ＶＯＰ期間に処理しなければならないため）が、この１ＶＯＰ期間に他の処理を含めるような場合には、（１ＶＯＰ期間−他の処理に要する期間）が処理時間Ｔｐに与えられる最大値となる。
【０１５９】
（Ｉ−ＶＯＰの場合の符号制御について）
なお、現在のＶＯＰがＩ−ＶＯＰである場合は、実施の形態１または実施の形態２と同様に、図５または図７のフローチャートに従って、符号量制御手段１０２は一時バッファ１０１に記憶する符号を選択する。
【０１６０】
実施の形態４．
実施の形態４においては、符号量制御手段１０２は、図９に示すフローチャートに基づいて、可変長符号化手段５ａまたは固定符号出力手段１０４の出力（固定符号）を選択するよう制御する。なお、図９はＰ−ＶＯＰ（符号化タイプがインター）の場合のフローチャートを示している。
【０１６１】
（Ｐ−ＶＯＰの場合の符号量制御について）
すなわち、符号量制御手段１０２は、実施の形態２で説明したように、まず現在のマクロブロック（マクロブロック番号Ｋ）の一つ前のマクロブロック（マクロブロック番号Ｋ−１）に対して、固定符号出力手段１０４の出力（固定符号）を選択したかどうかを判断し、一つ前のマクロブロックで固定符号出力手段１０４の出力（固定符号）を選択した場合は、現在のマクロブロックに対しても固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶する。
【０１６２】
次に、実施の形態３で説明したように、現在のＶＯＰを構成する先頭のマクロブロック（マクロブロック番号０）が入力されてからの経過時間を計測し、この経過時間があらかじめ定められた処理時間Ｔｐを越えた場合は、固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶するよう制御し、そうでない場合は前記（１）式に基づいて、固定符号出力手段１０４の出力（固定符号）と可変長符号化手段５ａの出力を選択して一時バッファ１０１に記憶する。
【０１６３】
（Ｉ−ＶＯＰの場合の符号量制御について）
なお、現在のＶＯＰがＩ−ＶＯＰである場合は、実施の形態１または実施の形態２と同様に、図５または図７のフローチャートに従って、符号量制御手段１０２は一時バッファ１０１に記憶する符号を選択する。
【０１６４】
実施の形態５．
実施の形態１においては、固定符号出力手段１０４が独立して存在するようなブロック図を示したが、例えば、ソフトウェアによってそれぞれの手段を構成する場合には、固定符号出力手段１０４および可変長符号化手段５ａのそれぞれの動作を行わせるためのＲＯＭテーブルを共有するように構成することもできる。
【０１６５】
すなわち、実施の形態１で説明したように、固定符号出力手段１０４が出力する固定符号は、Ｉ−ＶＯＰ、Ｐ−ＶＯＰそれぞれのマクロブロックの符号のうちの１パターンとなっているので、固定符号出力手段１０４および可変長符号化手段５ａを一体のものとすることにより、ＲＯＭテーブルを共有化することができる。
【０１６６】
図１０はこの発明の実施の形態５である符号化装置を示すものである。同図において、１は外部入力信号を第一の入力とする減算器であり、減算器１の出力はＤＣＴ手段２、量子化器３を通して、ＤＣ／ＡＣ予測器４と逆量子化器６に入力される。ＤＣ／ＡＣ予測器４の出力は可変長符号化手段５ｂの第一の入力に与えられる。
【０１６７】
一方、逆量子化器６の出力は、逆ＤＣＴ手段７を通して、加算器８の第一の入力に与えられる。加算器８の出力はメモリ９の第一の入力に与えられ、メモリ９の出力は予測画像作成手段１０の第一の入力と動き検出手段１１の第一の入力に与えられる。
【０１６８】
動き検出手段１１の第二の入力には外部入力信号が与えられ、動き検出手段１１の出力は予測画像作成手段１０の第二の入力と動きベクトル予測器１２に与えられる。予測画像作成手段１０の出力は減算器１の第二の入力と加算器８の第二の入力に与えられる。
【０１６９】
また、動きベクトル予測器１２の出力は可変長符号化手段５ｂの第二の入力に与えられる。
【０１７０】
可変長符号化手段５ｂの第一の出力は一時バッファ１０１の第一の入力に与えられ、可変長符号化手段５ｂの第二の出力は符号量制御手段１０２の入力に与えられる。
【０１７１】
一時バッファ１０１の第二の入力には符号量制御手段１０２の第一の出力が与えられる。一時バッファ１０１の出力は送信バッファ１０３の第一の入力に与えられる。
【０１７２】
符号量制御手段１０２の第二の出力はメモリ９の第二の入力と可変長符号化手段５ｂの第三の入力に与えられる。送信バッファ１０３の出力はビットストリームとして出力（送信）される。
【０１７３】
この出力（送信）されたビットストリームは、復号装置側において受信され復号処理が施される。
【０１７４】
次に動作について説明する。
実施の形態５は、可変長符号化手段５ｂおよび一時バッファ１０１の動作が実施の形態１と異なる。他の部分については実施の形態１と同様であるので説明を省略する。
【０１７５】
可変長符号化手段５ｂは、まず、実施の形態１と同様に各マクロブロックのデータを符号化して、図１１（ａ）のように一時バッファ１０１に符号を書きこむ。ここで、現在のマクロブロック（マクロブロック番号Ｋ）に対して書きこんだ符号の先頭アドレスＡｋを記憶しておく。また、このとき発生した符号の符号量ｍｂ＿ｂｉｔを符号量制御手段１０２に出力する。
【０１７６】
次に、符号量制御手段１０２は、前記（１）式を判断し、（１）式が成り立つ場合は一時バッファ１０１の書きこみアドレスをＡｋに戻し、固定符号を選択することを示す信号をメモリ９と可変長符号化手段５ｂに出力する。
【０１７７】
可変長符号化手段５ｂは、固定符号を選択することを示す信号を受け取ると、予めＶＯＰの符号化タイプ毎に定められた固定符号を一時バッファ１０１に出力する。このとき、一時バッファ１０１の書きこみアドレスはＡｋに戻されているので、マクロブロック番号Ｋの符号を固定符号で上書きすることになる。従って、図１１（ｂ）に示す一時バッファのデータ構成のように、マクロブロック番号Ｋ−１の符号の次に、固定符号が書き込まれる。
【０１７８】
また、メモリ９は、固定符号を選択することを示すフラグを受け取ると、実施の形態１で説明したように、Ｉ−ＶＯＰの場合はマクロブロック番号Ｋの復号画像エリアに定数γを書きこみ、Ｐ−ＶＯＰの場合はマクロブロック番号Ｋの復号画像エリアに、当該ＶＯＰの一つ前のＶＯＰのマクロブロック番号Ｋのマクロブロックの復号画像をコピーする。
【０１７９】
以上のように構成することにより、実施の形態５では、可変長符号化手段５ｂに、各マクロブロックを符号化する手段とＶＯＰの符号化タイプ毎に用意した固定符号を出力する手段の両者の機能を持たせ、回路の縮小化を図ることができる。
【０１８０】
実施の形態６．
図１２はこの発明の実施の形態６である符号化装置を示すものである。同図において、１は外部入力信号を第一の入力とする減算器であり、減算器１の出力はＤＣＴ手段２、量子化器３を通して、可変長符号化手段５ｃの第一の入力と逆量子化器６に与えられる。
【０１８１】
逆量子化器６の出力は、逆ＤＣＴ手段７を通して、加算器８の第一の入力に与えられる。加算器８の出力はメモリ９の第一の入力に与えられ、メモリ９の出力は予測画像作成手段１０の第一の入力と動き検出手段１１の第一の入力に与えられる。
【０１８２】
動き検出手段１１の第二の入力には外部入力信号が与えられ、動き検出手段１１の出力は予測画像作成手段１０の第二の入力と動きベクトル予測器１２に与えられる。予測画像作成手段１０の出力は減算器１の第二の入力と加算器８の第二の入力に与えられる。
【０１８３】
また、動きベクトル予測器１２の出力は可変長符号化手段５ｃの第二の入力に与えられる。なお、符号化手段は、上述の外部入力信号が入力される減算器１から、この外部入力信号に対応する可変長符号が出力される可変長符号化手段５ｃまでを含んで構成される（もちろん、ここに示された構成は一例にしか過ぎず、外部入力信号に対応する符号化を行うことができる既知の構成を用いることができる）。
【０１８４】
可変長符号化手段５ｃの第一の出力は一時バッファ１０１の第一の入力に与えられ、可変長符号化手段５ｃの第二の出力は符号量制御手段１０２の入力に与えられる。
【０１８５】
一時バッファ１０１の第二の入力には固定符号出力手段１０４の出力（固定符号）が与えられ、一時バッファ１０１の第三の入力には符号量制御手段１０２の第一の出力が与えられる。一時バッファ１０１の出力は送信バッファ１０３の第一の入力に与えられる。
【０１８６】
符号量制御手段１０２の第二の出力はメモリ９の第二の入力に与えられる。送信バッファ１０３の出力はビットストリームとして出力（送信）される。
【０１８７】
この出力（送信）されたビットストリームは、復号装置側において受信され復号処理が施される。
【０１８８】
次に動作について説明する。
実施の形態６は、符号化タイプがイントラの場合もＤＣ／ＡＣ予測を行わない点が実施の形態１と異なる。すなわち、可変長符号化手段５ｃは量子化器３から出力されるＤＣＴ係数を用いて符号化を行う。例えば、Ｈ．２６３に準拠した符号化装置の場合、Ｉ−ＶＯＰの場合はＤＣ成分を常に８ビットで符号化する。
【０１８９】
そこで、固定符号出力手段１０４は、Ｉ−ＶＯＰに対して各ブロックのＤＣ成分が１２８、ＡＣ成分がすべて０、ｄｑｕａｎｔ＝０であるようなマクロブロックの固定符号を出力する。
【０１９０】
この場合、ＤＣ予測がないので、固定符号出力手段１０４の出力（固定符号）を選択した場合も、現在のマクロブロックから新しいビデオパケットを構成する必要はない。そこで、符号量制御手段１０２は、Ｉ−ＶＯＰの場合も、図４、図６、図８、あるいは、図９のフローチャートに従って、固定符号出力手段１０４の出力（固定符号）または可変長符号化手段５ｃの出力を選択して、一時バッファ１０１に記憶する。
【０１９１】
なお、Ｐ−ＶＯＰの場合は、実施の形態１ないし実施の形態４と同様に、図４、図６、図８、あるいは、図９のフローチャートに従って、固定符号出力手段１０４の出力（固定符号）または可変長符号化手段５ｃの出力を選択して、一時バッファ１０１に記憶する。
【０１９２】
実施の形態７．
上記実施の形態６においては、可変長符号化手段５ｃの出力または固定符号出力手段１０４の出力（固定符号）を一時バッファ１０１に記憶し、一時バッファ１０１から送信バッファ１０３に転送する構成としたが、例えば、データ構造がデータパーティションとなっていない場合やデータの再配列を行う必要がない場合には、可変長符号化手段５ｃの出力または固定符号出力手段１０４の出力（固定符号）を直接、送信バッファ１０３に入力する構成としてもよく、一時バッファ１０１を省略することができる（この場合、蓄積手段は送信バッファ１０３に相当する）。
【０１９３】
例えば、Ｈ．２６３に準拠した符号化装置の場合（データパーティションを行わない場合）、送信バッファ１０３から出力するビットストリームの構成は図１３のようになっている。従って、ＭＰＥＧ４のデータパーティションの場合（図２（ｂ）、図３（ｂ））のように、各マクロブロックの符号を例えば、各マクロブロックに関して▲１▼ｍｃｂｐｃ、ｄｑｕａｎｔおよびＤＣ成分、▲２▼ａｃ＿ｐｒｅｄ＿ｆｌａｇおよびｃｂｐｙ、▲３▼各ブロックの係数データのような、▲１▼〜▲３▼のカテゴリーに分割し、複数のマクロブロックの符号をカテゴリー毎にまとめて構成するようなことを行わないので、マクロブロック毎に発生した符号を並び替える必要がない。
【０１９４】
すなわち、可変長符号化手段５ｃが図１３に示したようなフォーマットに従って、マクロブロックの符号を出力すれば、並び替えのための一時バッファ１０１は不要となる。
【０１９５】
図１４はこのような実施の形態７である符号化装置を示すものである。同図において、１は外部入力信号を第一の入力とする減算器であり、減算器１の出力はＤＣＴ手段２、量子化器３を通して、可変長符号化手段５ｃの第一の入力と逆量子化器６に与えられる。
【０１９６】
逆量子化器６の出力は、逆ＤＣＴ手段７を通して、加算器８の第一の入力に与えられる。加算器８の出力はメモリ９の第一の入力に与えられ、メモリ９の出力は予測画像作成手段１０の第一の入力と動き検出手段１１の第一の入力に与えられる。
【０１９７】
動き検出手段１１の第二の入力には外部入力信号が与えられ、動き検出手段１１の出力は予測画像作成手段１０の第二の入力と動きベクトル予測器１２に与えられる。予測画像作成手段１０の出力は減算器１の第二の入力と加算器８の第二の入力に与えられる。
【０１９８】
また、動きベクトル予測器１２の出力は可変長符号化手段５ｃの第二の入力に与えられる。
【０１９９】
可変長符号化手段５ｃの第一の出力は送信バッファ１０３の第一の入力に与えられ、可変長符号化手段５ｃの第二の出力は符号量制御手段１０２の入力に与えられる。
【０２００】
送信バッファ１０３の第二の入力には固定符号出力手段１０４の出力（固定符号）が与えられ、送信バッファ１０３の第三の入力には符号量制御手段１０２の第一の出力が与えられる。また、符号量制御手段１０２の第二の出力はメモリ９の第二の入力に与えられる。
【０２０１】
送信バッファ１０３の出力はビットストリームとして出力（送信）される。
この出力（送信）されたビットストリームは、復号装置側において受信され復号処理が施される。
【０２０２】
次に動作について説明する。
実施の形態７は、可変長符号化手段５ｃおよび固定符号出力手段１０４が送信バッファ１０３に固定符号を出力する点が実施の形態６と異なる。すなわち、符号量制御手段１０２は、実施の形態６と同様に、可変長符号化手段５ｃから出力される符号の符号量に基づいて、可変長符号化手段５ｃの出力または固定符号出力手段１０４の出力（固定符号）のうち、どちらを選択するかをマクロブロック毎に判断し、選択した方が送信バッファ１０３に蓄積されるよう制御を行う。
【０２０３】
なお、上記実施の形態１ないし７においては、ＶＯＰ毎の最大符号量Ｔｍａｘの設定において、送信バッファ１０３の読み出しレートがＲであるとしたが、読み出しレートが固定レートでなく、レートが可変である場合であっても、同様にして、送信バッファ１０３のオーバーフローあるいはＶＢＶバッファのアンダーフローが起こらないようにＴｍａｘを設定することが可能である。
【０２０４】
上述の送信バッファ１０３の読み出しレートが可変である場合とは、例えば、送信する最大のレートが決められており、その最大のレートの中で送信するべき情報の種類（例えば、映像と音声のような種類）によって送信レートが割り振られているような場合に相当する。
【０２０５】
この場合も、図４ないし図９のフローチャートに基づいて、各マクロブロックを符号化する符号化手段の出力と、ＶＯＰの符号化タイプ毎に定められた固定符号とを選択して蓄積することにより、各ＶＯＰの符号量が最大符号量Ｔｍａｘ以下になるように制御することができる。
【０２０６】
また、上記実施の形態１ないし７においては、ＭＰＥＧ４のデータパーティションの場合およびＨ．２６３の場合を例にとって説明したが、データパーティションでない場合や、ＭＰＥＧ２の場合などにおいても、上述と同様の構成で、符号量制御を行うことができる。
【０２０７】
さらに、入力信号が４：２：０でない場合や、ＶＯＰ（単位画像）が矩形でない場合（例えば、画面中におけるオブジェクトが取り得る任意の形状）にも適用できることは言うまでもない。
【０２０８】
【発明の効果】
この発明は、以上説明したように構成されているので、以下に示すような効果を奏する。
【０２０９】
【発明の効果】
この発明に係る符号化装置は、単位画像毎に入力される外部入力信号を複数のマクロブロックに分割し、マクロブロック単位で外部入力信号を符号化し、符号化により生成された一以上のマクロブロックの符号から構成されるビデオパケットを出力する符号化装置であって、マクロブロック単位で外部入力信号をインター符号化、又はイントラ符号化し、インター符号化、又はイントラ符号化により生成される符号を出力する符号化手段と、単位画像における符号化がインター符号化の場合、又はイントラ符号化の場合、それぞれの符号化タイプの場合に対応する固定符号を出力する固定符号出力手段と、符号化手段から出力される符号、又は固定符号手段から出力される固定符号を蓄積する蓄積手段と、符号化手段から出力される符号、又は固定符号化出力手段から出力される固定符号のいずれか一方を選択して前記蓄積手段に蓄積させる符号の符号量を制御する符号量制御手段とを備え、符号量制御手段は、現マクロブロックの符号の符号量ｍｂ＿ｂｉｔ、単位画像の先頭のマクロブロックから現マクロブロックの一つ前のマクロブロックまでの符号の符号量Ｓｃ、蓄積手段がオーバーフローしないように、又はＶＢＶバッファがアンダーフローしないように設定される最大符号量Ｔｍａｘ、単位画像において現マクロブロックに続いて処理されるべきマクロブロック数Ｍ、符号化タイプにより決まる、各マクロブロックに対して固定符号出力手段が出力する固定符号の符号長Ｌ、単位画像において現マクロブロック以降で発生する前記ビデオパケット単位の付加的な符号の総符号量αの間の関係が、
Ｓｃ＋ｍｂ＿ｂｉｔ＋Ｍ×Ｌ＋α＞Ｔｍａｘ
（ただし、α≧０）
である場合に、固定符号出力手段が出力する固定符号を選択するよう制御することとしたので、単位画像の符号量が最大符号量Ｔｍａｘ以下となるように制御できる。
【図面の簡単な説明】
【図１】  この発明の実施の形態１を示すブロック図である。
【図２】  この発明の実施の形態１における一時バッファと送信バッファの状態（Ｉ−ＶＯＰの場合）を示す説明図である。
【図３】  この発明の実施の形態１における一時バッファと送信バッファの状態（Ｐ−ＶＯＰの場合）を示す説明図である。
【図４】  この発明の実施の形態１を示すフローチャート（Ｐ−ＶＯＰの場合）である。
【図５】  この発明の実施の形態１を示すフローチャート（Ｉ−ＶＯＰの場合）である。
【図６】  この発明の実施の形態２を示すフローチャート（Ｐ−ＶＯＰの場合）である。
【図７】  この発明の実施の形態２を示すフローチャート（Ｉ−ＶＯＰの場合）である。
【図８】  この発明の実施の形態３を示すフローチャートである。
【図９】  この発明の実施の形態４を示すフローチャートである。
【図１０】  この発明の実施の形態５を示すブロック図である。
【図１１】  この発明の実施の形態５における一時バッファの状態を示す説明図である。
【図１２】  この発明の実施の形態６を示すブロック図である。
【図１３】  この発明の実施の形態７における送信バッファの状態を示す説明図である。
【図１４】  この発明の実施の形態７を示すブロック図である。
【図１５】  従来の符号化装置を示すブロック図である。
【図１６】  従来の符号化装置への入力信号を示す説明図である。
【図１７】  従来の符号化装置におけるビットストリームの構成を示す説明図である。
【図１８】  従来の符号化装置におけるビデオパケットの画面上の位置を示す説明図である。
【図１９】  従来の符号化装置におけるＤＣ／ＡＣ予測を示す説明図である。
【符号の説明】
５ａ、５ｂ、５ｃ  可変長符号化手段、１０１  一時バッファ、１０２  符号量制御手段、１０３  送信バッファ、１０４  固定符号出力手段。
【図１】
0003669281.tif 000007
【図２】
0003669281.tif 000008
【図３】
0003669281.tif 000009
【図４】
0003669281.tif 000010
【図５】
0003669281.tif 000011
【図６】
0003669281.tif 000012
【図７】
0003669281.tif 000013
【図８】
0003669281.tif 000014
【図９】
0003669281.tif 000015
【図１０】
0003669281.tif 000016
【図１１】
0003669281.tif 000017
【図１２】
0003669281.tif 000018
【図１３】
0003669281.tif 000019
【図１４】
0003669281.tif 000020
【図１５】
0003669281.tif 000021
【図１６】
0003669281.tif 000022
【図１７】
0003669281.tif 000023
【図１８】
0003669281.tif 000024
【図１９】
0003669281.tif 000025