(57)【要約】【課題】  シームレスなビットレート変換を実現する。【解決手段】  ステップＳ３１でビットレート情報が取得され、ステップＳ３２で、ビットレートが低レートから高レートへ変更されたか否かが判断されて、変更されていない場合、ステップＳ３３で、通常通りのVBVバッファサイズの最大値を用いてレート制御が実行される。変更された場合、ステップＳ３４で、vbv_size_tmp(j)＝vbv_size_tmp(ｊ-1)−pic_bit(L)＋pic_bit(H)が計算され、ステップＳ３５で、vbv_size_tmp(j)がVBVバッファサイズの最大値より大きいか否かが判断される。vbv_size_tmp(j)が大きい場合、ステップＳ３６で、vbv_size_max(H)がバッファサイズの最大値となるようにレート制御が行われる。バッファサイズの最大値が大きい場合、ステップＳ３７で、vbv_size_tmp(j)がバッファサイズの最大値となるようにレート制御が行われる。本発明は、符号化装置に適用できる。【選択図】図１２
2005045515.tif 000002
【特許請求の範囲】
【請求項１】
ビットレートに基づいてビデオデータを符号化する符号化装置において、
前記ビットレートに関する情報を取得するビットレート情報取得手段と、
前記ビデオデータを構成するピクチャを量子化する量子化手段と、
前記量子化手段による前記ピクチャの量子化を制御する量子化制御手段と、
前記量子化制御手段により制御された前記量子化手段により量子化された量子化データを符号化する符号化手段と
を備え、
前記量子化制御手段は、前記ビットレート情報取得手段により取得された情報を基に、前記ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、前記第２のビットレートの前記ピクチャの量子化を、前記第２のビットレートに応じて制御するとともに、前記第２のビットレートが前記第１のビットレートよりも高レートである場合、前記符号化手段により符号化される前記ピクチャの符号化遅延時間を前記ビデオデータの最大符号化遅延時間以下とするように制御する
ことを特徴とする符号化装置。
【請求項２】
前記量子化制御手段は、
前記符号化遅延時間を算出するために前記第１のビットレートおよび前記第２のビッ  トレートを用いる前記ピクチャに対して、前記ピクチャの前記符号化遅延時間が、前記  ビデオデータの最大符号化遅延時間以下となるように制御し、
前記符号化遅延時間を算出するために前記第２のビットレートのみを用いる前記ピク  チャに対して、前記第２のビットレートに応じて量子化を制御する
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記符号化手段により符号化された符号化データをバッファリングするVBVバッファのバッファ占有量に関する情報を取得するバッファ占有量情報取得手段を更に備え、
前記量子化制御手段は、前記バッファ占有量情報取得手段により取得された前記バッファ占有量に関する情報を基に、前記符号化遅延時間が前記最大符号化遅延時間よりも短くなるような目標発生符号量を計算し、その計算結果を基に量子化を制御する
ことを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記バッファ占有量情報取得手段は、実際の発生符号量を更に取得し、前記量子化制御手段により計算された前記目標発生符号量と、前記実際の発生符号量とを比較し、前記実際の発生符号量が前記目標発生符号量に満たない場合、前記符号化手段により符号化された前記符号化データに対するスタッフィングビットに関する情報を更に生成する
ことを特徴とする請求項３に記載の符号化装置。
【請求項５】
ビットレートに基づいてビデオデータを符号化する符号化装置の符号化方法において、  前記ビットレートに関する情報を取得するビットレート情報取得ステップと、
前記ビットレート情報取得ステップの処理により取得された前記ビットレートに関する情報を基に、前記ビデオデータを構成するピクチャの前記ビットレートが、第１のビットレートから、前記第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、
前記判断ステップの処理により、前記ビットレートが、前記第１のビットレートから前記第２のビットレートに変更されたと判断された場合、符号化される前記ピクチャの符号化遅延時間を前記ビデオデータの最大符号化遅延時間以下とするように、前記ピクチャの量子化を制御する制御ステップと
を含むことを特徴とする符号化方法。
【請求項６】
ビットレートに基づいてビデオデータを符号化する処理をコンピュータに実行させるためのプログラムであって、
前記ビットレートに関する情報を取得するビットレート情報取得ステップと、
前記ビットレート情報取得ステップの処理により取得された前記ビットレートに関する情報を基に、前記ビデオデータを構成するピクチャの前記ビットレートが、第１のビットレートから、前記第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、
前記判断ステップの処理により、前記ビットレートが、前記第１のビットレートから前記第２のビットレートに変更されたと判断された場合、符号化される前記ピクチャの符号化遅延時間を前記ビデオデータの最大符号化遅延時間以下とするように、前記ピクチャの量子化を制御する制御ステップと
を含む処理をコンピュータに実行させることを特徴とするプログラム。
【請求項７】
ビットレートに基づいてビデオデータを符号化する符号化装置において、
前記ビットレートに関する情報を取得するビットレート情報取得手段と、
前記ビデオデータを構成するピクチャを量子化する量子化手段と、
前記量子化手段による前記ピクチャの量子化を制御する量子化制御手段と、
前記量子化制御手段により制御された前記量子化手段により量子化された量子化データを符号化する符号化手段と
を備え、
前記量子化制御手段は、前記ビットレート情報取得手段により取得された情報を基に、前記ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、前記第２のビットレートの前記ピクチャの量子化を、前記第２のビットレートに応じて制御するとともに、前記第２のビットレートが前記第１のビットレートよりも高レートである場合、前記符号化手段により符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、前記符号化手段により符号化される前記ピクチャの符号化遅延時間を前記ビデオデータの最大符号化遅延時間以下とする前記VBVバッファの第１のバッファ容量と、前記第２のビットレートに応じて定められる前記VBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定して、量子化を制御する
ことを特徴とする符号化装置。
【請求項８】
前記量子化制御手段は、前記第１のバッファ容量を、前記第１のビットレートにおいて対応する前記ピクチャのデコード間隔に前記VBVバッファに蓄積する第１の符号量、および、前記第２のビットレートにおいて対応する前記ピクチャのデコード間隔に前記VBVバッファに蓄積する第２の符号量、並びに、１つ前の前記ピクチャが取りうる前記VBVバッファの最大容量を基に算出する
ことを特徴とする請求項７に記載の符号化装置。
【請求項９】
前記符号化手段により符号化された符号化データをバッファリングするVBVバッファのバッファ占有量を制御するバッファ制御手段を更に備え、
前記量子化制御手段は、前記第１のバッファ容量と前記第２のバッファ容量のうちの小さいほうの値を基に、目標発生符号量を計算して、前記目標発生符号量を基に量子化を制御し、
前記バッファ制御手段は、実際の発生符号量を更に取得し、前記量子化制御手段により計算された前記目標発生符号量と、前記実際の発生符号量とを比較し、前記実際の発生符号量が前記目標発生符号量に満たない場合、前記符号化手段により符号化された前記符号化データに対するスタッフィングビットに関する情報を更に生成する
ことを特徴とする請求項７に記載の符号化装置。
【請求項１０】
ビットレートに基づいてビデオデータを符号化する符号化装置の符号化方法において、  前記ビットレートに関する情報を取得するビットレート情報取得ステップと、
前記ビットレート情報取得ステップの処理により取得された前記ビットレートに関する情報を基に、前記ビデオデータを構成するピクチャの前記ビットレートが、第１のビットレートから、前記第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、
前記判断ステップの処理により、前記ビットレートが、前記第１のビットレートから前記第２のビットレートに変更されたと判断された場合、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化される前記ピクチャの符号化遅延時間を前記ビデオデータの最大符号化遅延時間以下とする前記VBVバッファの第１のバッファ容量と、前記第２のビットレートに応じて定められる前記VBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定する設定ステップと
を含むことを特徴とする符号化方法。
【請求項１１】
ビットレートに基づいてビデオデータを符号化する処理をコンピュータに実行させるためのプログラムであって、
前記ビットレートに関する情報を取得するビットレート情報取得ステップと、
前記ビットレート情報取得ステップの処理により取得された前記ビットレートに関する情報を基に、前記ビデオデータを構成するピクチャの前記ビットレートが、第１のビットレートから、前記第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、
前記判断ステップの処理により、前記ビットレートが、前記第１のビットレートから前記第２のビットレートに変更されたと判断された場合、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化される前記ピクチャの符号化遅延時間を前記ビデオデータの最大符号化遅延時間以下とする前記VBVバッファの第１のバッファ容量と、前記第２のビットレートに応じて定められる前記VBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定する設定ステップと
を含む処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、および、符号化方法、並びに、プログラムに関し、特に、ビットレートが変更される場合においても、連続する映像を途切れることなくデコードすることができるように符号化することができる、符号化装置、および、符号化方法、並びに、プログラムに関する。
【背景技術】
【０００２】
衛星放送に代表されるディジタル放送においては、例えばMPEG（Moving Picture Experts Group）の手法によりデータ圧縮された複数のプログラムが、統計多重の手法により、その伝送レートが動的に変化されて多重化される。これにより、限られた伝送レートを有効に利用して、全体として高画質のプログラムを伝送することができる。
【０００３】
すなわち、統計多重の手法により、複数の番組のプログラムが多重化される場合、複数のプログラムにおいて画質劣化が知覚され易い箇所が同時に発生することは実際には起こりにくいので、具体的には、それぞれのプログラムにおいて、画質劣化が知覚されやすい個所にはレートが多く割り当てられ、画質劣化が知覚されにくい個所のレート配分が削除されて、各プログラムの伝送レートが動的に変化される。これにより、画質の劣化を知覚するのが困難な部分に必要以上にレートを割り当てる必要がなくなり、その分のレートを、他のプログラムに振り分けることにより、全体として、画質を劣化させることなく、伝送効率を向上させることができる。
【０００４】
ところで、このように統計多重によりビットレートを変更して種々のプログラムを伝送する場合、デコーダ（復号装置）側で、連続する映像を途切れることなく（以下シームレスと称する）デコードすることができるように、エンコーダ（符号化装置）側でビットレートを制御する必要がある。すなわち、エンコーダ側では、デコーダが伝送されてきたデータを一時的に保持する、所謂VBV（Video Buffering Verifier）バッファが、オーバーフローしたり、アンダーフローしないように、ビットレートを制御する必要がある。
【０００５】
特に、放送または通信などのアプリケーションにおいては、例えば、DVD（Digital Versatile Disk）のような蓄積メディアに情報を記録する場合とは異なり、デコーダ側でビットストリームの読み出しを制御することができないので、エンコーダ側において、VBVバッファのデータ量を制御する必要がある。
【０００６】
シームレスなビットレートの変更を可能にするには、エンコーダがエンコードしたデータを出力バッファに書き込んだ後、デコーダが対応するデータを入力バッファから読み出すまでの遅延時間τが、ビットレートに拘らず、常に一定になるようにすればよい。このようにビットレートを制御すれば、VBVバッファには、一定のトランスポートストリームデータが保持される。したがって、入力バッファがオーバーフローしたり、アンダーフローすることを防止することができ、シームレスにビットレートを制御することができる。
【０００７】
VBVバッファによる遅延時間τは、トランスポートストリームのビットレートが最低のビットレートのときに最も大きくなる。
【０００８】
このように、統計多重が行われる場合など、シームレスにビットレートを変更する場合において、最低ビットレートを低く設定しても遅延時間を短く維持することができ、統計多重の利点を生かして、全体として画質を向上させることができるようにするために、ビットレートに応じて、VBVバッファの使用可能範囲を制御する技術がある。（例えば、特許文献１参照）。
【０００９】
【特許文献１】特開平１１−２６２００８号公報
【００１０】
ビットレートに応じてVBVバッファの使用可能範囲が制御される場合の、VBVバッファの最大容量、ビットレート、および、符号化遅延について、図１を用いて説明する。
【００１１】
VBVバッファの最大容量がvbv_size(0)であり、符号化遅延をτとするときのビットレートがbit_rate(0)である場合、次の式（１）が満たされる。
【００１２】
τ＝vbv_size(0)/bit_rate(0)・・・（１）
【００１３】
シームレスビットレート変更を行うことのできる条件は、ビットレート変更後の遅延時間が常にτ以下となることであり、bit_rate(0)より低いビットレートbit_rate(1)にビットレートが変更する際のVBVバッファ最大値vbv_size(1)は、次の式（２）を満たすようになされる。
【００１４】
vbv_size(1)＝bit_rate(1)×τ・・・（２）
【００１５】
すなわち、図２に示されるように、ビットレートがbit_rate(0)からbit_rate(1)に変更される場合、VBVバッファの最大値は、vbv_size(0)からvbv_size(1)に変更され、ビットレートがbit_rate(1)からbit_rate(0)に変更される場合、VBVバッファの最大値は、vbv_size(1)からvbv_size(0)に変更される。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
ここで、ビットレートがbit_rate(1)からbit_rate(0)に変更される場合、すなわち、図２において、ビットレート変更点Ａの次のピクチャにおけるVBVバッファの最大容量、ビットレート、および、符号化遅延について、図３を用いて説明する。
【００１７】
従来用いられた技術によって、ビットレートに基づいて、バッファ容量が制御され、最大遅延時間τ、ビットレート変更点Ａまでのビットレートbit_rate(1)、ビットレート変更点Ａ以降のビットレートbit_rate(0)（bit_rate(0)＞bit_rate(1)）である場合、ビットレート変更点ＡまでのVBVバッファの最大値は、bit_rate(1)×τで求められるvbv_size(1)となり、ビットレート変更点Ａ以降のVBVバッファの最大値は、bit_rate(0)×τで求められるvbv_size(0)となるように制御される。すなわち、ビットレート変更点Ａ以降のVBV占有量（例えば、次のピクチャにおけるVBV占有量vbv_ocpy(1)）がvbv_size(0)以下となればよいとされていた。
【００１８】
しかしながら、ビットレートが低レートから高レートに変更された（bit_rate(0)＞bit_rate(1)であった）場合のビットレート変更点Ａ直後の数ピクチャにおける符号化遅延は、図３に示される遅延時間τ(1)のように、ビットレート変更点Ａにおける符号発生後のバッファ占有量（VBV占有量vbv_ocpy(0)から符号発生量gen_bit(1)を減算した値）を基準として、ビットレートの変更点前の部分においては、変更前のビットレートbit_rate(1)を用いて、ビットレートの変更点後の部分においては、変更後のビットレートbit_rate(0)を用いて求められる。したがって、レート変更時のVBV占有量vbv_ocpy(0)がvbv_size(1)に近く、発生符号量gen_bit(1)が小さい場合、遅延時間τ(1)が、最大遅延時間τより大きくなってしまい、シームレスにビットレートを変更することができない場合がある。
【００１９】
本発明はこのような状況に鑑みてなされたものであり、ビットレートが低レートから高レートに変更された場合においても、常に、遅延時間τ(1)が、最大遅延時間τより大きくならないように制御することができるようにするものである。
【課題を解決するための手段】
【００２０】
本発明の第１の符号化装置は、ビットレートに関する情報を取得するビットレート情報取得手段と、ビデオデータを構成するピクチャを量子化する量子化手段と、量子化手段によるピクチャの量子化を制御する量子化制御手段と、量子化制御手段により制御された量子化手段により量子化された量子化データを符号化する符号化手段とを備え、量子化制御手段は、ビットレート情報取得手段により取得された情報を基に、ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、第２のビットレートのピクチャの量子化を、第２のビットレートに応じて制御するとともに、第２のビットレートが第１のビットレートよりも高レートである場合、符号化手段により符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするように制御することを特徴とする。
【００２１】
量子化制御手段には、符号化遅延時間を算出するために第１のビットレートおよび第２のビットレートを用いるピクチャに対して、ピクチャの符号化遅延時間が、ビデオデータの最大符号化遅延時間以下となるように制御させるようにすることができ、符号化遅延時間を算出するために第２のビットレートのみを用いるピクチャに対して、第２のビットレートに応じて量子化を制御させるようにすることができる。
【００２２】
符号化手段により符号化された符号化データをバッファリングするVBVバッファのバッファ占有量に関する情報を取得するバッファ占有量情報取得手段を更に備えさせるようにすることができ、量子化制御手段には、バッファ占有量情報取得手段により取得されたバッファ占有量に関する情報を基に、符号化遅延時間が最大符号化遅延時間よりも短くなるような目標発生符号量を計算させるようにすることができ、その計算結果を基に量子化を制御させるようにすることができる。
【００２３】
バッファ占有量情報取得手段には、実際の発生符号量を更に取得させるようにすることができ、量子化制御手段により計算された目標発生符号量と、実際の発生符号量とを比較させるようにすることができ、実際の発生符号量が目標発生符号量に満たない場合、符号化手段により符号化された符号化データに対するスタッフィングビットに関する情報を更に生成させるようにすることができる。
【００２４】
本発明の第１の符号化装置においては、ビットレートに関する情報が取得され、ビデオデータを構成するピクチャが量子化され、ピクチャの量子化が制御され、量子化された量子化データが符号化され、ビットレート情報を基に、ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、第２のビットレートのピクチャの量子化が、第２のビットレートに応じて制御されるとともに、第２のビットレートが第１のビットレートよりも高レートである場合、符号化されるピクチャの符号化遅延時間がビデオデータの最大符号化遅延時間以下とされるように制御される。
【００２５】
本発明の第１の符号化方法は、ビットレートに関する情報を取得するビットレート情報取得ステップと、ビットレート情報取得ステップの処理により取得されたビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、判断ステップの処理により、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするように、ピクチャの量子化を制御する制御ステップとを含むことを特徴とする。
【００２６】
本発明の第１のプログラムは、ビットレートに関する情報を取得するビットレート情報取得ステップと、ビットレート情報取得ステップの処理により取得されたビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、判断ステップの処理により、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするように、ピクチャの量子化を制御する制御ステップとを含む処理をコンピュータに実行させることを特徴とする。
【００２７】
本発明の第１の符号化方法およびプログラムにおいては、ビットレートに関する情報が取得され、ビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かが判断され、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするように、ピクチャの量子化が制御される。
【００２８】
本発明の第２の符号化装置は、ビットレートに関する情報を取得するビットレート情報取得手段と、ビデオデータを構成するピクチャを量子化する量子化手段と、量子化手段によるピクチャの量子化を制御する量子化制御手段と、量子化制御手段により制御された量子化手段により量子化された量子化データを符号化する符号化手段とを備え、量子化制御手段は、ビットレート情報取得手段により取得された情報を基に、ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、第２のビットレートのピクチャの量子化を、第２のビットレートに応じて制御するとともに、第２のビットレートが第１のビットレートよりも高レートである場合、符号化手段により符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化手段により符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定して、量子化を制御することを特徴とする。
【００２９】
量子化制御手段には、第１のバッファ容量を、第１のビットレートにおいて対応するピクチャのデコード間隔にVBVバッファに蓄積する第１の符号量、および、第２のビットレートにおいて対応するピクチャのデコード間隔にVBVバッファに蓄積する第２の符号量、並びに、１つ前のピクチャが取りうるVBVバッファの最大容量を基に算出させるようにすることができる。
【００３０】
符号化手段により符号化された符号化データをバッファリングするVBVバッファのバッファ占有量を制御するバッファ制御手段を更に備えさせるようにすることができ、量子化制御手段には、第１のバッファ容量と第２のバッファ容量のうちの小さいほうの値を基に、目標発生符号量を計算して、目標発生符号量を基に量子化を制御させるようにすることができ、バッファ制御手段には、実際の発生符号量を更に取得させるようにすることができ、量子化制御手段により計算された目標発生符号量と、実際の発生符号量とを比較させるようにすることができ、実際の発生符号量が目標発生符号量に満たない場合、符号化手段により符号化された符号化データに対するスタッフィングビットに関する情報を更に生成させるようにすることができる。
【００３１】
本発明の第２の符号化装置においては、ビットレートに関する情報が取得され、ビデオデータを構成するピクチャが量子化され、ピクチャの量子化が制御され、量子化データが符号化され、ビットレート情報を基に、ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、第２のビットレートのピクチャの量子化が、第２のビットレートに応じて制御されるとともに、第２のビットレートが第１のビットレートよりも高レートである場合、符号化データをバッファリングするVBVバッファの最大バッファ容量が、符号化手段により符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定されて、量子化が制御される。
【００３２】
本発明の第２の符号化方法は、ビットレートに関する情報を取得するビットレート情報取得ステップと、ビットレート情報取得ステップの処理により取得されたビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、判断ステップの処理により、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定する設定ステップとを含むことを特徴とする。
【００３３】
本発明の第２のプログラムは、ビットレートに関する情報を取得するビットレート情報取得ステップと、ビットレート情報取得ステップの処理により取得されたビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップと、判断ステップの処理により、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定する設定ステップとを含む処理をコンピュータに実行させることを特徴とする。
【００３４】
本発明の第２の符号化方法およびプログラムにおいては、ビットレートに関する情報が取得され、ビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かが判断され、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量が、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定される。
【発明の効果】
【００３５】
本発明によれば、ビデオデータを符号化することができる。特に、ビットレートが低レートから高レートに変更された直後の数ピクチャにおける符号化遅延時間がビデオデータの最大遅延時間以下とするようにしたので、シームレスビットレート変更条件を満たすことができる。
【００３６】
また、他の本発明によれば、ビデオデータを符号化することができる他、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、ピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とする第１のバッファ容量と、第２のビットレートに応じて定められる第２のバッファ容量とのうちの小さいほうの値に設定するようにしたので、シームレスビットレート変更条件を満たすことができる。
【発明を実施するための最良の形態】
【００３７】
以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段および各ステップと以下の実施の形態との対応関係を明らかにするために、各手段および各ステップの後の括弧内に、対応する実施の形態（但し一例）を付加して本発明の特徴を記述すると、次のようになる。但し勿論この記載は、各手段および各ステップを記載したものに限定することを意味するものではない。
【００３８】
請求項１に記載の符号化装置（例えば、図４に記載の符号化装置１）は、ビットレートに関する情報を取得するビットレート情報取得手段（例えば、図４のビットレート情報取得部３１）と、ビデオデータを構成するピクチャを量子化する量子化手段（例えば、図４の量子化部１５）と、量子化手段によるピクチャの量子化を制御する量子化制御手段（例えば、図４の目標符号量決定部３３）と、量子化制御手段により制御された量子化手段により量子化された量子化データを符号化する符号化手段（例えば、図４のVLC部１６）とを備え、量子化制御手段は、ビットレート情報取得手段により取得された情報を基に、ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、第２のビットレートのピクチャの量子化を、第２のビットレートに応じて制御するとともに、第２のビットレートが第１のビットレートよりも高レートである場合、符号化手段により符号化されるピクチャの符号化遅延時間（例えば、τ(1)またはτ(2)）をビデオデータの最大符号化遅延時間(例えば、式（１）におけるτ)以下とするように制御することを特徴とする。
【００３９】
請求項２に記載の符号化装置は、量子化制御手段が、符号化遅延時間を算出するために第１のビットレートおよび第２のビットレートを用いるピクチャ（例えば、図７におけるビットレート変更後の１枚目乃至３枚目のピクチャ）に対して、ピクチャの符号化遅延時間が、ビデオデータの最大符号化遅延時間以下となるように制御し、符号化遅延時間を算出するために第２のビットレートのみを用いるピクチャ（例えば、図７におけるビットレート変更後の４枚目のピクチャ）に対して、第２のビットレートに応じて量子化を制御することを特徴とする。
【００４０】
請求項３に記載の符号化装置は、符号化手段により符号化された符号化データをバッファリングするVBVバッファのバッファ占有量に関する情報（例えば、vbv_ocpy(1)）を取得するバッファ占有量情報取得手段（例えば、図４のVBVバッファ管理部３２）を更に備え、量子化制御手段は、バッファ占有量情報取得手段により取得されたバッファ占有量に関する情報を基に、符号化遅延時間が最大符号化遅延時間よりも短くなるような目標発生符号量（例えば、式（２０）のTb(i)）を計算し、その計算結果を基に量子化を制御することを特徴とする。
【００４１】
請求項４に記載の符号化装置は、バッファ占有量情報取得手段が、実際の発生符号量（例えば、gen_bit(1)）を更に取得し、量子化制御手段により計算された目標発生符号量と、実際の発生符号量とを比較し、実際の発生符号量が目標発生符号量に満たない場合、符号化手段により符号化された符号化データに対するスタッフィングビットに関する情報（例えば、式（１４）のstuffing(1)）を更に生成することを特徴とする。
【００４２】
請求項５に記載の符号化方法は、ビットレートに関する情報を取得するビットレート情報取得ステップ（例えば、図８のステップＳ１の処理）と、ビットレート情報取得ステップの処理により取得されたビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップ（例えば、図８のステップＳ２の処理）と、判断ステップの処理により、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするように、ピクチャの量子化を制御する制御ステップ（例えば、図８のステップＳ６の処理）とを含むことを特徴とする。
【００４３】
また、請求項６に記載のプログラムにおいても、各ステップが対応する実施の形態（但し一例）は、請求項５に記載の符号化方法と同様である。
【００４４】
請求項７に記載の符号化装置（例えば、図４に記載の符号化装置１）は、ビットレートに関する情報を取得するビットレート情報取得手段（例えば、図４のビットレート情報取得部３１）と、ビデオデータを構成するピクチャを量子化する量子化手段（例えば、図４の量子化部１５）と、量子化手段によるピクチャの量子化を制御する量子化制御手段（例えば、図４の目標符号量決定部３３）と、量子化制御手段により制御された量子化手段により量子化された量子化データを符号化する符号化手段（例えば、図４のVLC部１６）とを備え、量子化制御手段は、ビットレート情報取得手段により取得された情報を基に、ビットレートが第１のビットレートから第２のビットレートに変更されたことが検出された場合、第２のビットレートのピクチャの量子化を、第２のビットレートに応じて制御するとともに、第２のビットレートが第１のビットレートよりも高レートである場合、符号化手段により符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化手段により符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量（例えば、式（２６）で求められるvbv_size_tmp(j)）と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量（例えば、式（２７）のvbv_size_max(H)）とのうちの小さいほうの値に設定して、量子化を制御することを特徴とする。
【００４５】
請求項８に記載の符号化装置は、量子化制御手段が、第１のバッファ容量を、第１のビットレートにおいて対応するピクチャのデコード間隔にVBVバッファに蓄積する第１の符号量（例えば、式（２５）のpic_bit(1)、式（２６）または式（２７）のpic_bit(L)）、および、第２のビットレートにおいて対応するピクチャのデコード間隔にVBVバッファに蓄積する第２の符号量（例えば、式（２５）のpic_bit(2)、式（２６）または式（２７）のpic_bit(H)）、並びに、１つ前のピクチャが取りうるVBVバッファの最大容量（例えば、式（２６）または式（２７）のvbv_size_tmp（j-1））を基に算出すことを特徴とする。
【００４６】
請求項９に記載の符号化装置は、符号化手段により符号化された符号化データをバッファリングするVBVバッファのバッファ占有量を制御するバッファ制御手段(例えば、図４のVBVバッファ管理部３２)を更に備え、量子化制御手段は、第１のバッファ容量と第２のバッファ容量のうちの小さいほうの値を基に、目標発生符号量を計算して、目標発生符号量を基に量子化を制御し、バッファ制御手段は、実際の発生符号量（例えば、gen_bit(1)）を更に取得し、量子化制御手段により計算された目標発生符号量と、実際の発生符号量とを比較し、実際の発生符号量が目標発生符号量に満たない場合、符号化手段により符号化された符号化データに対するスタッフィングビットに関する情報（例えば、stuffing(1)）を更に生成することを特徴とする。
【００４７】
請求項１０に記載の符号化方法は、ビットレートに関する情報を取得するビットレート情報取得ステップ（例えば、図１２のステップＳ３１）と、ビットレート情報取得ステップの処理により取得されたビットレートに関する情報を基に、ビデオデータを構成するピクチャのビットレートが、第１のビットレートから、第１のビットレートより高レートである第２のビットレートに変更されたか否かを判断する判断ステップ（例えば、図１２のステップＳ３２）と、判断ステップの処理により、ビットレートが、第１のビットレートから第２のビットレートに変更されたと判断された場合、符号化された符号化データをバッファリングするVBVバッファの最大バッファ容量を、符号化されるピクチャの符号化遅延時間をビデオデータの最大符号化遅延時間以下とするVBVバッファの第１のバッファ容量と、第２のビットレートに応じて定められるVBVバッファの第２のバッファ容量とのうちの小さいほうの値に設定する設定ステップ（例えば、図１２のステップＳ３４乃至ステップＳ３７の処理）とを含むことを特徴とする。
【００４８】
また、請求項１１に記載のプログラムにおいても、各ステップが対応する実施の形態（但し一例）は、請求項１０に記載の符号化方法と同様である。
【００４９】
以下、図を参照して、本発明の実施の形態について説明する。
【００５０】
図４は、本発明を適用した符号化装置１の構成を示すブロック図である。
【００５１】
画像並べ替え部１１は、順次入力されるビデオデータの各フレーム画像を、必要に応じて並べ替えたり、１６画素×１６ラインの輝度信号、および輝度信号に対応する色差信号によって構成されるマクロブロックに分割したマクロブロックデータを生成して、演算部１２、および、動き検出部１３に供給する。
【００５２】
動き検出部１３は、マクロブロックデータの入力を受け、各マクロブロックの動きベクトルを、マクロブロックデータ、および、ビデオメモリ２１に記憶されている参照画像データを基に算出し、動きベクトルデータとして、動き補償部２０に送出する。
【００５３】
演算部１２は、画像並べ替え部１１から供給されたマクロブロックデータについて、各マクロブロックの画像タイプに基づいた動き補償を行う。具体的には、演算部１２は、Ｉピクチャに対してはイントラモードで動き補償を行い、Ｐピクチャに対しては、順方向予測モードで動き補償を行い、Ｂピクチャに対しては、双方向予測モードで動き補償を行うようになされている。
【００５４】
ここでイントラモードとは、符号化対象となるフレーム画像をそのまま伝送データとする方法であり、順方向予測モードとは、符号化対象となるフレーム画像と過去参照画像との予測残差を伝送データとする方法であり、双方向予測モードとは、符号化対象となるフレーム画像と、過去と将来の参照画像との予測残差を伝送データとする方法である。
【００５５】
まず、マクロブロックデータがＩピクチャであった場合、マクロブロックデータはイントラモードで処理される。すなわち、演算部１２は、入力されたマクロブロックデータのマクロブロックを、そのまま演算データとしてDCT（Discrete Cosine Transform ：離散コサイン変換）部１４に送出する。DCT部１４は、入力された演算データに対しDCT変換処理を行うことによりDCT係数化し、これをDCT係数データとして、量子化部１５に送出する。
【００５６】
量子化部１５は、量子化制御部２３の目標符号量決定部３３から供給される量子化値Ｑに基づいて、入力されたDCT係数データに対して量子化処理を行い、量子化DCT係数データとしてVLC（Variable Length Code；可変長符号化）部１６および逆量子化部１７に送出する。ここで、量子化部１５は、目標符号量決定部３３から供給される量子化値Ｑに応じて、量子化処理における量子化ステップサイズを調整することにより、発生する符号量を制御するようになされている。
【００５７】
逆量子化部１７に送出された量子化DCT係数データは、量子化部１５と同じ量子化ステップサイズによる逆量子化処理を受け、DCT係数データとして、IDCT（Inverse Discreet Cosine Transform；逆離散コサイン変換）部１８に送出される。IDCT部１８は、供給されたDCT係数データに逆DCT処理を施し、生成された演算データは、演算部１９に送出され、参照画像データとしてビデオメモリ２１に記憶される。
【００５８】
そして、演算部１２は、マクロブロックデータがＰピクチャであった場合、マクロブロックデータについて、順方向予測モードよる動き補償処理を行い、Ｂピクチャであった場合、マクロブロックデータについて、双方向予測モードによる動き補償処理を行う。
【００５９】
動き補償部２０は、ビデオメモリ２１に記憶されている参照画像データを、動きベクトルデータに応じて動き補償し、順方向予測画像データ、または、双方向予測画像データを算出する。演算部１２は、マクロブロックデータについて、動き補償部２０より供給される順方向予測画像データ、または、双方向予測画像データを用いて減算処理を実行する。
【００６０】
すなわち、順方向予測モードにおいて、動き補償部２０は、ビデオメモリ２１の読み出しアドレスを、動きベクトルデータに応じてずらすことによって、参照画像データを読み出し、これを順方向予測画像データとして演算部１２および演算部１９に供給する。演算部１２は、供給されたマクロブロックデータから、順方向予測画像データを減算して、予測残差としての差分データを得る。そして、演算部１２は、差分データをDCT部１４に送出する。
【００６１】
演算部１９には、動き補償部２０より順方向予測画像データが供給されており、演算部１９は、IDCT部１８から供給された演算データに、順方向予測画像データを加算することにより、参照画像データを局部再生し、ビデオメモリ２１に出力して記憶させる。
【００６２】
また、双方向予測モードにおいて、動き補償部２０は、ビデオメモリ２１の読み出しアドレスを、動きベクトルデータに応じてずらすことによって、参照画像データを読み出し、これを双方向予測画像データとして演算部１２および演算部１９に供給する。演算部１２は、供給されたマクロブロックデータから、双方向予測画像データを減算して、予測残差としての差分データを得る。そして、演算部１２は、差分データをDCT部１４に送出する。
【００６３】
演算部１９には、動き補償部２０より双方向予測画像データが供給されており、演算部１９は、IDCT部１８から供給された演算データに、双方向予測画像データを加算することにより、参照画像データを局部再生し、ビデオメモリ２１に出力して記憶させる。
【００６４】
かくして、符号化装置１に入力された画像データは、動き補償予測処理、DCT処理および量子化処理を受け、量子化DCT係数データとして、VLC部１６に供給される。VLC部１６は、量子化DCT係数データに対し、所定の変換テーブルに基づく可変長符号化処理を行い、その結果得られる可変長符号化データをバッファ２２に送出する。バッファ２２は、供給された可変長符号化ストリームを所定の時間バッファリングした後、出力する。
【００６５】
出力された可変長符号化ストリームは、例えば、必要に応じて、オーディオストリームや、他の映像ストリームと多重化されて、所定の処理により、分割されて、ヘッダなどが付加されることによりパケット化され、複数のパケットデータにより構成されるMPEGトランスポートストリームが、所定のデータ伝送路によって、伝送される。
【００６６】
量子化制御部２３は、符号化装置１における量子化を制御するものである。ビットレート情報取得部３１は、ビットレートの値を示す情報、または、ビットレートが変更されたか否かを示す情報を取得し、VBVバッファ管理部３２に供給する。VBVバッファ管理部３２は、バッファ２２に格納される可変長符号化データの蓄積状態を常時監視しており、蓄積状態を表す占有量情報を目標符号量決定部３３に供給するとともに、ビットレート情報取得部３１から供給されたビットレート情報に基づいて、ビットレートが低レートから高レートに変更されたか否かを示す情報を目標符号量決定部３３に供給する。
【００６７】
また、VBVバッファ管理部３２は、実際に発生された符号量が目標符号量に満たない場合、必要に応じて、トランスポートストリームにスタッフィングコードを付加させる（ゼロスタッフィングを行わせる）ためのスタッフィング情報を出力することが可能である。
スタッフィングコードとは、スタートコードの前に配置することが可能な、バイト単位の値が０のデータを意味する。MPEGでは、スタッフィングコードは、デコード時には読み飛ばされるため、復号された画像に影響はないが、VBVバッファの管理上はビットストリームを構成するデータとしてカウントされるため、スタッフィングコードを付加することにより、VBVバッファのオーバーフローを未然に防ぐことができる。
【００６８】
目標符号量決定部３３は、ビットレートが低レートから高レートに変更されたか否かに基づいて、VBVバッファ管理部３２から供給された占有量情報に基づいて、目標符号量を決定し、目標符号量を発生するための量子化ステップサイズを決定して、量子化部１５に供給するようになされている。
【００６９】
図２を用いて説明したように、符号化装置１においては、ビットレートがbit_rate(0)からbit_rate(1)に変更される場合、VBVバッファの最大値は、vbv_size(0)からvbv_size(1)に変更され、ビットレートがbit_rate(1)からbit_rate(0)に変更される場合、VBVバッファの最大値は、vbv_size(1)からvbv_size(0)に変更される。
【００７０】
目標符号量決定部３３は、ビットレートが低レートから高レートに変更された場合、レート変更後の遅延時間τ(1)が、最大遅延時間τより大きくなってしまうことがないように、図８を用いて後述する処理により、目標符号量を決定し、目標符号量を発生するための量子化ステップサイズを決定して、量子化部１５に供給するようになされている。
【００７１】
また、目標符号量決定部３３は、ビットレートが低レートから高レートに変更されていない場合、ビットレートに対応するVBVバッファサイズおよびVBVバッファ管理部３２から供給された占有量情報に基づいて、目標発生符号量よりも実際に発生したマクロブロックの発生符号量が多いとき、発生符号量を減らすために量子化ステップサイズを大きくし、また目標発生符号量よりも実際の発生符号量が少ないとき、発生符号量を増やすために量子化ステップサイズを小さくするようになされている。
【００７２】
すなわち、目標符号量決定部３３は、デコーダ側に設けられたVBVバッファに格納された可変長符号化データの蓄積状態の推移を想定することにより、仮想バッファのバッファ占有量を求めて、量子化値Ｑを算出し、これを量子化部１５に供給する。
【００７３】
ｊ番目のマクロブロックにおける仮想バッファのバッファ占有量ｄ（ｊ）は、次の式（３）によって表され、また、ｊ＋１番目のマクロブロックにおける仮想バッファのバッファ占有量ｄ（ｊ＋1）は、次の式（４）によって表され、（３）式から（４）式を減算することにより、ｊ＋１番目のマクロブロックにおける仮想バッファのバッファ占有量ｄ（ｊ＋1）は、次の式（５）として表される。
【００７４】
ｄ（ｊ）＝ｄ（０）＋Ｂ（ｊ−１）−｛Ｔ×（ｊ−１）／MBcnt｝・・・（３）
【００７５】
ここで、ｄ（０）は初期バッファ容量、Ｂ（ｊ）は、ｊ番目のマクロブロックにおける符号化発生ビット数、MBcntは、ピクチャ内のマクロブロック数、そして、Ｔは、ピクチャ単位の目標発生符号量である。
【００７６】
ｄ（ｊ＋１）＝ｄ（０）＋Ｂ（ｊ）−（Ｔ×ｊ）／MBcnt・・・（４）
【００７７】
ｄ（ｊ＋１）＝ｄ（ｊ）＋｛Ｂ（ｊ）−Ｂ（ｊ−１）｝−Ｔ／MBcnt・・・（５）
【００７８】
したがって、目標符号量決定部３３は、バッファ占有量ｄ（ｊ＋１）、および、式（６）に示される定数ｒを、式（７）に代入することにより、マクロブロック（ｊ＋1）の量子化インデックスデータＱ（ｊ＋1）を算出し、これを量子化部７５に供給する。
【００７９】
ｒ＝（２×ｂｒ）／ｐｒ  ・・・（６）
Ｑ（ｊ＋１）＝ｄ（ｊ＋１）×（３１／ｒ）  ・・・（７）
ここで、ｂｒは、ビットレートであり、ｐｒは、ピクチャレートである。
【００８０】
量子化部１５は、量子化値Ｑに基づいて、次のマクロブロックにおける量子化ステップサイズを決定し、量子化ステップサイズによってDCT係数データを量子化する。
【００８１】
これにより、量子化部１５は、１つ前のピクチャにおける実際の発生符号量に基づいて算出された、次のピクチャの目標発生符号量にとって最適な量子化ステップサイズによって、DCT係数データを量子化することができる。
【００８２】
かくして、量子化部１５では、バッファ２２のデータ占有量に応じて、バッファ２２がオーバーフローまたはアンダーフローしないように量子化し得るとともに、デコーダ側のVBVバッファがオーバーフロー、またはアンダーフローしないように量子化した量子化DCT係数データを生成することができる。
【００８３】
図５を用いて、ビットレートが低レートであるbit_rate(1)から、高レートであるbit_rate(0)に変更された場合の発生符号量と遅延時間の関係について説明する。
【００８４】
レート変更直後の遅延時間は、レート変更前後で異なるビットレートを基に求められるので、レート変更時のVBV占有量vbv_ocpy(0)がvbv_size(1)に近く、発生符号量gen_bit(1)が小さい場合、遅延時間τ(1)が、最大遅延時間τより大きくなる場合がある。これに対して、発生符号量gen_bit´(1)を、ある程度大きな値とすることにより、遅延時間τ´(1)を、最大遅延時間τと等しいか、または、最大遅延時間τより小さい値とすることができる。
【００８５】
次に、図６を用いて、レート変更直後の遅延時間τ(1)を、最大遅延時間τと等しいか、または、最大遅延時間τより小さい値とすることができる目標発生符号量について説明する。
【００８６】
ビットレート変更時のVBV占有量をvbv_ocpy(0)、目標発生符号量をTb(1)、bit_rate(1)のときの最大VBVバッファサイズをvbv_size(1)、ビットレート変更後の最初のピクチャのデコード間隔（ビットレート変更前の最後のピクチャのデコードタイミングとビットレート変更後の最初のピクチャのデコードタイミングとの間隔であり、具体的には、2fieldまたは3field時間）をduration(1)とした場合、ビットレート変更時の次のピクチャにおける遅延時間τ(1)は次の式（８）で表すことができる。
【００８７】
τ(1)＝｛(vbv_ocpy(0)−Tb(1))/bit_rate(1)｝＋duration(1)・・・（８）
【００８８】
シームレスにビットレート変換を行うためには、式（８）において、τ(1)がτ以下になればよい。したがって、次の式（９）および式（９）を変形した式（１０）を満たすようにすればよい。
【００８９】
τ≧｛(vbv_ocpy(0)−Tb(1))/bit_rate(1)｝＋duration(1)・・・（９）
bit_rate(1)×τ≧vbv_ocpy(0)−Tb(1)＋bit_rate(1)×duration(1)・・・（１０）
【００９０】
更に、bit_rate(1)×τはvbv_size(1)であり、デコード間隔duration(1)の間にVBVバッファに蓄積される符号量をpic_bit(1)とした場合、式（１０)は式（１１）に書き換えられるので、式（１２）を満たす符号量を発生するようにすれば、シームレスにビットレートを変換することができる。
【００９１】
vbv_size(1)≧vbv_ocpy(0)−Tb(1)＋pic_bit(1)・・・（１１）
Tb(1)≧vbv_ocpy(0)＋pic_bit(1)−vbv_size(1)・・・（１２）
【００９２】
したがって、目標符号量決定部３３は、ビットレートが低レートから高レートへ変更される場合、式(１２)を満たす目標発生符号量Tb(1)を算出し、目標符号量Tb(1)を発生するための量子化ステップサイズを決定して、量子化部１５に供給する
【００９３】
なお、式(１２)を満たす目標発生符号量Tb(1)の最小値は、式（１２）において、等式が成り立つ場合であるので、Tb(1)の最小値をTb(1)minとしたとき、Tb(1)minは、次の式(１３)で示される。
【００９４】
Tb(1)min＝vbv_ocpy(0)＋pic_bit(1)−vbv_size(1)・・・（１３）
【００９５】
そして、目標発生符号量Tb(1)に対して実際に発生した発生符号量をgen_bit(1)とし、発生符号量をgen_bit(1)が目標発生符号量Tb(1)に満たない場合、ゼロスタッフィングなどにより、発生符号量が補われるようにすれば良い。ゼロスタッフィングの符号量stuffing(1)は、次の式(１４)で示される。
【００９６】
stuffing(1)＝Tb(1)min−gen_bit(1)・・・（１４）
【００９７】
更に、レート変更後２枚目のピクチャにおける遅延時間τ(2)を、最大遅延時間τと等しいか、または、最大遅延時間τより小さい値とすることができる目標発生符号量Tb(2)について、図７を用いて説明する。
【００９８】
レート変更直後のピクチャにおいて、実際に発生した符号量をgen_bit(1)とすると、レート変更後２枚目のピクチャにおける遅延時間τ(2)は、レート変更後２枚目のピクチャにおけるデコード間隔（ビットレート変更後の最初のピクチャのデコードタイミングと２枚目のピクチャのデコードタイミングとの間隔であり、具体的には、2fieldまたは3field時間）をduration(2)とすると、次の式(15)で示される。
【００９９】
τ(2)＝｛(vbv_ocpy(0)−gen_bit(1)−Tb(2))/bit_rate(1)｝
＋duration(1)＋duration(2)                        ・・・（１５）
【０１００】
ここで、デコード間隔duration(2)の間にVBVバッファに蓄積される符号量をpic_bit(2)とすると、τ(2)をτ以下とするためには、上述した式（９）乃至式（１２）と同様にして、次の式（１６）乃至式（１９）が導かれる。
【０１０１】
τ≧｛(vbv_ocpy(0)−gen_bit(1)−Tb(2))/bit_rate(1)｝＋duration(1)＋duration(2)                                                                  ・・・（１６）  bit_rate(1)×τ≧vbv_ocpy(0)−gen_bit(1)−Tb(2)
＋bit_rate(1)×duration(1)＋bit_rate(1)×duration(2)
・・・（１７）  vbv_size(1)≧vbv_ocpy(0)−gen_bit(1)−Tb(2)＋pic_bit(1)＋pic_bit(2)
・・・（１８）  Tb(2)≧vbv_ocpy(0)−gen_bit(1)＋pic_bit(1)＋pic_bit(2)−vbv_size(1)
・・・（１９）
【０１０２】
以降、同様にビットレート変更後ｉ枚目のピクチャにおける目標発生符号量Tb(i)は、次の式（２０）ように一般化することができる。
【０１０３】
【数１】
2005045515.tif 000003
・・・（２０）
【０１０４】
また、図７に示される場合、ビットレート変更後３枚目のピクチャにおける遅延時間τ(3)を、最大遅延時間τと等しいか、または、最大遅延時間τより小さい値とするために、ビットレート変換前のビットレートbit_rate(1)およびビットレート変更後のビットレートbit_rate(0)が用いられて目標発生符号量Tb(3)が算出される。これに対して、実際の発生符号量が足りない場合であってもスタッフィングなどが施されるので、実際の遅延時間τ(3)は、ビットレート変換前のビットレートbit_rate(1)の値を用いずに、ビットレート変更後のビットレートbit_rate(0)のみを用いて求めることが可能となる。
【０１０５】
したがって、次の４枚目以降のピクチャにおける遅延時間τ(3)を、最大遅延時間τと等しいか、または、最大遅延時間τより小さい値とするための発生符号量の算出においては、ビットレート変換前のビットレートbit_rate(1)の値を用いずに、ビットレート変更後のビットレートbit_rate(0)のみを用いて、発生符号量の演算を行うことができる。ビットレート変更後の何枚目のピクチャにおいて、ビットレート変更後のビットレートのみを用いて遅延時間τ(i)の演算が行われるようになるかは、ビットレートや、ビットレート変更時のVBV占有量vbv_ocpy(0)、ビット発生量などにより異なる。ビットレート変更後のビットレートのみを用いて、遅延時間τ(i)の演算を行うことができるとき、次の式（２１）が満たされる。
【０１０６】
【数２】
2005045515.tif 000004
・・・（２１）
【０１０７】
図８を用いて、遅延時間τ(i)を、最大遅延時間τより小さい値とするために発生符号量を調整する、発生符号量調整処理について説明する。
【０１０８】
ステップＳ１において、ビットレート情報取得部３１は、ビットレート情報を取得して、VBVバッファ管理部３２に供給する。ビットレート情報は、ビットレートそのものの数値データあっても、ビットレートを示す対応する情報であっても、または、ビットレートが変更されたか否か、および、ビットレートの変更は低レートから高レートへの変更であるか否かを示す情報であっても良い。ビットレート情報取得部３１は、外部の装置からビットレート情報を取得するようにしても良いし、ビットレート情報がビデオデータに多重化されている場合、ビデオデータからビットレート情報を抽出するようにしても良い。
【０１０９】
ステップＳ２において、VBVバッファ管理部３２は、供給されたビットレート情報を基に、現在のビットレートは、低レートから高レートへ変更された変更後のビットレートであるか否かを判断する。ステップＳ２において、ビットレートが、低レートから高レートへ変更された変更後のビットレートではないと判断された場合、VBVバッファ管理部３２は、ビットレートが低レートから高レートへ変更されていないことを示す情報、および、バッファの占有量情報を、目標符号量決定部３３に供給し、処理は、後述するステップＳ５に進む。
【０１１０】
ステップＳ２において、ビットレートが、低レートから高レートへ変更された変更後のビットレートであると判断された場合、VBVバッファ管理部３２は、ビットレートが低レートから高レートへ変更されたことを示す情報、および、バッファの占有量情報を、目標符号量決定部３３に供給するので、ステップＳ３において、目標符号量決定部３３は、例えば、式(８)または式(１５)などを用いて説明した場合と同様にして、そのピクチャにおける遅延時間τ(i)を計算する。
【０１１１】
ステップＳ４において、目標符号量決定部３３は、ステップＳ３において計算される遅延時間τ(i)は、変更後のビットレートのみを用いて計算可能であるか否か、換言すれば、上述した式(２１)が満たされるか否かを判断する。
【０１１２】
ステップＳ２において、ビットレートが、低レートから高レートへ変更された変更後のビットレートではないと判断された場合、または、ステップＳ４において、遅延時間τ(i)は、変更後のビットレートのみを用いて計算可能であると判断された場合、ステップＳ５において、目標符号量決定部３３は、現在のビットレートに対応するVBVバッファサイズ、ビットレート、バッファ占有量を基に、通常通りの方法で、発生符号量を調整して、処理が終了される。
【０１１３】
ステップＳ４において、遅延時間τ(i)は、変更後のビットレートのみを用いて計算可能ではないと判断された場合、ステップＳ６において、目標符号量決定部３３は、式(２０)を用いて説明した目標発生符号量Tb(i)を算出して、遅延時間τ(i)が最大遅延時間τ以下となるように、発生符号量を調整し、処理が終了される。
【０１１４】
また、VBVバッファ管理部３２は、実際の発生符号量gen_bit(i)が目標発生符号量Tb(i)に満たない場合、式（１４）を用いて説明した場合と同様にして、目標発生符号量Tb(i)から発生符号量gen_bit(i)を減算することにより、ゼロスタッフィングの符号量を算出し、発生符号量を補うためのスタッフィング情報を出力する。
【０１１５】
このような処理により、ビットレートが、低レートから高レートへ変更された場合のビットレート変更直後の数ピクチャにおいても、符号化遅延時間τ(i)が最大遅延時間τ以下となるように、発生符号量を制御することが可能となる。
【０１１６】
しかしながら、図６乃至図８を用いて説明した発生符号量調整処理に必要な演算処理は、式（８）乃至式（２１）を用いて説明したように、非常に複雑なものとなる。そのため、例えば、ビットレートが徐々に高くなるようにビットレートの変更が頻繁に行われる場合などでは、図８を用いて説明した処理により発生符号量を制御することが困難となる。
【０１１７】
そこで、目標符号量決定部３３は、ビットレートが低レートから高レートに変更された場合、図６乃至図８を用いて説明した処理に代わって、レート変更後の遅延時間τ(j)が、最大遅延時間τより大きくなってしまうことがないようなVBVバッファサイズを簡単な計算により求め、求められたVBVバッファサイズをオーバーフローしないように発生符号量を調整する処理を行うようにしてもよい。
【０１１８】
図９を用いて、レート変更後の遅延時間τ(1)が、最大遅延時間τより大きくなってしまうことがないようなVBVバッファサイズについて説明する。
【０１１９】
変更前のビットレートbit_rate(1)でのVBVバッファ最大値がvbv_size(1)のときの最大遅延時間τよりも、ビットレート変更後の最初のピクチャにおける遅延時間τ(1)が小さくなるためには、図中ｔ（１）で示される時間幅が、ビットレート変更後の最初のピクチャのデコード間隔duration(1)と等しいか、または、長ければよい。換言すれば、最大遅延時間τよりも遅延時間τ(1)が小さくなるための発生符号量gen_bit(1)は、変更前のビットレートbit_rate(1)で、デコード間隔duration(1)と等しい時間ｔ（１）にデコードされる符号量と等しいか、または、多ければよいので、次の式(２２)が満たされていれば良い。
【０１２０】
bit_rate(1)×duration(1)≦gen_bit(1)・・・（２２）
【０１２１】
したがって、式（２２）を満たす符号発生量gen_bit(1)であれば、シームレスにビットレートを変換することができるので、図９に示されるバッファ占有量vbv_ocpy(1)を、VBVバッファサイズの最大値vbv_size_tmp(1)として、通常行っているVBVバッファ管理処理を行えばよいことがわかる。VBVバッファ最大値として用いられるvbv_size_tmp(1)は次の式(２３)で計算できる。
【０１２２】
vbv_size_tmp(1)＝vbv_size(1)−bit_rate(1)×duration(1)
＋bit_rate(0)×duration(1)                ・・・（２３）
【０１２３】
ただし、VBVバッファ最大値は、もちろん、レートにより決まるVBVバッファ最大値vbv_size(0)以上の値をとることはできないので、式(２３)により求められるvbv_size_tmp(1)がvbv_size(0)より大きい値である場合、VBVバッファ最大値はvbv_size(0)として制御されるものとする。
【０１２４】
そして、図１０に示されるように、ビットレート変更直後の１枚目のピクチャのVBVバッファ最大値vbv_size_tmp(1)に対して、２枚目のピクチャのVBVバッファ最大値vbv_size_tmp(2)は、次の式（２４）で示される。
【０１２５】
vbv_size_tmp(2)＝vbv_size_tmp(1)−bit_rate(1)×duration(2)
＋bit_rate(0)×duration(2)                ・・・（２４）
【０１２６】
ここで、デコード間隔duration(2)は、２枚目のピクチャにおけるデコード間隔である。ただし、VBVバッファ最大値は、もちろん、レートにより決まるVBVバッファ最大値vbv_size(0)以上の値をとることはできないので、式(２４)により求められるvbv_size_tmp(2)がvbv_size(0)より大きい値である場合、VBVバッファ最大値はvbv_size(0)として制御されるものとする。
【０１２７】
また、ビットレートが、短時間に複数回変更される場合であっても、図９および図１０を用いて説明した場合と同様にして、VBVバッファの最大値を求めることが可能である。
例えば、図１１に示されるように、bit_rate(1)から、bit_rate(2)、bit_rate(0)と、ピクチャ単位でビットレートが順次高くなる場合（すなわち、bit_rate(1)＜bit_rate(2)＜bit_rate(0)である場合）を例として説明する。
【０１２８】
２枚目のピクチャのVBVバッファ最大値vbv_size_tmp(2)は、変更直前のビットレートであるbit_rate(2)で２枚目のピクチャにおけるデコード間隔duration(2)中にVBVバッファに蓄積される符号量をpic_bit(1)、bit_rate(0)でデコード間隔duration(2)中にVBVバッファに蓄積される符号量をpic_bit(2)とすると、次の式（２５）で示される。
【０１２９】
vbv_size_tmp(2)＝vbv_size_tmp(1)−pic_bit(1)＋pic_bit(2)・・・（２５）
【０１３０】
pic_bit(2)は、pic_bit(1)よりも大きく、図中ｔ（２）で示される時間は、デコード間隔duration(2)よりも長くなることから、２枚目のピクチャにおける遅延時間τ(2)は、最大遅延時間τと等しいか短い遅延時間τ(1)よりも更に短くなるので、bit_rate(1)＜bit_rate(2)＜bit_rate(0)としてピクチャ単位でビットレートが順次高くなる場合であっても、式（２５）が満たされる場合には、シームレスにビットレート変換が行われる。
【０１３１】
式（２５）から、ｊ番目のピクチャにおけるVBVバッファ最大値vbv_size_tmp(ｊ)は、次の式（２６）で示される。
【０１３２】
vbv_size_tmp(ｊ)＝vbv_size_tmp(ｊ-1)−pic_bit(L)＋pic_bit(H)・・・（２６）
【０１３３】
ただし、pic_bit(L)は、直近の変更前ビットレートで対応するピクチャのデコード間隔分の時間に蓄積される符号化ビット量であり、pic_bit(H)は、変更後のビットレートで対応するピクチャのデコード間隔分の時間に蓄積される符号化ビット量である。
【０１３４】
τ(2)はτ(1)（≦τ）よりも更に短くなるため、VBVバッファの最大値は、必要以上に小さくなってしまうが、この演算方法によれば、高いレートへのレート変更を連続して行っても、式（２６）により、現在および直前のビットレートを用いて演算することにより、シームレスビットレート変更の条件を満たすことができる。
【０１３５】
ただし、VBVバッファ最大値は、もちろん、そのピクチャのビットレートにより決まるVBVバッファ最大値vbv_size_max(H)以上の値をとることはできない。例えば、図１０を用いて説明した場合のように、vbv_size(0)がピクチャのビットレートにより決まるVBVバッファ最大値vbv_size_max(H)に対応する場合、VBVバッファ最大値は、図１０において図中Ｃで示されるようなvbv_size(0)よりも大きな値となることはありえない。したがって、ｊ番目のピクチャにおけるVBVバッファ最大値vbv_size_tmp(j)は、その直前のピクチャにおけるVBVバッファ最大値をvbv_size_tmp(j−1)とした場合、次の式（２７）で求められる。
【０１３６】
vbv_size_tmp(ｊ)＝
min｛vbv_size_tmp(ｊ-1)−pic_bit(L)＋pic_bit(H)，vbv_size_max(H)｝
・・・（２７）
【０１３７】
ここで、vbv_size_max(H)は、変更後のビットレートにおいて使用可能なVBVバッファ最大値であり、min｛Ａ，Ｂ｝は、ＡとＢのうちの小さい値が選択されることを示す。
【０１３８】
このような処理により、図６乃至図８を用いて説明した場合よりも、簡単な演算で、シームレスビットレート変更の条件を満たすための制御を行うことが可能となる。
【０１３９】
次に、図１２のフローチャートを参照して、シームレスなビットレート変更を行うためのバッファサイズ調整処理について説明する。
【０１４０】
ステップＳ３１において、ビットレート情報取得部３１は、ビットレート情報を取得して、VBVバッファ管理部３２に供給する。ビットレート情報は、ビットレートそのものの数値データあっても、ビットレートを示す対応する情報であっても、または、ビットレートが変更されたか否か、および、ビットレートの変更は低レートから高レートへの変更であるか否かを示す情報であっても良い。ビットレート情報取得部３１は、外部の装置からビットレート情報を取得するようにしても良いし、ビットレート情報がビデオデータに多重化されている場合、ビデオデータからビットレート情報を抽出するようにしても良い。
【０１４１】
ステップＳ３２において、VBVバッファ管理部３２は、供給されたビットレート情報を基に、現在のビットレートが、低レートから高レートへ変更された変更後のビットレートであるか否かを判断する。ステップＳ３２において、ビットレートが、低レートから高レートへ変更された変更後のビットレートではないと判断された場合、VBVバッファ管理部３２は、ビットレートが低レートから高レートへ変更されていないことを示す情報、および、バッファの占有量情報を、目標符号量決定部３３に供給するので、ステップＳ３３において、目標符号量決定部３３は、通常通りのVBVバッファサイズの最大値を設定して、レート制御を実行して、処理が終了される。
【０１４２】
ステップＳ３２において、ビットレートが、低レートから高レートへ変更された変更後のビットレートであると判断された場合、VBVバッファ管理部３２は、ビットレートが低レートから高レートへ変更されたことを示す情報、および、バッファの占有量情報を、目標符号量決定部３３に供給するので、ステップＳ３４において、目標符号量決定部３３は、上述した式（２６）により、このピクチャにおけるバッファサイズの最大値vbv_size_tmp(j)を計算する。
【０１４３】
ステップＳ３５において、目標符号量決定部３３は、ステップＳ３４で計算されたvbv_size_tmp(j)がビットレート変更後のVBVバッファサイズの最大値vbv_size_max(H)より大きいか否かを判断する。
【０１４４】
ステップＳ３５において、vbv_size_tmp(j)がビットレート変更後のVBVバッファサイズの最大値vbv_size_max(H)より大きいと判断された場合、ステップＳ３６において、目標符号量決定部３３は、ビットレート変更後のVBVバッファサイズの最大値vbv_size_max(H)をバッファサイズの最大値に設定してレート制御を行い、VBVバッファ管理部３２は、目標符号発生量と、実際の符号発生量を比較して、必要に応じて、ゼロスタッフィングを行わせるためのスタッフィング情報を生成して、処理が終了される。
【０１４５】
ステップＳ３５において、vbv_size_tmp(j)がビットレート変更後のVBVバッファサイズの最大値vbv_size_max(H)より大きくないと判断された場合、ステップＳ３７において、目標符号量決定部３３は、vbv_size_tmp(j)をバッファサイズの最大値に設定してレート制御を行い、VBVバッファ管理部３２は、目標符号発生量と、実際の符号発生量を比較して、必要に応じて、ゼロスタッフィングを行わせるためのスタッフィング情報を生成して、処理が終了される。
【０１４６】
すなわち、ステップＳ３４乃至ステップＳ３７の処理は、式（２７）の演算に他ならない。
【０１４７】
このような処理により、低ビットレートから高ビットレートにビットレートが変更される場合、図６乃至図８を用いて説明した場合と同様にして、ビットレート変更直後のピクチャにおける遅延時間が最大遅延時間より大きくならないようなレート制御を行うことができる。特に、低ビットレートから高ビットレートへ頻繁にビットレートが変更される場合であっても、簡単な演算処理で、シームレスビットレート変更条件を満たすような符号化処理が行われるように、レート制御を行うことが可能となる。
【０１４８】
また、本発明は、例えば、１５フレームを、フレーム内符号化画像（Ｉピクチャ）、フレーム間順方向予測符号化画像（Ｐピクチャ）、もしくは、双方向予測符号化画像（Ｂピクチャ）の３つの画像タイプのうちのいずれの画像タイプとして処理するかを指定し、指定されたフレーム画像の画像タイプ（Ｉピクチャ、Ｐピクチャ、もしくは、Ｂピクチャ）に応じて、フレーム画像を符号化するような場合以外にも、ローディレイコーディングとして各フレーム画像を全てＰピクチャとし、例えば、横４５マクロブロック、縦２４マクロブロックの画枠サイズの中でフレーム画像の上段から縦２マクロブロックおよび横４５マクロブロック分の領域を１つのイントラスライス部分、他を全てインタースライス部分として設定するようにした場合にも適用可能である。また、ローディレイエンコードを行う場合においては、例えば、イントラスライス部分を縦１マクロブロック、横４５マクロブロック分の領域とするなど、他の種々の大きさの領域で形成するようにしても良い。
【０１４９】
更に、本発明は、マクロブロックごとに予測符号化のタイプ（イントラマクロブロック、または、インターマクロブロック）を指定して符号化処理を行うような場合や、オールイントラなどの符号化を行う場合においても、適用することが可能である。
【０１５０】
更に、上述の実施の形態においては、本発明を、MPEG方式によって圧縮符号化する符号化装置としての符号化装置１に適用する場合について述べたが、本発明はこれに限らず、他の種々の画像圧縮方式による符号化装置に適用するようにしても良い。
【０１５１】
また、独立した装置として構成される符号化装置１のみならず、例えば、トランスコーダや編集装置などに含まれる、同様の構成を有する符号化部おいても、本発明は適用可能である。
【０１５２】
上述した一連の処理は、ハードウエアにより実行させることもできるが、ソフトウエアにより実行させることもできる。この場合、例えば、符号化装置１が実行する処理は、図１３に示されるようなパーソナルコンピュータ１０１により構成される。
【０１５３】
図１３において、CPU（Central Processing Unit）１１１は、ROM（Read Only Memory）１１２に記憶されているプログラム、または記憶部１１８からRAM（Random Access Memory）１１３にロードされたプログラムに従って、各種の処理を実行する。RAM１１３にはまた、CPU１１１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１５４】
CPU１１１、ROM１１２、およびRAM１１３は、バス１１４を介して相互に接続されている。このバス１１４にはまた、入出力インタフェース１１５も接続されている。
【０１５５】
入出力インタフェース１１５には、キーボード、マウスなどよりなる入力部１１６、ディスプレイやスピーカなどよりなる出力部１１７、ハードディスクなどより構成される記憶部１１８、モデム、ターミナルアダプタなどより構成される通信部１１９が接続されている。通信部１１９は、インターネットを含むネットワークを介しての通信処理を行う。
【０１５６】
入出力インタフェース１１５にはまた、必要に応じてドライブ１２０が接続され、磁気ディスク１２１、光ディスク１２２、光磁気ディスク１２３、もしくは、半導体メモリ１２４などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１１８にインストールされる。
【０１５７】
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１５８】
この記録媒体は、図１３に示されるように、装置本体とは別に、ユーザにプログラムを供給するために配布される、プログラムが記憶されている磁気ディスク１２１（フロッピディスクを含む）、光ディスク１２２（ＣＤ-ＲＯＭ（Compact Disk-Read Only Memory），DVD（Digital Versatile Disk）を含む）、光磁気ディスク１２３（ＭＤ（Mini-Disk）（商標）を含む）、もしくは半導体メモリ１２４などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに供給される、プログラムが記憶されているROM１１２や、記憶部１１８に含まれるハードディスクなどで構成される。
【０１５９】
なお、本明細書において、プログラムを記述するステップは、含む順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的もしくは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１６０】
【図１】VBVバッファの最大容量、ビットレート、および、符号化遅延について説明するための図である。
【図２】ビットレートが変更される場合のバッファ容量について説明するための図である。
【図３】ビットレート変更点直後における符号化遅延について説明するための図である。
【図４】本発明を適用した符号化装置の構成を示すブロック図である。
【図５】発生符号量と符号化遅延の関係について説明するための図である。
【図６】ビットレート変更の次のピクチャの目標符号発生量について説明するための図である。
【図７】ビットレート変更から２枚目のピクチャの目標符号発生量について説明するための図である。
【図８】発生符号量調整処理について説明するためのフローチャートである。
【図９】バッファサイズの調整と符号化遅延との関係について説明するための図である。
【図１０】バッファサイズの調整と符号化遅延との関係について説明するための図である。
【図１１】ビットレートがピクチャ単位で順次高くなる場合の処理について説明するための図である。
【図１２】バッファサイズ調整処理について説明するためのフローチャートである。
【図１３】パーソナルコンピュータの構成を示すブロック図である。
【符号の説明】
【０１６１】
１  符号化装置，  １１  画像並べ替え部，  １２  演算部，  １３  動き検出部，  １４  DCT部，  １５  量子化部，  １６  VLC部，  １７  逆量子化部，  １８  IDCT部，  １９  演算部，  ２０  動き補償部，  ２１  ビデオメモリ，  ２２  バッファ，  ２３  量子化制御部，  ３１  ビットレート情報取得部，  ３２  VBVバッファ管理部，  ３３  目標符号量決定部
【図１】
2005045515.tif 000005
【図２】
2005045515.tif 000006
【図３】
2005045515.tif 000007
【図４】
2005045515.tif 000008
【図５】
2005045515.tif 000009
【図６】
2005045515.tif 000010
【図７】
2005045515.tif 000011
【図８】
2005045515.tif 000012
【図９】
2005045515.tif 000013
【図１０】
2005045515.tif 000014
【図１１】
2005045515.tif 000015
【図１２】
2005045515.tif 000016
【図１３】
2005045515.tif 000017