(57)【特許請求の範囲】
【請求項１】
MPEG方式で画像を圧縮し、送信する画像処理装置において、
入力された前記画像のピクチャタイプを判別する判別手段と、
前記画像の前記ピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数および前記Iピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、
前記画像の前記ピクチャタイプが、Pピクチャ、または、Bピクチャの場合、前記所定の定数および前記パイプライン遅延により発生するビット量、前記スライス数およびヘッダにより発生するビット量、並びに、前記スライス数および前記スライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算手段と、
前記演算手段により演算された、前記ピクチャタイプ別のVBVバッファのマージンを記憶する記憶手段と、
MPEG方式で前記画像を圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像情報の最大ビット発生量、および前記判別手段により判別されたピクチャタイプ別の前記VBVバッファのマージンの和が、前記VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出手段と、
前記アンダーフロー検出手段により、前記VBVバッファアンダーフローが検出された場合、前記ピクチャタイプが前記Iピクチャであるとき、全てのマクロブロックをDC成分にし、前記Pピクチャ、または、前記Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、前記画像を最少パラメータで圧縮するように前記圧縮手段を制御する制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
MPEG方式で画像を圧縮し、送信する画像処理装置の画像処理方法において、
入力された前記画像のピクチャタイプを判別する判別ステップと、
前記画像の前記ピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数および前記Iピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、
前記画像の前記ピクチャタイプが、Pピクチャ、または、Bピクチャの場合、前記所定の定数および前記パイプライン遅延により発生するビット量、前記スライス数およびヘッダにより発生するビット量、並びに、前記スライス数および前記スライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算ステップと、
前記演算ステップの処理で演算された、前記ピクチャタイプ別のVBVバッファのマージンを記憶する記憶ステップと、
MPEG方式で前記画像を圧縮する圧縮ステップと、
前記圧縮ステップの処理で圧縮された画像情報の最大ビット発生量、および前記判別手段により判別されたピクチャタイプ別の前記VBVバッファのマージンの和が、前記VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出ステップと、
前記アンダーフロー検出ステップの処理で、前記VBVバッファアンダーフローが検出された場合、前記ピクチャタイプが前記Iピクチャであるとき、全てのマクロブロックをDC成分にし、前記Pピクチャ、または、前記Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、前記画像を最少パラメータで圧縮するように前記圧縮ステップの処理を制御する制御ステップと
を含むことを特徴とする画像処理方法。
【請求項３】
MPEG方式で画像を圧縮し、送信する画像処理をコンピュータに行わせるプログラムにおいて、
入力された前記画像のピクチャタイプを判別する判別ステップと、
前記画像の前記ピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数および前記Iピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、
前記画像の前記ピクチャタイプが、Pピクチャ、または、Bピクチャの場合、前記所定の定数および前記パイプライン遅延により発生するビット量、前記スライス数およびヘッダにより発生するビット量、並びに、前記スライス数および前記スライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算ステップと、
前記演算ステップの処理で演算された、前記ピクチャタイプ別のVBVバッファのマージンを記憶する記憶ステップと、
MPEG方式で前記画像を圧縮する圧縮ステップと、
前記圧縮ステップの処理で圧縮された画像情報の最大ビット発生量、および前記判別手段により判別されたピクチャタイプ別の前記VBVバッファのマージンの和が、前記VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出ステップと、
前記アンダーフロー検出ステップの処理で、前記VBVバッファアンダーフローが検出された場合、前記ピクチャタイプが前記Iピクチャであるとき、全てのマクロブロックをDC成分にし、前記Pピクチャ、または、前記Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、前記画像を最少パラメータで圧縮するように前記圧縮ステップの処理を制御する制御ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項４】
MPEG方式で画像を圧縮し、送信する画像処理をコンピュータに行わせるプログラムにおいて、
入力された前記画像のピクチャタイプを判別する判別ステップと、
前記画像の前記ピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数および前記Iピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、
前記画像の前記ピクチャタイプが、Pピクチャ、または、Bピクチャの場合、前記所定の定数および前記パイプライン遅延により発生するビット量、前記スライス数およびヘッダにより発生するビット量、並びに、前記スライス数および前記スライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算ステップと、
前記演算ステップの処理で演算された、前記ピクチャタイプ別のVBVバッファのマージンを記憶する記憶ステップと、
MPEG方式で前記画像を圧縮する圧縮ステップと、
前記圧縮ステップの処理で圧縮された画像情報の最大ビット発生量、および前記判別手段により判別されたピクチャタイプ別の前記VBVバッファのマージンの和が、前記VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出ステップと、
前記アンダーフロー検出ステップの処理で、前記VBVバッファアンダーフローが検出された場合、前記ピクチャタイプが前記Iピクチャであるとき、全てのマクロブロックをDC成分にし、前記Pピクチャ、または、前記Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、前記画像を最少パラメータで圧縮するように前記圧縮ステップの処理を制御する制御ステップと
を含む処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置および方法、記録媒体、並びにプログラムに関し、特に、画像情報をMPEG（Moving Picture Experts Group）方式で圧縮する際のVBV（Video Buffer Verifier）バッファアンダーフローを抑制できるようにした画像処理装置および方法、記録媒体、並びにプログラムに関する。
【０００２】
【従来の技術】
近年、MPEG方式による画像圧縮伸張技術が一般に普及している。
【０００３】
画像がMEPG方式で圧縮されることにより、MPEGビットストリームが生成され、その生成されたMPEGビットストリームが伝送路を介して受信側の装置に送信される。この際、MPEG方式で画像を圧縮して、送信する送信側の装置は、これから送信しようとするMPEGビットストリームが受信側の装置で、十分に再生可能なものであるか否かを監視しつつ送信している。
【０００４】
より詳細には、図１で示すように、送信側の装置、すなわちエンコーダは、受信側の装置（デコーダ）がMPEGビットストリームを受信する際に使用するバッファの状態をVBVバッファにより仮想的に再現して、バッファオーバーフローやバッファアンダーフローが発生しないように監視しつつエンコードしている。
【０００５】
すなわち、VBVバッファの占有量は、図２で示すように変化することになる。ここで、図２においては、縦軸がVBVバッファの占有量を示し、横軸が時間を示す。従って、図２における直線の傾きは、ビットレートを示す。VBVバッファは、その最大容量（図中のMax１）までMPEGビットストリームが入ると占有量は状態Ｓ１となる。この状態Ｓ１のVBVバッファから1ピクチャ（Iピクチャ（イントラピクチャ）、Pピクチャ（前方向予測ピクチャ）、または、Bピクチャ（双方向予測ピクチャ））分のMPEGビットストリームがデコードのために引き抜かれると、状態は、状態Ｓ１から状態Ｓ２に変化する。1ピクチャ分の発生量がVBVバッファの下限を超えない場合、デコーダは1ピクチャ分のデータを全て受け取ることができるので正常にデコードできることになる。
【０００６】
続いて、時間Ｔ（= 1/フレームレート）が経過した後、VBVバッファにMPEGビットストリームが入れられると占有量は状態Ｓ３となる。ここでVBVバッファから1ピクチャ分のMPEGビットストリームが引き抜かれる場合、図中のデータ量（Ｌ１＋Ｌ２）が１ピクチャ分のデータ量であるとき、状態Ｓ３においては、図中データ量Ｌ１分のデータしかVBVバッファには蓄えられておらず、状態Ｓ４で示すようにMPEGビットストリームの状態は、１ピクチャ分のMPEGビットストリームに対してデータ量Ｌ２が不足した状態となり、MPEGビットストリームが途切れてしまうことになる。このため、ストリームの受信側の装置となるデコーダでは1ピクチャ分のデコードが途中でできなくなってしまう。このように、VBVバッファにおいて、蓄えられるデータ量が、１ピクチャ分に満たない状態となり、デコードが不能になってしまう状態をVBVバッファアンダーフローと呼ぶ。
【０００７】
エンコーダは、VBVバッファアンダーフローが生じないように、状態Ｓ３の時点で、1ピクチャの発生量を最大発生ビット量（MaxGenBit＝Ｌ１）以内に抑えるようにストリームを制御し、VBVバッファアンダーフローが生じないようにエンコードしている。
【０００８】
VBVバッファアンダーフローを生じないようにエンコードする（1ピクチャの発生量を最大発生ビット量（MaxGenBit＝Ｌ１）以内に抑えるようにストリームを制御しつつエンコードする）方法の一つとして、１フレームのビット発生量を抑えるためマクロブロック（MB）単位でエンコードにより生じるパラメータを必要最小限（最少パラメータ）にして、圧縮処理（以下、最少パラメータ処理と称する）することが提案されている。この最少パラメータ処理はピクチャタイプによって異なり、Iピクチャの場合、全てのMBのDC（Direct Current）成分のみのパラメータとする処理を実行し、Bピクチャ、または、Pピクチャの場合、全てのMBをスキップドマクロブロック（skipped MB）にする処理を実行する。ここで、スキップドマクロブロックとは、各ピクチャにおける、各スライスの第1マクロブロックヘッダ（MBヘッダ）と各スライスの最終MBヘッダのみから構成されるデータである。
【０００９】
また、再生画像の画質を安定させつつ、目標ビットレートで符号化できるようにするものがある（例えば、特許文献１参照）。
【００１０】
【特許文献１】
特開平１０−１５５１５２号公報
【００１１】
【発明が解決しようとする課題】
ところが、以上のように最少パラメータ処理により、発生ビット量を最小にしても、結果として、発生するビット量は０にすることができないため、VBVバッファの占有量が、図２で示すデータ量Ｌ１以下になった場合に最少パラメータによる圧縮処理を行っても、最大発生ビット量Ｌ１以内に１ピクチャ分の発生ビット量の全てが収まり切らず、結果として、１ピクチャ分のデータに不足するデータ量Ｌ２が発生してしまう恐れがあった。
【００１２】
そこで、図３で示すように、VBVバッファにマージンを設けることにより、マージン＋最大発生ビット量と、VBVバッファ占有量との比較から、発生ビット量が、マージン＋最大発生ビット量を超えてしまうような場合、上述のような最少パラメータによる処理を実行することにより、VBVバッファアンダーフローを回避させる方法が提案されている。
【００１３】
すなわち、図４で示すように、VBVバッファの最大容量Max２（＝Max１＋マージン（margin））が設定される。そして、状態Ｓ１’で、最大容量Max２までMPEGビットストリームを蓄え、この状態から１ピクチャ分のデータが引き抜かれると、状態Ｓ２’に変化する。そして、再び、上述と同様に、時間Ｔだけ経過した後、状態Ｓ３’となったところで、再び１ピクチャ分のデータが引き抜かれるとき、VBVバッファの占有量は、マージンとなるレベルまでのデータ量Ｌ１となり、上述のように１ピクチャ分のMPEGビットストリームのデータ量に満たないため、最少パラメータによる圧縮処理が行われることになるが、この際、マージンを見込んでいるため、最少パラメータにより発生するデータ量Ｌ２がマージンにより吸収されることになるため、結果として、VBVバッファアンダーフローが発生しないことになる。
【００１４】
ところで、上述のマージンの設定は、予め所定の複数の設定画像から最少パラメータを求める、いわゆる、チューニング処理により、その最少パラメータにより発生される発生ビット量を求め、最大となるものがマージンとして設定されるようにされている。しかしながら、このようなチューニング処理によるマージンの設定では、既知の複数の設定画面には含まれていない、未知の画面のMPEGビットストリームのデータ量には対応することができない恐れがあり、その未知の画像のMPEGビットストリームのデータ量により最少パラメータの発生ビット量が、マージンとして設定されていた値よりも大きくなる恐れがあり、結果として、VBVバッファアンダーフローの発生を必ずしも抑制することができないという課題があった。
【００１５】
また、マージンは、チューニングに用いる画像によりばらつきが生じてしまうことになるため、必要以上にマージンを大きく設定してしまうことがあり、結果として、VBVバッファアンダーフローは抑制できるものの、設定されたVBVバッファの容量を最大限に利用することができない恐れがあった。
【００１６】
本発明はこのような状況に鑑みてなされたものであり、VBVバッファを最大限に使用できるようにし、VBVバッファアンダーフローを抑制できるようにするものである。
【００１７】
【課題を解決するための手段】
本発明の画像処理装置は、入力された画像のピクチャタイプを判別する判別手段と、画像のピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数およびIピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、画像のピクチャタイプが、Pピクチャ、または、Bピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、スライス数およびスライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算手段と、演算手段により演算された、ピクチャタイプ別のVBVバッファのマージンを記憶する記憶手段と、MPEG方式で画像を圧縮する圧縮手段と、圧縮手段により圧縮された画像情報の最大ビット発生量、および判別手段により判別されたピクチャタイプ別のVBVバッファのマージンの和が、VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出手段と、アンダーフロー検出手段により、VBVバッファアンダーフローが検出された場合、ピクチャタイプがIピクチャであるとき、全てのマクロブロックをDC成分にし、Pピクチャ、または、Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、画像を最少パラメータで圧縮するように前記圧縮手段を制御する制御手段とを備えることを特徴とする。
【００２１】
本発明の画像処理方法は、入力された画像のピクチャタイプを判別する判別ステップと、画像のピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数およびIピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、画像のピクチャタイプが、Pピクチャ、または、Bピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、スライス数およびスライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算ステップと、演算ステップの処理で演算された、ピクチャタイプ別のVBVバッファのマージンを記憶する記憶ステップと、MPEG方式で画像を圧縮する圧縮ステップと、圧縮ステップの処理で圧縮された画像情報の最大ビット発生量、および判別手段により判別されたピクチャタイプ別のVBVバッファのマージンの和が、VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出ステップと、アンダーフロー検出ステップの処理で、VBVバッファアンダーフローが検出された場合、ピクチャタイプがIピクチャであるとき、全てのマクロブロックをDC成分にし、Pピクチャ、または、Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、画像を最少パラメータで圧縮するように圧縮ステップの処理を制御する制御ステップとを含むことを特徴とする。
【００２２】
本発明の記録媒体のプログラムは、入力された画像のピクチャタイプを判別する判別ステップと、画像のピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数およびIピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、画像のピクチャタイプが、Pピクチャ、または、Bピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、スライス数およびスライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算ステップと、演算ステップの処理で演算された、ピクチャタイプ別のVBVバッファのマージンを記憶する記憶ステップと、MPEG方式で画像を圧縮する圧縮ステップと、圧縮ステップの処理で圧縮された画像情報の最大ビット発生量、および判別手段により判別されたピクチャタイプ別のVBVバッファのマージンの和が、VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出ステップと、アンダーフロー検出ステップの処理で、VBVバッファアンダーフローが検出された場合、ピクチャタイプがIピクチャであるとき、全てのマクロブロックをDC成分にし、Pピクチャ、または、Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、画像を最少パラメータで圧縮するように圧縮ステップの処理を制御する制御ステップとを含むことを特徴とする。
【００２３】
本発明のプログラムは、入力された画像のピクチャタイプを判別する判別ステップと、画像のピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数およびIピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンを演算し、画像のピクチャタイプが、Pピクチャ、または、Bピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、スライス数およびスライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンを演算する演算ステップと、演算ステップの処理で演算された、ピクチャタイプ別のVBVバッファのマージンを記憶する記憶ステップと、MPEG方式で画像を圧縮する圧縮ステップと、圧縮ステップの処理で圧縮された画像情報の最大ビット発生量、および判別手段により判別されたピクチャタイプ別のVBVバッファのマージンの和が、VBVバッファの占有量より大きいとき、VBVバッファアンダーフローを検出するアンダーフロー検出ステップと、アンダーフロー検出ステップの処理で、VBVバッファアンダーフローが検出された場合、ピクチャタイプがIピクチャであるとき、全てのマクロブロックをDC成分にし、Pピクチャ、または、Bピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、画像を最少パラメータで圧縮するように圧縮ステップの処理を制御する制御ステップとを含む処理をコンピュータに実行させることを特徴とする。
【００２４】
本発明の画像処理装置および方法、並びにプログラムにおいては、入力された画像のピクチャタイプが判別され、画像のピクチャタイプが、Iピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、マクロブロック数およびIピクチャ内のDC成分により発生するビット量のそれぞれの積和によりVBVバッファのマージンが演算され、画像のピクチャタイプが、Pピクチャ、または、Bピクチャの場合、所定の定数およびパイプライン遅延により発生するビット量、スライス数およびヘッダにより発生するビット量、並びに、スライス数およびスライス内の先頭マクロブロックと最終マクロブロックとのビット量の和のそれぞれの積和によりVBVバッファのマージンが演算され、演算された、ピクチャタイプ別のVBVバッファのマージンが記憶され、MPEG方式で画像が圧縮され、圧縮された画像情報の最大ビット発生量、および判別されたピクチャタイプ別のVBVバッファのマージンの和が、VBVバッファの占有量より大きいとき、VBVバッファアンダーフローが検出され、VBVバッファアンダーフローが検出された場合、ピクチャタイプがIピクチャであるとき、全てのマクロブロックがDC成分にされ、Pピクチャ、または、Bピクチャであるとき、全てのマクロブロックがスキップドマクロブロックにされることにより、画像が最少パラメータで圧縮されるように制御される。
【００２５】
【発明の実施の形態】
図５は、本発明を適用したエンコーダの基本符号化処理部１の一実施の形態の構成を示している。
【００２６】
図５のエンコーダの基本符号化処理部１は、画像データをMPEG方式で符号化し、この符号化データをエンコーダ送出バッファ２に出力する。レート制御部３は、基本符号化処理部１によって画像データをMPEG方式で符号化するときの量子化幅ｑ_scaleを制御している。
【００２７】
ここで、図６を参照して、MPEG方式の符号化処理の概略を説明する。符号化される画像データの各ピクチャは、複数のマクロブロックに分割されて符号化される。１つのマクロブロックは、輝度について、１６×１６画素ブロックのデータ（更に基本符号化処理単位である４つの８×８画素ブロックに分けられる）、色差について、基本符号化処理単位である２つの８×８画素ブロックのデータに分けられ、これらのブロックが符号化される。また、１つのマクロブロックにおいて、マクロブロック内のブロックの符号化方法および量子化幅等が決定される。
【００２８】
スライスは、複数のマクロブロックを含むデータ単位であり、複数のスライスから１つのピクチャが構成される。ピクチャは、その符号化方法として、ピクチャ自体がそのまま符号化されるIピクチャ（イントラピクチャ）、時間的に過去のピクチャからの動きを予測した上で、符号化されるPピクチャ、時間的に過去、および、未来の両方、もしくはいずれか一方のピクチャからの動きを予測した上で、符号化されるBピクチャがある。
【００２９】
図６における各Ｉ，Ｐ，Ｂピクチャの配置は、その典型的な例であり、最初のIピクチャを用いて３枚先のＰピクチャが予測されて符号化され、その間に含まれる各Ｂピクチャが各Ｉ，Ｐピクチャの両方から予測されて符号化されている。したがって、最初にＩピクチャが符号化され、次にＰピクチャが符号化され、更にＢピクチャが符号化されることになる。このために、本来の時間の進行に沿った各Ｉ，Ｐ，Ｂピクチャの順序が変更されてから、これらのピクチャが符号化されることになる。
【００３０】
さらに、Ｉピクチャから始まる複数のピクチャからなるＧＯＰ（グループオブピクチャ）が構成され、任意の数のＧＯＰで１つのビデオシーケンスが構成される。
【００３１】
ピクチャタイプ決定部１１は、入力された画像の各ピクチャのピクチャタイプを判別して決定し、符号化する順番にならび替え、並び替えた状態で走査変換部１２、および、動き検出部２１に出力する。また、ピクチャタイプ決定部１１は、決定したピクチャタイプと共に、そのピクチャのMB（マクロブロック）数、スライス数、および、クロマフォーマットの情報をレート制御部３に出力する。
【００３２】
走査変換部１２は、並び替えられたピクチャを符号化される単位であるマクロブロックに変換し、これらのマクロブロックを順次減算器１３に出力する。減算器１３は、走査変換部１２より入力されたマクロブロックと動き補償付き予測部１９からの予測データとの差分を求め、この差分を予測誤差として求め、DCT（Discrete Cosine Transform）変換部１４に出力する。
【００３３】
DCT変換部１４は、モード判定部２０からのモード判定結果に基づいて、この予測誤差を８×８画素ブロック単位でDCT変換し、このDCT変換により得られた各変換係数を重み付け量子化部１５に出力する。
【００３４】
重み付け量子化部１５は、レート制御部３より入力される量子化幅q_scaleに基づいて、各変換係数を量子化し、これにより得た量子化データを、可変長符号化部１６および逆量子化部１７に出力する。また、重み付け量子化部１５は、レート制御部３より、最少パラメータによる符号化の指令を受信した場合、上述のように最少パラメータによる符号化処理を実行し、Iピクチャに対しては、DC成分のみを符号化し、Pピクチャ、または、Ｂピクチャに対しては、スキップドマクロブロックによる符号化を行い、符号化量を小さくする。
【００３５】
可変長符号化部１６は、モード判定部２０からのモード判定結果、および、動き検出部２１からの動きベクトルに基づいて、量子化データを可変長符号化して、圧縮符号化された画像データを形成し、この圧縮符号化された画像データを、所望の伝送レートで伝送するためにエンコーダ送出バッファ２に一旦蓄積させて出力する。より詳細には、可変長符号化部１６は、各マクロブロックの符号化が終了する度に、MBエンドタイミング信号をレート制御部３に送出す共に、１ピクチャの符号化が開始する度に、ピクチャ開始タイミング信号をレート制御部３へ送る。
【００３６】
逆量子化部１７は、重み付け量子化された画像データを逆量子化して、逆DCT変換部１８に出力する。逆DCT変換部１８は、入力された逆量子化されている画像データを逆DCT変換し、加算器２２に出力する。
【００３７】
加算器２２は、動き補償付き予測部１９から入力される予測データと、逆DCT変換された画像データを加算して、動き補償付き予測部１９に出力する。動き補償付き予測部１９は、加算器２２より入力される予測データが加算された、再生された画像データ、動き検出部２１より入力された動きベクトル、および、モード判定部２０より入力されるモード判定結果に基づいて、動きが予測されたピクチャを示す予測データを形成し、減算器１３、および、加算器２２に出力する。
【００３８】
動き検出処理部２１は、各マクロブロック毎に、画像の動きベクトルを算出し、この動きベクトルを動き補償付き予測部１９に入力するとともにモード判定部２０に出力する。
【００３９】
モード判定部２０は、動き検出部２１から入力された動きベクトルに基づいて、動き補償予測モードを決定し、DCT変換部１４、可変長符号化部１６、および、動き補償付き予測部１９に出力する。
【００４０】
レート制御部３は、ピクチャタイプ決定部１１より入力されてくるピクチャタイプ、MB数、スライス数、およびクロマフォーマットの情報に基づいて、上述のVBVバッファのマージンサイズを決定し、可変長符号化部１６から出力されたビットストリームのビット発生量からVBVバッファアンダーフローの有無を判定すると共に、VBVバッファアンダーフロー判定結果に応じて、重み付け量子化部１５に対して、上述の最少パラメータによる処理を実行するように指令を出力する。
【００４１】
次に、図７のブロック図を参照して、図５のレート制御部３の詳細な構成について説明する。
【００４２】
制御部４１は、MBエンドタイミング信号が入力される度に、可変長符号化部１６からのビットストリームに基づいて１マクロブロック当たりの実際のビット発生量を求め、VBVバッファの占有量として加算して、VBVバッファアンダーフロー判定部４２に供給すると共に、VBVバッファの占有量に基づいて、各マクロブロック毎に、量子化幅ｑ_scaleを求め、この量子化幅ｑ_scaleを基本符号化処理部１の重みづけ量子化部処理部１５に供給する。
【００４３】
より詳細には、制御部４１は、入力されるMBエンドタイミング信号、および、ピクチャ開始タイミング信号に基づいて、MBエンドタイミング信号の度に、MBの計数値に基づいて１マクロブロック当たりの実際のビット発生量を求め、VBVバッファの占有量として加算する。
【００４４】
VBVバッファアンダーフロー判定部４２は、ピクチャタイプ決定部１１より入力されるピクチャタイプ、MB数、および、スライス数に基づいて、演算部４３を制御して、VBVバッファの最大値を設定する際のIピクチャ、および、B、または、Pピクチャに対応するマージンを演算させマージンサイズメモリ４４に記憶させる。また、VBVバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に記憶されたマージンサイズに基づいて、VBVバッファの最大値（図４で示した最大値Max２）を設定し、制御部４１により求められたVBVバッファの占有量を監視し、VBVバッファアンダーフローとなるか否かを判定する。そして、VBVバッファアンダーフロー判定部４２は、その判定結果に応じて、VBVバッファアンダーフローの状態に近づくと、アンダーフロー判定結果を重み付け量子化部１５に出力する。
【００４５】
次に、演算部４３によるマージンサイズの演算方法について説明する。
【００４６】
マージンサイズは、最少パラメータを用いた圧縮方法により必ず発生する発生ビット量を設定すればよいことになる。従って、Iピクチャの場合、以下の式（１）で示す発生ビット量がマージンMargin_Ipictureとして演算されることになる。
【００４７】
Margin_Ipicture＝α×GB_MB＋β×GB_HD＋γ×GB_DC      ・・・（１）
【００４８】
ここで、GB_MBはチップ内のパイプライン遅延により発生するビット量を、GB_HDは、ヘッダにより発生するビット量を、さらに、GB_DCは、Iピクチャ内のDC成分により発生するビット量をそれぞれ示している。αは、制御することができずに、発生してしまうマクロブロック数（ハードウェアに依存する定数）を示している（ビット発生量を制御するCPUが1 MB毎に発生ビット量を検出するまでの時間内に発生してしまう（制御することができない）MB数）。βは、スライス数、γは、マクロブロック数をそれぞれ示している。
【００４９】
一方、Bピクチャ、または、Pピクチャの場合、以下の式（２）で示す発生ビット量がマージンMargin_B/Ppictureとして演算されることになる。
【００５０】
Margin_B/Ppicture＝α×GB_MB＋β×GB_HD＋βGB_SMB    ・・・（２）
【００５１】
ここで、GB_SMBは、スライス内の第１MBのビット量と最終MBのビット量の和を示している。
【００５２】
例えば、クロマフォーマットがａ：ｂ：ｃである場合、GB_MBは、以下のように求められる。
【００５３】
GB_MB＝（DCT係数の最大ビット量）×（ａ＋ｂ＋ｃ）
×（１ブロックの画素数）＋（MBヘッダの発生ビット数）・・・（３）
【００５４】
ここで、DCT係数の最大ビット量は、例えば、ITU-T Rec.H.262(2000E)に規定されているFirst_DCT_coeficient（非イントラブロック（インターブロック）の第１非零DCT係数）、または、Subsequent_DCT_coeficients（後続のDCT係数）の最大値である。尚、上述の最大値は、インターマクロブロックの値であるが、イントラマクロブロックの値よりは大きなものであるので、全てにおいて、その値を使用するものとしてもよい。ITU-T Rec.H.262(2000E)においては、First_DCT_coeficientが、２乃至２４ビット、Subsequent_DCT_coeficients３乃至２４ビットと規定されているので、２４ビットとするようにしてもよい（ITU-T Rec.H.262(2000E)の第３６頁６．２．６章参照）。
【００５５】
１ブロックの画素数は、MPEG２においては、８画素×８画素であるので６４である。
【００５６】
また、MBヘッダの発生ビット量は、例えば、ITU-T Rec.H.262(2000E)で規定されるMPEG２である場合、macroblock_address_increment（現MBアドレスと前MBアドレスの差）、quantiser_scale_code（MB量子化スケールコード）、marker_bit（マーカ）、macroblock type（マクロブロックのタイプ）、spatial_temporal_weight_code（アップサンプル用の時空間重み付けコード）、frame_motion_type（フレーム構造の動き補償タイプ）、dct_type（DCTのタイプ（フレームorフィールド）、motion_vertical_field_select[0][s]（予測に用いる参照フィールドの選択情報）、motion_vertical_field_select[1][s] （予測に用いる参照フィールドの選択情報）、motion_code[0][s][0]（動きベクトルがmotion_vector(0, s)である場合の基本差分動きベクトル）、motion_residual[0][s][0]（動きベクトルがmotion_vector(0, s)である場合の残差ベクトル）、dmvector[0]（動きベクトルがmotion_vector(0, s)である場合のデュアルプライム用差分ベクトル）、motion_code[0][s][1] （動きベクトルがmotion_vector(0, s)である場合の基本差分動きベクトル）、motion_residual[0][s][1] （動きベクトルがmotion_vector(0, s)である場合の残差ベクトル）、dmvector[1] （動きベクトルがmotion_vector(0, s)である場合のデュアルプライム用差分ベクトル）、motion_code[1][s][0]（動きベクトルがmotion_vector(1, s)である場合の基本差分動きベクトル）、motion_residual[1][s][0] （動きベクトルがmotion_vector(1, s)である場合の残差ベクトル）、dmvector[0]（動きベクトルがmotion_vector(1, s)である場合のデュアルプライム用差分ベクトル）、motion_code[1][s][1] （動きベクトルがmotion_vector(1, s)である場合の基本差分動きベクトル）、motion_residual[1][s][1] （動きベクトルがmotion_vector(1, s)である場合の残差ベクトル）、dmvector[1] （動きベクトルがmotion_vector(1, s)である場合のデュアルプライム用差分ベクトル）、coded_block_pattern_420（コードブロックパターン）、および、coded_block_pattern_2（コードブロックパターン）といったもののそれぞれのビット量の合計である。尚、ｓは、０である場合、前方向予測を示し、１である場合、双方向予測を示すパラメータであるが、いずれであってもよいため、ｓのまま表示されている。
【００５７】
ITU-T Rec.H.262(2000E)の場合、macroblock_address_increment（現MBアドレスと前MBアドレスの差）が1ビット、quantiser_scale_code（MB量子化スケールコード）が５ビット、marker_bit（マーカ）が1ビット、macroblock type（マクロブロックのタイプ）が9ビット、spatial_temporal_weight_code（アップサンプル用の時空間重み付けコード）が２ビット、frame_motion_type（フレーム構造の動き補償タイプ）が２ビット、dct_type（DCTのタイプ（フレームorフィールド）が1ビット、motion_vertical_field_select[0][s]（予測に用いる参照フィールドの選択情報）が1ビット、motion_vertical_field_select[1][s] （予測に用いる参照フィールドの選択情報）が1ビット、motion_code[0][s][0]（動きベクトルがmotion_vector(0, s)である場合の基本差分動きベクトル）が１１ビット、motion_residual[0][s][0]（動きベクトルがmotion_vector(0, s)である場合の残差ベクトル）が８ビット、dmvector[0]（動きベクトルがmotion_vector(0, s)である場合のデュアルプライム用差分ベクトル）が２ビット、motion_code[0][s][1] （動きベクトルがmotion_vector(0, s)である場合の基本差分動きベクトル）が１１ビット、motion_residual[0][s][1] （動きベクトルがmotion_vector(0, s)である場合の残差ベクトル）が８ビット、dmvector[1] （動きベクトルがmotion_vector(0, s)である場合のデュアルプライム用差分ベクトル）が２ビット、motion_code[1][s][0]（動きベクトルがmotion_vector(1, s)である場合の基本差分動きベクトル）が１１ビット、motion_residual[1][s][0] （動きベクトルがmotion_vector(1, s)である場合の残差ベクトル）が８ビット、dmvector[0]（動きベクトルがmotion_vector(1, s)である場合のデュアルプライム用差分ベクトル）が２ビット、motion_code[1][s][1] （動きベクトルがmotion_vector(1, s)である場合の基本差分動きベクトル）が１１ビット、motion_residual[1][s][1] （動きベクトルがmotion_vector(1, s)である場合の残差ベクトル）が１１ビット、dmvector[1] （動きベクトルがmotion_vector(1, s)である場合のデュアルプライム用差分ベクトル）が２ビット、coded_block_pattern_420（コードブロックパターン）が９ビット、coded_block_pattern_2（コードブロックパターン）が６ビットにそれぞれ規定されているので、その合計である１２０ビットとするようにしてもよい（ITU-T Rec.H.262(2000E)の第３３乃至３６頁 ６．２．５章参照）。
【００５８】
チップ内のパイプライン遅延により発生するビット量GB_MBは、例えば、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、クロマフォーマットが４：２：０のとき、以下に示す式（４）のように求められる。
【００５９】
GB_MB＝２４×（４＋２＋０）×６４＋１２０＝９３３６（ビット）・・・（４）
【００６０】
また、クロマフォーマットが４：２：２のときは、以下に示す式（５）のように求められる。
【００６１】
GB_MB＝２４×（４＋２＋２）×６４＋１２０＝１２４０８（ビット）・・・（５）
【００６２】
さらに、GM_HDは、ヘッダのビット量であるので、例えば、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合（Vertical_size≦1088であるものとすると）、slice_start_code（スライススタートコード＋スライス垂直位置）、q_scale_code（量子化スケールコード）、および、extra_bit_slice（スライスの拡張ビット）などのの合計ビット量となる。尚、ITU-T Rec.H.262(2000E)において、slice_start_codeは32ビット、q_scale_codeは５ビット、extra_bit_sliceは１ビットに、それぞれ規定されているので、その合計ビット量である、GM_HD＝３８ビットがヘッダのビット量GB_MBの固定値とされるようにしてもよい（ITU-T Rec.H.262(2000E)の第３２ページ ６．２．４章参照）。
【００６３】
また、GB_DCは、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、クロマフォーマットがａ：ｂ：ｃのとき、Iピクチャであることからpicture_coding_type＝I pictureとなり、motion vectorは存在しないことを前提として以下の式（６）のように定義される。
【００６４】
GB_DC＝macroblock_address_increment＋macroblock_mode
＋dct_dc_size_luminance×ａ
＋dct_dc_diff_luminance×ａ
＋dct_dc_size_chrominance×（ｂ＋ｃ）
＋dct_dc_diff_chrominance×（ｂ＋ｃ）
＋end_of_block×（ａ＋ｂ＋ｃ）            ・・・（６）
【００６５】
ここで、macroblock_address_incrementは、現MBアドレスと前MBアドレスの差であり、macroblock_modeは、macroblock_typeとdct_typeの和であり、それぞれ、マクロブロックの符号化タイプと、DCTタイプを示している。
【００６６】
また、dct_dc_size_luminanceは、DCT輝度DC係数差分サイズを、dct_dc_diff_luminanceは、DCT輝度DC係数差分値を、dct_dc_size_ chrominanceは、DCT色差DC係数差分サイズを、dct_dc_diff_chrominanceは、DCT色差DC係数差分値を、end_of_blockは、ブロック内DCT係数終了フラグをそれぞれ示している。
【００６７】
例えば、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、macroblock_address_incrementは1ビットに、macroblock_modeは2ビットに、dct_dc_size_luminanceは9ビットに、dct_dc_diff_luminanceは１１ビットに、dct_dc_size_ chrominanceは１０ビットに、dct_dc_diff_chrominanceは１１ビットに、end_of_blockは4ビットにそれぞれ規定されている（ITU-T Rec.H.262(2000E)の第３３，３４，３６頁 ６．２．５章、６．２．５．１章、６．２．６章参照）。このため、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、クロマフォーマットが４：２：０のとき、DC成分GB_DCは、以下の式（７）のように演算される。
【００６８】
GB_DC＝１＋２＋９×４＋１１×４＋１０×２＋１１×２＋４×６
＝１４９                                          ・・・（７）
【００６９】
また、クロマフォーマットが４：２：２のとき、DC成分GB_DCは、以下の式（８）のように演算される。
【００７０】
GB_DC＝１＋２＋９×４＋１１×４＋１０×４＋１１×４＋４×８
＝１９９                                          ・・・（８）
【００７１】
さらに、スライス内の第１MBのビット量と最終MBのビット量の和GB_SMBは、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、以下の式（９）のように定義される。
【００７２】
0004264535.tif 000002
【００７３】
ここで、macroblock_escape_Fは第１MBのMBアドレス拡張用のビット量を、macroblock_address_increment_Fは第１MBの現MBアドレスと前MBアドレスの差を、q_scale_codeは第１MBのｑスケールコードを、macroblock_type_Fは第１MBのMB符号化タイプを、frame(or field)_motion_type_Fは、フレーム構造の（または、フィールド構造の）動き補償タイプを、motion_vector_Fは、第１MBの動きベクトルのビット量を示しており、_Lが_Fに代えて付されているものは、対応するそれぞれの最終MBのビット量を示している。
【００７４】
ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、macroblock_escape_Fは０ビットに、macroblock_address_increment_Fは１ビットに、q_scale_codeは５ビットに（sliceの第１MBはq_scale_codeが必要となる）、macroblock_type_Fは６ビットに（ITU-T Rec.H.262(2000E)の第122頁の Table B.2乃至B.4より、frame_motion_type_Fまたはfield_motion_type_Fは２ビットに、motion_vector_Fは３ビット（motion_vertical_field_select[0][s]、motion_code[r][s][0]、および、motion_code[r][s][1]がそれぞれ１ビットずつ）に、macroblock_escape_Lは１１ビットに、macroblock_address_increment_Lは８ビットに、macroblock_type_Lは３ビットに、frame_motion_type_L、または、field_motion_type_Lは２ビットに、motion_vector_Lは３ビットに（motion_vertical_field_select[0][s]、motion_code[r][s][0]および、motion_code[r][s][1]が１ビットずつ）それぞれ、規定されている（ITU-T Rec.H.262(2000E)の第３３，３４頁 ６．２．５章、６．２．５．１章、６．２．５．２章参照）。
【００７５】
このため、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、スライス内の第１MBのビット量と最終MBのビット量の和GB_SMBは、以下の式（１０）のように求められる。
【００７６】
0004264535.tif 000003
【００７７】
式（１０）より、スライス内の第１MBのビット量と最終MBのビット量の和GB_SMBは、４４ビットの固定値となる。
【００７８】
以上をまとめると、例えば、ITU-T Rec.H.262(2000E)により規定されるMPEG２の場合、クロマフォーマットが、４：２：０、および、４：２：２であるとき、Iピクチャのマージンは、式（１）に基づいて、以下の式（１１），式（１２）で、それぞれ求められることになる。
【００７９】
Margin_Ipicture＝９３３６α＋３８β＋１４９γ          ・・・（１１）
Margin_Ipicture＝１２４０８α＋３８β＋１９９γ        ・・・（１２）
【００８０】
また、同様にして、Bピクチャ、または、Pピクチャのマージンは、クロマフォーマットが、４：２：０、および、４：２：２であるとき、式（２）に基づいて、以下の式（１３），式（１４）で、それぞれ求められることになる。
【００８１】
0004264535.tif 000004
【００８２】
このように、マージンは、クロマフォーマットが確定すると、ハードウェアにより制御できないMB数α、スライス数β、および、MB数γに基づいて、算出することが可能となる。ここで、MB数αは、ハードウェア固有の値として設定されるため、その値は、予め設定される。
【００８３】
また、演算部４３は、Iピクチャ、並びに、Bピクチャ、または、Pピクチャ毎に、クロマフォーマットに対応した係数を予め内蔵するメモリに記憶しており、ピクチャタイプ決定部１１より入力されるクロマフォーマットとピクチャタイプの情報に基づいてその係数を読み出すと共に、同時にピクチャタイプ決定部１１より送信されてくるスライス数、および、MB数の情報に基づいて、マージンを計算し、マージンサイズメモリ４４に記憶させる。
【００８４】
１つのストリームにおいては、スライス数やMB数は変化しないため、演算部４３は、Iピクチャ、並びに、Pピクチャ、または、Bピクチャが最初に入力されたときにのみ、マージンの計算を行ってマージンサイズメモリ４４に記憶させる。VBVアンダーフロー判定部４２は、上述のように演算されてサイズメモリ４４に記憶されているマージンを用いてVBVアンダーフローの有無を判定する。
【００８５】
次に、図８のフローチャートを参照して、レート制御部３によるVBVバッファアンダーフロー監視処理について説明する。
【００８６】
ステップＳ１において、レート制御部３のVBVバッファアンダーフロー判定部４２は、ピクチャタイプ決定部１１より入力されてくるピクチャタイプ、MB数、スライス数、および、クロマフォーマットの情報を取得する。
【００８７】
ステップＳ２において、VBVバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に、既に、マージンサイズが演算されているか否かを判定する。このとき、VBVバッファアンダーフロー判定部４２は、ステップＳ１において、取得したピクチャタイプのマージンサイズが既に演算されて、記憶されているか否かを判定する。
【００８８】
ステップＳ２において、マージンサイズが演算されていないと判定された場合、ステップＳ３において、VBVバッファアンダーフロー判定部４２は、演算部４３に取得したピクチャタイプ、MB数、スライス数、および、クロマフォーマットの情報を供給し、上述の式（１）、または、式（２）の演算を実行させ、演算結果をマージンサイズメモリ４４に記憶させる。
【００８９】
ステップＳ４において、VBVバッファアンダーフロー判定部４２は、入力された画像がIピクチャであるか否かを判定し、例えば、Iピクチャであると判定された場合、その処理は、ステップＳ５に進む。
【００９０】
ステップＳ５において、VBVバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に記憶されているIピクチャのマージンサイズを読み出す。
【００９１】
ステップＳ６において、VBVバッファアンダーフロー判定部４２は、VBVバッファの占有量が、引き出されるピクチャの最大発生ビット量MaxGenBitとマージンとの和よりも大きいか否かを判定し、例えば、VBVバッファの占有量が、引き出されるピクチャの最大発生ビット量MaxGenBitとマージンとの和よりも大きくない、すなわち、VBVバッファの占有量が、引き出されるピクチャの最大発生ビット量MaxGenBitとマージンとの和よりも小さいと判定された場合、その処理は、ステップＳ７に進む。
【００９２】
ステップＳ７において、VBVバッファアンダーフロー判定部４２は、VBVバッファアンダーフローが発生するとみなし、重み付け量子化部１５に対して、最少パラメータ処理を実行するように指令する。
【００９３】
ステップＳ８において、VBVバッファアンダーフロー判定部４２は、次のピクチャが存在するか否かを判定し、次のピクチャが存在する場合、その処理は、ステップＳ１に戻り、次のピクチャが存在しない場合、ステップＳ９において、マージンサイズメモリ４４をリセットして、その処理を終了する。
【００９４】
また、ステップＳ２において、マージンサイズが演算されている、すなわち、Ｉピクチャが入力された場合、Ｉピクチャのマージンサイズが、また、Ｐピクチャ、または、Ｂピクチャのマージンサイズが入力された場合、Ｐピクチャ、または、Ｂピクチャのマージンサイズが、既に、演算されているとき、ステップＳ３の処理は、スキップされる。
【００９５】
さらに、ステップＳ４において、Ｉピクチャではない、すなわち、Ｂピクチャ、または、Ｐピクチャであった場合、ステップＳ１０において、VBVバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に記憶されているＢピクチャ、または、Ｐピクチャのマージンサイズを読み出す。
【００９６】
また、ステップＳ６において、VBVバッファの占有量が、引き出されるピクチャの最大発生ビット量MaxGenBitとマージンとの和よりも大きいと判定された場合、ステップＳ７の処理はスキップされ、その処理は、ステップＳ８に進む。
【００９７】
すなわち、以上の処理をまとめると、ステップＳ３により、演算部４３が、Ｉピクチャ、もしくは、Ｐピクチャ、または、Ｂピクチャのマージンサイズを演算する。このとき、演算部４３は、上述のように、クロマフォーマットに対応する係数GB_MB、GB_HD、GB_DCを予め記憶しているので、ステップＳ１の処理で取得されるクロマフォーマットとピクチャタイプの情報に応じて選択し、さらに、予め設定されている、発生してしまうMB数αと、ステップＳ１の処理で取得されたスライス数β、および、MB数γを用いて、式（１）、または、式（２）を演算してマージンサイズを演算する。
【００９８】
ただし、ステップＳ２の処理により、マージンサイズメモリ４４に記憶されたピクチャタイプのマージンサイズは、ステップＳ３がスキップされることにより、それ以降の処理においては、演算されないことになるので、１ストリームの処理については、ピクチャタイプ毎に１回だけ演算されることになる。
【００９９】
ステップＳ５，Ｓ１０において、ピクチャタイプ毎にマージンサイズが読み出される。そして、ステップＳ６において、最大発生ビット量MexGenBitと読み出されたマージンサイズの和が、VBVバッファの占有量と比較され、VBVバッファの占有量が、引き出されるピクチャの最大発生ビット量MaxGenBitとマージンの和よりも小さい場合、最少パラメータ処理がなされるように指令が出される。
【０１００】
結果として、これまで、経験的に設定されていたマージンが、ストリーム毎に発生される最大のビット量として演算されて設定されることになるので、過不足のないマージン設定が可能となるため、VBVバッファを最大限利用することができ、VBVバッファのアンダーフローの発生をほぼ１００％抑制することが可能となる。
【０１０１】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
【０１０２】
図９は、エンコーダをソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU１０１は、パーソナルコンピュータの全体の動作を制御する。また、CPU１０１は、バス１０４および入出力インタフェース１０５を介してユーザからキーボードやマウスなどからなる入力部１０６から指令が入力されると、それに対応してROM(Read Only Memory)１０２に格納されているプログラムを実行する。あるいはまた、CPU１０１は、ドライブ１１０に接続された磁気ディスク１１１、光ディスク１１２、光磁気ディスク１１３、または半導体メモリ１１４から読み出され、記憶部１０８にインストールされたプログラムを、RAM(Random Access Memory)１０３にロードして実行する。これにより、上述したエンコーダの機能が、ソフトウェアにより実現されている。さらに、CPU１０１は、通信部１０９を制御して、外部と通信し、データの授受を実行する。
【０１０３】
プログラムが記録されている記録媒体は、図９に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１１１（フレキシブルディスクを含む）、光ディスク１１２（CD-ROM(Compact Disk-Read Only Memory)，DVD（Digital Versatile Disk）を含む）、光磁気ディスク１１３（MD（Mini-Disc）を含む）、もしくは半導体メモリ１１４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM１０２や、記憶部１０８に含まれるハードディスクなどで構成される。
【０１０４】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【０１０５】
【発明の効果】
本発明によれば、VBVバッファを最大限利用することができ、VBVバッファアンダーフローをほぼ１００％抑制することが可能となる。
【図面の簡単な説明】
【図１】  VBVバッファを説明する図である。
【図２】  VBVバッファアンダーフローを説明する図である。
【図３】  VBVバッファのマージンを説明する図である。
【図４】  VBVバッファのマージンを説明する図である。
【図５】本発明を適用したエンコーダの構成を示すブロック図である。
【図６】図５のエンコーダによる処理を説明する図である。
【図７】図５のレート制御部の構成を示すブロック図である。
【図８】図７のレート制御部によるVBVバッファアンダーフロー監視処理を説明するフローチャートである。
【図９】媒体を説明する図である。
【符号の説明】
１  基本符号化処理部，  ２  エンコーダ送出バッファ，３  レート制御部，
１１  ピクチャタイプ決定部，  １２  走査変換部，  １４  DCT変換部，
１５  重み付け量子化部，  １６  可変長符号化部，  ２０  モード判定部，
４１  制御部，  ４２  VBVバッファアンダーフロー判定部，  ４３  演算部，
４４  マージンサイズメモリ
【図１】
0004264535.tif 000005
【図２】
0004264535.tif 000006
【図３】
0004264535.tif 000007
【図４】
0004264535.tif 000008
【図５】
0004264535.tif 000009
【図６】
0004264535.tif 000010
【図７】
0004264535.tif 000011
【図８】
0004264535.tif 000012
【図９】
0004264535.tif 000013