(57)【要約】【課題】ＶＢＶバッファアンダーフローを抑制する。【解決手段】ＶＢＶバッファアンダーフロー判定部４２は、入力された画像のピクチャタイプ、マクロブロック（ＭＢ）数、スライス数、および、フォーマットの情報を取得し、演算部４３にその情報を供給して、ＶＢＶバッファのマージンを演算させる。演算部４３は、マージンを演算して、マージンサイズメモリ４４に記憶させる。ＶＢＶバッファアンダーフロー判定部４２は、入力されたピクチャタイプに応じて、マージンサイズメモリ４４からマージンを読出し、１ピクチャで発生する最大発生ビット量との和と、ＶＢＶバッファの占有量とを比較して、ＶＢＶバッファのアンダーフローの有無を判定し、ＶＢＶバッファアンダーフローが発生すると判定した場合、最少パラメータ処理を実行するように指令を出す。本発明は、ＭＰＥＧエンコーダに適用することができる。【選択図】      図７
2004241879.tif 000002
【特許請求の範囲】
【請求項１】
ＭＰＥＧ方式で画像を圧縮し、送信する画像処理装置において、
入力された前記画像のピクチャタイプを判別する判別手段と、
前記画像に基づいて、前記ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算手段と、
前記演算手段により演算された、前記ピクチャタイプ別のＶＢＶバッファのマージンを記憶する記憶手段と、
ＭＰＥＧ方式で前記画像を圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像情報、前記判別手段により判別されたピクチャタイプ、および前記ＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出手段と、
前記アンダーフロー検出手段により、前記ＶＢＶバッファアンダーフロー有りが検出された場合、前記画像を最少パラメータで圧縮するように前記圧縮手段を制御する制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記演算手段は、前記画像に基づいて、前記ピクチャタイプがＩピクチャの場合と、Ｐピクチャ、または、Ｂピクチャの場合の、それぞれのＶＢＶバッファのマージンを演算する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ＶＢＶバッファのマージンは、前記制御手段が、前記画像を最少パラメータで圧縮するように前記圧縮手段を制御する場合に発生する最小のビット量である
ことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記制御手段は、前記ピクチャタイプがＩピクチャであるとき、全てのマクロブロックをＤＣ成分にし、Ｐピクチャ、または、Ｂピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、前記画像を最少パラメータで圧縮するように前記圧縮手段を制御する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項５】
ＭＰＥＧ方式で画像を圧縮し、送信する画像処理装置の画像処理方法において、
入力された前記画像のピクチャタイプを判別する判別ステップと、
前記画像に基づいて、前記ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算ステップと、
前記演算ステップの処理で演算された、前記ピクチャタイプ別のＶＢＶバッファのマージンを記憶する記憶ステップと、
ＭＰＥＧ方式で前記画像を圧縮する圧縮ステップと、
前記圧縮ステップの処理で圧縮された画像情報、前記判別ステップの処理で判別されたピクチャタイプ、および前記ＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出ステップと、
前記アンダーフロー検出ステップの処理で、前記ＶＢＶバッファアンダーフロー有りが検出された場合、前記画像を最少パラメータで圧縮するように前記圧縮ステップの処理を制御する制御ステップと
を含むことを特徴とする画像処理方法。
【請求項６】
ＭＰＥＧ方式で画像を圧縮し、送信する画像処理をコンピュータに行わせるプログラムにおいて、
入力された前記画像のピクチャタイプを判別する判別ステップと、
前記画像に基づいて、前記ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算ステップと、
ＭＰＥＧ方式で前記画像を圧縮する圧縮ステップと、
前記圧縮ステップの処理で圧縮された画像情報、前記判別ステップの処理で判別されたピクチャタイプ、および前記ＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出ステップと、
前記アンダーフロー検出ステップの処理で、前記ＶＢＶバッファアンダーフロー有りが検出された場合、前記画像を最少パラメータで圧縮するように前記圧縮ステップの処理を制御する制御ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項７】
ＭＰＥＧ方式で画像を圧縮し、送信する画像処理をコンピュータに行わせるプログラムにおいて、
入力された前記画像のピクチャタイプを判別する判別ステップと、
前記画像に基づいて、前記ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算ステップと、
ＭＰＥＧ方式で前記画像を圧縮する圧縮ステップと、
前記圧縮ステップの処理で圧縮された画像情報、前記判別ステップの処理で判別されたピクチャタイプ、および前記ＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出ステップと、
前記アンダーフロー検出ステップの処理で、前記ＶＢＶバッファアンダーフロー有りが検出された場合、前記画像を最少パラメータで圧縮するように前記圧縮ステップの処理を制御する制御ステップと
を含む処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置および方法、記録媒体、並びにプログラムに関し、特に、画像情報をＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式で圧縮する際のＶＢＶ（Ｖｉｄｅｏ  Ｂｕｆｆｅｒ  Ｖｅｒｉｆｉｅｒ）バッファアンダーフローを抑制できるようにした画像処理装置および方法、記録媒体、並びにプログラムに関する。
【０００２】
【従来の技術】
近年、ＭＰＥＧ方式による画像圧縮伸張技術が一般に普及している。
【０００３】
画像がＭＥＰＧ方式で圧縮されることにより、ＭＰＥＧビットストリームが生成され、その生成されたＭＰＥＧビットストリームが伝送路を介して受信側の装置に送信される。この際、ＭＰＥＧ方式で画像を圧縮して、送信する送信側の装置は、これから送信しようとするＭＰＥＧビットストリームが受信側の装置で、十分に再生可能なものであるか否かを監視しつつ送信している。
【０００４】
より詳細には、図１で示すように、送信側の装置、すなわちエンコーダは、受信側の装置（デコーダ）がＭＰＥＧビットストリームを受信する際に使用するバッファの状態をＶＢＶバッファにより仮想的に再現して、バッファオーバーフローやバッファアンダーフローが発生しないように監視しつつエンコードしている。
【０００５】
すなわち、ＶＢＶバッファの占有量は、図２で示すように変化することになる。ここで、図２においては、縦軸がＶＢＶバッファの占有量を示し、横軸が時間を示す。従って、図２における直線の傾きは、ビットレートを示す。ＶＢＶバッファは、その最大容量（図中のＭａｘ１）までＭＰＥＧビットストリームが入ると占有量は状態Ｓ１となる。この状態Ｓ１のＶＢＶバッファから１ピクチャ（Ｉピクチャ（イントラピクチャ）、Ｐピクチャ（前方向予測ピクチャ）、または、Ｂピクチャ（双方向予測ピクチャ））分のＭＰＥＧビットストリームがデコードのために引き抜かれると、状態は、状態Ｓ１から状態Ｓ２に変化する。１ピクチャ分の発生量がＶＢＶバッファの下限を超えない場合、デコーダは１ピクチャ分のデータを全て受け取ることができるので正常にデコードできることになる。
【０００６】
続いて、時間Ｔ（＝  １／フレームレート）が経過した後、ＶＢＶバッファにＭＰＥＧビットストリームが入れられると占有量は状態Ｓ３となる。ここでＶＢＶバッファから１ピクチャ分のＭＰＥＧビットストリームが引き抜かれる場合、図中のデータ量（Ｌ１＋Ｌ２）が１ピクチャ分のデータ量であるとき、状態Ｓ３においては、図中データ量Ｌ１分のデータしかＶＢＶバッファには蓄えられておらず、状態Ｓ４で示すようにＭＰＥＧビットストリームの状態は、１ピクチャ分のＭＰＥＧビットストリームに対してデータ量Ｌ２が不足した状態となり、ＭＰＥＧビットストリームが途切れてしまうことになる。このため、ストリームの受信側の装置となるデコーダでは１ピクチャ分のデコードが途中でできなくなってしまう。このように、ＶＢＶバッファにおいて、蓄えられるデータ量が、１ピクチャ分に満たない状態となり、デコードが不能になってしまう状態をＶＢＶバッファアンダーフローと呼ぶ。
【０００７】
エンコーダは、ＶＢＶバッファアンダーフローが生じないように、状態Ｓ３の時点で、１ピクチャの発生量を最大発生ビット量（ＭａｘＧｅｎＢｉｔ＝Ｌ１）以内に抑えるようにストリームを制御し、ＶＢＶバッファアンダーフローが生じないようにエンコードしている。
【０００８】
ＶＢＶバッファアンダーフローを生じないようにエンコードする（１ピクチャの発生量を最大発生ビット量（ＭａｘＧｅｎＢｉｔ＝Ｌ１）以内に抑えるようにストリームを制御しつつエンコードする）方法の一つとして、１フレームのビット発生量を抑えるためマクロブロック（ＭＢ）単位でエンコードにより生じるパラメータを必要最小限（最少パラメータ）にして、圧縮処理（以下、最少パラメータ処理と称する）することが提案されている。この最少パラメータ処理はピクチャタイプによって異なり、Ｉピクチャの場合、全てのＭＢのＤＣ（Ｄｉｒｅｃｔ  Ｃｕｒｒｅｎｔ）成分のみのパラメータとする処理を実行し、Ｂピクチャ、または、Ｐピクチャの場合、全てのＭＢをスキップドマクロブロック（ｓｋｉｐｐｅｄ  ＭＢ）にする処理を実行する。ここで、スキップドマクロブロックとは、各ピクチャにおける、各スライスの第１マクロブロックヘッダ（ＭＢヘッダ）と各スライスの最終ＭＢヘッダのみから構成されるデータである。
【０００９】
また、再生画像の画質を安定させつつ、目標ビットレートで符号化できるようにするものがある（例えば、特許文献１参照）。
【００１０】
【特許文献１】
特開平１０−１５５１５２号公報
【００１１】
【発明が解決しようとする課題】
ところが、以上のように最少パラメータ処理により、発生ビット量を最小にしても、結果として、発生するビット量は０にすることができないため、ＶＢＶバッファの占有量が、図２で示すデータ量Ｌ１以下になった場合に最少パラメータによる圧縮処理を行っても、最大発生ビット量Ｌ１以内に１ピクチャ分の発生ビット量の全てが収まり切らず、結果として、１ピクチャ分のデータに不足するデータ量Ｌ２が発生してしまう恐れがあった。
【００１２】
そこで、図３で示すように、ＶＢＶバッファにマージンを設けることにより、マージン＋最大発生ビット量と、ＶＢＶバッファ占有量との比較から、発生ビット量が、マージン＋最大発生ビット量を超えてしまうような場合、上述のような最少パラメータによる処理を実行することにより、ＶＢＶバッファアンダーフローを回避させる方法が提案されている。
【００１３】
すなわち、図４で示すように、ＶＢＶバッファの最大容量Ｍａｘ２（＝Ｍａｘ１＋マージン（ｍａｒｇｉｎ））が設定される。そして、状態Ｓ１’で、最大容量Ｍａｘ２までＭＰＥＧビットストリームを蓄え、この状態から１ピクチャ分のデータが引き抜かれると、状態Ｓ２’に変化する。そして、再び、上述と同様に、時間Ｔだけ経過した後、状態Ｓ３’となったところで、再び１ピクチャ分のデータが引き抜かれるとき、ＶＢＶバッファの占有量は、マージンとなるレベルまでのデータ量Ｌ１となり、上述のように１ピクチャ分のＭＰＥＧビットストリームのデータ量に満たないため、最少パラメータによる圧縮処理が行われることになるが、この際、マージンを見込んでいるため、最少パラメータにより発生するデータ量Ｌ２がマージンにより吸収されることになるため、結果として、ＶＢＶバッファアンダーフローが発生しないことになる。
【００１４】
ところで、上述のマージンの設定は、予め所定の複数の設定画像から最少パラメータを求める、いわゆる、チューニング処理により、その最少パラメータにより発生される発生ビット量を求め、最大となるものがマージンとして設定されるようにされている。しかしながら、このようなチューニング処理によるマージンの設定では、既知の複数の設定画面には含まれていない、未知の画面のＭＰＥＧビットストリームのデータ量には対応することができない恐れがあり、その未知の画像のＭＰＥＧビットストリームのデータ量により最少パラメータの発生ビット量が、マージンとして設定されていた値よりも大きくなる恐れがあり、結果として、ＶＢＶバッファアンダーフローの発生を必ずしも抑制することができないという課題があった。
【００１５】
また、マージンは、チューニングに用いる画像によりばらつきが生じてしまうことになるため、必要以上にマージンを大きく設定してしまうことがあり、結果として、ＶＢＶバッファアンダーフローは抑制できるものの、設定されたＶＢＶバッファの容量を最大限に利用することができない恐れがあった。
【００１６】
本発明はこのような状況に鑑みてなされたものであり、ＶＢＶバッファを最大限に使用できるようにし、ＶＢＶバッファアンダーフローを抑制できるようにするものである。
【００１７】
【課題を解決するための手段】
本発明の画像処理装置は、入力された画像のピクチャタイプを判別する判別手段と、画像に基づいて、ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算手段と、演算手段により演算された、ピクチャタイプ別のＶＢＶバッファのマージンを記憶する記憶手段と、ＭＰＥＧ方式で画像を圧縮する圧縮手段と、圧縮手段により圧縮された画像情報、判別手段により判別されたピクチャタイプ、およびＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出手段と、アンダーフロー検出手段により、ＶＢＶバッファアンダーフロー有りが検出された場合、画像を最少パラメータで圧縮するように圧縮手段を制御する制御手段とを備えることを特徴とする。
【００１８】
前記演算手段には、画像に基づいて、ピクチャタイプがＩピクチャの場合と、Ｐピクチャ、または、Ｂピクチャの場合の、それぞれのＶＢＶバッファのマージンを演算させるようにすることができる。
【００１９】
前記ＶＢＶバッファのマージンは、制御手段が、画像を最少パラメータで圧縮するように圧縮手段を制御する場合に発生する最小のビット量とするようにすることができる。
【００２０】
前記制御手段には、ピクチャタイプがＩピクチャであるとき、全てのマクロブロックをＤＣ成分にし、Ｐピクチャ、または、Ｂピクチャであるとき、全てのマクロブロックをスキップドマクロブロックにすることにより、画像を最少パラメータで圧縮するように圧縮手段を制御させるようにすることができる。
【００２１】
本発明の画像処理方法は、入力された画像のピクチャタイプを判別する判別ステップと、画像に基づいて、ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算ステップと、演算ステップの処理で演算された、ピクチャタイプ別のＶＢＶバッファのマージンを記憶する記憶ステップと、ＭＰＥＧ方式で画像を圧縮する圧縮ステップと、圧縮ステップの処理で圧縮された画像情報、判別ステップの処理で判別されたピクチャタイプ、およびＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出ステップと、アンダーフロー検出ステップの処理で、ＶＢＶバッファアンダーフロー有りが検出された場合、画像を最少パラメータで圧縮するように圧縮ステップの処理を制御する制御ステップとを含むことを特徴とする。
【００２２】
本発明の記録媒体のプログラムは、入力された画像のピクチャタイプを判別する判別ステップと、画像に基づいて、ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算ステップと、ＭＰＥＧ方式で画像を圧縮する圧縮ステップと、圧縮ステップの処理で圧縮された画像情報、判別ステップの処理で判別されたピクチャタイプ、およびＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出ステップと、アンダーフロー検出ステップの処理で、ＶＢＶバッファアンダーフロー有りが検出された場合、画像を最少パラメータで圧縮するように圧縮ステップの処理を制御する制御ステップとを含むことを特徴とする。
【００２３】
本発明のプログラムは、入力された画像のピクチャタイプを判別する判別ステップと、画像に基づいて、ピクチャタイプ別にＶＢＶバッファのマージンを演算する演算ステップと、ＭＰＥＧ方式で画像を圧縮する圧縮ステップと、圧縮ステップの処理で圧縮された画像情報、判別ステップの処理で判別されたピクチャタイプ、およびＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無を検出するアンダーフロー検出ステップと、アンダーフロー検出ステップの処理で、ＶＢＶバッファアンダーフロー有りが検出された場合、画像を最少パラメータで圧縮するように圧縮ステップの処理を制御する制御ステップとを含む処理をコンピュータに実行させることを特徴とする。
【００２４】
本発明の画像処理装置および方法、並びにプログラムにおいては、入力された画像のピクチャタイプが判別され、画像に基づいて、ピクチャタイプ別にＶＢＶバッファのマージンが演算され、演算された、ピクチャタイプ別のＶＢＶバッファのマージンが記憶され、ＭＰＥＧ方式で画像が圧縮され、圧縮された画像情報、判別されたピクチャタイプ、およびＶＢＶバッファのマージンに基づいて、ＶＢＶバッファアンダーフローの有無が検出され、ＶＢＶバッファアンダーフロー有りが検出された場合、画像が最少パラメータで圧縮されるように制御される。
【００２５】
【発明の実施の形態】
図５は、本発明を適用したエンコーダの基本符号化処理部１の一実施の形態の構成を示している。
【００２６】
図５のエンコーダの基本符号化処理部１は、画像データをＭＰＥＧ方式で符号化し、この符号化データをエンコーダ送出バッファ２に出力する。レート制御部３は、基本符号化処理部１によって画像データをＭＰＥＧ方式で符号化するときの量子化幅ｑ＿ｓｃａｌｅを制御している。
【００２７】
ここで、図６を参照して、ＭＰＥＧ方式の符号化処理の概略を説明する。符号化される画像データの各ピクチャは、複数のマクロブロックに分割されて符号化される。１つのマクロブロックは、輝度について、１６×１６画素ブロックのデータ（更に基本符号化処理単位である４つの８×８画素ブロックに分けられる）、色差について、基本符号化処理単位である２つの８×８画素ブロックのデータに分けられ、これらのブロックが符号化される。また、１つのマクロブロックにおいて、マクロブロック内のブロックの符号化方法および量子化幅等が決定される。
【００２８】
スライスは、複数のマクロブロックを含むデータ単位であり、複数のスライスから１つのピクチャが構成される。ピクチャは、その符号化方法として、ピクチャ自体がそのまま符号化されるＩピクチャ（イントラピクチャ）、時間的に過去のピクチャからの動きを予測した上で、符号化されるＰピクチャ、時間的に過去、および、未来の両方、もしくはいずれか一方のピクチャからの動きを予測した上で、符号化されるＢピクチャがある。
【００２９】
図６における各Ｉ，Ｐ，Ｂピクチャの配置は、その典型的な例であり、最初のＩピクチャを用いて３枚先のＰピクチャが予測されて符号化され、その間に含まれる各Ｂピクチャが各Ｉ，Ｐピクチャの両方から予測されて符号化されている。したがって、最初にＩピクチャが符号化され、次にＰピクチャが符号化され、更にＢピクチャが符号化されることになる。このために、本来の時間の進行に沿った各Ｉ，Ｐ，Ｂピクチャの順序が変更されてから、これらのピクチャが符号化されることになる。
【００３０】
さらに、Ｉピクチャから始まる複数のピクチャからなるＧＯＰ（グループオブピクチャ）が構成され、任意の数のＧＯＰで１つのビデオシーケンスが構成される。
【００３１】
ピクチャタイプ決定部１１は、入力された画像の各ピクチャのピクチャタイプを判別して決定し、符号化する順番にならび替え、並び替えた状態で走査変換部１２、および、動き検出部２１に出力する。また、ピクチャタイプ決定部１１は、決定したピクチャタイプと共に、そのピクチャのＭＢ（マクロブロック）数、スライス数、および、クロマフォーマットの情報をレート制御部３に出力する。
【００３２】
走査変換部１２は、並び替えられたピクチャを符号化される単位であるマクロブロックに変換し、これらのマクロブロックを順次減算器１３に出力する。減算器１３は、走査変換部１２より入力されたマクロブロックと動き補償付き予測部１９からの予測データとの差分を求め、この差分を予測誤差として求め、ＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）変換部１４に出力する。
【００３３】
ＤＣＴ変換部１４は、モード判定部２０からのモード判定結果に基づいて、この予測誤差を８×８画素ブロック単位でＤＣＴ変換し、このＤＣＴ変換により得られた各変換係数を重み付け量子化部１５に出力する。
【００３４】
重み付け量子化部１５は、レート制御部３より入力される量子化幅ｑ＿ｓｃａｌｅに基づいて、各変換係数を量子化し、これにより得た量子化データを、可変長符号化部１６および逆量子化部１７に出力する。また、重み付け量子化部１５は、レート制御部３より、最少パラメータによる符号化の指令を受信した場合、上述のように最少パラメータによる符号化処理を実行し、Ｉピクチャに対しては、ＤＣ成分のみを符号化し、Ｐピクチャ、または、Ｂピクチャに対しては、スキップドマクロブロックによる符号化を行い、符号化量を小さくする。
【００３５】
可変長符号化部１６は、モード判定部２０からのモード判定結果、および、動き検出部２１からの動きベクトルに基づいて、量子化データを可変長符号化して、圧縮符号化された画像データを形成し、この圧縮符号化された画像データを、所望の伝送レートで伝送するためにエンコーダ送出バッファ２に一旦蓄積させて出力する。より詳細には、可変長符号化部１６は、各マクロブロックの符号化が終了する度に、ＭＢエンドタイミング信号をレート制御部３に送出す共に、１ピクチャの符号化が開始する度に、ピクチャ開始タイミング信号をレート制御部３へ送る。
【００３６】
逆量子化部１７は、重み付け量子化された画像データを逆量子化して、逆ＤＣＴ変換部１８に出力する。逆ＤＣＴ変換部１８は、入力された逆量子化されている画像データを逆ＤＣＴ変換し、加算器２２に出力する。
【００３７】
加算器２２は、動き補償付き予測部１９から入力される予測データと、逆ＤＣＴ変換された画像データを加算して、動き補償付き予測部１９に出力する。動き補償付き予測部１９は、加算器２２より入力される予測データが加算された、再生された画像データ、動き検出部２１より入力された動きベクトル、および、モード判定部２０より入力されるモード判定結果に基づいて、動きが予測されたピクチャを示す予測データを形成し、減算器１３、および、加算器２２に出力する。
【００３８】
動き検出処理部２１は、各マクロブロック毎に、画像の動きベクトルを算出し、この動きベクトルを動き補償付き予測部１９に入力するとともにモード判定部２０に出力する。
【００３９】
モード判定部２０は、動き検出部２１から入力された動きベクトルに基づいて、動き補償予測モードを決定し、ＤＣＴ変換部１４、可変長符号化部１６、および、動き補償付き予測部１９に出力する。
【００４０】
レート制御部３は、ピクチャタイプ決定部１１より入力されてくるピクチャタイプ、ＭＢ数、スライス数、およびクロマフォーマットの情報に基づいて、上述のＶＢＶバッファのマージンサイズを決定し、可変長符号化部１６から出力されたビットストリームのビット発生量からＶＢＶバッファアンダーフローの有無を判定すると共に、ＶＢＶバッファアンダーフロー判定結果に応じて、重み付け量子化部１５に対して、上述の最少パラメータによる処理を実行するように指令を出力する。
【００４１】
次に、図７のブロック図を参照して、図５のレート制御部３の詳細な構成について説明する。
【００４２】
制御部４１は、ＭＢエンドタイミング信号が入力される度に、可変長符号化部１６からのビットストリームに基づいて１マクロブロック当たりの実際のビット発生量を求め、ＶＢＶバッファの占有量として加算して、ＶＢＶバッファアンダーフロー判定部４２に供給すると共に、ＶＢＶバッファの占有量に基づいて、各マクロブロック毎に、量子化幅ｑ＿ｓｃａｌｅを求め、この量子化幅ｑ＿ｓｃａｌｅを基本符号化処理部１の重みづけ量子化部処理部１５に供給する。
【００４３】
より詳細には、制御部４１は、入力されるＭＢエンドタイミング信号、および、ピクチャ開始タイミング信号に基づいて、ＭＢエンドタイミング信号の度に、ＭＢの計数値に基づいて１マクロブロック当たりの実際のビット発生量を求め、ＶＢＶバッファの占有量として加算する。
【００４４】
ＶＢＶバッファアンダーフロー判定部４２は、ピクチャタイプ決定部１１より入力されるピクチャタイプ、ＭＢ数、および、スライス数に基づいて、演算部４３を制御して、ＶＢＶバッファの最大値を設定する際のＩピクチャ、および、Ｂ、または、Ｐピクチャに対応するマージンを演算させマージンサイズメモリ４４に記憶させる。また、ＶＢＶバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に記憶されたマージンサイズに基づいて、ＶＢＶバッファの最大値（図４で示した最大値Ｍａｘ２）を設定し、制御部４１により求められたＶＢＶバッファの占有量を監視し、ＶＢＶバッファアンダーフローとなるか否かを判定する。そして、ＶＢＶバッファアンダーフロー判定部４２は、その判定結果に応じて、ＶＢＶバッファアンダーフローの状態に近づくと、アンダーフロー判定結果を重み付け量子化部１５に出力する。
【００４５】
次に、演算部４３によるマージンサイズの演算方法について説明する。
【００４６】
マージンサイズは、最少パラメータを用いた圧縮方法により必ず発生する発生ビット量を設定すればよいことになる。従って、Ｉピクチャの場合、以下の式（１）で示す発生ビット量がマージンＭａｒｇｉｎ＿Ｉｐｉｃｔｕｒｅとして演算されることになる。
【００４７】
Ｍａｒｇｉｎ＿Ｉｐｉｃｔｕｒｅ＝α×ＧＢ＿ＭＢ＋β×ＧＢ＿ＨＤ＋γ×ＧＢ＿ＤＣ      ・・・（１）
【００４８】
ここで、ＧＢ＿ＭＢはチップ内のパイプライン遅延により発生するビット量を、ＧＢ＿ＨＤは、ヘッダにより発生するビット量を、さらに、ＧＢ＿ＤＣは、Ｉピクチャ内のＤＣ成分により発生するビット量をそれぞれ示している。αは、制御することができずに、発生してしまうマクロブロック数（ハードウェアに依存する定数）を示している（ビット発生量を制御するＣＰＵが１  ＭＢ毎に発生ビット量を検出するまでの時間内に発生してしまう（制御することができない）ＭＢ数）。βは、スライス数、γは、マクロブロック数をそれぞれ示している。
【００４９】
一方、Ｂピクチャ、または、Ｐピクチャの場合、以下の式（２）で示す発生ビット量がマージンＭａｒｇｉｎ＿Ｂ／Ｐｐｉｃｔｕｒｅとして演算されることになる。
【００５０】
Ｍａｒｇｉｎ＿Ｂ／Ｐｐｉｃｔｕｒｅ＝α×ＧＢ＿ＭＢ＋β×ＧＢ＿ＨＤ＋βＧＢ＿ＳＭＢ    ・・・（２）
【００５１】
ここで、ＧＢ＿ＳＭＢは、スライス内の第１ＭＢのビット量と最終ＭＢのビット量の和を示している。
【００５２】
例えば、クロマフォーマットがａ：ｂ：ｃである場合、ＧＢ＿ＭＢは、以下のように求められる。
【００５３】
ＧＢ＿ＭＢ＝（ＤＣＴ係数の最大ビット量）×（ａ＋ｂ＋ｃ）
×（１ブロックの画素数）＋（ＭＢヘッダの発生ビット数）・・・（３）
【００５４】
ここで、ＤＣＴ係数の最大ビット量は、例えば、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）に規定されているＦｉｒｓｔ＿ＤＣＴ＿ｃｏｅｆｉｃｉｅｎｔ（非イントラブロック（インターブロック）の第１非零ＤＣＴ係数）、または、Ｓｕｂｓｅｑｕｅｎｔ＿ＤＣＴ＿ｃｏｅｆｉｃｉｅｎｔｓ（後続のＤＣＴ係数）の最大値である。尚、上述の最大値は、インターマクロブロックの値であるが、イントラマクロブロックの値よりは大きなものであるので、全てにおいて、その値を使用するものとしてもよい。ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）においては、Ｆｉｒｓｔ＿ＤＣＴ＿ｃｏｅｆｉｃｉｅｎｔが、２乃至２４ビット、Ｓｕｂｓｅｑｕｅｎｔ＿ＤＣＴ＿ｃｏｅｆｉｃｉｅｎｔｓ３乃至２４ビットと規定されているので、２４ビットとするようにしてもよい（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の第３６頁６．２．６章参照）。
【００５５】
１ブロックの画素数は、ＭＰＥＧ２においては、８画素×８画素であるので６４である。
【００５６】
また、ＭＢヘッダの発生ビット量は、例えば、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）で規定されるＭＰＥＧ２である場合、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔ（現ＭＢアドレスと前ＭＢアドレスの差）、ｑｕａｎｔｉｓｅｒ＿ｓｃａｌｅ＿ｃｏｄｅ（ＭＢ量子化スケールコード）、ｍａｒｋｅｒ＿ｂｉｔ（マーカ）、ｍａｃｒｏｂｌｏｃｋ  ｔｙｐｅ（マクロブロックのタイプ）、ｓｐａｔｉａｌ＿ｔｅｍｐｏｒａｌ＿ｗｅｉｇｈｔ＿ｃｏｄｅ（アップサンプル用の時空間重み付けコード）、ｆｒａｍｅ＿ｍｏｔｉｏｎ＿ｔｙｐｅ（フレーム構造の動き補償タイプ）、ｄｃｔ＿ｔｙｐｅ（ＤＣＴのタイプ（フレームｏｒフィールド）、ｍｏｔｉｏｎ＿ｖｅｒｔｉｃａｌ＿ｆｉｅｌｄ＿ｓｅｌｅｃｔ［０］［ｓ］（予測に用いる参照フィールドの選択情報）、ｍｏｔｉｏｎ＿ｖｅｒｔｉｃａｌ＿ｆｉｅｌｄ＿ｓｅｌｅｃｔ［１］［ｓ］  （予測に用いる参照フィールドの選択情報）、ｍｏｔｉｏｎ＿ｃｏｄｅ［０］［ｓ］［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，ｓ）である場合の基本差分動きベクトル）、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［０］［ｓ］［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の残差ベクトル）、ｄｍｖｅｃｔｏｒ［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合のデュアルプライム用差分ベクトル）、ｍｏｔｉｏｎ＿ｃｏｄｅ［０］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の基本差分動きベクトル）、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［０］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の残差ベクトル）、ｄｍｖｅｃｔｏｒ［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合のデュアルプライム用差分ベクトル）、ｍｏｔｉｏｎ＿ｃｏｄｅ［１］［ｓ］［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の基本差分動きベクトル）、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［１］［ｓ］［０］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の残差ベクトル）、ｄｍｖｅｃｔｏｒ［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合のデュアルプライム用差分ベクトル）、ｍｏｔｉｏｎ＿ｃｏｄｅ［１］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の基本差分動きベクトル）、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［１］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の残差ベクトル）、ｄｍｖｅｃｔｏｒ［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合のデュアルプライム用差分ベクトル）、ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ＿４２０（コードブロックパターン）、および、ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ＿２（コードブロックパターン）といったもののそれぞれのビット量の合計である。尚、ｓは、０である場合、前方向予測を示し、１である場合、双方向予測を示すパラメータであるが、いずれであってもよいため、ｓのまま表示されている。
【００５７】
ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の場合、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔ（現ＭＢアドレスと前ＭＢアドレスの差）が１ビット、ｑｕａｎｔｉｓｅｒ＿ｓｃａｌｅ＿ｃｏｄｅ（ＭＢ量子化スケールコード）が５ビット、ｍａｒｋｅｒ＿ｂｉｔ（マーカ）が１ビット、ｍａｃｒｏｂｌｏｃｋ  ｔｙｐｅ（マクロブロックのタイプ）が９ビット、ｓｐａｔｉａｌ＿ｔｅｍｐｏｒａｌ＿ｗｅｉｇｈｔ＿ｃｏｄｅ（アップサンプル用の時空間重み付けコード）が２ビット、ｆｒａｍｅ＿ｍｏｔｉｏｎ＿ｔｙｐｅ（フレーム構造の動き補償タイプ）が２ビット、ｄｃｔ＿ｔｙｐｅ（ＤＣＴのタイプ（フレームｏｒフィールド）が１ビット、ｍｏｔｉｏｎ＿ｖｅｒｔｉｃａｌ＿ｆｉｅｌｄ＿ｓｅｌｅｃｔ［０］［ｓ］（予測に用いる参照フィールドの選択情報）が１ビット、ｍｏｔｉｏｎ＿ｖｅｒｔｉｃａｌ＿ｆｉｅｌｄ＿ｓｅｌｅｃｔ［１］［ｓ］  （予測に用いる参照フィールドの選択情報）が１ビット、ｍｏｔｉｏｎ＿ｃｏｄｅ［０］［ｓ］［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の基本差分動きベクトル）が１１ビット、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［０］［ｓ］［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の残差ベクトル）が８ビット、ｄｍｖｅｃｔｏｒ［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合のデュアルプライム用差分ベクトル）が２ビット、ｍｏｔｉｏｎ＿ｃｏｄｅ［０］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の基本差分動きベクトル）が１１ビット、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［０］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合の残差ベクトル）が８ビット、ｄｍｖｅｃｔｏｒ［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（０，  ｓ）である場合のデュアルプライム用差分ベクトル）が２ビット、ｍｏｔｉｏｎ＿ｃｏｄｅ［１］［ｓ］［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の基本差分動きベクトル）が１１ビット、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［１］［ｓ］［０］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の残差ベクトル）が８ビット、ｄｍｖｅｃｔｏｒ［０］（動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合のデュアルプライム用差分ベクトル）が２ビット、ｍｏｔｉｏｎ＿ｃｏｄｅ［１］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の基本差分動きベクトル）が１１ビット、ｍｏｔｉｏｎ＿ｒｅｓｉｄｕａｌ［１］［ｓ］［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合の残差ベクトル）が１１ビット、ｄｍｖｅｃｔｏｒ［１］  （動きベクトルがｍｏｔｉｏｎ＿ｖｅｃｔｏｒ（１，  ｓ）である場合のデュアルプライム用差分ベクトル）が２ビット、ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ＿４２０（コードブロックパターン）が９ビット、ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ＿２（コードブロックパターン）が６ビットにそれぞれ規定されているので、その合計である１２０ビットとする���うにしてもよい（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の第３３乃至３６頁  ６．２．５章参照）。
【００５８】
チップ内のパイプライン遅延により発生するビット量ＧＢ＿ＭＢは、例えば、ＩＴＵ−ＴＲｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、クロマフォーマットが４：２：０のとき、以下に示す式（４）のように求められる。
【００５９】
ＧＢ＿ＭＢ＝２４×（４＋２＋０）×６４＋１２０＝９３３６（ビット）・・・（４）
【００６０】
また、クロマフォーマットが４：２：２のときは、以下に示す式（５）のように求められる。
【００６１】
ＧＢ＿ＭＢ＝２４×（４＋２＋２）×６４＋１２０＝１２４０８（ビット）・・・（５）
【００６２】
さらに、ＧＭ＿ＨＤは、ヘッダのビット量であるので、例えば、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合（Ｖｅｒｔｉｃａｌ＿ｓｉｚｅ≦１０８８であるものとすると）、ｓｌｉｃｅ＿ｓｔａｒｔ＿ｃｏｄｅ（スライススタートコード＋スライス垂直位置）、ｑ＿ｓｃａｌｅ＿ｃｏｄｅ（量子化スケールコード）、および、ｅｘｔｒａ＿ｂｉｔ＿ｓｌｉｃｅ（スライスの拡張ビット）などのの合計ビット量となる。尚、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）において、ｓｌｉｃｅ＿ｓｔａｒｔ＿ｃｏｄｅは３２ビット、ｑ＿ｓｃａｌｅ＿ｃｏｄｅは５ビット、ｅｘｔｒａ＿ｂｉｔ＿ｓｌｉｃｅは１ビットに、それぞれ規定されているので、その合計ビット量である、ＧＭ＿ＨＤ＝３８ビットがヘッダのビット量ＧＢ＿ＭＢの固定値とされるようにしてもよい（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の第３２ページ  ６．２．４章参照）。
【００６３】
また、ＧＢ＿ＤＣは、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、クロマフォーマットがａ：ｂ：ｃのとき、Ｉピクチャであることからｐｉｃｔｕｒｅ＿ｃｏｄｉｎｇ＿ｔｙｐｅ＝Ｉ  ｐｉｃｔｕｒｅとなり、ｍｏｔｉｏｎ  ｖｅｃｔｏｒは存在しないことを前提として以下の式（６）のように定義される。
【００６４】
ＧＢ＿ＤＣ＝ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔ＋ｍａｃｒｏｂｌｏｃｋ＿ｍｏｄｅ
＋ｄｃｔ＿ｄｃ＿ｓｉｚｅ＿ｌｕｍｉｎａｎｃｅ×ａ
＋ｄｃｔ＿ｄｃ＿ｄｉｆｆ＿ｌｕｍｉｎａｎｃｅ×ａ
＋ｄｃｔ＿ｄｃ＿ｓｉｚｅ＿ｃｈｒｏｍｉｎａｎｃｅ×（ｂ＋ｃ）
＋ｄｃｔ＿ｄｃ＿ｄｉｆｆ＿ｃｈｒｏｍｉｎａｎｃｅ×（ｂ＋ｃ）
＋ｅｎｄ＿ｏｆ＿ｂｌｏｃｋ×（ａ＋ｂ＋ｃ）            ・・・（６）
【００６５】
ここで、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔは、現ＭＢアドレスと前ＭＢアドレスの差であり、ｍａｃｒｏｂｌｏｃｋ＿ｍｏｄｅは、ｍａｃｒｏｂｌｏｃｋ＿ｔｙｐｅとｄｃｔ＿ｔｙｐｅの和であり、それぞれ、マクロブロックの符号化タイプと、ＤＣＴタイプを示している。
【００６６】
また、ｄｃｔ＿ｄｃ＿ｓｉｚｅ＿ｌｕｍｉｎａｎｃｅは、ＤＣＴ輝度ＤＣ係数差分サイズを、ｄｃｔ＿ｄｃ＿ｄｉｆｆ＿ｌｕｍｉｎａｎｃｅは、ＤＣＴ輝度ＤＣ係数差分値を、ｄｃｔ＿ｄｃ＿ｓｉｚｅ＿  ｃｈｒｏｍｉｎａｎｃｅは、ＤＣＴ色差ＤＣ係数差分サイズを、ｄｃｔ＿ｄｃ＿ｄｉｆｆ＿ｃｈｒｏｍｉｎａｎｃｅは、ＤＣＴ色差ＤＣ係数差分値を、ｅｎｄ＿ｏｆ＿ｂｌｏｃｋは、ブロック内ＤＣＴ係数終了フラグをそれぞれ示している。
【００６７】
例えば、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔは１ビットに、ｍａｃｒｏｂｌｏｃｋ＿ｍｏｄｅは２ビットに、ｄｃｔ＿ｄｃ＿ｓｉｚｅ＿ｌｕｍｉｎａｎｃｅは９ビットに、ｄｃｔ＿ｄｃ＿ｄｉｆｆ＿ｌｕｍｉｎａｎｃｅは１１ビットに、ｄｃｔ＿ｄｃ＿ｓｉｚｅ＿  ｃｈｒｏｍｉｎａｎｃｅは１０ビットに、ｄｃｔ＿ｄｃ＿ｄｉｆｆ＿ｃｈｒｏｍｉｎａｎｃｅは１１ビットに、ｅｎｄ＿ｏｆ＿ｂｌｏｃｋは４ビットにそれぞれ規定されている（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の第３３，３４，３６頁  ６．２．５章、６．２．５．１章、６．２．６章参照）。このため、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、クロマフォーマットが４：２：０のとき、ＤＣ成分ＧＢ＿ＤＣは、以下の式（７）のように演算される。
【００６８】
2004241879.tif 000003
【００６９】
また、クロマフォーマットが４：２：２のとき、ＤＣ成分ＧＢ＿ＤＣは、以下の式（８）のように演算される。
【００７０】
2004241879.tif 000004
【００７１】
さらに、スライス内の第１ＭＢのビット量と最終ＭＢのビット量の和ＧＢ＿ＳＭＢは、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、以下の式（９）のように定義される。
【００７２】
2004241879.tif 000005
【００７３】
ここで、ｍａｃｒｏｂｌｏｃｋ＿ｅｓｃａｐｅ＿Ｆは第１ＭＢのＭＢアドレス拡張用のビット量を、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔ＿Ｆは第１ＭＢの現ＭＢアドレスと前ＭＢアドレスの差を、ｑ＿ｓｃａｌｅ＿ｃｏｄｅは第１ＭＢのｑスケールコードを、ｍａｃｒｏｂｌｏｃｋ＿ｔｙｐｅ＿Ｆは第１ＭＢのＭＢ符号化タイプを、ｆｒａｍｅ（ｏｒ  ｆｉｅｌｄ）＿ｍｏｔｉｏｎ＿ｔｙｐｅ＿Ｆは、フレーム構造の（または、フィールド構造の）動き補償タイプを、ｍｏｔｉｏｎ＿ｖｅｃｔｏｒ＿Ｆは、第１ＭＢの動きベクトルのビット量を示しており、＿Ｌが＿Ｆに代えて付されているものは、対応するそれぞれの最終ＭＢのビット量を示している。
【００７４】
ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、ｍａｃｒｏｂｌｏｃｋ＿ｅｓｃａｐｅ＿Ｆは０ビットに、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔ＿Ｆは１ビットに、ｑ＿ｓｃａｌｅ＿ｃｏｄｅは５ビットに（ｓｌｉｃｅの第１ＭＢはｑ＿ｓｃａｌｅ＿ｃｏｄｅが必要となる）、ｍａｃｒｏｂｌｏｃｋ＿ｔｙｐｅ＿Ｆは６ビットに（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の第１２２頁の  Ｔａｂｌｅ  Ｂ．２乃至Ｂ．４より、ｆｒａｍｅ＿ｍｏｔｉｏｎ＿ｔｙｐｅ＿Ｆまたはｆｉｅｌｄ＿ｍｏｔｉｏｎ＿ｔｙｐｅ＿Ｆは２ビットに、ｍｏｔｉｏｎ＿ｖｅｃｔｏｒ＿Ｆは３ビット（ｍｏｔｉｏｎ＿ｖｅｒｔｉｃａｌ＿ｆｉｅｌｄ＿ｓｅｌｅｃｔ［０］［ｓ］、ｍｏｔｉｏｎ＿ｃｏｄｅ［ｒ］［ｓ］［０］、および、ｍｏｔｉｏｎ＿ｃｏｄｅ［ｒ］［ｓ］［１］がそれぞれ１ビットずつ）に、ｍａｃｒｏｂｌｏｃｋ＿ｅｓｃａｐｅ＿Ｌは１１ビットに、ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｃｒｅｍｅｎｔ＿Ｌは８ビットに、ｍａｃｒｏｂｌｏｃｋ＿ｔｙｐｅ＿Ｌは３ビットに、ｆｒａｍｅ＿ｍｏｔｉｏｎ＿ｔｙｐｅ＿Ｌ、または、ｆｉｅｌｄ＿ｍｏｔｉｏｎ＿ｔｙｐｅ＿Ｌは２ビットに、ｍｏｔｉｏｎ＿ｖｅｃｔｏｒ＿Ｌは３ビットに（ｍｏｔｉｏｎ＿ｖｅｒｔｉｃａｌ＿ｆｉｅｌｄ＿ｓｅｌｅｃｔ［０］［ｓ］、ｍｏｔｉｏｎ＿ｃｏｄｅ［ｒ］［ｓ］［０］および、ｍｏｔｉｏｎ＿ｃｏｄｅ［ｒ］［ｓ］［１］が１ビットずつ）それぞれ、規定されている（ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）の第３３，３４頁  ６．２．５章、６．２．５．１章、６．２．５．２章参照）。
【００７５】
このため、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、スライス内の第１ＭＢのビット量と最終ＭＢのビット量の和ＧＢ＿ＳＭＢは、以下の式（１０）のように求められる。
【００７６】
2004241879.tif 000006
【００７７】
式（１０）より、スライス内の第１ＭＢのビット量と最終ＭＢのビット量の和ＧＢ＿ＳＭＢは、４４ビットの固定値となる。
【００７８】
以上をまとめると、例えば、ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６２（２０００Ｅ）により規定されるＭＰＥＧ２の場合、クロマフォーマットが、４：２：０、および、４：２：２であるとき、Ｉピクチャのマージンは、式（１）に基づいて、以下の式（１１），式（１２）で、それぞれ求められることになる。
【００７９】
Ｍａｒｇｉｎ＿Ｉｐｉｃｔｕｒｅ＝９３３６α＋３８β＋１４９γ          ・・・（１１）
Ｍａｒｇｉｎ＿Ｉｐｉｃｔｕｒｅ＝１２４０８α＋３８β＋１９９γ        ・・・（１２）
【００８０】
また、同様にして、Ｂピクチャ、または、Ｐピクチャのマージンは、クロマフォーマットが、４：２：０、および、４：２：２であるとき、式（２）に基づいて、以下の式（１３），式（１４）で、それぞれ求められることになる。
【００８１】
2004241879.tif 000007
【００８２】このように、マージンは、クロマフォーマットが確定すると、ハードウェアにより制御できないＭＢ数α、スライス数β、および、ＭＢ数γに基づいて、算出することが可能となる。ここで、ＭＢ数αは、ハードウェア固有の値として設定されるため、その値は、予め設定される。
【００８３】
また、演算部４３は、Ｉピクチャ、並びに、Ｂピクチャ、または、Ｐピクチャ毎に、クロマフォーマットに対応した係数を予め内蔵するメモリに記憶しており、ピクチャタイプ決定部１１より入力されるクロマフォーマットとピクチャタイプの情報に基づいてその係数を読み出すと共に、同時にピクチャタイプ決定部１１より送信されてくるスライス数、および、ＭＢ数の情報に基づいて、マージンを計算し、マージンサイズメモリ４４に記憶させる。
【００８４】
１つのストリームにおいては、スライス数やＭＢ数は変化しないため、演算部４３は、Ｉピクチャ、並びに、Ｐピクチャ、または、Ｂピクチャが最初に入力されたときにのみ、マージンの計算を行ってマージンサイズメモリ４４に記憶させる。ＶＢＶアンダーフロー判定部４２は、上述のように演算されてサイズメモリ４４に記憶されているマージンを用いてＶＢＶアンダーフローの有無を判定する。
【００８５】
次に、図８のフローチャートを参照して、レート制御部３によるＶＢＶバッファアンダーフロー監視処理について説明する。
【００８６】
ステップＳ１において、レート制御部３のＶＢＶバッファアンダーフロー判定部４２は、ピクチャタイプ決定部１１より入力されてくるピクチャタイプ、ＭＢ数、スライス数、および、クロマフォーマットの情報を取得する。
【００８７】
ステップＳ２において、ＶＢＶバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に、既に、マージンサイズが演算されているか否かを判定する。このとき、ＶＢＶバッファアンダーフロー判定部４２は、ステップＳ１において、取得したピクチャタイプのマージンサイズが既に演算されて、記憶されているか否かを判定する。
【００８８】
ステップＳ２において、マージンサイズが演算されていないと判定された場合、ステップＳ３において、ＶＢＶバッファアンダーフロー判定部４２は、演算部４３に取得したピクチャタイプ、ＭＢ数、スライス数、および、クロマフォーマットの情報を供給し、上述の式（１）、または、式（２）の演算を実行させ、演算結果をマージンサイズメモリ４４に記憶させる。
【００８９】
ステップＳ４において、ＶＢＶバッファアンダーフロー判定部４２は、入力された画像がＩピクチャであるか否かを判定し、例えば、Ｉピクチャであると判定された場合、その処理は、ステップＳ５に進む。
【００９０】
ステップＳ５において、ＶＢＶバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に記憶されているＩピクチャのマージンサイズを読み出す。
【００９１】
ステップＳ６において、ＶＢＶバッファアンダーフロー判定部４２は、ＶＢＶバッファの占有量が、引き出されるピクチャの最大発生ビット量ＭａｘＧｅｎＢｉｔとマージンとの和よりも大きいか否かを判定し、例えば、ＶＢＶバッファの占有量が、引き出されるピクチャの最大発生ビット量ＭａｘＧｅｎＢｉｔとマージンとの和よりも大きくない、すなわち、ＶＢＶバッファの占有量が、引き出されるピクチャの最大発生ビット量ＭａｘＧｅｎＢｉｔとマージンとの和よりも小さいと判定された場合、その処理は、ステップＳ７に進む。
【００９２】
ステップＳ７において、ＶＢＶバッファアンダーフロー判定部４２は、ＶＢＶバッファアンダーフローが発生するとみなし、重み付け量子化部１５に対して、最少パラメータ処理を実行するように指令する。
【００９３】
ステップＳ８において、ＶＢＶバッファアンダーフロー判定部４２は、次のピクチャが存在するか否かを判定し、次のピクチャが存在する場合、その処理は、ステップＳ１に戻り、次のピクチャが存在しない場合、ステップＳ９において、マージンサイズメモリ４４をリセットして、その処理を終了する。
【００９４】
また、ステップＳ２において、マージンサイズが演算されている、すなわち、Ｉピクチャが入力された場合、Ｉピクチャのマージンサイズが、また、Ｐピクチャ、または、Ｂピクチャのマージンサイズが入力された場合、Ｐピクチャ、または、Ｂピクチャのマージンサイズが、既に、演算されているとき、ステップＳ３の処理は、スキップされる。
【００９５】
さらに、ステップＳ４において、Ｉピクチャではない、すなわち、Ｂピクチャ、または、Ｐピクチャであった場合、ステップＳ１０において、ＶＢＶバッファアンダーフロー判定部４２は、マージンサイズメモリ４４に記憶されているＢピクチャ、または、Ｐピクチャのマージンサイズを読み出す。
【００９６】
また、ステップＳ６において、ＶＢＶバッファの占有量が、引き出されるピクチャの最大発生ビット量ＭａｘＧｅｎＢｉｔとマージンとの和よりも大きいと判定された場合、ステップＳ７の処理はスキップされ、その処理は、ステップＳ８に進む。
【００９７】
すなわち、以上の処理をまとめると、ステップＳ３により、演算部４３が、Ｉピクチャ、もしくは、Ｐピクチャ、または、Ｂピクチャのマージンサイズを演算する。このとき、演算部４３は、上述のように、クロマフォーマットに対応する係数ＧＢ＿ＭＢ、ＧＢ＿ＨＤ、ＧＢ＿ＤＣを予め記憶しているので、ステップＳ１の処理で取得されるクロマフォーマットとピクチャタイプの情報に応じて選択し、さらに、予め設定されている、発生してしまうＭＢ数αと、ステップＳ１の処理で取得されたスライス数β、および、ＭＢ数γを用いて、式（１）、または、式（２）を演算してマージンサイズを演算する。
【００９８】
ただし、ステップＳ２の処理により、マージンサイズメモリ４４に記憶されたピクチャタイプのマージンサイズは、ステップＳ３がスキップされることにより、それ以降の処理においては、演算されないことになるので、１ストリームの処理については、ピクチャタイプ毎に１回だけ演算されることになる。
【００９９】
ステップＳ５，Ｓ１０において、ピクチャタイプ毎にマージンサイズが読み出される。そして、ステップＳ６において、最大発生ビット量ＭｅｘＧｅｎＢｉｔと読み出されたマージンサイズの和が、ＶＢＶバッファの占有量と比較され、ＶＢＶバッファの占有量が、引き出されるピクチャの最大発生ビット量ＭａｘＧｅｎＢｉｔとマージンの和よりも小さい場合、最少パラメータ処理がなされるように指令が出される。
【０１００】
結果として、これまで、経験的に設定されていたマージンが、ストリーム毎に発生される最大のビット量として演算されて設定されることになるので、過不足のないマージン設定が可能となるため、ＶＢＶバッファを最大限利用することができ、ＶＢＶバッファのアンダーフローの発生をほぼ１００％抑制することが可能となる。
【０１０１】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
【０１０２】
図９は、エンコーダをソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのＣＰＵ１０１は、パーソナルコンピュータの全体の動作を制御する。また、ＣＰＵ１０１は、バス１０４および入出力インタフェース１０５を介してユーザからキーボードやマウスなどからなる入力部１０６から指令が入力されると、それに対応してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２に格納されているプログラムを実行する。あるいはまた、ＣＰＵ１０１は、ドライブ１１０に接続された磁気ディスク１１１、光ディスク１１２、光磁気ディスク１１３、または半導体メモリ１１４から読み出され、記憶部１０８にインストールされたプログラムを、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３にロードして実行する。これにより、上述したエンコーダの機能が、ソフトウェアにより実現されている。さらに、ＣＰＵ１０１は、通信部１０９を制御して、外部と通信し、データの授受を実行する。
【０１０３】
プログラムが記録されている記録媒体は、図９に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１１１（フレキシブルディスクを含む）、光ディスク１１２（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）を含む）、光磁気ディスク１１３（ＭＤ（Ｍｉｎｉ−Ｄｉｓｃ）を含む）、もしくは半導体メモリ１１４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているＲＯＭ１０２や、記憶部１０８に含まれるハードディスクなどで構成される。
【０１０４】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【０１０５】
【発明の効果】
本発明によれば、ＶＢＶバッファを最大限利用することができ、ＶＢＶバッファアンダーフローをほぼ１００％抑制することが可能となる。
【図面の簡単な説明】
【図１】ＶＢＶバッファを説明する図である。
【図２】ＶＢＶバッファアンダーフローを説明する図である。
【図３】ＶＢＶバッファのマージンを説明する図である。
【図４】ＶＢＶバッファのマージンを説明する図である。
【図５】本発明を適用したエンコーダの構成を示すブロック図である。
【図６】図５のエンコーダによる処理を説明する図である。
【図７】図５のレート制御部の構成を示すブロック図である。
【図８】図７のレート制御部によるＶＢＶバッファアンダーフロー監視処理を説明するフローチャートである。
【図９】媒体を説明する図である。
【符号の説明】
１  基本符号化処理部，  ２  エンコーダ送出バッファ，３  レート制御部，１１  ピクチャタイプ決定部，  １２  走査変換部，  １４  ＤＣＴ変換部，  １５  重み付け量子化部，  １６  可変長符号化部，  ２０  モード判定部，  ４１  制御部，  ４２  ＶＢＶバッファアンダーフロー判定部，  ４３  演算部，４４  マージンサイズメモリ
【図１】
2004241879.tif 000008
【図２】
2004241879.tif 000009
【図３】
2004241879.tif 000010
【図４】
2004241879.tif 000011
【図５】
2004241879.tif 000012
【図６】
2004241879.tif 000013
【図７】
2004241879.tif 000014
【図８】
2004241879.tif 000015
【図９】
2004241879.tif 000016