(57)【特許請求の範囲】
【請求項１】
コンピュータシステムのプロセッサと、プログラムを記憶するメモリとを備える算術エンコーダであって、
符号化単位ごとに繰り返し算術符号化処理を行なってビットストリームを生成する際において、
符号化単位ごとに生成された終了シンタックス要素に対応するビン値を外部から入力し、
入力された前記符号化単位ごとに生成された終了シンタックス要素に対応するビン値が算術符号化の終了を示すかどうか判定し、
前記ビン値が算術符号化の終了を示さないと判定された場合に、示さないと判定された前記ビン値についてビットストリーム中にビットを書き込まず、
前記ビン値が算術符号化の終了を示すと判定された場合に停止ビットを算術符号化したビットストリームを生成するように、前記プログラムが前記プロセッサによって実行可能である、算術エンコーダ。
【請求項２】
前記プロセッサがさらに、前記ビン値が算術符号化の終了を示すと判定された場合に、レンジ値により示される確率区間の下限値と、前記レンジ値を所定数デクリメントした値との合計を新たな下限値に設定し、前記所定数が、２以外の数であって、最低確率シンボルに割当て可能な最小区間の範囲を示す数値以下の数である、請求項１に記載の算術エンコーダ。
【請求項３】
前記所定数が２の累乗に等しい、請求項２に記載の算術エンコーダ。
【請求項４】
符号化単位ごとに繰り返し算術符号化処理を行なってビットストリームを生成するステップと、
符号化単位ごとに生成された終了シンタックス要素に対応するビン値を外部から入力するステップと、
入力された前記符号化単位ごとに生成された終了シンタックス要素に対応するビン値が算術符号化の終了を示すかどうか判定するステップと、
前記ビン値が算術符号化の終了を示さないと判定された場合に、示さないと判定された前記ビン値についてビットストリーム中にビットを書き込まないステップと、
前記ビン値が算術符号化の終了を示すと判定された場合に停止ビットを算術符号化したビットストリームを生成するステップとを実施するようにビデオエンコーダのプロセッサによって実行されるコンピュータ実行可能ステップを含む、算術符号化方法。
【請求項５】
前記ビン値が算術符号化の終了を示すと判定された場合に、レンジ値により示される確率区間の下限値と、前記レンジ値を所定数デクリメントした値との合計を新たな下限値に設定するステップをさらに含み、前記所定数が、２以外の数であって、最低確率シンボルに割当て可能な最小区間の範囲を示す数値以下の数である、請求項４に記載の方法。
【請求項６】
前記所定数が２の累乗に等しい、請求項５に記載の方法。
【請求項７】
コンピュータシステムのプロセッサと、プログラムを記憶するメモリとを備える算術デコーダであって、
入力された算術符号化されたビットストリームを算術復号処理している間に、復号されたビットストリーム中のビットの数に基づいて、復号プロセスが符号化済みスライスの終わりに到達したかどうか判定し、
前記復号プロセスが前記符号化済みスライスの前記終わりに到達していないと判定された場合に、ビン値を、前記復号プロセスが前記符号化済みスライスの前記終わりに到達していないことを示す第１の値に設定するように、前記プログラムが前記プロセッサによって実行可能である、算術デコーダ。
【請求項８】
前記復号プロセスが前記符号化済みスライスの前記終わりに到達したと判定された場合に、前記プロセッサがさらに、
レンジ値により示される確率区間の現在位置を示すオフセット値が、前記レンジ値を所定数デクリメントした値以上であるかどうか判定し、
前記オフセット値が、レンジ値を所定数デクリメントした値以上であると判定された場合に、前記ビン値を、前記復号プロセスが前記符号化済みスライスの前記終わりに到達したことを示す第２の値に設定し、
前記オフセット値が、レンジ値を所定数デクリメントした値以上でないと判定された場合に、前記ビン値を前記第１の値に設定する、請求項７に記載の算術デコーダ。
【請求項９】
前記所定数が、２以外の数であって、最低確率シンボルに割当て可能な最小区間の範囲を示す数値以下の数である、請求項８に記載の算術デコーダ。
【請求項１０】
前記所定数が２の累乗に等しい、請求項９に記載の算術デコーダ。
【請求項１１】
前記プロセッサが、前記ビットストリーム中の最後のバイト中に位置する停止ビットに先立つビットの数に基づいて、前記復号プロセスが符号化済みスライスの終わりに到達したかどうか判定する、請求項７に記載の算術デコーダ。
【請求項１２】
入力された算術符号化されたビットストリームを算術復号処理している間に、復号されたビットストリーム中のビットの数に基づいて、復号プロセスが符号化済みスライスの終わりに到達したかどうか判定するステップと、
前記復号プロセスが前記符号化済みスライスの前記終わりに到達していないと判定された場合に、ビン値を、前記復号プロセスが前記符号化済みスライスの終わりに到達していないことを示す第１の値に設定するステップとを実施するようにビデオデコーダのプロセッサによって実行されるコンピュータ実行可能ステップを含む、算術復号方法。
【請求項１３】
前記復号プロセスが前記符号化済みスライスの前記終わりに到達したと判定された場合に、レンジ値により示される確率区間の現在位置を示すオフセット値が、前記レンジ値を所定数デクリメントした値以上であるかどうか判定するステップと、
前記オフセット値が、レンジ値を所定数デクリメントした値以上であると判定された場合に、前記ビン値を、前記復号プロセスが前記符号化済みスライスの前記終わりに到達したことを示す第２の値に設定するステップと、
前記オフセット値が、レンジ値を所定数デクリメントした値以上でないと判定された場合に、前記ビン値を前記第１の値に設定するステップとをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記所定数が、２以外の数であって、最低確率シンボルに割当て可能な最小区間の範囲を示す数値以下の数である、請求項１３に記載の方法。
【請求項１５】
前記所定数が２の累乗に等しい、請求項１４に記載の方法。
【請求項１６】
復号プロセスが符号化済みスライスの終わりに到達したかどうか判定するステップが、前記ビットストリーム中の最後のバイト中に位置する停止ビットに先立つビットの数に基づいて、前記復号プロセスが符号化済みスライスの終わりに到達したかどうか判定するサブステップを含む、請求項１２に記載の方法。
【発明の詳細な説明】
【関連出願】
【０００１】
[0001]本特許文書は、２０１１年１月１４日に出願された米国特許仮出願第６１／４３３，０５１号の、米国特許法第１１９条（ｅ）に基づく出願日の利益を主張するものであり、この仮出願は参照により本明細書に組み込まれる。
【背景】
【０００２】
１．技術分野の主題
[0002]本発明は、算術符号化に関し、特に、算術符号化の終了のための方法及び装置に関する。
２．背景情報
【０００３】
[0003]算術符号化は、画像やオーディオなどのメディアデータの圧縮にうまく応用されてきた。参照により本明細書に組み込まれる、ＩＴＵ−Ｔ及びＭＰＥＧによって提案された最も新しいビデオ符号化標準であるＨ．２６４／ＡＶＣは、Ｈ．２６３やＭＰＥＧ２など以前の符号化標準に勝る、大幅な性能向上を達成する。Ｈ．２６４／ＡＶＣ標準は、２つの異なるエントロピー符号化方法、すなわち、コンテキストベースの適応可変長符号化（ＣＡＶＬＣ、Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）及びコンテキストベースの適応２値算術符号化（ＣＡＢＡＣ、Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）をサポートする。ＣＡＢＡＣは、ＣＡＶＬＣと比較して、９％〜１４％の平均ビットレート節約で、より高い符号化効率をもたらす。参照により本明細書に組み込まれる、Ｌｉ  Ｌｉｕ及びＸｉｎｈｕａ  Ｚｈｕａｎｇ「ＣＡＢＡＣ  Ｂａｓｅｄ  Ｂｉｔ  Ｅｓｔｉｍａｔｉｏｎ  ｆｏｒ  Ｆｉｒｓｔ  Ｈ．２６４  Ｒｄ  Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｄｅｃｉｓｉｏｎ」、ＩＥＥＥ、２００９年を参照されたい。
【０００４】
[0004]ＣＡＢＡＣ符号化プロセスの基本的な考え方は、再帰的な区間分割である。ＣＡＢＡＣエンジンは、２つのレジスタを保持する。第１のレジスタは、９ビットのレンジレジスタである。第２のレジスタは、通常モードでは９ビットでありバイパスモードでは１０ビットであるオフセットレジスタである。レンジレジスタは、現在の区間の幅を常に把握している。オフセットは、ビットストリームからのものであり、レンジ内の現在位置をポイントする。ビン（ｂｉｎ）を復号するとき、レンジは、ビンに固有の発生確率に応じて、２つのサブ区間に分割される。ビンが復号された後、レンジ及びオフセットは更新される。１つのビンを復号した後、レンジ及びオフセットは再正規化されて、次のビンを復号するための精度が維持されることになる。これにより、９ビットレジスタのレンジの最上位ビットが常に１であることが確実になる。
【０００５】
[0005]算術符号化の終了は、通常、算術エンコーダがスライスの終わりに到達したときに発生する。スライス中のマクロブロックの数が可変なので、ＣＡＢＡＣの実施のためには、Ｈ．２６４／ＡＶＣは、スライス中の各マクロブロックにつき、「ｅｎｄ＿ｏｆ＿ｓｌｉｃｅ＿ｆｌａｇ」と呼ばれる終了シンタックス要素を符号化して、符号化済みスライスの終わりをデコーダにシグナリングすることを必要とする。所与のマクロブロックがスライス中の最後のマクロブロックでない場合は、このフラグが０にセットされてデコーダにシグナリングされるが、所与のマクロブロックがスライス中の最後のマクロブロックである場合は、このフラグが１にセットされてデコーダにシグナリングされる。このフラグは、終了しないマクロブロックのイベントが、最も可能性の高いＭＰＳ確率に関係するように、特に指定された非適応確率モデルを使用して符号化される。ｅｎｄ＿ｏｆ＿ｓｌｉｃｅ＿ｆｌａｇにより、デコーダは、符号化済みスライス中の最後のマクロブロックが復号されたかどうか判定することができる。
【０００６】
[0006]図１に、Ｈ．２６４／ＡＶＣ標準において指定される、終了前のＣＡＢＡＣ符号化手順を例示するフローチャートを示す。Ｈ．２６４／ＡＶＣの図９−１１を参照されたい。図１では、ステップ１０１で、ｃｏｄＩＲａｎｇｅの値が２つデクリメントされる。次いで、ステップ１０２で、符号化されているビン値（ｂｉｎＶａｌ）が０に等しくないかどうか判定される。ビン値が０に等しい場合、又は、０に等しい終了シンタックス要素のイベントをビンが含む場合は（これは、エンコーダがスライスの終わりに到達していないことを意味する）、ステップ１０３で再正規化手順が実施され、終了シンタックス要素（＝０）が符号化される。符号化されているビン値が０に等しくない場合、又は、１に等しい終了シンタックス要素のイベントをビンが含む場合は（これは、エンコーダがスライスの終わりに到達したことを意味する）、ＣＡＢＡＣ符号化は終了し、ステップ１０４で、ｃｏｄＩＬｏｗの値が、ｃｏｄＩＬｏｗの値とｃｏｄＩＲａｎｇｅの値との合計に設定される。次いで、プロセスはステップ１０５に進み、ここで、エンコーダフラッシング手順が実施され、終了シンタックス要素（＝１）が符号化される。例示的なエンコーダフラッシング手順が、Ｈ．２６４／ＡＶＣの図９−１２に指定されている。最後に、ステップ１０６で、ＢｉｎＣｏｕｎｔｓＩｎＮＡＬｕｎｉｔｓが１つインクリメントされる。
【０００７】
[0007]図２に、Ｈ．２６４／ＡＶＣにおいて指定される、終了前のＣＡＢＡＣ復号プロセスを例示するフローチャートを示す。Ｈ．２６４／ＡＶＣの図９−６を参照されたい。図２では、ステップ２０１で、ｃｏｄＩＲａｎｇｅの値が２つデクリメントされる。次いで、ステップ２０２で、ｃｏｄＩＯｆｆｅｓｅｔの値がｃｏｄＩＲａｎｇｅの値以上であるかどうか判定される。そうでない場合は、ステップ２０３で、ビン値が０にセットされるが、これは、デコーダが符号化済みスライスの終わりに到達していないことを意味する。次いで、プロセスはステップ２０４に進んで、再正規化手順を実施する。ｃｏｄＩＯｆｆｅｓｅｔの値がｃｏｄＩＲａｎｇｅの値以上である場合は（これは、デコーダが符号化済みスライスの終わりに到達したことを意味する）、ステップ２０５でビン値が１にセットされ、ＣＡＢＡＣ復号手順は終了する。
【０００８】
[0008]図１に示す符号化プロセスは、スライス中の各マクロブロックにつき実施されることに留意されたい。スライス中のそれぞれのマクロブロックごとに繰り返されるので、終了シンタックス要素の符号化は必然的に、ビットストリーム中のビットが増加する結果となり、これは望ましくない。終了シンタックス要素を符号化する結果として生じるビット増加に対して支払うことになるコストは、それほど大きくないと考えられるかもしれないが、このコストは、スライスの粒度が増大するのに伴って増加する。例えば、スライスは、従来の１６×１６マクロブロックではなく、８×８マクロブロックなど、増大した粒度で定義されることがある。粒度の増大は、ターゲットビット数により近いビット数でスライスを定義できるという点で、有益である。しかし、粒度が１６×１６から８×８に増大した場合、終了シンタックス要素を符号化することによって増加するビットのオーバヘッドは、４倍になる。
【発明の概要】
【０００９】
[0009]従来の算術コーダが被る上記の問題に鑑みて、本発明は、終了区分要素を符号化する結果として生じるビットの増加を回避するために、終了シンタックス要素をスライス中のそれぞれのマクロブロックごとに符号化することを不要にする。
【００１０】
[0010]本発明は、算術エンコーダ、及び、算術エンコーダ中で実施される方法を提供する。エンコーダは、まず、ビン値が算術符号化の終了を示すかどうか判定する。ビン値が算術符号化の終了を示さないと判定された場合は、そのように判定されたビン値についてビットストリーム中にビットは書き込まれない。ビン値が算術符号化の終了を示すと判定された場合は、ビットストリーム中に停止ビットが書き込まれる。
【００１１】
[0011]ビン値が算術符号化の終了を示すと判定された場合、エンコーダは、オフセット値を、オフセット値と、レンジ値を所定数デクリメントした値との合計に設定する。所定数は、２以外の数であって、最低確率シンボルに割当て可能な最小区間以下の数とすることができる。所定数は、２の累乗に等しいものとすることができる。
【００１２】
[0012]本発明はまた、算術デコーダ、及び、算術デコーダ中で実施される方法を提供する。本発明は終了シンタックスをスライス中の各マクロブロックにつき符号化することを不要にするので、デコーダは、符号化済みスライス中のビットの数と、デコーダによって取り込まれたビットの数とを比較することによって、コードスライスの終わりを検出する。符号化済みスライス中のビットの数は、エンコーダから受け取ったビットストリームに含まれるビットの数から導出される。特に、符号化済みスライス中のビットの数は、ビットストリーム中の最後のバイトに含まれる停止ビットに先立つビットの数である。
【００１３】
[0013]復号プロセスが符号化済みスライスの終わりに到達していないとデコーダが判定した場合は、デコーダは、ビン値を、そのように判定された復号プロセスを示す第１の値に設定する。一方、復号プロセスが符号化済みスライスの終わりに到達したとデコーダが判定した場合は、デコーダはさらに、オフセット値が、レンジ値を所定数デクリメントした値以上であるかどうか判定する。オフセット値が、レンジ値を所定数デクリメントした値以上であると判定された場合は、デコーダは、ビン値を、復号プロセスが符号化済みスライスの終わりに到達したことを示す第２の値に設定する。オフセット値がそうでないと判定された場合は、デコーダは、ビン値を第１の値に設定する。
【００１４】
[0014]デコーダ中で使用される所定数は、２以外の数であって、最低確率シンボルに割当て可能な最小区間以下の数とすることができる。所定数は、２の累乗に等しいものとすることができる。
【図面の簡単な説明】
【００１５】
【図１】[0015]  従来の、終了前の符号化手順を示すフローチャートである。
【００１６】
【図２】[0016]  従来の、終了前の復号手順を示すフローチャートである。
【００１７】
【図３】[0017]  本発明を実現できるコンピュータの例示的なハードウェアアーキテクチャを示すブロック図である。
【００１８】
【図４】[0018]  本発明を適用できるビデオエンコーダの概観を示すブロック図である。
【００１９】
【図５】[0019]  本発明を適用できるビデオデコーダの概観を示すブロック図である。
【００２０】
【図６】[0020]  本発明の一実施形態によるエントロピーコーダの機能モジュールを示すブロック図である。
【００２１】
【図７】[0021]  本発明の別の実施形態によるエントロピーデコーダの機能モジュールを示すブロック図である。
【００２２】
【図８】[0022]  本発明の一実施形態による、例示的な終了前の符号化手順を示すフローチャートである。
【００２３】
【図９】[0023]  図８のステップ８０３で実施される例示的なフラッシング手順を示すフローチャートである。
【００２４】
【図１０】[0024]  本発明の別の実施形態による復号手順の概観を示すフローチャートである。
【００２５】
【図１１】[0025]  本発明の実施形態による、例示的な終了前の符号化手順を示すフローチャートである。
【発明を実施するための形態】
【００２６】
[0026]図３に、本発明を実現できるコンピュータ３００の例示的なハードウェアアーキテクチャを示す。図３に示すハードウェアアーキテクチャは、本発明の実施形態を実現するビデオエンコーダとビデオデコーダの両方において一般的なものとすることができることに留意されたい。コンピュータ３００は、プロセッサ３０１と、メモリ３０２と、記憶デバイス３０５と、１つ又は複数の入力及び／又は出力（Ｉ／Ｏ）デバイス３０６（又は周辺装置）とを備え、これらはローカルインタフェース３０７を介して通信可能に結合される。ローカルインタフェース３０５は、例えば、当技術分野で知られるように１つ又は複数のバス又は他の有線若しくはワイヤレス接続とすることができるが、これらに限定されない。
【００２７】
[0027]プロセッサ３０１は、ソフトウェア、特に、メモリ３０２に記憶されたソフトウェアを実行するためのハードウェアデバイスである。プロセッサ３０１は、任意のカスタムメード若しくは市販のプロセッサ、中央処理装置（ＣＰＵ）、コンピュータ３００に関連するいくつかのプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ（マイクロチップ若しくはチップセットの形の）、又は一般に、ソフトウェア命令を実行するための任意のデバイスとすることができる。
【００２８】
[0028]メモリ３０２は、揮発性メモリ要素（例えばランダムアクセスメモリ（ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどのＲＡＭ））及び不揮発性メモリ要素（例えばＲＯＭ、ハードドライブ、テープ、ＣＤＲＯＭなど）のうちの任意の１つ又は組合せを含みうるコンピュータ可読媒体を含む。さらに、メモリ３０２は、電子、磁気、光学、及び／又は他のタイプの記憶媒体を組み込むことができる。コンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって使用するか又はこれらと共に使用するためのプログラムを、記憶、通信、伝搬、又は移送することのできる、任意の手段とすることができる。留意されたいが、メモリ３０２は分散アーキテクチャを有してもよく、その場合、様々な構成要素は、相互から離れて位置するが、プロセッサ３０１によってアクセスすることができる。
【００２９】
[0029]メモリ３０２中のソフトウェア３０３は、１つ又は複数の別々のプログラムを含むことができ、各プログラムは、後述するようなコンピュータ３００の論理的機能を実現するための実行可能命令の順序付きリストを含む。図３の例では、メモリ３０２中のソフトウェア３０３は、本発明による、コンピュータ３００のビデオ符号化又はビデオ復号の機能を定義する。加えて、必須ではないが、メモリ３０２がオペレーティングシステム（Ｏ／Ｓ）３０４を含むことも可能である。オペレーティングシステム３０４は本質的に、コンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイル及びデータの管理、メモリ管理、並びに、通信制御及び関連サービスを提供する。
【００３０】
[0030]コンピュータ３００の記憶デバイス３０５は、固定記憶デバイス又はポータブル記憶デバイスを含めた、多くの異なるタイプの記憶デバイスのうちの１つとすることができる。例として、記憶デバイス３０５は、磁気テープ、ディスク、フラッシュメモリ、揮発性メモリ、又は異なる記憶デバイスとすることができる。加えて、記憶デバイス３０５は、セキュアなディジタルメモリカード、又はいずれか他の取外し可能な記憶デバイス３０５とすることもできる。
【００３１】
[0031]Ｉ／Ｏデバイス３０６は、入力デバイスを含むことができ、入力デバイスは、例えばタッチスクリーン、キーボード、マウス、スキャナ、マイクロホン、又は他の入力デバイスだが、これらに限定されない。さらに、Ｉ／Ｏデバイス３０６は、出力デバイスを含むことができ、出力デバイスは、例えば表示装置又は他の出力デバイスだが、これらに限定されない。Ｉ／Ｏデバイス３０６は、入力と出力の両方を介して通信するデバイスをさらに含むことができ、このようなデバイスは、例えば、変調器／復調器（別のデバイスやシステムやネットワークにアクセスするための、モデム）、無線周波数（ＲＦ）やワイヤレスや他のトランシーバ、電話インタフェース、ブリッジ、ルータ、又は、入力と出力の両方として機能する他のデバイスだが、これらに限定されない。
【００３２】
[0032]当業者には周知のように、ビデオ圧縮は、ビデオシーケンス中の冗長情報を除去することによって達成される。多くの異なるビデオ符号化標準が存在するが、例としては、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６１、Ｈ．２６３、及びＨ．２６４／ＡＶＣが挙げられる。本発明は、いずれか特定のビデオ符号化標準の適用において限定されるものとはしないことに留意されたい。しかし、Ｈ．２６４／ＡＶＣ標準は最も新しいビデオ符号化標準なので、本発明に関する以下の記述は、Ｈ．２６４／ＡＶＣ標準の例を用いて提供する。Ｈ．２６４／ＡＶＣでは、ビデオの各フレーム又はピクチャをいくつかのスライスに分けることができる。次いでスライスは、マクロブロックと呼ばれる１６×１６画素のブロックに分割され、次いでマクロブロックは、８×１６、１６×８、８×８、４×８、８×４、そして４×４に至るまでの画素のブロックにさらに分割することができる。
【００３３】
[0033]図４に、本発明を適用できるビデオエンコーダの概観を示す。図示のブロックは、プロセッサ３０１がメモリ３０２中のソフトウェア３０３を実行することによって実現される機能モジュールを表す。ビデオフレームのピクチャ４００が、ビデオプリコーダ４０１に供給される。ビデオプリコーダは、ピクチャ４００を、マクロブロック４００Ａの単位で扱う。各マクロブロックは、ピクチャ４００の、いくつかのピクチャサンプルを含む。各マクロブロックに対して、変換係数への変換が実施され、それに続いて変換係数レベルへの量子化が実施される。さらに、符号化ステップを、画素データに対して直接に実施するのではなく、予測された画素値に対する画素データの差に対して実施して、それによってより圧縮しやすい小さい値を達成するために、フレーム内予測又は動き補償が使用される。
【００３４】
[0034]各スライスにつき、プリコーダ４０１はいくつかのシンタックス要素を生成するが、これらのシンタックス要素は、それぞれのスライスのマクロブロックの符号化済みバージョンを形成する。シンタックス要素中の全ての残差データ要素は、変換係数レベル、又はスキップされた変換係数レベルを示す有効性マップなど、変換係数の符号化に関係し、残差データシンタックス要素と呼ばれる。これらの残差データシンタックス要素の他に、プリコーダ４０１によって生成されるシンタックス要素は、制御情報シンタックス要素も含み、制御情報シンタックス要素は、各マクロブロックがどのように符号化されたものであってどのように復号されなければならないかのそれぞれに関する制御情報を含む。言い換えれば、シンタックス要素は、２つのカテゴリに分割可能である。第１のカテゴリである制御情報シンタックス要素は、例えば、マクロブロックタイプに関係する要素、サブマクロブロックタイプに関係する要素、空間タイプと時間タイプの両方の予測モードに関する情報に関係する要素、並びに、スライスベースとマクロブロックベースの制御情報に関係する要素を含む。第２のカテゴリ中では、量子化済み変換係数のブロック内の全ての有効係数の位置と、量子化ステップに対応するレベルの単位で示される有効係数の値とを示す有効性マップなど、全ての残差データ要素が組み合わされて、残差データシンタックス要素になる。
【００３５】
[0035]プリコーダ４０１は、シンタックス要素をエントロピーコーダ４０２に出力する。エントロピーコーダ４０２はＣＡＢＡＣエンコーダであり、エントロピーコーダ４０２については後でより詳細に説明する。エントロピーコーダ４０２は、各スライスにつき、算術コードワード又はビットストリームを生成する。スライスについてのビットストリームを生成するとき、エントロピーコーダ４０２は、ビデオ信号中のシンタックス要素のデータ値の間の統計的依存関係を利用する。エントロピーコーダ４０２は、ピクチャ４００の各スライスについてのビットストリームを、図５に示されるエントロピーデコーダに出力する。
【００３６】
[0036]図５に、本発明を適用できるビデオデコーダの概観を示す。同様に、図示のブロックは、プロセッサ３０１がメモリ３０２中のソフトウェア３０３を実行することによって実現される機能モジュールを表す。エントロピーデコーダ５０１はＣＡＢＡＣデコーダであり、エントロピーデコーダ５０１については後でより詳細に論じる。エントロピーデコーダ５０１は、ビットストリームを受け取り、復号してシンタックス要素に戻す。プリコードデコーダ５０２が、シンタックス要素を使用して、マクロブロックごとに、次いでスライスからスライスへと、ピクチャ５００中の画素のピクチャサンプルを取り出す。
【００３７】
[0037]図６に、シンタックス要素をビットストリームに符号化するためのエントロピーコーダ４０２の機能モジュールを示す。これらの機能モジュールは、プロセッサ３０１がメモリ３０２中のソフトウェア３０３を実行することによって実現される。ＣＡＢＡＣ符号化プロセスは、３つの処理段階、すなわち、２値化、コンテキストモデル化、及び２値算術符号化を含む。第１の処理段階を実施するために、エントロピーコーダ４０２は、２値化器６０１を備える。２値化器６０１の入力は、スイッチ６０３を介して入力６０２に接続される。入力６０２は、エントロピーコーダ４０２によって符号化されることになるシンタックス要素を提供する。スイッチ６０３は、入力６０２に到達するシンタックス要素を、２値化器６０１に渡すか、又は、２値化出力６０４に渡してそれにより２値化器６０１を迂回することができる。スイッチ６０３は、２進値でないシンタックス要素を２値化器６０１に渡すように機能する。２値化された形でないシンタックス要素の例としては、動きベクトル差分及び変換係数レベルがある。スイッチ６０３はまた、シンタックス要素がすでに２値化された形である場合に、シンタックス要素を入力６０２から２値化出力６０４に直接渡すように機能する。
【００３８】
[0038]２値化器６０１によって出力されたビンストリングは、２値化出力６０４に直接渡されずに、２値化器６０１の出力と出力６０４との間に配置されるビンループオーバ手段６０５によって、出力６０４に制御可能に渡されてもよい。それにより、２値化器６０１によって出力されたビンストリングと、２値化器６０１を迂回するすでに２進値であるシンタックス要素とが、出力６０４で単一のビットストリームにマージされる。
【００３９】
[0039]第２の処理段階を実施するために、エントロピーコーダ６０２は、コンテキストモデラ６０６並びにスイッチ６０７を備える。コンテキストモデラ６０６の入力は、スイッチ６０７を介して２値化出力６０４に接続される。コンテキストモデラ６０６の出力は、通常符号化エンジン６０８に接続される。スイッチ６０７は、ビンシーケンスのビット又はビンを、コンテキストモデラ６０６に渡すか、又は、バイパス符号化エンジン６０９に渡してそれによりコンテキストモデラ６０６を迂回するように機能する。
【００４０】
[0040]コンテキストモデラ６０６は、到着した各ビンにつき、コンテキストモデルを選択する。コンテキストモデルは、ビンストリング中のビンの値の間における確率分布モデル化の統計的依存関係を見積もるものであり、また、ビンストリング中のそれぞれのビンの発生確率を推定するために通常符号化エンジン６０８によって使用される。入来したビンにコンテキストモデルを割り当てた後、コンテキストモデラ６０６は、ビンを割り振られたコンテキストモデルと共に、ビンを通常符号化エンジン６０８に渡す。通常符号化エンジン６０８は、第３の処理段階を実施し、コンテキストモデラ６０６から渡されたビンの値を、やはりコンテキストモデラ６０６から渡されたコンテキストモデルを使用して算術符号化する。さらに、通常符号化エンジン６０８は、コンテキストモデル更新のためのビン値を、フィードバックライン６１０を介してコンテキストモデラ６０６に渡す。
【００４１】
[0041]バイパス符号化エンジン６０９は、静的な所定の確率推定値を使用してビンストリングを算術符号化するためのものである。２値化器６０１によって出力されたビンストリング中のビンのいくつかは、ほぼ等確率分布を示す。このことは、ビンストリング中のビンに対応するビットが１である可能性と０である可能性が半々であることを意味する。これらのビンは、バイパス符号化エンジン６０９に供給され、等確率の確率推定値を使用して算術符号化される。この等確率の確率推定値は、一定であり、したがって、コンテキストモデルを選択すること及び確率推定値を更新することに関連する計算オーバヘッドをなくす。
【００４２】
[0042]通常符号化エンジン６０８及びバイパス符号化エンジン６０９から出力されたビットストリームは、スイッチ６１２により、出力６１１で単一のビットストリームにマージされる。このビットストリームは、入力端子６０２に入力されたシンタックス要素の２値算術コードワードを表す。通常符号化エンジン６０８及びバイパス符号化６０９は、協働して、適応確率推定と静的確率推定のいずれかに基づいて算術符号化を実施する。
【００４３】
[0043]図７に、エンコーダから受け取ったビットストリームを復号してシンタックス要素に戻すためのエントロピーデコーダ５０１の機能モジュールを示す。これらの機能モジュールは、プロセッサがメモリ３０２中のソフトウェア３０３を実行することによって実現される。図７では、スイッチ７０３の動作により、通常復号エンジン７０１とバイパス復号エンジン７０２のいずれかによってビットストリームが受け取られる。スイッチ７０３は、通常符号化エンジン６０８によって出力されたビットストリームを通常復号エンジン７０１に、また、バイパス符号化エンジン６０９によって出力されたビットストリームをバイパス復号エンジン７０２に、選択的に渡すように機能する。通常復号エンジン７０１は、コンテキストモデラ７０４によって提供されたコンテキストモデルに従って適応確率推定を使用して、受け取ったビットストリームを復号済みビンに復号する。バイパス復号エンジン７０２は、等確率の静的確率推定値を使用して、受け取ったビットストリームを復号済みビンに復号する。復号済みビンは、スイッチ７０６の動作によって、逆２値化のために逆２値化器７０５に進むか、又は逆２値化器７０５を迂回する。逆２値化器７０５は、復号済みビンをシンタックス要素に逆２値化する。シンタックス要素は、通常復号エンジン７０１に提供されることになるコンテキストモデルの更新のために、コンテキストモデラ７０４にフィードバックされる。通常復号エンジン７０１は、算術コードワードを復号する度に、前に復号された少なくとも１つのビンに基づいて確率推定値を更新する。
【００４４】
[0044]次に、エントロピーコーダ４０２及びエントロピーデコーダ５０１の詳細な動作に移る。添付のフローチャートに、ＣＡＢＡＣ符号化及び復号のためにエントロピーコーダ４０２及びエントロピーデコーダ５０１によって実施されるソフトウェアプロセスを示す。添付のフローチャートに記述する符号化プロセス及び復号プロセスは、図６及び７に示すエントロピーコーダ４０２及びエントロピーデコーダ５０１の機能モジュールによって共同で実施され、これらの機能モジュールはプロセッサ３０１がメモリ３０２中のソフトウェア３０３を実行することによって実現されることを理解されたい。また、本明細書で特に論じない本発明の算術符号化及び復号の手順は、参照により本明細書に組み込まれるＨ．２６４／ＡＶＣのセクション９．３．３及び９．３．４並びにそれぞれのサブセクションにおいて指定される手順に従うことにも留意されたい。
【００４５】
[0045]図８は、本発明の一実施形態による例示的な終了前の符号化手順を示すフローチャートである。このフローチャートでは、ステップ８０１で、ビン値（ｂｉｎＶａｌ）が０に等しくないかどうか判定される。ビン値が０に等しい場合は、動作は実施されず、したがって、ビットストリームにビットは書き込まれない。ビン値が０に等しいことは、エンコーダがスライスの終わりに到達していないことを意味する。ビン値が０に等しくない場合は、ＣＡＢＡＣ符号化は終了し、プロセスはステップ８０２に進み、ここで、ｃｏｄＩＬｏｗの値が、ｃｏｄＩＬｏｗの値と、ｃｏｄＩＲａｎｇｅの値を２つデクリメントした値との合計に設定される。その後、ステップ８０３でフラッシング手順が適用される。
【００４６】
[0046]図９は、図８のステップ８０３で実施される例示的なフラッシング手順を示すフローチャートである。図９のステップ９０１で、ｃｏｄＩＲａｎｇｅの値が２に設定される。次いでプロセスはステップ９０２に進み、ここで、再正規化手順が実施される。例示的な再正規化手順が、Ｈ．２６４／ＡＶＣの図９−８に指定されており、関連するセクションで論じられている。その後、プロセスはステップ９０３に進み、ここで、ｃｏｄＩＬｏｗの値を右に９ビット位置だけシフトして１Ｈｅｘの値との論理積をとった値に等しい値に対して、プットビット（ｐｕｔ  ｂｉｔ）手順が実施される。ｃｏｄＩＬｏｗのシフトされた値に対して論理積演算を実施する結果、最近有効ビットから数えて１０番目の位置のビットが生成され、その後、出力される。例示的なプットビット手順が、Ｈ．２６４／ＡＶＣの図９−９に指定されており、関連するセクションで論じられている。最後に、プロセスはステップ９０３に進み、ｃｏｄＩＬｏｗの値を右に７ビット位置だけシフトして３Ｈｅｘの値との論理積をとってから１Ｈｅｘとの論理和をとった値に等しい２ビットを、ビットストリームに書き込む。１Ｈｅｘとの論理和演算は、停止ビットをビットストリームに書き込むために実施される。
【００４７】
[0047]このように、本発明では、エンコーダがスライスの終わりに到達するまで、終了シンタックス要素を示すビットがビットストリームに書き込まれることはなく、エンコーダがスライスの終わりに到達したときに、停止ビットがビットストリームに書き込まれる。したがって、本発明によれば、ＣＡＢＡＣエンコーダは、従来のＣＡＢＡＣエンコーダによって生成され送信されるビットよりも少ないビットを含むビットストリームを生成して送信する。より小さいマクロブロックでスライスを定義することによってスライスの粒度が増大したときでも、本発明を使用することにより、ビットストリーム中のビットの増加を回避することができる。
【００４８】
[0048]次に、本発明による復号プロセスに移る。添付のフローチャートに、エントロピーデコーダ５０１によって実施される復号プロセスを示すが、この復号プロセスでは、ビットストリームが復号されてシンタックス要素に戻される。復号プロセスは基本的に、エントロピーエンコーダ４０２によって実施された処理を取り消すための、符号化プロセスの逆である。添付のフローチャートに示す復号プロセスは、図７に示す機能モジュールによって共同で実現され、これらの機能モジュールは、前に説明したように、プロセッサ３０１がメモリ３０２中のソフトウェア３０３を実行することによって実現されることを理解されたい。
【００４９】
[0049]図１０は、単一のビンに対する復号手順の概観を示すフローチャートである。図１０では、まずステップ１００１で、ｂｙｐａｓｓＦｌａｇの値が１に等しいかどうか判定される。そうである場合は、ステップ１００２で、バイパス復号手順が実施される。例示的なバイパス手順が、Ｈ．２６４／ＡＶＣの図９−５に指定されている。ｂｙｐａｓｓＦｌａｇの値が１に等しくない場合は、プロセスはステップ１００３に進み、ここで、ｃｔｘＩｄｘの値が２７６に等しいかどうか判定される。２７６に等しいｃｔｘＩｄｘの値は、終了シンタックス要素に関連する。ｃｔｘＩｄｘの値が２７６に等しい場合は、プロセスはステップ１００４に進んで、終了前の復号手順を実施する。これについては後で詳細に論じる。そうでない場合は、ステップ１００５で、２値決定のための復号手順が実施される。例示的な、２値決定のための復号手順が、Ｈ．２６４／ＡＶＣの図９−３に指定されている。
【００５０】
[0050]図１１は、図１０のステップ１００４で実施される、本発明による終了前の復号手順を示すフローチャートである。本発明のエンコーダは、終了シンタックス要素を示すビットを含まないビットストリームを送るので、本発明のデコーダは、符号化済みスライスの終わりを検出するための手順を実施して、元のマクロブロックを適正に再構築する。この効果のために、ステップ１１０１で、復号手順の間にデコーダが符号化済みスライスの終わりに到達したかどうか判定される。デコーダが符号化済みスライスの終わりに到達していない場合は、ステップ１１０２で、ビン値（ｂｉｎＶａｌ）が０にセットされる。その後、プロセスは終了する。したがって、符号化済みスライスの終わりに到達していない場合は、それ以上の手順は実施されない。デコーダが符号化済みスライスの終わりに到達した場合は、さらにステップ１１０３で、ｃｏｄＩＯｆｆｓｅｔの値が、ｃｏｄＩＲａｎｇｅの値を２つデクリメントした値以上であるかどうか判定される。この判定が必要なのは、符号化済みスライス中の最後のビットが、２つ以上のマクロブロックを記述するデータを含むことがあるからである。ｃｏｄＩＯｆｆｓｅｔの値が、ｃｏｄＩＲａｎｇｅの値を２つデクリメントした値以上である場合は、ステップ１１０４で、ビン値は１にセットされる。そうでない場合は、ステップ１１０２で、ビン値は０にセットされる。
【００５１】
[0051]ステップ１１０１で実施される判定プロセスは、いくつかの方法で実施することができる。符号化済みスライスを構成するビットの数を、ビットストリームのサイズによって決定することができる。ＮｕｍＢｙｔｅｓＩｎＮａｌｕｎｉｔと呼ばれるシンタックス要素が、ネットワークアダプティブレイヤにおけるバイトの数を示すが、この数はビットストリームのサイズに等しい。ビットストリーム中の最後のバイトは、停止ビットを含み、この停止ビットは、符号化済みスライスの終わりを示す。したがって、符号化済みスライスを構成するビットの数は、停止ビットに先立つビットの数であり、この数はＮｕｍＢｙｔｅｓＩｎＮａｌｕｎｉｔの値を使用して計算することができる。ビットストリームがＩＰパケットネットワークを介して送信されるときは、パケットのサイズは、ＮｕｍＢｙｔｅｓＩｎＮａｌｕｎｉｔの値に等しい。したがって、ＮｕｍＢｙｔｅｓＩｎＮａｌｕｎｉｔの値を使用する代わりに、パケットのサイズを使用して、符号化済みスライスを構成するビットの数を決定することもできる。ビットストリームがブロードキャストチャネルを介してストリームビデオデータ中で送信されるときは、ストリームビデオデータに含まれる開始コードを探す必要がある。開始コードは、ビットストリームの始まりを示す。隣接する２つの開始コード間で送信されるビットを数えることにより、ビットストリーム中のビットの数を決定することができ、この数を使用して、符号化済みスライスを構成するビットの数が決定される。
【００５２】
[0052]算術デコーダは、デコーダによって取り込まれたビットを数えるためのビットカウンタを有する。ビットカウンタは、ビットストリームからビットを取り込む度にインクリメントする。本発明は、ビットカウンタを使用して、デコーダが符号化済みスライスの終わりに到達したかどうか判定する。特に、ビットカウンタのカウントが、上で計算されたビット数と比較される。ビットカウンタのカウントが、計算されたビット数よりも小さい間は、図１１のステップ１１０１で行われる判定は「いいえ」であり、プロセスはステップ１１０１からステップ１１０２に進む。ビットカウンタのカウントが、計算されたビット数に等しくなったとき、プロセスはステップ１１０１からステップ１１０３に進む。前述のビットカウンタの代わりに、ビット位置カウンタを使用してもよいことに留意されたい。ビット位置カウンタは、デコーダによって取り込まれているビットの、ビットストリーム中での位置を示す情報を出力する。
【００５３】
[0053]図８のステップ８０２及び図１１のステップ１１０３でｃｏｄＩＲａｎｇｅの値から引かれ、図９のステップ９０１でｃｏｄＩＲａｎｇｅの値に設定される定数は、最低確率シンボル（ＬＰＳ）に割り当てることのできる最小区間以下である限り、２である必要はないことに留意されたい。この定数は、２の累乗であることが好ましい。Ｈ．２６４／ＡＶＣの表９−４４は、最低確率シンボルに割当て可能な区間を示すが、この表によれば、例えば、ｐＳｔａｔｅＩｄｘの値が６２に等しく、ｑＣｏｄＩＲａｎｇｅＩｄｘの値が０に等しいとき、最低確率シンボルに割当て可能な最小区間は６である。したがって、図８のステップ８０２及び図１１のステップ１１０３でｃｏｄＩＲａｎｇｅの値から引かれ、図９のステップ９０１でｃｏｄＩＲａｎｇｅの値に設定される定数値は、２の代わりに４とすることもできる。この値が４である場合、ビットストリームは、この値が２であるときに含むビットよりも１つ少ないビットを含む。図１２のステップ１２０１で符号化済みスライスを構成するビットの数を決定するときには、このことを考慮しなければならない。
【００５４】
[0054]以上の記述を読んだ後には、本発明の多くの改変及び修正が当業者にはおそらく明らかになるであろうが、例証として図示及び記述したどんな特定の実施形態も、限定と見なされるものとは決してしないことを理解されたい。したがって、様々な実施形態の詳細への言及は、特許請求の範囲を限定するものとはせず、特許請求の範囲はそれ自体で、本発明に不可欠であると見なされる特徴のみを列挙する。
【図１】
0005961189.tif 000002
【図２】
0005961189.tif 000003
【図３】
0005961189.tif 000004
【図４】
0005961189.tif 000005
【図５】
0005961189.tif 000006
【図６】
0005961189.tif 000007
【図７】
0005961189.tif 000008
【図８】
0005961189.tif 000009
【図９】
0005961189.tif 000010
【図１０】
0005961189.tif 000011
【図１１】
0005961189.tif 000012