(57)【特許請求の範囲】
【請求項１】
最大Ｎ（Ｎは２以上の自然数）枚までの複数ピクチャを並列に符号化する符号化部と、Ｎ枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、前記割り当て符号量に相当する量子化パラメータであるターゲットＱＰを算出するＱＰ計算部とを備え、映像を符号化する映像符号化装置が行う映像符号化方法であって、
前記Ｎ枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再算出ステップと、
Ｎ枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出ステップと、
算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較ステップと、
前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出ステップと、
前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出ステップと
を有する映像符号化方法。
【請求項２】
前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に対してあらかじめ定めた１以上の係数を乗算する請求項１に記載の映像符号化方法。
【請求項３】
前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に予め定めた固定値を加算する請求項１に記載の映像符号化方法。
【請求項４】
前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量を予め定めた四則演算による方程式に代入して算出した値を用いることによって前記誤差に基づいた前記割り当て符号量を求める請求項１に記載の映像符号化方法。
【請求項５】
前記バッファ位置推定値算出ステップでは、前記バッファのバッファ位置として入力された初期バッファ位置を起点として前記並列数によって規定されるピクチャ枚数分の符号化後の前記バッファの前記バッファ位置推定値を、各ピクチャに関して前記誤差に基づいた前記割り当て符号量から計算する請求項１に記載の映像符号化方法。
【請求項６】
映像を符号化する映像符号化装置であって、
最大Ｎ（Ｎは２以上の自然数）枚までの複数ピクチャを並列に符号化する符号化部と、
Ｎ枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、
前記割り当て符号量に相当する量子化パラメータであるターゲットＱＰを算出するＱＰ計算部と、
前記Ｎ枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再再算出部と、
Ｎ枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出部と、
算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較部と、
前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出部と、
前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出部と
を備える映像符号化装置。
【請求項７】
コンピュータに、請求項１から５のいずれか一項に記載の映像符号化方法を実行させるための映像符号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像符号化の並列処理において、並列処理数を適切に算出する映像符号化方法、映像符号化装置及び映像符号化プログラムに関する。
【背景技術】
【０００２】
映像の符号化を高速に行う方法として、複数のピクチャの符号化処理を並列に行う方法がある。図４は、各ピクチャについてその復号時に参照される他のピクチャとの関係（以下、「参照構造」という。）を表示順に示した図である。ピクチャとは、符号化対象映像の１フレーム（または１画面）である。この図は、片方向予測ピクチャ（以下、「Ｐピクチャ」という。）１枚に対し、双方向予測ピクチャ（以下、「Ｂピクチャ」という。）が２枚あるＭ＝３と呼ばれる参照構造を示したものである。各ピクチャの上もしくは下に描かれた矢印は各ピクチャが参照する先のピクチャを表している。
【０００３】
この図において、符号化順は各ピクチャの下に数字で示した通り、Ｉ１→Ｐ１→Ｂ１→Ｂ２→Ｐ２→Ｂ３→Ｂ４という順番である。しかし参照構造によれば、Ｐ１の符号化が終了すると、Ｂ１のみではなくＢ２及びＰ２も符号化可能である。従って、符号化処理を並列に行えるシステムにおいては、これら３ピクチャを同時に符号化処理することができる。
【０００４】
次に、ＨＥＶＣやＨ．２６４をはじめとする一般的な映像符号化規格における符号化部の装置構成を説明する。図５は、一般的な映像符号化規格における符号化部の装置構成を示すブロック図である。図５に示す装置は、原画像バッファ１、復号画像バッファ１０及び符号化部１２を備える。
【０００５】
符号化部１２は、減算器２、加算器３、ＤＣＴ（離散コサイン変換）計算器（図中「ＤＣＴ」）４、量子化器（図中「Ｑ」）５、逆量子化器（図中「ＩＱ」）６、ＩＤＣＴ（逆離散コサイン変換）計算器（図中「ＩＤＣＴ」）７、予測モード選択部８、ループフィルタ９及びエントロピー符号化部１１を備える。
【０００６】
原画像バッファ１は、表示順に入力された原画像を保持し、符号化順に並べ替えて順に出力する。減算器２は、原画像バッファ１から送られた原画と予測モード選択部８から送られた予測画像の差分を取って予測残差信号を計算し、ＤＣＴ計算器４に出力する。
【０００７】
加算器３は、予測モード選択部８から出力された予測画像と、ＩＤＣＴ計算器７から送られる量子化後の予測残差信号の和を計算し、フィルタ前の復号画像としてループフィルタ９に送る。ＤＣＴ計算器４は、予測残差信号に離散コサイン変換を施し、算出されたＤＣＴ係数を量子化器５へ送る。
【０００８】
量子化器５は、ＤＣＴ計算器４から送られたＤＣＴ係数を、外部から与えられた量子化パラメータＱＰを用いて量子化し、ＤＣＴ係数の量子化値としてエントロピー符号化部１１と逆量子化器６へ送る。逆量子化器６は、量子化器５で求まった量子化後のＤＣＴ係数を、外部から与えられた量子化パラメータＱＰを用いて逆量子化し、量子化後のＤＣＴ係数としてＩＤＣＴ計算器７に送る。
【０００９】
ＩＤＣＴ計算器７では、逆量子化器６から送られた量子化後のＤＣＴ係数に逆離散コサイン変換を施し、量子化後の予測残差信号を求める。予測モード選択部８は、入力された原画像に最も近い予測画像を、同じく入力された参照画像から作成して出力すると共に、その予測モードの情報をエントロピー符号化器１１へ送る。
【００１０】
ループフィルタ９は、加算器３から送られたフィルタ前の復号画像にフィルタ処理を施し、復号画像として復号画像バッファ１０に送る。復号画像バッファ１０は、ループフィルタ９から出力された復号画像を保存し、予測モード選択部８に対して参照画像として出力する。
【００１１】
エントロピー符号化部１１は、量子化器５から送られるＤＣＴ係数の量子化値と予測モード選択部８から送られる予測モード情報を可変長符号化し、符号化ストリームとして出力する。
【００１２】
次に、図６を参照して、図５に示す装置の処理動作を説明する。図６は、図５に示すＨＥＶＣやＨ．２６４をはじめとする一般的な映像符号化規格における符号化装置の動作を示すフローチャートである。処理が始まると、まず原画像バッファ１は、入力された各ピクチャを符号化順に並べ替える（ステップＳ２１）。
【００１３】
以降、符号化部１２は各ピクチャを符号化順に処理する。各ピクチャは矩形のブロックに分割される。予測モード選択部８は、ブロックごとに予測モードを決定する（ステップＳ２２）。減算器２は、予測モードに対応する予測画像と原画像との差分を取得する。減算器２は、取得された差分に基づいて予測残差信号を出力する（ステップＳ２３）。
【００１４】
次に、ＤＣＴ計算器４は、出力された予測残差信号にＤＣＴ（ステップＳ２４）を施す。量子化器５は、ＤＣＴ係数に対して量子化（ステップＳ２５）を施す。逆量子化器６は、逆量子化を行う（ステップＳ２６）。ＩＤＣＴ計算器７は、ＩＤＣＴを計算する（ステップＳ２７）。
【００１５】
次に、加算器３は、予測画像と量子化後の予測残差信号とを加算し復号画像を生成する（ステップＳ２８）。ループフィルタ９は、生成された復号画像にループフィルタを掛けて（ステップＳ２９）、復号画像バッファ１に復号画像として保存する（ステップＳ３０）。保存された復号画像は、以降の予測画像生成に利用される。
【００１６】
一方、エントロピー符号化部１１は、ＤＣＴと量子化を施した量子化済みのＤＣＴ係数と、対応する予測モード情報とに対して可変長符号化を施し、符号化ストリームとして出力する（ステップＳ３１）。
【００１７】
図６に示す処理（ステップＳ２２〜Ｓ３１）が行われる際には、各ピクチャに対して量子化パラメータＱＰが与えられる必要がある。量子化パラメータＱＰは、量子化の粗さを表す。量子化パラメータＱＰが大きいほど粗く量子化され、符号化ノイズが多くなる。一方、量子化パラメータＱＰが大きいほど、圧縮率が高くなるため発生する符号量は少なくなる。量子化パラメータＱＰは、予め定められたビットレート及びバッファサイズを元に、デコーダのバッファモデルを順守するように算出される。
【００１８】
ここで、デコーダのバッファモデルについて説明する。映像デコーダには符号化ストリームを保存する受信バッファがあり、この受信バッファには外部から受信した符号化ストリームが蓄積される。また、復号の際には１フレーム分ずつ符号化ストリームを受信バッファから引き抜いて復号する。
【００１９】
この受信バッファのサイズは有限のため、受信した符号化ストリームを受信バッファに蓄積する速度と、受信バッファに蓄積された符号化ストリームをバッファから引き抜く速度は釣り合っている必要がある。
【００２０】
例えば、前者の速度が速い場合は受信バッファがフルになって符号化ストリームを受信できなくなる「バッファオーバーフロー」（以下、「オーバーフロー」という。）が発生し、逆に後者の速度が速い場合は受信バッファが空になってピクチャの復号が停止してしまう「バッファアンダーフロー」（以下、「アンダーフロー」という。）が発生する。
【００２１】
そこで一般的な映像符号化器では、上記のよう受信バッファのオーバーフローやアンダーフローが起こらないよう、各ピクチャの発生符号量、ひいては量子化パラメータＱＰを適切に制御するレート制御部と呼ばれる機構が組み込まれている。
【００２２】
ここで復号順でｎ枚目ピクチャの復号時刻をｔ（ｎ）、ｎ枚目ピクチャを復号した直後の受信バッファのデータ蓄積量をＢｔ＿ａｆｔｅｒ（ｔ（ｎ））と表記する。次のｎ＋１枚目ピクチャを復号する時刻ｔ（ｎ＋１）は、フレームレートＦＰＳ［フレーム／秒］を用いて、ｔ（ｎ＋１）＝ｔ（ｎ）＋１／ＦＰＳと表記できる。
【００２３】
このことから、一般的なＣＢＲモデル（ビットレート一定モデル）の場合、ｎ＋１枚目ピクチャを復号する直前の受信バッファのデータ蓄積量Ｂｔ＿ｂｅｆｏｒｅ（ｔ（ｎ＋１））は、ビットレートｂ［ｂｉｔ／秒］を用いて
Ｂｔ＿ｂｅｆｏｒｅ（ｔ（ｎ＋１））＝Ｂｔ＿ａｆｔｅｒ（ｔ（ｎ））＋ｂ／ＦＰＳ
と表せる。
【００２４】
ここでｎ＋１枚目ピクチャの発生符号量がＧ（ｎ＋１）だったとすれば、ｎ＋１枚目ピクチャを復号した直後の受信バッファにおけるデータ蓄積量Ｂｔ＿ａｆｔｅｒ（ｔ（ｎ＋１））は
Ｂｔ＿ａｆｔｅｒ（ｔ（ｎ＋１））＝Ｂｔ＿ｂｅｆｏｒｅ（ｔ（ｎ＋１））−Ｇ（ｎ＋１）
と表せる。
【００２５】
ここで、もし、Ｇ（ｎ＋１）＞Ｂｔ＿ｂｅｆｏｒｅ（ｔ（ｎ＋１））であった場合、Ｂｔ＿ａｆｔｅｒ（ｔ（ｎ＋１））＜０となり、バッファアンダーフローが発生する。一方、受信バッファサイズをＳと置いたとき、Ｇ（ｎ＋１）＜Ｂｔ＿ｂｅｆｏｒｅ（ｔ（ｎ＋１））＋ｂ／ＦＰＳ−Ｓであった場合、Ｂｔ＿ａｆｔｅｒ（ｔ（ｎ＋１））＞Ｓとなり、バッファオーバーフローが発生する。
【００２６】
そのため前述のレート制御部では、このようにバッファアンダーフローやオーバーフローが起こらないよう各ピクチャの発生符号量Ｇの適切な値を算出し、またそのような発生符号量となるようにＱＰを決定する機構となる。
【００２７】
この発生符号量Ｇと量子化パラメータＱＰの関係であるが、ある量子化パラメータＱＰに対応する量子化幅をＱｓｔｅｐ（ＱＰ）と表すと、量子化幅Ｑｓｔｅｐ（ＱＰ）と、その時の発生符号量Ｇの間にはおおよそ反比例の関係がある。この両者の積を取ったものをこのピクチャの複雑さ指数Ｘ＝Ｇ×Ｑｓｔｅｐ（ＱＰ）と呼ぶ。この複雑さ指数Ｘは、直前に符号化したピクチャのものとおよそ近い値となることから、直前に符号化した結果の積からＸを求め、次ピクチャのＧとＱＰの算出に用いられることが多い。
【００２８】
また、各ピクチャの適切な発生符号量Ｇの計算方法としては、ＭＰＥＧ−２のＴＭ５モデルがよく用いられる。これは、Ｉから始まる一連のピクチャ群であるＧＯＰ（Group of Pictures）に対して使用可能な符号量を設定し、各ピクチャタイプＩ・Ｐ・Ｂに対する複雑さ指数Ｘｉ、Ｘｐ、Ｘｂに応じて、ＧＯＰ内の各ピクチャに符号量を分配する、というものである。
【００２９】
１ピクチャずつ符号化する毎に割り当て符号量と実際の発生符号量の間の誤差をフィードバックし、バッファアンダーフローやオーバーフローを抑止しつつ、目的のビットレートｂとなるよう各ピクチャの符号量配分を決定する。
【００３０】
ここで、レート制御部の処理例を示す。レート制御部の処理は前処理と後処理の２パートに大別される。まず前処理について説明する。処理が始まると、まずバッファ位置Ｂｔ＿ｂｅｆｏｒｅを予め定められた初期値にて初期化する。また、各ピクチャタイプに対する複雑さ指数Ｘｉ、Ｘｐ、Ｘｂを予め定められた定数で初期化する。
【００３１】
次に１ＧＯＰに割り当てる符号量Ｒの初期値を設定する。例えば、１ＧＯＰに含まれるピクチャ枚数をＮとすれば、Ｒの初期値は、Ｒ＝ｂ×Ｎ／ＦＰＳなどと計算される。また、１ＧＯＰに含まれる各タイプ毎のピクチャ枚数をそれぞれＮｉ（＝Ｉピクチャの枚数＝１）、Ｎｐ（＝Ｐピクチャの枚数）、Ｎｂ（＝Ｂピクチャの枚数）に代入する。
【００３２】
次に、符号化対象のピクチャ毎に以下のような処理により割り当て符号量Ｔを算出する。符号化対象ピクチャがＩピクチャの場合、ＴはＴ＝（Ｘｉ×Ｒ）／（Ｘｉ×Ｎｉ＋Ｘｐ×Ｎｐ＋Ｘｂ×Ｎｂ）として算出する。その後、Ｎｉの値を１デクリメントする。同様に符号化対象ピクチャがＰピクチャの場合はＴ＝（Ｘｐ×Ｒ）／（Ｘｉ×Ｎｉ＋Ｘｐ×Ｎｐ＋Ｘｂ×Ｎｂ）として算出後、Ｎｐの値を１デクリメントする。Ｂピクチャの場合はＴ＝（Ｘｂ×Ｒ）／（Ｘｉ×Ｎｉ＋Ｘｐ×Ｎｐ＋Ｘｂ×Ｎｂ）として算出後、Ｎｂの値を１デクリメントする。
【００３３】
上記で求めた符号量Ｔについて、符号化のバッファ位置推定値Ｂｔ＿ａｆｔｅｒを
Ｂｔ＿ａｆｔｅｒ＝Ｂｔ＿ｂｅｆｏｒｅ−Ｔ
として算出する。この時Ｂｔ＿ａｆｔｅｒ  ＜０（バッファアンダーフロー）、もしくはバッファサイズをＳとした時にＢｔ＿ａｆｔｅｒ＋ｂ／ＦＰＳ＞Ｓ（バッファオーバーフロー）とならないよう、ＴをＢｔ＿ｂｅｆｏｒｅ＋ｂ／ＦＰＳ−Ｓ≦Ｔ≦Ｂｔ＿ｂｅｆｏｒｅの範囲にクリップする。
【００３４】
次に、この割り当て符号量Ｔに相当する量子化パラメータＱＰを算出する。この量子化パラメータＱＰをターゲットＱＰと名付ける。前述の通り、複雑さ指数Ｘと発生符号量Ｇとの間にはおよそ以下の関係が成立する。
Ｘ＝Ｇ×Ｑｓｔｅｐ（ＱＰ）
【００３５】
そのため、例えばＩピクチャの場合は符号量ＴとＱｓｔｅｐ（ＱＰ）の積がＸｉに最も近くなるＱＰをターゲットＱＰとすればよい。同様に、Ｐピクチャの場合は積がＸｐに最も近くなるＱＰ、Ｂピクチャの場合はＸｂに最も近くなるＱＰをターゲットＱＰとすればよい。
【００３６】
ここまでが前処理となる。このようにして求めたターゲットＱＰを用いて実際に符号化を行った後、レート制御部では後処理を行う。この処理は具体的には以下の通りである。まず、符号化結果から複雑さ指数の値を更新する。符号化したピクチャの発生符号量をＧ、その時のターゲットＱＰに対応する量子化幅をＱｓｔｅｐ（ターゲットＱＰ）とすれば、複雑さ指数は両者の積で求められる。
【００３７】
そこで符号化したピクチャのピクチャタイプがＩピクチャであればＸｉ、ＰピクチャであればＸｐ、ＢピクチャであればＸｂをＧ×Ｑｓｔｅｐ（ターゲットＱＰ）の値に更新する。また、符号量Ｒの値も更新する。具体的にはＲから発生符号量Ｇを引いたものを新たに符号量Ｒとする。
【００３８】
次に、発生符号量Ｇを用いてバッファ位置Ｂｔ＿ｂｅｆｏｒｅの値を更新する。これは、
Ｂｔ＿ｂｅｆｏｒｅ＝Ｂｔ＿ｂｅｆｏｒｅ−Ｇ＋ｂ／ＦＰＳ
として計算される。以上がレート制御部の後処理となる。
【００３９】
その後、またレート制御部の前処理に戻って次の符号化ピクチャに関するターゲットＱＰを算出する処理を行うことを繰り返す。１ＧＯＰ分の符号化が終わったら、Ｒの値を更新し、次のＧＯＰに対してまた同様の処理を繰り返す。具体的には、Ｒの値について、その時点で保持している値に対し、ｂ×Ｎ／ＦＰＳを加算する。また、Ｎｉ、Ｎｐ、Ｎｂの値を１ＧＯＰに含まれる各ピクチャタイプの枚数に戻す。
【００４０】
このような処理を行うことで、バッファを破綻させないようにしつつも目的のビットレートに沿ったビットストリームを生成できる（例えば、非特許文献１参照）。
【００４１】
次に、前述したような複数ピクチャを同時に符号化するための装置の装置構成を説明する。図７は、前述したような複数ピクチャを同時に符号化するための装置の装置構成を示すブロック図である。この装置は、原画像バッファ１、復号画像バッファ１０、Ｎ（Ｎは自然数）個の符号化部１２−１〜Ｎ、ストリームバッファ１３、並列処理割り当て部１４、バッファ計算部１５、割り当て符号量算出部１６、ＱＰ計算部１７、複雑さ計算部１８から構成される。バッファ計算部１５、割り当て符号量算出部１６、ＱＰ計算部１７及び複雑さ計算部１８によってレート制御部１９が構成されている。
【００４２】
原画像バッファ１は前述のものと同様、原画像を符号化順に並べ替え、符号化部１２−１〜Ｎに送る。ただし、本構成では符号化部１２−１〜Ｎが複数あるため、並列処理割り当て部１４から送られる原画割り当て情報を元に、符号化順でＮ枚分のピクチャをＮ個ある符号化部１２−１〜Ｎへそれぞれ送信する。
【００４３】
復号画像バッファ１０は前述のものと同様、符号化部１２−１〜Ｎから送られる復号画像を保存し、また必要に応じて参照画像として符号化部１２−１〜Ｎへ送る。但し、本構成では符号化部１２−１〜Ｎが複数あるため、このバッファも複数の復号画像の同時保存、及び複数の参照画像の同時送出に対応している。
【００４４】
符号化部１２−１〜Ｎは図５の点線で囲まれた符号化部１２と同等の機能を有し、本構成例ではそれがＮ個並列に備わっている。ストリームバッファ１３は、各符号化部１２−１〜Ｎから送られる符号化ストリームを保存すると共に、そのデータサイズを発生符号量としてバッファ計算部１５、割り当て符号量算出部１６、複雑さ計算部８に送る。
【００４５】
並列処理割り当て部１４は、入力された並列処理数を元に、原画像バッファのどのピクチャをＮ個あるどの符号化部（符号化部１２−１〜Ｎのいずれか）へ送るかを求め、原画像バッファ１へ割り当て情報として送信する。
【００４６】
バッファ計算部１５は、処理が始まるとレート制御設定情報を元にバッファ位置の初期値Ｂｔ＿ｂｅｆｏｒｅ（０）を計算して保持する。また、ストリームバッファ１３から各ピクチャの発生符号量が求まるたびにＢｔ＿ｂｅｆｏｒｅの値を計算し、割り当て符号量算出部１６へ送る。
【００４７】
割り当て符号量算出部１６は、外部から与えられるレート制御設定と並列数、バッファ位置、各ピクチャの発生符号量を元に、向こうＮピクチャ分の各ピクチャの割り当て符号量Ｔ（１）〜Ｔ（Ｎ）を求め、ＱＰ計算部１７へ送る。ＱＰ計算部１７は、複雑さ計算部１８から送られる各ピクチャタイプの複雑さ指数と各ピクチャの割り当て符号量を元に、Ｎピクチャ分のターゲットＱＰを計算して対応するＮ個の符号化部１２−１〜Ｎへ送る。
【００４８】
複雑さ計算部１８は、ＱＰ計算部１７から送られる各ピクチャの量子化パラメータＱＰと、ストリームバッファ１３から送られる対象ピクチャの発生符号量からピクチャタイプ毎の複雑さ指数を計算し、割り当て符号量算出部１６とＱＰ計算部１７へ送る。
【００４９】
次に、図８を参照して、図７に示す装置の処理動作を説明する。図８は、前述したような複数ピクチャを同時に符号化する装置が行う処理動作を示すフローチャートである。符号化を開始すると、まず図６のフローと同様、原画像バッファ１は、ピクチャを符号化順に並べ替える（ステップＳ４１）。
【００５０】
次に、前述のレート制御部１９の処理を元に、割り当て符号量算出部１６は、向こうＮ枚分のピクチャに対する割り当て符号量を算出する（ステップＳ４２）。この時、Ｎ枚分のピクチャのうち、１枚目ピクチャの割り当て符号量算出は前述の通りに行えばよい。しかし２枚目以降のピクチャに関しては前述の式のままでは割り当て符号量算出ができない。
【００５１】
これは、例えば２枚目ピクチャの計算を行うには１枚目ピクチャの符号化結果から求まる発生符号量を使い、バッファ位置Ｂｔ＿ｂｅｆｏｒｅ、符号量Ｒ、及び対応するピクチャタイプの複雑さ指数を更新する必要があるためである。
【００５２】
同様に３枚目ピクチャは１枚目と２枚目ピクチャの符号化結果、４枚目ピクチャは１〜３枚目ピクチャの発生符号量が必要となる。しかしこの時点ではこれらピクチャの発生符号量が無いことから、割り当て符号量を発生符号量の代用に用いる。
【００５３】
従って２枚目ピクチャに関して言えば、複雑さ指数は１枚目と共通とし、バッファ位置Ｂｔ＿ｂｅｆｏｒｅ（２）は、１枚目ピクチャに関するバッファ位置Ｂｔ＿ｂｅｆｏｒｅ（１）と１枚目ピクチャの割り当て符号量Ｔ（１）から
Ｂｔ＿ｂｅｆｏｒｅ’（２）＝Ｂｔ＿ｂｅｆｏｒｅ（１）−Ｔ（１）＋ｂ／ＦＰＳ
となる。
【００５４】
また符号量Ｒ（２）は１枚目ピクチャ計算時の符号量Ｒ（１）から符号量Ｔ（１）を引いた
Ｒ（２）＝Ｒ（１）−Ｔ（１）
を用いるとする。これらの値を用い、２枚目ピクチャに対する割り当て符号量Ｔ（２）を計算すればよい。同様に３枚目ピクチャに関しても複雑さ指数は１枚目計算時と共通で、バッファ位置Ｂｔ＿ｂｅｆｏｒｅ（３）は
Ｂｔ＿ｂｅｆｏｒｅ（３）＝Ｂｔ＿ｂｅｆｏｒｅ（２）−Ｔ（２）＋ｂ／ＦＰＳ
＝Ｂｔ＿ｂｅｆｏｒｅ（１）−（Ｔ（１）＋Ｔ（２））＋２×ｂ／ＦＰＳ
【００５５】
また、符号量Ｒ（３）は
Ｒ（３）＝Ｒ（２）−Ｔ（２）＝Ｒ（１）−（Ｔ（１）＋Ｔ（２））
と表せ、これらから割り当て符号量Ｔ（３）を算出すればよい。
【００５６】
上記の計算によりＮピクチャ分の割り当て符号量Ｔ（１）〜Ｔ（Ｎ）を算出したら、ＱＰ計算部１７は、これらの割り当て符号量に対応する各ピクチャの量子化パラメータＱＰを算出する（ステップＳ４３）。これは、各ピクチャのピクチャタイプに対する複雑さ指数ＸｉもしくはＸｐもしくはＸｂを各ピクチャの割り当て符号量で除した値に最も近い量子化幅となるＱＰを求めればよい。例えば、１枚目ピクチャのピクチャタイプがＩピクチャであれば量子化幅はＸｉ／Ｔ（１）で算出でき、この量子化幅に最も近い量子化パラメータＱＰが１枚目ピクチャのターゲットＱＰとなる。
【００５７】
同様にＮピクチャ分全てのターゲットＱＰを算出したら、符号化部１２−１〜Ｎは、これらＮピクチャを同時並列に符号化する（ステップＳ４４）。この処理は、具体的には図６に示すフローチャート中の破線で囲まれた「符号化処理のコアフロー」に従って各ピクチャを同時に符号化することに相当する。
【００５８】
Ｎピクチャ分の符号化が終わったら、各ピクチャに対応する発生符号量Ｇ（１）〜Ｇ（Ｎ）が求まるので、複雑さ計算部１８は、この結果を元に複雑さ指数の更新（ステップＳ４５）し、バッファ計算部１５は、バッファ位置の更新を行う（ステップＳ４６）。複雑さ指数の更新に関しては、発生符号量とターゲットＱＰに対応するＱｓｔｅｐの積で当該ピクチャの複雑さ指数が求まるので、ピクチャタイプ毎に分類し、平均値を求めて当該ピクチャタイプの新たな複雑さ指数とするなどすればよい。
【００５９】
一方バッファ位置の更新については、Ｎピクチャ分の発生符号量Ｇ（１）〜Ｇ（Ｎ）を元にバッファ位置Ｂｔ＿ｂｅｆｏｒｅ（Ｎ＋１）を以下の通り求める。
Ｂｔ＿ｂｅｆｏｒｅ（Ｎ＋１）＝Ｂｔ＿ｂｅｆｏｒｅ（１）−（Ｔ（１）＋Ｔ（２）＋…Ｔ（Ｎ））＋Ｎ×ｂ／ＦＰＳ
【００６０】
以上の処理を全てのピクチャに対して行う（ステップＳ４７）ことで、複数ピクチャ並列に符号化処理を行うことができる。
【先行技術文献】
【非特許文献】
【００６１】
【非特許文献１】MPEG-2, Test Model5(TM5) , Doc. ISO / IECJTC1 / SC29 / WG11 / NO400, Test Model Editing Committee, Apr.1993
【発明の概要】
【発明が解決しようとする課題】
【００６２】
ところで、上記の複数ピクチャを同時に符号化する方式においては、各ピクチャの割り当て符号量に関して、必ずしも正確な情報を元に計算できていない。具体的に言えば、上記において符号量Ｔ（１）は正確なバッファ位置Ｂｔ＿ｂｅｆｏｒｅ（１）及び符号量Ｒ（１）を元に計算できているが、符号量Ｔ（２）に関して言えば、計算の元となるバッファ位置Ｂｔ＿ｂｅｆｏｒｅ（２）及びＲ（２）は仮の値となっている。
【００６３】
一般的に映像の符号化では、割り当て符号量Ｔと実際の発生符号量Ｇの間には乖離が起きる。そのため、割り当て符号量の計算時点ではバッファ破綻が起こっていないとしても、実際にＮピクチャ符号化した時にはバッファ破綻が起こっている可能性がある。
【００６４】
特に並列数Ｎの値が大きければ大きいほど各ピクチャの割り当て符号量Ｔと実際の発生符号量Ｇの乖離の影響を大きく受けるため、バッファ破綻を起こす可能性が高いことが分かる。従って複数ピクチャの同時並列処理は、並列処理数が多いほど処理時間も短縮できるが、バッファ破綻のリスクも並列処理数の増加に伴って高まるという問題がある。
【００６５】
なお、このバッファ破綻に関して、バッファオーバーフローの場合は空データ（ｆｉｌｌｅｒデータ）を間に挟むことで回避する手段が存在する。一方、バッファ位置が０未満となるバッファアンダーフローに関してはこのような回避手段が存在しないため、複数ピクチャ並列符号化においては特にこのバッファアンダーフローの回避が大きな問題となる。
【００６６】
本発明は、このような事情に鑑みてなされたもので、バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速に符号化することができるようにするための並列処理数を算出することができる映像符号化方法、映像符号化装置及び映像符号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【００６７】
本発明の一態様は、最大Ｎ（Ｎは２以上の自然数）枚までの複数ピクチャを並列に符号化する符号化部と、Ｎ枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、前記割り当て符号量に相当する量子化パラメータであるターゲットＱＰを算出するＱＰ計算部とを備え、映像を符号化する映像符号化装置が行う映像符号化方法であって、前記Ｎ枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再算出ステップと、Ｎ枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出ステップと、算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較ステップと、前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出ステップと、前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出ステップとを有する映像符号化方法である。
【００６８】
本発明の一態様は、前記映像符号化方法であって、前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に対してあらかじめ定めた１以上の係数を乗算する。
【００６９】
本発明の一態様は、前記映像符号化方法であって、前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に予め定めた固定値を加算する。
【００７０】
本発明の一態様は、前記映像符号化方法であって、前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量を予め定めた四則演算による方程式に代入して算出した値を用いることによって前記誤差に基づいた前記割り当て符号量を求める。
【００７１】
本発明の一態様は、前記映像符号化方法であって、前記バッファ位置推定値算出ステップでは、前記バッファのバッファ位置として入力された初期バッファ位置を起点として前記並列数によって規定されるピクチャ枚数分の符号化後の前記バッファの前記バッファ位置推定値を、各ピクチャに関して前記誤差に基づいた前記割り当て符号量から計算する。
【００７２】
本発明の一態様は、  映像を符号化する映像符号化装置であって、最大Ｎ（Ｎは２以上の自然数）枚までの複数ピクチャを並列に符号化する符号化部と、Ｎ枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、前記割り当て符号量に相当する量子化パラメータであるターゲットＱＰを算出するＱＰ計算部と、前記Ｎ枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再再算出部と、Ｎ枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出部と、算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較部と、前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出部と、前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出部とを備える映像符号化装置である。
【００７３】
本発明の一態様は、コンピュータに、前記映像符号化方法を実行させるための映像符号化プログラムである。
【発明の効果】
【００７４】
本発明によれば、バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速に符号化することができるようにするための並列処理数を算出することができるという効果が得られる。
【図面の簡単な説明】
【００７５】
【図１】本発明の一実施形態による映像符号化装置の構成を示すブロック図である。
【図２】図１に示す並列数算出部２０の構成を示すブロック図である。
【図３】図１に示す映像符号化装置の動作を示すフローチャートである。
【図４】ピクチャの参照構造を表示順に示した図である。
【図５】ＨＥＶＣやＨ．２６４をはじめとする一般的な映像符号化規格における符号化部の装置構成を示すブロック図である。
【図６】図５に示すＨＥＶＣやＨ．２６４をはじめとする一般的な映像符号化規格における符号化部の処理動作を示すフローチャートである。
【図７】複数ピクチャを同時に符号化するための装置の装置構成を示すブロック図である。
【図８】複数ピクチャを同時に符号化する装置が行う処理動作を示すフローチャートである。
【発明を実施するための形態】
【００７６】
以下、図面を参照して、本発明の一実施形態による映像符号化装置を説明する。図１は同実施形態の構成を示すブロック図である。この図に示す装置が図７に示す従来の装置と異なる点は、並列数算出部２０が新たに設けられている点である。
【００７７】
なお、並列処理割り当て部１４の入力に関して、図７に示す構成では外部から与えられた並列数が固定値として与えられていたが、図１に示す構成では並列数算出部２０から出力される並列処理数ｍが入力となっている。
【００７８】
図１に示す装置は、図７に示す装置と同様に、原画像バッファ１、復号画像バッファ１０、Ｎ（Ｎは自然数）個の符号化部１２−１〜Ｎ、ストリームバッファ１３、並列処理割り当て部１４、バッファ計算部１５、割り当て符号量算出部１６、ＱＰ計算部１７、複雑さ計算部１８から構成される。バッファ計算部１５、割り当て符号量算出部１６、ＱＰ計算部１７及び複雑さ計算部１８によってレート制御部１９が構成されている。そして、新たに設けられた並列数算出部２０が備えられている。図１に示す装置は、並列数算出部２０を除く構成は、図７に示す構成と同様であるため、ここでは、説明を簡単に行う。
【００７９】
原画像バッファ１は、原画像を符号化順に並べ替え、符号化部１２−１〜Ｎに送る。ただし、本構成では符号化部１２−１〜Ｎが複数あるため、並列処理割り当て部１４から送られる原画割り当て情報を元に、符号化順でｍ枚分のピクチャを、Ｎ個ある符号化部１２−１〜Ｎのなかの任意のｍ個に対してそれぞれ送信する。
【００８０】
復号画像バッファ１０は、符号化部１２−１〜Ｎから送られる復号画像を保存し、また必要に応じて参照画像として符号化部１２−１〜Ｎへ送る。ただし、本構成では符号化部１２−１〜Ｎが複数あるため、この復号画像バッファ１０も複数の復号画像の同時保存、及び複数の参照画像の同時送出に対応している。
【００８１】
符号化部１２−１〜Ｎは図５に示す符号化部１２と同等の機能を有し、本構成例では符号化部１２それがＮ個並列に備わっている。ストリームバッファ１３は、各符号化部１２−１〜Ｎから送られる符号化ストリームを保存すると共に、そのデータサイズを発生符号量としてバッファ計算部１５、割り当て符号量算出部１６、複雑さ計算部８に送る。
【００８２】
並列処理割り当て部１４は、入力された並列処理数ｍを元に、原画像バッファ１のどのピクチャをＮ個あるどの符号化部（符号化部１２−１〜Ｎのいずれか）へ送るかを求め、原画像バッファ１へ割り当て情報として送信する。原画像バッファ１のピクチャの符号化部１２−１〜Ｎへの割り当て方法としては、例えば、ｍ枚を前詰めで割り当てればよい。
【００８３】
バッファ計算部１５は、処理が始まるとレート制御設定情報を元にバッファ位置の初期値Ｂｔ＿ｂｅｆｏｒｅ（０）を計算して保持する。また、ストリームバッファ１３から各ピクチャの発生符号量が求まるたびにＢｔ＿ｂｅｆｏｒｅの値を計算し、割り当て符号量算出部１６及び並列数算出部２０へ送る。
【００８４】
割り当て符号量算出部１６は、外部から与えられるレート制御設定と並列数、バッファ位置、各ピクチャの発生符号量を元に、向こうＮピクチャ分の各ピクチャの割り当て符号量Ｔ（１）〜Ｔ（Ｎ）を求め、ＱＰ計算部１７及び並列数算出部２０へ送る。ＱＰ計算部１７は、複雑さ計算部１８から送られる各ピクチャタイプの複雑さ指数と各ピクチャの割り当て符号量を元に、Ｎピクチャ分のターゲットＱＰを計算して対応するＮ個の符号化部１２−１〜Ｎへ送る。
【００８５】
複雑さ計算部１８は、ＱＰ計算部１７から送られる各ピクチャの量子化パラメータＱＰと、ストリームバッファ１３から送られる対象ピクチャの発生符号量からピクチャタイプ毎の複雑さ指数を計算し、割り当て符号量算出部１６とＱＰ計算部１７へ送る。
【００８６】
並列数算出部２０は、割り当て符号量算出部１６が出力する各ピクチャの割り当て符号量と、バッファ計算部１５が出力するバッファ位置と、外部から指定される並列数とから符号化部１２−１〜Ｎにおける並列処理数ｍを出力する。ここで、出力される並列処理数ｍは、Ｎ≧ｍを満たすことが条件である。
【００８７】
次に、図２を参照して、図１に示す並列数算出部２０の構成を説明する。図２は、図１に示す並列数算出部２０の構成を示すブロック図である。並列数算出部２０は、誤差考慮済み符号量計算部２１、バッファ推移推定部２２、閾値判定部２３、並列処理数決定部２４から構成される。並列数算出部２０には、各ピクチャの割り当て符号量と、並列数と、バッファ位置とが入力される。
【００８８】
誤差考慮済み符号量計算部２１は、入力された並列数で指定されるピクチャ数分の割り当て符号量を入力とし、それらにあらかじめ定められた誤差係数ｋ＝１．２を乗じた値を各ピクチャの誤差考慮済み符号量としてバッファ推移推定部２２に送る。ここで、誤差係数ｋとして、１．２を乗じているが、この値に限るものではなく、任意の値を用いることが可能である。
【００８９】
バッファ推移推定部２２は、バッファ位置として入力された初期バッファ位置を起点として並列数によって規定されるピクチャ枚数分の符号化後バッファ位置（ｎ枚目ピクチャを復号した直後の受信バッファのデータ蓄積量Ｂｔ＿ａｆｔｅｒ）を各ピクチャに関する誤差考慮済み割り当て符号量から計算して閾値判定部２３に送る。
【００９０】
閾値判定部２３は、並列数によって規定されたピクチャ数分の符号化後バッファ位置（各ピクチャのＢｔ＿ａｆｔｅｒ）に関して、予め定められた閾値Ｔｈとの間で大小比較を施し、その結果を並列処理数決定部２４に送る。
【００９１】
並列処理数決定部２４は、閾値判定部２３の出力を入力し、並列数で規定された値以下の範囲で、閾値判定結果が常に閾値Ｔｈ以上となる最大のピクチャ番号を求め、それを並列処理数ｍとして出力する。
【００９２】
次に、図３を参照して、図２に示す並列数算出部２０を含む図１に示す映像符号化装置の動作を説明する。図３は、図１に示す映像符号化装置の動作を示すフローチャートである。
【００９３】
まず、符号化が始まると、従来法と同様、原画像バッファ１は、入力画像を符号化順に並べ替える（ステップＳ１）。続いて、割り当て符号量算出部１６は、向こうＮ（Ｎは自然数）枚分のピクチャに関して割り当て符号量を算出する（ステップＳ２）。算出方法は前述した通りである。
【００９４】
次に、誤差考慮済み符号量計算部２１は、算出した各ピクチャの割り当て符号量Ｔ（１）〜Ｔ（Ｎ）に対して誤差を加味する（ステップＳ３）。具体的にはＴ（１）〜Ｔ（Ｎ）に誤差係数ｋ＝１．２を掛け、誤差考慮済み符号量Ｔ’（１）〜Ｔ’（Ｎ）を算出する。
【００９５】
次に、バッファ推移推定部２２は、バッファ推移の推定を行う（ステップＳ４）。具体的には各ピクチャの符号化終了時点の推定バッファ位置Ｂｔ＿ａｆｔｅｒ（１）〜Ｂｔ＿ａｆｔｅｒ（Ｎ）を以下のように求める。
Ｂｔ＿ａｆｔｅｒ（１）＝Ｂｔ＿ｂｅｆｏｒｅ（１）−Ｔ’（１）
Ｂｔ＿ａｆｔｅｒ（２）＝Ｂｔ＿ｂｅｆｏｒｅ（２）−Ｔ’（２）
＝Ｂｔ＿ｂｅｆｏｒｅ（１）−（Ｔ’（１）＋Ｔ’（２））＋ｂ／ＦＰＳ
…
Ｂｔ＿ａｆｔｅｒ（Ｎ）＝  Ｂｔ＿ｂｅｆｏｒｅ（Ｎ）  −Ｔ’（Ｎ）  
＝Ｂｔ＿ｂｅｆｏｒｅ（１）−（Ｔ’（１）＋Ｔ’（２）＋…Ｔ’（Ｎ））＋（Ｎ−１）×ｂ／ＦＰＳ
【００９６】
そして、閾値判定部２３は、Ｂｔ＿ａｆｔｅｒ（１）〜Ｂｔ＿ａｆｔｅｒ（Ｎ）を予め定めた閾値Ｔｈと比較する（ステップＳ５）。この比較結果に基づき、並列処理数決定部２４は、符号化順に見て最も早く閾値Ｔｈを下回るピクチャ番号を見つけ、その直前のピクチャ番号を並列処理数ｍとして出力する（ステップＳ６）。例えばＢｔ＿ａｆｔｅｒ（１）、Ｂｔ＿ａｆｔｅｒ（２）は閾値Ｔｈを上回り、Ｂｔ＿ａｆｔｅｒ（３）が閾値Ｔｈを下回っていた場合、並列処理数ｍは２とする。
【００９７】
その後、ＱＰ計算部１７は、向こうｍ（並列処理数）枚分のピクチャに対して量子化パラメータＱＰを算出する（ステップＳ７）。この時の量子化パラメータＱＰの計算では、誤差係数ｋ（例えば、１．２）を掛ける前の符号量Ｔ（１）〜Ｔ（ｍ）の値を元に量子化パラメータＱＰを算出する。
【００９８】
次に、向こうｍ枚分のピクチャに対するターゲットＱＰが求まったら、以降は従来法と同様、符号化部１２−１〜Ｎは、ｍ（並列処理数）枚分のピクチャを並列処理して符号化を行う（ステップＳ８）。ｍ枚の符号化に必ずしも符号化部１２−１〜Ｎの全てが使われる訳ではなく、ｍ個の符号化部のみが使われることになる。そして、複雑さ計算部１８は、求まった発生符号量を元に、複雑さ指数を更新する（ステップＳ９）。
【００９９】
また、バッファ計算部１５は、求まった発生符号量を元に、バッファ位置を更新する（ステップＳ１０）。そして、符号化フレームが残っていたら向こうＮ枚分のピクチャに対する割り当て符号量算出処理に戻って符号化処理を最後まで繰り返す（ステップＳ１１）。
【０１００】
なお、前述した説明では割り当て符号量に誤差を加味する方法として誤差係数ｋ＝１．２を乗算する例を説明したが、誤差係数ｋを乗算することに限るものではない。例えば、固定値を加算してもよい。また、乗算や加算に限らず、各ピクチャの割り当て符号量を予め定めた誤差係数ｋを算出するための四則演算による方程式に代入して得られた値に基づいた割り当て符号量としてもよい。
【０１０１】
また、誤差係数ｋを乗算する際の誤差係数ｋは、割り当て符号量に対して、予め定めた１以上の係数を掛けて安全側に設定することを目的とするため、１以上の係数であればよい。特に、本実施形態では、割り当て符号量Ｔ（Ｎ）と、実際の発生符号量Ｇ（Ｎ）の間に乖離が生じるため、その分を補償する際に、安全側に設定するため、１以上の誤差係数を乗算するようにしている。そのため、例えば並列化を行わない状態で予め符号化を行って割り当て符号量Ｔ（Ｎ）と実際の発生符号量Ｇ（Ｎ）を算出し、その比を以って「１以上の係数」を定めれるようにしてもよい。
【０１０２】
例えば、大量のあらゆる映像を予めエンコードして割り当て符号量Ｔ（Ｎ）と実際の発生符号量Ｇ（Ｎ）の平均値をそれぞれ求め、その比を「１以上の係数」とすると手法を用いて誤差係数ｋを設定することができる。
【０１０３】
また、誤差係数ｋは必ずしも固定値である必要はない。実際にエンコードを行っていくと各フレームの割り当て符号量Ｔ（Ｎ）と実際の発生符号量Ｇ（Ｎ）の値が順次求まるので、その最新Ｍフレーム分の平均値を以って順次更新したり、先頭からずっと積算し続けた値の平均値を使ったりすることも可能である。
【０１０４】
以上説明したように、実施形態における映像符号化装置は、複数のピクチャを同時に符号化を行う際に、割り当て符号量に誤差を加味したうえでバッファ推移の推定を行う。そして、映像符号化装置は、同時に符号化を行う適切なピクチャ数を設定する。この構成によれば、復号時においてバッファオーバーフロー及びバッファアンダーフローの発生を低く抑えることができるとともに、符号化速度の高速化を実現することができる。
【０１０５】
特に、バッファ位置が下がっている場合は、並列数算出部２０が並列処理数を少なくすることで処理速度が遅くなる代わりにバッファアンダーフローのリスクを下げることが可能になる。逆に、バッファ位置が上がっている場合などバッファアンダーフローの危険性が低い場合は、並列数算出部２０が並列数を多くすることで処理速度を高めることが可能になる。この結果、バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速にエンコードすることができる。
【０１０６】
前述した実施形態における映像符号化装置の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されるものであってもよい。
【０１０７】
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
【産業上の利用可能性】
【０１０８】
バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速に符号化することが不可欠な用途に適用できる。
【符号の説明】
【０１０９】
１・・・原画像バッファ、１０・・・復号画像バッファ、１２−１〜Ｎ・・・符号化部、１３・・・ストリームバッファ、１４・・・並列処理割り当て部、１５・・・バッファ計算部、１６・・・割り当て符号量算出部、１７・・・ＱＰ計算部、１８・・・複雑さ計算部、１９・・・レート制御部、２０・・・並列数算出部
【図１】
0006470191.tif 000002
【図２】
0006470191.tif 000003
【図３】
0006470191.tif 000004
【図４】
0006470191.tif 000005
【図５】
0006470191.tif 000006
【図６】
0006470191.tif 000007
【図７】
0006470191.tif 000008
【図８】
0006470191.tif 000009