[優先権の主張]
本出願は、その内容全体が参照により本明細書に組み込まれる、2010年4月9日に出願された米国仮出願第61/322,641号の利益を主張する。
本開示の態様は概して、ビデオコーディングに関し、より詳細には、ブロックベースのビデオコーディングに関する。
デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレス通信デバイス、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、セルラー電話または衛星無線電話などを含む、広範囲にわたるデバイスに組み込むことができる。デジタルビデオデバイスは、デジタルビデオをより効率的に送信および受信するために、MPEG−2、MPEG−4、またはH.264/MPEG−4 アドバンスト・ビデオコーディング(Advanced Video Coding)(AVC)など、ビデオ圧縮技法を実装する。ビデオ圧縮技法では、ビデオ信号に固有の冗長性を低減または除去するために空間的予測および時間的予測を実行する。
ビデオ符号化では、ビデオ圧縮は概して、空間的予測、動き推定および動き補償を含む。特に、イントラコーディング(intra-coding)は、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディング(inter-coding)は、隣接フレーム内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。インターコーディングの場合、ビデオ符号器は、2つ以上の隣接フレーム間でビデオブロックを一致させる動作を追跡するために動き推定を実行する。動き推定は、1つまたは複数のリファレンスフレーム(reference frames)中の対応するビデオブロックに対するビデオブロックの変位を示す動きベクトルを生成する。動き補償は、その動きベクトルを使用して、リファレンスフレームから予測ビデオブロックを生成する。動き補償の後、元のビデオブロックから予測ビデオブロックを減算することによって残差ビデオブロックが形成される。
ビデオ符号器は、残差ブロックのビットレートをさらに低減するために、変換、量子化およびエントロピーコーディングのプロセスを適用する。エントロピーコーディングは、一般に、変換演算および量子化演算によって生成される残差係数をさらに圧縮するために算術コード(arithmetic codes)または可変長コード(variable length codes)(VLC)を適用することを含む。例として、一部の符号器において代替エントロピーコーディングモードとして使用され得る、コンテキスト適応型バイナリ算術コーディング(context-adaptive binary arithmetic coding)(CABAC)およびコンテキスト適応型可変長コーディング(context-adaptive variable length coding)(CAVLC)がある。ビデオ復号器は、逆演算を実施して、ブロックそれぞれに関する動き情報と残差情報とを使って、符号化されたビデオを再構成する。
本開示の態様は、可変長コード(VLC)を使う、変換ブロック係数および残差データなどのデジタルビデオデータのためのコーディング方式を含む。各デジタルビデオブロックからの係数は、一定順で走査し、順序付き配列に並べることができる。本開示は、一態様において、1つまたは複数のVLCパラメータを表すシンボル組合せ(symbol combinations)を使って、デジタルビデオブロック係数のVLCコーディングを実施するように構成された可変長コード(VLC)ユニットを備えるビデオコーディングデバイスを提供する。VLCパラメータは、係数配列中の係数のラン(run)情報、レベル情報、およびブロック終結(end of block)(EOB)情報を含む。本開示は、マルチレベルVLCテーブル(multi-level VLC table)をさらに提供し、第1レベルVLCテーブルは、シンボル組合せの生起確率に基づいて、シンボル組合せをコードワード(codewords)にマッピングし、第2レベルVLCテーブルは、動的に生成することができるとともに記憶される必要がない構造化コードを備える。特定のシンボル組合せによって表されるラン情報(run information)に基づいて、シンボル組合せは、第1レベルVLCテーブルからのコードワードとしても、第1レベルVLCテーブルからのエスケープコード(escape code)および第2レベルVLCテーブルからのコードワードとしてもコーディングすることができる。第1レベルVLCテーブル中のコードワードにマッピングされる候補である、可能なシンボル組合せの数を制限することによって、コーディング効率および全体的なシステム性能が向上され得る。
ある例では、本開示は、変換ブロックの複数のデジタルビデオブロック係数の複数のシンボル組合せに関するラン情報を識別することであって、ラン情報が、連続するゼロ係数の数を示すことと、マルチレベルVLCテーブルを定義するデータを記憶することであって、マルチレベルVLCテーブルが、第1レベルVLCテーブルと第2レベルVLCテーブルとを備え、第1レベルVLCテーブルが、コードワードをシンボル組合せにマッピングすることと、ならびに連続するゼロ係数の第1の数がカットオフラン値(cut-off-run value)より大きいことを示す第1のラン情報を備える第1のシンボル組合せに対して、第1のコードワードを第1のシンボル組合せに割り当てることであって、第1のコードワードが、第1レベルVLCテーブルからのエスケープコードを備えることとを含む方法を提供する。
別の実施例では、本開示は、マルチレベルVLCテーブルを定義するデータを記憶するように構成された可変長コード(VLC)テーブルモジュールであって、マルチレベルテーブルが、第1レベルVLCテーブルと第2レベルVLCテーブルとを備え、第1レベルVLCテーブルが、コードワードをシンボル組合せにマッピングする、モジュールと、第1のシンボル組合せに第1のコードワードを割り当てるように構成されたVLCコーディングモジュールであって、第1のシンボル組合せが、連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備え、第1のコードワードが、第1レベルVLCテーブルからのエスケープコードを備える、モジュールとを含む、ビデオデータをコーディングするためのビデオコーディングデバイスを提供する。
ある例では、本開示は、変換ブロックの複数のデジタルビデオブロック係数の複数のシンボル組合せに関するラン情報を識別するための手段であって、ラン情報が、連続するゼロ係数の数を示す、手段と、マルチレベルVLCテーブルを定義するデータを記憶するための手段であって、マルチレベルVLCテーブルが、第1レベルVLCテーブルと第2レベルVLCテーブルとを備え、第1レベルVLCテーブルが、コードワードをシンボル組合せにマッピングする、手段と、連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備える第1のシンボル組合せに対して、第1のコードワードを第1のシンボル組合せに割り当てるための手段であって、第1のコードワードが、第1レベルVLCテーブルからのエスケープコードを備える、手段とを含むビデオコーディング装置を提供する。
本開示で説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せで実装できる。ソフトウェアで実装する場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはデジタル信号プロセッサ(DSP)など、1つまたは複数のプロセッサで実行できる。本技法を実行するソフトウェアは、最初にコンピュータ可読媒体に記憶し、プロセッサにロードして実行することができる。
したがって、本開示は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、変換ブロックの複数のデジタルビデオブロック係数の複数のシンボル組合せに関する、連続するゼロ係数の数を示すラン情報を識別させ、コードワードをシンボル組合せにマッピングする第1レベルVLCテーブルと、第2レベルVLCテーブルとを備えるマルチレベルVLCテーブルを定義するデータを記憶させ、連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備える第1のシンボル組合せに対して、第1レベルVLCテーブルからのエスケープコードを備える第1のコードワードを第1のシンボル組合せに割り当てさせる、1つまたは複数の命令を有形に記憶する、非一時的コンピュータ可読記憶媒体も企図する。
本開示で説明する技法の1つまたは複数の態様の詳細を添付の図面および以下の説明に示す。本開示の態様の他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
本開示の様々な態様を実装するビデオ符号化および復号システムを示すブロック図。
図1に示すビデオ符号器の一例を示すブロック図。
図1に示すビデオ復号器の一例を示すブロック図。
本開示の態様を実装するように構成されたエントロピー符号化ユニットを示すブロック図。
本開示の態様を実装するように構成されたエントロピー復号ユニットを示すブロック図。
本開示で説明するコーディング技法を示すフローチャート。
本開示で説明するコーディング技法を示すフローチャート。
本開示で説明するコーディング技法を示すフローチャート。
ジグザグ走査方式(zig-zag scanning scheme)の例を示す図。
変換ブロックの例を示す図。
詳細な説明
本開示の態様は概して、ビデオコーディングに関し、より詳細には、ブロックベースのビデオコーディングに関する。ソースデバイスから受信デバイスに送信されるのに先立って、ビデオブロックの変換係数などのデジタルビデオブロック係数と、残差ビデオデータとを表す1つまたは複数のシンボルパターンを生成することができる。シンボルパターンは、非ゼロ係数に先行し、または続く、連続するゼロ係数の数を表す、数などの情報を表し得る。この、連続するゼロの数は一般に、ランレングス(run length)と呼ばれる。シンボルパターンによって表される情報は、特定の非ゼロ係数が、1もしくは1以外のどれかの値をもつか否かも含んでよく、1以外の値は、1超過(greater-than-one)(GTO)とも呼ばれ、特定の係数がデータブロック中の最後の非ゼロ係数である場合は、一般にブロック終結(end-of-block)(EOB)と呼ばれる。シンボルパターンから、受信デバイスは、各ブロック係数が別々に送られ、シンボルパターンを使わずにシグナリングされた場合よりも少ないデータビットを使って、データブロックを再構成することができる。ソースデバイスから受信デバイスに送信されるビットの数をさらに低減するために、シンボルパターンは、送信されるのに先立って、一般に「エントロピーコーディング(entropy coding)」と呼ばれるロスレス統計型コーディング(lossless statistical coding)の形を受ければ(undergo)よい。エントロピーコーディングは、所与のデータセット、この事例では1組のシンボルパターンのシンボル分布プロパティ(symbol distribution property)を使用し、概して、データセット中で頻繁に生起するシンボルパターンには、より短いコードワードを、データセット中で頻繁には生起しないシンボルパターンには、より長いコードワードを割り当てる。本開示の態様は、より大きいデータブロック用のシンボルパターンを生成し、そうしたシンボルパターンにコードワードを割り当てる、改善された方法およびシステムを提供することができる。
シンボルは、情報理論のコンテキストでは、固有または識別可能なビットパターンを指す。例示的シンボルは、文字「a」に対するアスキーコードなどのキャラクタを表すのに使われるビットでよい。本開示で使われるように、シンボルパターンは一般に、1つまたは複数のシンボルを表すビットパターンを指し、ここで1つまたは複数のシンボルは、ランレングス、GTO、またはEOBなど、1つの情報を表す。本開示で使われるように、シンボル組合せは、1つまたは複数のシンボルパターンの情報を表すビットパターンを指す。それゆえ、シンボル組合せは、たとえば、ランレングスまたはEOBを表すビットパターンでよいが、シンボル組合せは、ランレングスとEOBの両方またはランレングスと、EOBと、GTOとを表すビットパターンでもよい。
図1は、本開示の様々な態様を実装するビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、通信チャネル16を介して符号化ビデオデータを受信デバイス14に送信するソースデバイス12を含む。ソースデバイス12は、ビデオソース18とビデオ符号器20と送信機22とを含み得る。受信デバイス14は、受信機24と、ビデオ復号器26と、ビデオディスプレイデバイス28とを含み得る。システム10は、本開示で説明する様々な技法を実装するように構成され得る。
図1の例では、通信チャネル16は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理的伝送線路など、ワイヤレスまたは有線の任意の通信媒体、あるいはワイヤレスおよび有線の媒体の任意の組合せを含むことができる。チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信チャネル16は、一般に、ビデオデータをソースデバイス12から受信デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。
ソースデバイス12は、受信デバイス14に送信するためのビデオを生成する。ただし、場合によっては、デバイス12、14は、実質的に対称に動作することができる。たとえば、デバイス12、14の各々は、ビデオ符号化および復号構成要素を含むことができる。したがって、システム10は、たとえば、ビデオストリーミング、ビデオブロードキャスト、またはビデオ電話のためのビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。したがって、本開示の態様は、ソースデバイス12、受信デバイス14のいずれでも、または両方で実装することができる。
ビデオソース18は、1つまたは複数のビデオカメラなどのビデオキャプチャデバイス(video capture device)、あらかじめキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダから供給されたライブビデオ、を含み得る。さらなる代替として、ビデオソース18はソースビデオとしてのコンピュータグラフィックベースのデータ、またはライブビデオとコンピュータ生成ビデオ(computer-generated video)との組合せを生成し得る。場合によっては、ビデオソース18がカメラである場合、ソースデバイス12および受信デバイス14は、いわゆるカメラ付き携帯電話またはビデオ電話を形成し得る。各場合において、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成ビデオは、送信機22とチャネル16と受信機24とを介してビデオソースデバイス12からビデオ受信デバイス14のビデオ復号器26に送信するために、ビデオ符号器20によって符号化され得る。ディスプレイデバイス28は、液晶ディスプレイ(LCD)、プラズマディスプレイまたは有機発光ダイオード(OLED)ディスプレイなどの様々なディスプレイデバイスのいずれかを含み得る。
ビデオ符号器20およびビデオ復号器26は、空間、時間および/または信号対雑音比(SNR)スケーラビリティのためのスケーラブル・ビデオコーディング(scalable video coding)(SVC)をサポートするように構成され得る。いくつかの態様では、ビデオ符号器20およびビデオ復号器26は、SVCのためのファイン・グラニュラリティSNRスケーラビリティ(fine granularity SNR scalability)(FGS)コーディングをサポートするように構成できる。いくつかの例では、デオ符号器20およびビデオ復号器26は、ベースレイヤおよび1つまたは複数のスケーラブル・エンハンスメント・レイヤ(scalable enhancement layers)の符号化、送信および復号をサポートすることによって様々な程度のスケーラビリティをサポートすることができる。スケーラブル・ビデオコーディングの場合、ベースレイヤは最小品質レベルでビデオデータを搬送する。1つまたは複数のエンハンスメントレイヤは追加のビットストリームを搬送して、より高い空間的レベル、時間的レベルおよび/またはSNRレベルをサポートする。
ビデオ符号器20およびビデオ復号器26は、MPEG−2、MPEG−4、ITU−T H.263、またはITU−T H.264/MPEG−4 アドバンスト・ビデオコーディング(Advanced Video Coding)(AVC)などのビデオ圧縮規格に従って動作し得る。ビデオ符号器20およびビデオ復号器26は、ITU−T H.265などの次世代ビデオコーディング標準に従って動作してもよい。
ビデオ符号器20およびビデオ復号器26はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装できる。ビデオ符号器20およびビデオ復号器26の各々を1つまたは複数の符号器または復号器中に含めることができ、そのいずれかは複合符号器/復号器(combined encoder/decoder)(コーデック(CODEC))の一部としてそれぞれモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合できる。さらに、ソースデバイス12および受信デバイス14はそれぞれ、符号化ビデオの送信および受信のために適切な変調、復調、周波数変換、フィルタ処理、および増幅器構成要素を含み、適用可能な場合、ワイヤレス通信をサポートするために十分な無線周波数(RF)ワイヤレス構成要素およびアンテナを含むことができる。ただし、説明しやすいように、そのような構成要素は図1に示していない。
ビデオシーケンスは一連のビデオフレームを含む。ビデオ符号器20は、ビデオデータを符号化するために個々のビデオフレーム内のピクセルのブロックに作用する。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。各ビデオフレームは一連のスライス(slices)を含む。各スライスは一連のマクロブロックを含むことができ、それらはサブブロック中に配置することができる。一例として、ITU−T H.264規格は、ルーマ成分(luma components)については16×16、8×8、4×4、およびクロマ成分(chroma components)については8×8など、様々なブロックサイズのイントラ予測(intra prediction)をサポートし、ならびにルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8および4×4、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測(inter prediction)をサポートする。
ビデオブロックは、小さいほどより良い解像度が得られ、より高い詳細レベルを含むビデオフレームの位置特定に使用することができる。一般に、マクロブロック(MB)および様々なサブブロックをビデオブロックと考えることができる。さらに、スライスは、MBおよび/またはサブブロックなど一連のビデオブロックであると考えることができる。各スライスは単独で復号可能なユニットであり得る。予測の後、ビデオ符号器20は、8×8残差ブロックまたは4×4残差ブロックに変換を適用する。イントラ(intra)_16×16予測モードが使われる場合、クロマ成分またはルーマ成分に対する4×4ブロックのDC係数に追加の変換を適用することができる。本開示の態様は、スライスレベルでの説明目的で記載される場合があるが、同じ技法を、ピクチャレベルで適用することもできる。
概して、ビデオ符号器20は、ブロックに離散コサイン変換(DCT)を適用し、変換係数とも呼ばれ、またはより一般的にはデジタルビデオブロック係数と呼ばれるDCT係数を生成する。DCTは、非ゼロ値をもつ、結果として生じるDCT係数が、グループにまとめられように、および、ゼロ値をもつものがグループにまとめられるように、全体として順序付けられるDCT係数を生成する。ビデオ符号器20は次に、特定の走査順(scanning order)またはパターンに従って、結果として生じるDCT係数を走査することを伴う形のシリアライゼーション(serialization)を実施する。ジグザグ走査を、図9の例を参照して以下で示すが、ゼロおよび非ゼロDCT係数のグループを抽出するように、垂直、水平または他の走査パターンなど、様々な走査パターンが利用され得る。
抽出されると、ビデオ符号器20は、シリアル化された後に連続する(すなわち、相互に隣接する)ゼロDCT係数の総数(すなわち、いわゆる「ラン(run)」)の計算を通常は伴う、一般に「ランレングスコーディング(run-length coding)」と呼ばれるものを実施する。図9、10の例とともに以下でより詳しく示すように、シリアル化DCT係数(serialized DCT coefficients)を記述する1つまたは複数のシンボル組合せを生成することができる。シンボル組合せは、受信デバイス14によって、シリアル化DCT係数を再構成するのに使われ得るランレングス、GTO、EOB、および他の情報などの情報を表すことができる。シンボル組合せを使って、受信デバイス14は、シリアル化DCT係数を再構成することができ、シンボル組合せを使わずに各DCT係数が別々に送られシグナリングされた場合よりも少ないデータビットを使って、最終的にはデータブロックを再構成することができる。
次に、ビデオ符号器20は、一般にエントロピーコーディング(entropy coding)と呼ばれる統計的ロスレスコーディング(statistical lossless coding)を実施する。エントロピーコーディングは、受信デバイス14がDCT係数の集合を再構成するためにソースデバイス12から受信デバイス14に送信される必要があるビットの数をさらに低減するのに使われるロスレスプロセス(lossless process)である。エントロピーコーディングは、所与のシンボル組合せ集合のシンボル分布プロパティを使用し、概して、より頻繁に生起するシンボル組合せには、より短いコードワードを、比較的頻繁には生起しないシンボル組合せには、より長いコードワードを割り当てる。
ビデオ符号器20およびビデオ復号器26は、いくつかの動的実装形態では、それぞれ、所与のコンテキストに対して、そのコンテキストにおける、最も頻繁に生起するシンボル組合せが、より短いコードワードにマッピングされ得るように、いくつかのシンボル組合せの生起確率(occurrence probabilities)を追跡する機能性を含む。シンボル生起確率は、特定のシンボル組合せが生起した合計回数、または特定のシンボル組合せが生起した重み付き合計回数に基づいて追跡することができ、より最近生起したシンボル組合せは、より以前に生起したシンボル組合せより重く重み付けられる。シンボル生起確率は、T個の最も直近のシンボル組合せなど、特定のシンボル組合せが特定のウィンドウ中に生起した合計回数、または重み付き合計回数に基づいて追跡することもできる。
コードワードへのシンボル組合せのマッピングは、ビデオ符号器20およびビデオ復号器26において、複数のVLCテーブルまたは他のどのタイプのデータ構造にでも記憶することができる。VLCテーブルに記憶されたマッピングは、シンボル組合せに関する、追跡される生起確率が変動したとき、コードワードへのシンボル組合せのマッピングも変動し得るように適応可能であり得る。一部のシンボル組合せの生起確率が、他のシンボル組合せの生起よりも可能性が高く、または低くなった場合、ビデオ符号器20およびビデオ復号器26は、本動的実装形態では、シンボル組合せの一部を、その生起確率に基づいて、より長いまたはより短いコードワードのいずれかに再マッピングすることによって、VLCテーブルを更新すればよい。ビデオ符号器20およびビデオ復号器26は、こうした動的実装形態では、ビデオ符号器20において生起する、VLCテーブルへの変動が、その変動を反映するデータがソースデバイス12と受信デバイス14との間で送られることなく、ビデオ復号器26において反映され得るように、同じデータ処理技法を実装するように構成され得る。
以下でより詳細に説明するように、H.264/MPEG−4 AVC標準は、変換係数をコーディングするための、コンテキスト適応型可変長コーディング(CAVLC)と呼ばれる形のエントロピーコーディングを定義する。CAVLCは特に、4×4変換サイズ向けに設計されるが、4×4より大きい変換に対しては常に効果があるわけではない。具体的には、4×4より大きい変換は通常、単一のVLCテーブルにマッピングされるべき、はるかに大きい数の可能なシンボル組合せをもつ。したがって、ビデオ符号器20が生起確率を追跡しなければならないシンボル組合せの数もはるかに大きくなり得るので、上記で言及したような動的実装形態におけるシンボル適応の効率を低下させる可能性がある。シンボル適応の効率が低下した結果、全体的なコーディング効率および全体的なシステム性能も低下し得る。
ビデオの一部分に対するコンテンツ統計が比較的一定であると仮定すると、ビデオ符号器20およびビデオ復号器26が、十分に多数のシンボル組合せを処理すると、シンボル組合せに関する、追跡される生起確率は概して、比較的安定な値に達する。このようなケースでは、VLCテーブル中で維持されるシンボル組合せへのコードワードのマッピングも比較的安定になり、ビデオ符号器20およびビデオ復号器26は、シンボル組合せをコードワードに再マッピングすることによって、記憶されたVLCテーブルを時々更新する必要があるだけである。ただし、エントロピーコーディングの初期段階またはビデオの一部分に関するコンテンツ統計に大幅な変動があったとき、VLCテーブルに記憶されたいくつかのシンボル組合せに関する生起確率は、そのビデオ部分に関する実際の生起確率を反映することができず、そのためコーディング効率が悪化し得る。より大きい数の可能なシンボル組合せが、4×4より大きい変換に関連づけられると、シンボル組合せの生起回数がその実際の生起確率を表すようになる前に、ビデオ符号器20によって処理されるのに必要とされるシンボル組合せの数が大幅に増える可能性があり、したがって、こうした、非効率なエントロピーコーディングの期間を長引かせる。本開示の態様は、VLCテーブルの構築および維持を改善し、したがって、こうした非効率なエントロピーコーディング期間が全体的コーディング効率に対して与える影響を減らすことによって、コーディング効率を向上させることができる。
さらに、CAVLCは、4×4変換サイズ向けに特に設計されるので、CAVLCは、高解像度またはいわゆる高精細度(HD)ビデオデータを符号化したいという要望を満たすことができない場合がある。HDビデオデータはしばしば、良好なコーディング効率を達成するために、4×4変換より大幅に大きい変換を利用する。可能なシンボル組合せの数は、適用される変換のサイズに直接比例する、符号化されるデータのサイズとともに増えるので、より大きい変換サイズは、より多くの潜在的シンボル組合せを生じる。この点において、CAVLCは、可能な組合せおよびそれらに関連づけられたコードワードをすべて記憶するための、はるかに大きいテーブルを必要とすることになる。したがって、上記で論じたVLCコードワードマッピングの遅い適応に加え、この高解像度またはHDビデオデータを符号化するためのCAVLCの拡張は結果として、生起確率の追跡に専用の、大幅に多くの計算資源と、一般に「コードブック」と呼ばれる、こうしたより大きいテーブルを記憶するための大幅に多くのメモリ消費とを生じ得る。
本開示の態様によると、すべての可能なシンボル組合せに対して単一レベルVLCテーブルを維持するのではなく、ビデオ符号器20は、1つまたは複数のマルチレベルVLCテーブルを定義するデータを記憶し、マルチレベルVLCテーブルの第1のレベルに対する候補であるシンボル組合せを、特定のシンボル組合せによって表される、連続するゼロ係数の数(すなわち、ランレングス)に基づいて制限する。マルチレベルVLCテーブルのこの第1のレベルは、一般的VLC技法を利用して、シンボル組合せをコードワードに関連づけることができる。マルチレベルVLCテーブルの第2のレベルは、ゴロムライスコード(Golomb-Rice codes)などの構造化VLCコードを使用することができる。第2レベルVLCテーブルの構造化性質により、マルチレベルVLCテーブルのこの第2のレベルを記憶する必要はない。というのは、一例として、ゴロムライスコードは、符号器と復号器の両方にとって既知であるいくつかのパラメータに基づいて動的に決定され得るからである。本開示のマルチレベルVLCテーブルの第1のレベルは、シンボル組合せと、最も頻繁に生起するシンボル組合せに対するコードワードとの間のマッピングを記憶するものとして特徴づけられ得る。本開示で説明するマルチレベルVLCテーブルの第2のレベルは、いかなる実際のテーブルもメモリに記憶することなく、比較的頻繁には生起しないシンボル組合せに対するコードワードを動的に決定するやり方を提供するものとして特徴づけられ得る。
この点について、本開示の態様は、4×4より大きいサイズの変換の適用から生成された変換係数に対する符号化および復号効率を向上させることができ、第2のレベルの構造化コードを提供することによって、メモリ消費も改善する。コーディング効率の向上は、従来のCAVLCがこのように拡張されていないときに、4×4より大きいサイズの変換の適用から得られた変換係数へのVLCの適用の結果であり得る。特定のシンボル組合せによって表される連続するゼロ係数の数に基づいて、マルチレベルVLCテーブルの第1のレベルに対する候補であるシンボル組合せを制限することにより、ビデオ符号器20が生起確率を追跡する必要があるシンボル組合せの総数が減少し、それによって追跡確率をより素早く適応させることができ、したがって、上記で論じた非効率なエントロピーコーディングの期間が短縮する。さらに、コードブックによって消費されるメモリの量も、記憶されたどのコードブックも生じさせる必要がない第2のレベルの構造化コードワードに依拠した結果、低減することができる。符号化および復号効率の向上により、受信デバイス14のビデオ復号器26が変換係数集合を再構成するために、ソースデバイス12から受信デバイス14に送られるのに必要とされるビットの数を低減することができる。さらに、コーディングおよび復号効率の向上は、より効率的な電力使用を促進するが、このことは、いわゆる「スマートフォン」を含む、ハンドセットまたは他のセルラーホンなど、バッテリ駆動携帯デバイスのコンテキストでは特に重要であり得る。
こうした技法を例示するために、ビデオ符号器20は、複数の変換係数に関して、連続しているとともにゼロの値をもつ係数の数を示すラン情報を判断すればよい。ビデオ符号器20は、上記で述べ、後でより詳しく説明するように、マルチレベルVLCテーブルを定義するデータを記憶する。マルチレベルVLCテーブルは、第1レベルVLCテーブルと第2レベルVLCテーブルとを備える。第1レベルVLCテーブルは、上述したようにして、コードワードをシンボル組合せにマッピングする。カットオフラン値より大きいラン値(run value)を表すシンボル組合せを識別したことに応答して、ビデオ符号器20は、第1レベルVLCテーブルからのエスケープコードと、第2レベルVLCテーブルからのコードワードとを、シンボル組合せに割り当てる。
ラン値は概して、使われるコーディング方式に依存して、非ゼロ係数に先行し、または続く、連続するゼロ係数の数を指す。カットオフラン値は概して、特定のシンボル組合せのラン値に基づいて、その特定のシンボル組合せがどのようにコーディングされるべきかを決定する閾値を指す。たとえば、カットオフラン値は、5にセットされ得る。それゆえ、使われるコーディング方式に依存して、6個のゼロ係数が非ゼロ係数に先行し、または続くことを示すシンボル組合せは、エスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングされ得る。
ビデオ復号器26は、エスケープコードを検出すると、第2レベルVLCテーブルからのコードワードをさらに復号する。シンボル組合せを、エスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングすることは概して、シンボル組合せを、第1レベルVLCテーブルからのコードワードとしてコーディングするよりも多くのビットを必要とする。それゆえ、本開示の態様は、より頻繁に生起するシンボル組合せを、第1レベルVLCテーブル中のコードワードとしてコーディングし、比較的頻繁には生起しないシンボル組合せを、エスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングすることを含む。
図2は、図1に示すビデオ符号器20などのビデオ符号器20の一例を示すブロック図である。ビデオ符号器20は、ビデオフレーム内のブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは時間的予測を利用して、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減または除去する。インターコーディングの場合、ビデオ符号器20は、隣接フレーム間でビデオブロックを一致させる動作を追跡するために動き推定を実行する。
図2に示すように、ビデオ符号器20は、符号化すべきビデオフレーム内のカレントビデオブロック(current video block)30を受信する。図2の例では、ビデオ符号器20は、動き推定ユニット32と、リファレンスフレームストア34と、動き補償ユニット36と、ブロック変換ユニット38と、量子化ユニット40と、逆量子化ユニット42と、逆変換ユニット44と、エントロピーコーディングユニット(entropy coding unit)46とを含む。ブロッキングアーティファクト(blocking artifacts)を除去するために、インループ・デブロッキングフィルタ(in-loop deblocking filter)(図示せず)をフィルタブロックに適用することができる。ビデオ符号器20はまた、加算器48と加算器50とを含む。図2は、ビデオブロックのインターコーディングのためのビデオ符号器20の時間的予測構成要素を示す。説明しやすいように図2には示されていないが、ビデオ符号器20は、いくつかのビデオブロックのイントラコーディングのための空間的予測構成要素をも含み得る。
動き推定ユニット32は、1つまたは複数の動きベクトルを生成するためにビデオブロック30を1つまたは複数の隣接ビデオフレーム中のブロックと比較する。以前に符号化されたブロックから再構成されたビデオブロックを記憶するために任意のタイプのメモリまたはデータ記憶デバイスを含み得るリファレンスフレームストア34から、1つまたは複数の隣接フレームが検索され得る。動き推定は、可変サイズ、たとえば、32×32、32×16、16×32、16×16、16×8、8×16、8×8またはより小さいブロックサイズのブロックに対して実施することができる。動き推定ユニット32は、たとえば、レートひずみモデルに基づいてカレントビデオブロック30に最もぴったり一致する隣接フレーム中の1つまたは複数のブロックを識別し、隣接フレーム中のブロックとカレントビデオブロックとの間の変位を判断する。これに基づいて、動き推定ユニット32は、カレントビデオブロック30と、カレントビデオブロック30をコーディングするために使用されるリファレンスフレームからの1つまたは複数の一致するブロックとの間の変位の大きさおよび軌道(trajectory)を示す、1つまたは複数の動きベクトル(MV)を生成する。
動きベクトルは、ハーフもしくはクォータピクセル精度、またはさらにより微細な精度を有することができ、それによりビデオ符号器20は、整数ピクセルロケーション(integer pixel locations)よりも高い精度で動きを追跡し、より良い予測ブロックを取得することが可能になる。端数の(fractional)ピクセル値をもつ動きベクトルを使用するとき、動き補償ユニット36中で補間演算が実行される。動き推定ユニット32は、レートひずみモデルなど、いくつかの基準を使用して、ビデオブロックについての最良のブロック分割(block patitions)および1つまたは複数の動きベクトルを識別する。たとえば、双方向予測の場合、複数の動きベクトルがあり得る。得られたブロック分割および動きベクトルを使用して、動き補償ユニット36は予測ビデオブロックを形成する。
ビデオ符号器20は、加算器48において、元のカレントビデオブロック30から、動き補償ユニット36によって生成された予測ビデオブロックを減算することによって残差ビデオブロックを形成する。ブロック変換ユニット38は、4×4または8×8などの変換を残差ブロックに適用して、残差変換ブロック係数を生成する。量子化ユニット40は、ビットレートをさらに低減するために残差変換ブロック係数を量子化する。エントロピーコーディングユニット46は、量子化された係数をエントロピーコーディングして、ビットレートをなお一層低減する。
図4を参照して以下でより詳しく説明する本開示の態様によると、エントロピー符号化ユニット(entropy encoding unit)46は、量子化されたブロック係数にVLCコーディングを適用するための可変長コーディング(VLC)ユニットとして動作する。詳細には、エントロピー符号化ユニット46は、図1に関して上記で、図9、10に関して以下で説明する技法による、デジタルビデオブロック係数のVLCコーディングを実施するように構成され得る。エントロピーコーディングユニット46は、ある形のロスレス統計型コーディングを実施し、この理由により、エントロピーコーディングユニット46は、「ロスレス統計型コーディングユニット46」とも呼ばれ得る。概して、図3、5により詳しく記載するビデオ復号器26は、符号化ビデオを復号し再構成するための、VLC復号を含む逆演算を実施する。
逆量子化ユニット42および逆変換ユニット44はそれぞれ、逆量子化および逆変換を適用して残差ブロックを再構成する。加算器50は、再構成された残差ブロックを、動き補償ユニット36によって生成された動き補償された予測ブロックに加算して、リファレンスフレームストア34に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックを符号化するために動き推定ユニット32および動き補償ユニット36によって使用される。
図3は、図1のビデオ復号器26などのビデオ復号器の一例を示すブロック図である。ビデオ復号器26はビデオフレーム内のブロックのイントラ復号およびインター復号を実行することができる。図1に示すように、ビデオ復号器26は、ビデオ符号器20によって符号化された符号化ビデオビットストリームを受信する。図3の例では、ビデオ復号器26は、エントロピー復号ユニット52と、動き補償ユニット54と、再構成ユニット56と、逆変換ユニット58と、リファレンスフレームストア62とを含む。ビデオ復号器26は、加算器64の出力をフィルタ処理するインループ・デブロッキングフィルタ(in-loop deblocking filter)(図示せず)をも含み得る。ビデオ復号器26は加算器64も含む。図3は、ビデオブロックのインター復号のためのビデオ復号器26の時間的予測構成要素を示す。図3には示されていないが、ビデオ復号器26は、いくつかのビデオブロックのイントラ復号のための空間的予測構成要素も含むことができる。
エントロピー復号ユニット52は、符号化ビデオビットストリームを受信し、そのビットストリームから、量子化された残差係数、マクロブロックコーディングモード、および動きベクトルとブロック分割とを含むことができる動き情報を復号する。したがって、エントロピー復号ユニット52は、VLC復号ユニットとして機能する。たとえば、符号化ビットストリームから、量子化された残差係数を復号するために、図3のエントロピー復号ユニット52は、図1を参照して上記で説明し、図9、10を参照して以下で説明する本開示の態様を実装するように構成され得る。しかしながら、エントロピー復号ユニット52は、符号化ビットストリームから量子化されたブロック係数を取り出すために、図2のエントロピー符号化ユニット46に対して実質的に逆の方法でVLC復号を実施することができる。
動き補償ユニット54は、リファレンスフレームストア62からの1つまたは複数の再構成されたリファレンスフレームと、 動きベクトルと、ブロック分割と、を受信して、予測ビデオブロックを生成する。再構成ユニット56は、量子化されたブロック係数を逆量子化(inverse quantize)、すなわち量子化解除(de-quantize)する。逆変換ユニット58は、逆変換、たとえば、逆DCT、または逆4×4もしくは8×8整数変換を上記係数に適用して、残差ブロックを生成する。次いで、予測ビデオブロックは、加算器64によって残差ブロックと加算されて、復号ブロックを形成する。復号ブロックをフィルタ処理してブロッキングアーティファクトを除去するために、デブロッキングフィルタ(図示せず)が適用され得る。フィルタ処理されたブロックは次いでリファレンスフレームストア62に入れられ、リファレンスフレームストア62は、後続のビデオフレームの復号のためにリファレンスフレームを与え、また、ディスプレイデバイス28(図1)を駆動するために復号ビデオを生成する。
図4は、図2のエントロピー符号化ユニット46をより詳しく示すブロック図である。エントロピー符号化ユニット46は、図1、2のビデオ符号器20内に常駐し得る。図2に示すように、エントロピー符号化ユニット46は、量子化された残差ブロック係数を、たとえば、量子化ユニット40(図2)から受信し、復号用の別のデバイスへの送信用の、エントロピーコーディングされたビットストリームを生成する。図4の例では、エントロピー符号化ユニット46は、VLC符号化モジュール98と、統計分析モジュール100と、VLC適応モジュール102と、VLCテーブルモジュール104とを含む。VLCテーブルモジュール104は、図1を参照して上記で説明し、図9、10を参照して以下で説明するように、マルチレベルVLCテーブルを定義するデータを記憶する。VLCテーブルモジュール104は、たとえば、コードワードをシンボル組合せにマッピングする第1レベルVLCテーブルを定義するデータを記憶することができる。VLCテーブルモジュール104は、本開示を通して第2レベルVLCテーブルとも呼ばれる、記憶される必要がない構造化コードを動的に生成するようにも構成され得る。統計分析モジュール100は、候補シンボル組合せの集合に関するコーディング統計を収集する。統計分析モジュール100は、所与のコンテキストに対するシンボル組合せの生起確率を追跡し、統計分析モジュール100によって収集されたコーディング統計に基づいて、VLC適応モジュール102は、第1レベルVLCテーブルのコードワードと、候補シンボル組合せ集合の部分集合との間のマッピングを調整することができる。
図5は、本開示で説明する様々な技法を実装するように構成されたエントロピー復号ユニット52のブロック図である。図1、5の例において上記で示したように、エントロピー復号ユニット52は、ビデオ復号器26内に常駐する。この例示的構成を参照して説明するが、エントロピー復号ユニット52は、統計的ロスレスコーディングを実施することが可能な、どのデバイス内に常駐してもよい。この点において、本技法は、本開示に示す例に限定されるべきではない。図3に示すように、エントロピー復号ユニット52は、符号化ビデオビットストリームを、たとえば、チャネル16(図1)を介してソースデバイス12から受信し、そのビットストリームをエントロピー復号して、量子化された残差係数を生成する。
図5の例では、エントロピー復号ユニット52は、VLC復号モジュール106と、統計分析モジュール108と、VLC適応モジュール110と、VLCテーブルモジュール112とを含む。VLCテーブルモジュール112は、たとえば、コードワードをシンボル組合せにマッピングする第1レベルVLCテーブルを定義するデータを記憶することができる。VLCテーブルモジュール112は、本開示を通して第2レベルVLCテーブルとも呼ばれる、記憶される必要がない構造化コードを動的に復号するようにも構成され得る。VLCテーブルモジュール112によって維持される第1レベルおよび第2レベルVLCテーブルは、ビデオ符号器20において割り当てられたコードワードがビデオ復号器26において復号され得るように、VLCテーブルモジュール104によって維持されるVLCテーブルをマッチングする。統計分析モジュール108は、所与のコンテキストに対するシンボル組合せの生起確率を追跡し、特定のシンボル組合せの生起が、比較的可能性が高く、または低くなった場合、VLC適応モジュール110は、その特定のシンボル組合せを、VLCテーブルモジュール112によって維持されるVLCテーブル中の、より短いまたはより長いコードワードいずれかに再マッピングする。
エントロピーコーディングは、所与のデータセットを表すのに必要とされるビットの数をさらに低減するのに使われるロスレスプロセスである。エントロピーコーディングは、所与のデータセットのシンボル分布プロパティを使用し、概して、データセットのうち、より頻繁に生起するメンバに、より短いコードワードを割り当てる。この例では、所与のデータセットは、可能なシンボル組合せ集合であり、より短いコードワードが概して、最も頻繁に生起する特定のシンボル組合せに割り当てられる。エントロピー符号化ユニット46の統計分析モジュール100およびエントロピー復号ユニット52の統計分析モジュール108は、特定のシンボル組合せの生起確率を追跡し維持することができ、そうすることによって、所与のコンテキストに対して、そのコンテキストにおける最も頻繁に生起するシンボル組合せが、より短いコードワードにマッピングする。一部のシンボル組合せの生起が、他のシンボル組合せの生起よりも可能性が高く、または低くなった場合、一部のシンボル組合せを、その生起確率に基づいて、より長いまたはより短いコードワードいずれかに再マッピングすることによって、エントロピー符号化ユニット46のVLC適応モジュール102は、VLCテーブルモジュール104によって維持されるVLCテーブルを更新し、エントロピー復号ユニット52のVLC適応モジュール110は、VLCテーブルモジュール112によって維持されるVLCテーブルを更新する。統計分析モジュール100およびVLC適応モジュール102は、統計分析モジュール108およびVLC適応モジュール110と同じデータ処理技法を実装するように構成され得る。したがって、エントロピー符号化ユニット46において起こる、VLCテーブルモジュール104によって維持されるVLCテーブルへの変動は、その変動を反映するデータがエントロピー符号化ユニット46とエントロピー復号ユニット52との間で送られることなく、エントロピー復号ユニット52にあるVLCテーブルモジュール112によって維持されるVLCテーブルにおいて反映することができる。
エントロピーコーディングに先立って、ブロックからの変換係数が、エントロピー符号化ユニット46によって使われる走査順に基づいて、順序付き1次元配列に並べ替えられる。図9、10の例を参照して以下でより詳しく示すように、変換係数は、1つまたは複数のシンボル組合せを使って記述することができる。エントロピー符号化ユニット46のVLC符号化モジュール98は、シンボル組合せを特定の形でコーディングし、エントロピー復号ユニット52は、コーディングされたデータを復号して、シンボル組合せを再生し、最終的には変換ブロックを再生する。VLCテーブルモジュール104、112によって維持されるVLCテーブルなどのVLCテーブルは、ビデオ符号器20のエントロピー符号化ユニット46とビデオ復号器26のエントロピー復号ユニット52の両方において記憶され、VLCテーブルからの各コードワードは、ある特定のコンテキストにおけるある特定のシンボル組合せを表す。
4×4より大きい変換のためのすべての可能なシンボル組合せをカバーするために、VLCテーブルモジュール104、112によって維持されるVLCテーブルには、多数のコードワードが必要とされ得る。ただし、より大きいサイズのVLCテーブルは、コードワードを保存するのに、より多くのメモリを必要とする。このような要件を緩和するために、本開示の態様は、2つ以上のレベルをもつVLCテーブルを維持するVLCテーブルモジュール104、112を含む。2レベルのテーブルでは、たとえば、第1のレベルは、1つの可変長コードがエスケープコードを表す、いくつかの可変長コードからなってよい。第2のレベルは、ゴロムライスコードなど、構造化VLCコードのグループからなってよい。その構造化性質により、第2レベルVLCコードは、エントロピー符号化ユニット46とエントロピー復号ユニット52の両方において、実行中に(on-the-fly)動的に決定することができ、したがって、記憶される必要はない。
2レベルのVLCテーブルを使うと、可能なシンボル組合せの部分集合のみが、第1レベルVLCテーブル中の可変長コードにマッピングされる。エントロピー符号化ユニット46は、シンボル組合せの残部を、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングする。
可能なシンボル組合せの数は、第1レベルVLCテーブル中の可変長コードの数より大きくてよい。この場合、可能なシンボル組合せはすべて、第1レベルVLCテーブル中の可変長コードにマッピングされるべき候補シンボル組合せでよい。あるコンテキストの下での生起確率に基づいて、エントロピー符号化ユニット46は、生起確率が最も高い候補シンボル組合せのみを、第1レベルVLCテーブル中のコードワードにマッピングすればよい。エントロピー符号化ユニット46は、候補組合せの残部を、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングすることができる。
たとえば、Nが、可能なシンボル組合せの数を表し、Mが、第1レベルVLCテーブル中の可変長コードエントリの数を表し、Nの値がMより大きい場合、N個のシンボル組合せはすべて、候補シンボル組合せでよい。N個の候補シンボル組合せのどれが、第1レベルVLCテーブル中の可変長コードにマッピングされるかは、各候補シンボル組合せの生起確率に基づいて決定することができる。エントロピー符号化ユニット46は、N個の可能な組合せのうち、(M−1)個のシンボル組合せだけを、第1レベルVLCテーブル中の可変長コードにマッピングし、残りの(N−M+1)個のシンボル組合せを、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングする。
本開示の態様は、第1レベルVLCテーブル中のコードワードにマッピングされる候補であるシンボル組合せの総数を低減することによって、コーディング効率を向上させることができる。上述したように、シンボル組合せへのコードワードのマッピングはしばしば、ビデオコーディングの初期段階中に、またはコーディングされるビデオのコンテンツが、ビデオの一部分に、事前コーディングされた部分とは大幅に異なるコンテンツ統計をもたせる変動を受けるとき、準最適(sub-optimal)であり得る。第1レベルVLCテーブルに対する候補組合せを、単一のカットオフラン値または複数のカットオフラン値に基づいて制限することにより、VLCテーブルモジュール104、112によって維持されるVLCテーブルに、コーディングの初期段階中およびコンテンツ統計が変動するときに生起するシンボル組合せの変動生起確率をより素早く追跡させることによって、特に4×4より大きい変換ブロックに対して、コーディングおよび復号効率を向上することができる。
さらに、本開示の態様は、統計分析モジュール100および統計分析モジュール108が生起確率を追跡する必要があるシンボル組合せの数を制限することによって、コーディング効率を向上させることができる。たとえば、4×4より大きい変換ブロックが、数千または1万をも超える可能なシンボル組合せをもつ場合がある。本開示の態様は、最も頻繁に生起するシンボル組合せを含むと思われる可能な総シンボル組合せの部分集合を識別することを含む。すると、統計分析モジュール100および統計分析モジュール108は、すべての可能なシンボル組合せではなく、可能なシンボル組合せの部分集合に関する生起確率を追跡するだけでよく、したがって、統計分析モジュール100および統計分析モジュール108に専用である必要がある処理資源の量が低減される。頻繁に生起する一部のシンボル組合せが、可能なシンボル組合せの部分集合から除外される場合であっても、統計分析モジュール100および統計分析モジュール108によって使用される処理資源の低減は、依然として、全体的システム性能において全体として肯定的であり得る。
良好なコーディング効率のために、VLCテーブルモジュール104およびVLCテーブルモジュール112は、いくつかの要素に基づいて複数のVLCテーブルを維持すればよく、そうすることによって所与の状況(またはコンテキスト)の場合、コードワード長がその所与の状況に対してシンボル分布プロパティに良好にマッチングし得るように、異なるVLCテーブルを使うことができる。
図6は、本開示の態様を実施するビデオ符号化方法を示すフローチャートである。こうした態様は、たとえば、図1〜5に示すデバイスによって実施することができ、図1〜5に示すデバイスに関して説明する。ソースデバイス12のビデオ符号器20などのビデオ符号化デバイスの符号器において、ビデオデータのフレームが符号化され、受信デバイス14などのビデオ復号デバイスに送信され得る。ビデオ符号器20は、ビデオデータのフレームを予測ブロックに分割し、予測ブロックを変換し量子化する(ブロック601)。ビデオ符号器20は、変換ブロックの変換係数を表すための1つまたは複数のシンボル組合せからなる集合を判断する(ブロック602)。各シンボル組合せは、変換ブロックの変換係数の一部分に関するラン情報、GTO情報、および/またはEOB情報を示し得る。様々なサイズの変換ブロックに対して、ビデオ符号器20は、VLCテーブルモジュール104によって維持されるVLCテーブルなど、1つまたは複数のマルチレベルVLCテーブルを定義するデータをエントロピー符号化ユニット46に記憶する。コーディングされるべきシンボル組合せに対して、ビデオ符号器20は、コーディングされるべきシンボル組合せに関連づけられたコンテキストならびに変換ブロックのサイズに基づいて、VLCテーブルモジュール104によって維持される特定のVLCテーブルを識別する(ブロック603)。ビデオ符号器20は、たとえば、シンボル組合せに関連づけられたゼロのラン(a run of zeros)の第1のゼロ係数の位置索引、変換ブロックに関する事前コーディングされたランおよびレベル値に基づいてコンテキストを判断してもよく、または、コンテキストがスライスヘッダーに入れられてシグナリングされてもよい。
カットオフラン値より大きいランを示すラン情報を示すシンボル組合せを識別したことに応答して(ブロック604、yesのパス)、ビデオ符号器20は、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルのコードワードの連結を備えるコードワードを、シンボル組合せに割り当てる(ブロック605)。第2レベルVLCテーブルは、たとえば、ゴロムライスコードなどの構造化VLCコードを含み得る。特定の変換ブロックに対するカットオフラン値は、変換ブロックのサイズに基づいて決定することができる。たとえば、8×8変換ブロックのシンボル組合せをコーディングするときのカットオフラン値は、16×16変換ブロックまたは8×16変換ブロックのシンボル組合せをコーディングするときのカットオフラン値とは異なってよい。
カットオフラン値以下のラン示すラン情報を示すシンボル組合せを識別したことに応答して(ブロック603、noのパス)、ビデオ符号器20は、そのシンボル組合せに、第1レベルVLCテーブルからのコードワードを割り当てる(ブロック606)。いくつかの実装形態では、シンボル組合せが、やはり第2のカットオフラン値以下であるランを示すラン情報を含む場合、第1レベルVLCテーブルからのコードワードは、ラン情報、GTO情報、およびEOB情報を含んでもよいが、シンボル組合せが、第2のカットオフラン値より大きいランを示すラン情報を含む場合、第1レベルVLCテーブルからのコードワードは、ラン情報のみ、またはラン情報、一部のGTO情報、EOB情報のみを含んでよい。
図7は、本開示で説明する技法を実施するビデオ符号化方法を示すフローチャートである。こうした技法は、たとえば、図1〜5に示すデバイスによって実施することができ、図1〜5に示すデバイスに関して説明する。図7に示す技法は、図6および図8の技法とともに、または単独で実装することができる。ソースデバイス12のビデオ符号器20などのビデオ符号化デバイスの符号器において、変換ブロックの複数のデジタルビデオブロック係数を表すための複数のシンボル組合せを決定することができる。VLC符号化モジュール98は、複数のシンボル組合せに関するラン情報を識別する(ブロック701)。ラン情報は、使われるコーディング方式に依存して、非ゼロ係数に先行し、またはその後に続く、連続するゼロ係数の数を示す。符号化プロセス中、エントロピー符号化ユニット46は、マルチレベルVLCテーブルを定義するデータを記憶する(ブロック702)。マルチレベルVLCテーブルは、第1レベルVLCテーブルと第2レベルVLCテーブルとを含む。第1レベルVLCテーブルは、コードワードをシンボル組合せにマッピングする。
連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を含む第1のシンボル組合せの場合、VLC符号化モジュール98は、第1のシンボル組合せに第1のコードワードを割り当てる(ブロック703)。第1のコードワードは、第1レベルVLCテーブルからのエスケープコードを含む。連続するゼロ係数の第2の数が上記カットオフラン値以下であることを示す第2のラン情報を含む第2のシンボル組合せの場合、VLC符号化モジュール98は、第2のシンボル組合せに第2のコードワードを割り当てる(ブロック704)。第2のコードワードは、第1レベルVLCテーブルからのものである。連続するゼロ係数の第3の数が上記カットオフラン値以下であり、第2のカットオフラン値以下であることを示す第3のラン情報を備える第3のシンボル組合せの場合、第3のシンボル組合せに第1のタイプのコードワードを割り当てる(ブロック705)。第1のタイプのコードワードは、1超過情報と、ブロック終結情報と、第3のラン情報とを含む。連続するゼロ係数の第4の数が上記カットオフラン値以下であり、第2のカットオフラン値より大きいことを示す第4のラン情報を備える第4のシンボル組合せの場合、第4のシンボル組合せに第2のタイプのコードワードを割り当てる(ブロック706)。第2のタイプのコードワードは、第4のラン情報を含み、1超過情報およびブロック終結情報は含んでも含まなくてもよい。
図8は、本開示で説明する技法を実施するビデオ符号化方法を示すフローチャートである。こうした技法は、たとえば、図1〜5に示すデバイスによって実施することができ、図1〜5に示すデバイスに関して説明する。図8に示す技法は、図7および図8の技法とともに、または単独で実装することができる。図6、7に関して説明したVLCコーディング方法などのVLCコーディングを実施する間(ブロック801)、ビデオ符号器20のエントロピー符号化ユニット46は、複数のマルチレベルVLCテーブルを定義するデータを記憶することができる(ブロック802)。マルチレベルVLCテーブルは、シンボル組合せをコードワードにマッピングする第1レベルVLCテーブルを含み得る。統計分析モジュール100は、候補シンボル組合せの集合の生起確率に関する統計を維持し(ブロック803)、収集された統計に基づいて、VLC適応モジュール102は、第1レベルVLCテーブル中で、シンボル組合せへのコードワードのマッピングを調整する(ブロック804)。上記でより詳しく説明し、図9、10の例に関して以下で説明するように、エントロピー符号化ユニット46は、単一のカットオフラン値または複数のカットオフラン値に基づいて、候補シンボル組合せの集合を制限することができる。図8に関して説明した技法の態様も、エントロピー復号ユニット52の統計分析モジュール108およびVLC適応モジュール110によって、受信デバイス14において同時に実施することができ、そうすることによって、VLCテーブルモジュール104によって維持されるVLCテーブルにおける、シンボル組合せとコードワードとのマッピングへの変動が、その変動を記述するデータも、変動を記述する限られたデータのみも、ソースデバイス12から受信デバイス14に転送されることなく、VLCテーブルモジュール112によって維持されるVLCテーブルに対して同時に実施される。
図10は、4×4変換ブロックを示し、各正方形中の数字は、変換係数を表す。図1〜5の様々なモジュールおよびユニットの機能性についてここで、図10の例示的4×4変換ブロックに関して説明する。図9に示す走査順に従って、図10の変換ブロック用の変換係数の1次元配列が、ビデオ符号器20によって、[0,3,0,−1,0,0,1,0,0,0,0,0,0,0,0,0]のように生成されることになる。説明を簡単にするために、この例では、4×4変換ブロックを使うが、本開示の態様は、4×4より大きい変換ブロックにも、適用可能でよく、特に有利であり得る。さらに、説明目的のために、この例では変換係数に言及するが、本開示の態様は、残差データなど、他のタイプのビデオブロックデータにも適用可能であり得る。
図10の例示的変換ブロックと同様に、変換ブロックは、多数のゼロ係数を含むことが多い。その結果、「ラン」または「ランレングス」とも呼ばれる、各非ゼロ係数に先行する、連続するゼロの数はしばしば、ブロック中の非ゼロ係数のロケーション情報を伝える際に使われる。量子化された非ゼロ係数の絶対振幅(absolute amplitude)は、係数の「レベル」と呼ばれる。普通、順序付き係数配列の終結は、ゼロの値をもつ、かなりの数の連続する変換係数を含む。こうしたゼロを明示的にコーディングするのではなく、ビデオ符号器20のエントロピー符号化ユニット46は、変換ブロック中の残りの変換係数がすべてゼロであることをシグナリングするように、ブロック終結(EOB)シンボルパターンをコーディングすればよい。あるいは、エントロピー符号化ユニット46は、非ゼロ変換係数の数が受信された後の、残りの変換係数がすべてゼロであると仮定され得るように、非ゼロ変換係数の数をコーディングすればよい。
H.264/MPEG−4 AVCは、変換係数をコーディングするためのコンテキスト適応型可変長コーディング(CAVLC)方式を定義する。CAVLCは主に、可変長コードで以下の情報をコーディングすることを含む。
1.ブロック中の非ゼロ係数および後続係数(trailing ones)(すなわち、振幅が1または−1のいずれかである係数)の数。
2.各後続係数の符号。
3.残りの非ゼロ係数のレベル。
4.最終係数の前のゼロの総数。
5.ゼロの各ラン(each run of zeros)。
上記情報をコーディングするとき、コードワード長は、その時点で使用可能な他の情報に基づいて適応可能に決定される。これは、一般に、コンテキスト適応型VLC(CAVLC)と呼ばれる。このコーディング方式は、16個の変換係数を有する4×4変換ブロック向けに特に設計され、したがってそれらに対してよく機能する。ただし、この方式は、コーディング効率の大幅な損失を招くことなしには、より大きいサイズの変換ブロックに容易には拡張されない。ビデオコーディングの最近の焦点は高解像度コンテンツにあるので、より大きいサイズの予測ブロックならびに変換が、コーディング効率を向上させる上では有益であると思われる。その結果、H.264/MPEG−4 AVC CAVLC技法は、そうしたケースにおいて、競争力のあるコーディング性能を提供するのに十分に柔軟でない場合がある。
他の理由の中でも、本開示の態様は、4×4より大きいブロックを変換するように適合され得るので、本開示の態様は、H.264/MPEG−4標準におけるCAVLCよりも有利であり得る。たとえば、本開示の態様は、8×8、16×16、32×32、8×16、16×32、および他の様々なサイズの変換ブロックに対するコーディング効率を向上させ得る。16×16変換ブロックは、たとえば、4×4ブロックの16個の変換係数と比較して、256個の変換係数をもち、したがって可能性としては、H.264/MPEG−4 CAVLC技法を、より大きいブロックサイズに対しては非効率にさせる。本開示の態様によると、ビデオ符号器20は、ソースデバイス12が受信デバイス14にデータを送信するのに先立って、変換ブロックからの係数配列のラン情報、レベル情報およびEOB情報を、可変長コードを使って一緒にコーディングする。各可変長コードは、ラン情報、レベル情報、およびEOB情報のある特定のステータスを表す。より詳細には、各非ゼロ係数に対して、可変長コードワードは、以下の情報の一部または全部を表す。
a)ラン(run):係数に先行する、連続するゼロの数
b)1超過(greater-than-one)(GTO):非ゼロ係数のレベルが1より大きいかを示す
c)ブロック終結(end of block)(EOB):コーディングされる非ゼロ係数が、1次元の係数配列中の最後の非ゼロ係数であるかを示す。
図10の変換ブロックと図9の走査順とを例として使い、係数のコーディング順が走査順と同じ(すなわち、1次元配列において左から右)である場合、ビデオ符号器20によってコーディングされ、受信デバイス14に送信されるべきシンボル組合せは、1次元のジグザグ走査列[0,3,0,−1,0,0,1,0,0,0,0,0,0,0,0,0]に対して、(ラン,GTO,EOB)の形で、(1,1,0),(1,0,0),(2,0,1)のようになる。
この例の第1のシンボル組合せ(1,1,0)は、1のラン値を含み、第1の非ゼロ係数の左に1つのゼロがあることを表明する。第1のシンボル組合せは、1のGTO値を含み、非ゼロ係数が、1より大きい値をもつことを示し、この事例では3に等しい。第1のシンボル組合せは、第1のシンボル組合せが、1次元配列の最後の非ゼロ係数を含まないことを示す、0のEOB値を含む。第1のシンボル組合せに基づいて、ビデオ復号器26のエントロピー復号ユニット52は、1次元配列の[0,3,...]部分を再構成することができる。
第2のシンボル組合せ(1,0,0)は、1のラン値を含み、次の非ゼロ変換係数(この例では、−1)の左に1つのゼロがあることを示す。第2のシンボル組合せは、非ゼロ変換係数が、1より大きい値をもたないことを示す、0のGTO値を含み、第2のシンボル組合せは、第2のシンボル組合せが、1次元配列の最後の非ゼロ係数を含まないことを示す、0のEOB値を含む。第2のシンボル組合せに基づいて、エントロピー復号ユニット52は、1次元配列の[...0,−1,...]部分を再構成することができる。
第3のシンボル組合せ(2,0,1)は2のラン値を含み、この事例では1である非ゼロ変換係数の左に2つのゼロがあることを示す。第3のシンボル組合せは、非ゼロ変換係数が1であることを示す、0のGTO値と、非ゼロ変換係数が、1次元配列中の最後の非ゼロ変換係数であることを示す、1のEOB値とを含む。第3のシンボル組合せに基づいて、エントロピー復号ユニット52は、配列の[...0,0,1,0,0,0,0,0,0,0,0,0]部分を再構成することができ、したがって、3つすべてのシンボル組合せに基づいて、1次元配列全体が再構成され得る。ビデオ符号器20において使われる走査順を知ることによって、ビデオ復号器26は、変換ブロックを同じ順序で再構成することができる。
ビデオ符号器20およびビデオ復号器26は、VLCテーブルを同時に構成し、管理することができ、VLCテーブルからの各コードワードは、(ラン,GTO,EOB)のある特定のステータスを表す。図10の例の場合、たとえば、3つのコードワード、すなわち3つのシンボル組合せそれぞれに1つのコードワードで、上記で言及した情報をすべて、ソースデバイス12から受信デバイス14に伝えるのに十分である。
あるいは、係数のコーディングは、逆走査順で実施することもできる。このような事例では、コーディングされるべきシンボル組合せは、(ラン,GTO,EOB)の形で、(2,0,0)、(1,0,0)、(1,1,1)のようになる。この逆走査順例では、第1のシンボル組合せ(2,0,0)は、第1の非ゼロ係数の左に2つのゼロ係数があることを表明する、2のラン値をもち、この事例では、第1の移動は、1次元配列中で右から左の方向である。第1のシンボル組合せは、非ゼロ変換係数が、1の値をもつことを示す、0のGTO値と、非ゼロ係数が、1次元配列中の最後の非ゼロ係数ではないことを示す、0のEOB値とをもつ。第1のコードワードに基づいて、エントロピー復号ユニット52は、1次元配列の[...0,0,1...]部分を再構成することができる。
第2のシンボル組合せ(1,0,0)は、1のラン値をもち、この場合では−1である次の非ゼロ係数の左に1つのゼロがあることを示す。第2のシンボル組合せは、非ゼロ変換係数が、1以下のレベルをもつことを表明する、0のGTO値をもち、第2のシンボル組合せは、非ゼロ変換係数が、1次元配列中の最後の非ゼロ変換係数ではないことを示す、0のEOB値をもつ。第2のコードワードに基づいて、エントロピー復号ユニット52は、1次元配列の[...0,−1...]部分を再構成することができる。
第3のシンボル組合せ(1,1,1)は、1のラン値をもち、次の非ゼロ係数の左に1つのゼロがあることを示す。第3のシンボル組合せは、非ゼロ変換係数が、1より大きいレベルをもつことを示す、1のGTO値をもち、第3のシンボル組合せは、非ゼロ変換係数が、1次元配列中の最後の非ゼロ変換係数ではないことを示す、1のEOB値をもつ。第3のシンボル組合せに基づいて、エントロピー復号ユニット52は、1次元配列の[0,3,....]部分を再構成することができる。ビデオ符号器20において使われる走査順を知ることによって、ビデオ復号器26は、変換ブロックを再構成することができる。
上記の例は、(ラン,GTO,EOB)のある特定のステータスを表す単一のシンボル組合せを提示するが、シンボル組合せは、ラン、GTO、およびEOB情報のどの組合せも含み得る。たとえば、(ラン,GTO,EOB)のある特定のステータスは、ラン情報を表す第1のシンボル組合せと、GTOおよびEOB情報を表す第2のシンボル組合せとによって表すことができる。第1および第2のシンボル組合せは、別々にエントロピーコーディングし、送信することができる。別の実施例では、シンボル組合せは、ラン情報と、GTOもしくはEOB情報のいずれかを表すことができ、または、後で説明するように、一部のGTOおよびEOB情報とともにラン情報を含むことができる。
上記情報に加え、レベルが1より大きい複数の係数に対して、ソースデバイス12は、そのレベルの値を別々にコーディングし、受信デバイス14にその値を送信することができる。さらに、ソースデバイス12は、1ビットを使って、各非ゼロ係数の符号をコーディングし、受信デバイス14にその符号を送信することができる。より多数の非ゼロ変換係数が1に等しいことにより、この技法は、非ゼロ変換係数に関するレベル情報を転送するのに必要とされるビットの数を低減することによって、コーディング効率をさらに向上させることができる。
所与のサイズの変換ブロック用のラン、GTO、および/またはEOBに対するすべての可能なシンボル組合せをカバーするために、特に変換サイズが大きいとき、多数のコードワードが、ビデオ符号器20およびビデオ復号器26におけるVLCテーブルに対して必要とされ得る。ただし、より大きいサイズのVLCテーブルは、コードワードを保存するのに、より多くのメモリを必要とする。このような要件を緩和するために、本開示の態様は、2つ以上のレベルを含むVLCテーブルを使用することを含む。2レベルのVLCテーブルでは、たとえば、第1レベルのテーブルは、1つの可変長コードが1つのエスケープコードを表す、いくつかの可変長コードを含んでよい。第2レベルのテーブルは、ゴロムライスコードなど、構造化VLCコードのグループを含んでよい。その構造化性質により、第2レベルVLCコードは、VLCテーブルモジュール104およびVLCテーブルモジュール112によって、それぞれ、ビデオ符号器20とビデオ復号器26の両方において動的に生成することができるので、第2レベルVLCコードを保存する必要はない。エスケープコードは、第1レベルVLCテーブルとは反対に、第2レベルVLCテーブルを使って特定のコードワードを復号するよう、ビデオ復号器26に知らせる。
2レベルのVLCテーブルを使うと、本開示で説明したように、ラン、GTO、および/またはEOBのシンボル組合せの部分集合のみが、第1レベルVLCテーブル中の可変長コードにマッピングされる。ビデオ符号器20は、シンボル組合せの残部を、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングする。エスケープコードを検出すると、ビデオ復号器26は、第2レベルVLCテーブルを使ってコードワードを復号する。
ラン、GTO、および/またはEOBに対する可能なシンボル組合せの数は、第1レベルVLCテーブル中の可変長コードの数より大きくてよい。そのような場合、可能なシンボル組合せはすべて、第1レベルVLCテーブル中の可変長コードにマッピングされるべき候補シンボル組合せでよい。ある特定のコンテキストの下での生起確率に基づいて、最もしばしば生起する候補シンボル組合せのみが、それぞれ、第1レベルVLCテーブル中の可変長コードにマッピングされればよい。候補シンボル組合せの残部は、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングすることができる。
たとえば、Nが、可能なシンボル組合せの数を表し、Mが、第1レベルVLCテーブル中の可変長コードエントリの数を表し、Nの値がMより大きい場合、N個のシンボル組合せはすべて、候補シンボル組合せでよい。N個の候補シンボル組合せのどれが、第1レベルVLCテーブル中の可変長コードにマッピングされるかは、各候補シンボル組合せの生起確率に基づいて決定することができる。最終的に、N個の可能な組合せのうち、ラン、GTO、および/またはEOBに対する(M−1)個のシンボル組合せのみが、第1レベルVLCテーブル中の可変長コードにマッピングされる。ビデオ符号器20は、残りの(N−M+1)個のシンボル組合せを、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングする。
本開示のある態様は、ビデオ符号器20が、(ラン,GTO,EOB)ステータスの成分を別々にコーディングして、VLCテーブルに対する候補シンボル組合せの数を低減することを含む。たとえば、ビデオ符号器20は、(ラン,GTO,EOB)ステータスのラン情報を、第1レベルVLCテーブルから、または第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結として、VLCテーブルからのコードワードを使ってコーディングするだけでよい。ビデオ符号器20は、GTOおよびEOB情報を、ラン情報とは別々にコーディングしてよい。別の実施例では、ビデオ符号器20は、ラン情報のみを、第1レベルVLCテーブルからのコードワードを使って、GTOおよびEOBについての一部の情報と一緒にコーティングすればよい。このような一部の情報の例は、OR(GTO,EOB)でよく、ここでORは、論理OR演算を表す。その結果、ランおよびOR(GTO,EOB)の値を、VLCテーブルからのコードワードを使って一緒にコーディングすることができる。GTOおよびEOBについてのより詳細な情報は、別々にコーディングすることができる。GTO値およびEOB値のいずれかまたは両方が非ゼロである(すなわち、OR演算が真である)場合、ビデオ復号器26は、より詳細な情報を処理する。GTO値とEOB値の両方がゼロである(すなわち、OR演算が偽である)場合、ビデオ復号器26は、どの追加情報も、復号される必要がないことを知る。
本開示の態様は、第1レベルVLCテーブル中のコードワードにマッピングされる候補であるシンボル組合せの総数を低減することによって、コーディング効率を向上させることができる。一態様では、カットオフラン値は、異なる各サイズの変換ブロックごとに定義され得る。次に、変換ブロックサイズおよび関連づけられたカットオフラン値に基づいて、カットオフラン値以下であるランに関連づけられたシンボル組合せのみが、第1レベルVLCテーブル中の可変長コードワードにマッピングされ得る候補組合せである。カットオフラン値より大きいランに関連づけられたシンボル組合せは、第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結としてコーディングすることができる。第1のシンボル組合せが、連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す場合、エントロピー符号化ユニット46のVLC符号化モジュール98は、第1レベルVLCテーブルからのエスケープコードを含む第1のコードワードを、第1のシンボル組合せに割り当てる。第2のシンボル組合せが、連続するゼロ係数の第2の数がカットオフラン値以下であることを示す場合、エントロピー符号化ユニット46のVLC符号化モジュール98は、第2のシンボル組合せに第2のコードワードを割り当てる。第2のコードワードは、第1レベルVLCテーブルからのコードワードである。
別の態様では、2つのカットオフラン値、すなわちrun1およびrun2(run1≦run2)を、異なる各サイズの変換ブロック用に定義することができる。次に、変換ブロックサイズおよび関連づけられたカットオフラン値に基づいて、エントロピー符号化ユニット46は、run2以下のランに関連づけられたシンボル組合せのみを、第1レベルVLCテーブル中の可変長コードワードを使ってコーディングされ得る候補シンボル組合せとして扱う。ただし、エントロピー符号化ユニット46は、run1以下のランに関連づけられたシンボル組合せの成分のみを、ジョイント方式でコーディングする(すなわち、ラン、GTO、およびEOBが、1つのコードワードとして一緒にコーディングされ得る)。エントロピー符号化ユニット46は、run1より大きいランに関連づけられたシンボル組合せの成分を別々にコーディングする。たとえば、エントロピー符号化ユニット46は、VLCテーブルを使って(第1レベルVLCテーブル中のコードワードいずれかで、または第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結として)、シンボル組合せのラン情報のみをコーティングし、シンボル組合せに対するGTOおよびEOB情報を、ラン情報とは別々にコーディングすればよい。
2つのカットオフラン値(run1およびrun2)を使用するとき、エントロピー符号化ユニット46のVLC符号化モジュール98は、連続するゼロ係数の数がrun1以下であり、run2以下であることを示すラン情報をもつシンボル組合せに、第1のタイプのコードワードを割り当てる。第1のタイプのコードワードは、たとえば、1超過情報と、ブロック終結情報と、ラン情報とを含み得る。エントロピー符号化ユニット46のVLC符号化モジュール98は、連続するゼロ係数の数がrun2以下であり、run1より大きいことを示すラン情報を備えるシンボル組合せに、第2のタイプのコードワードを割り当てる。第2のタイプのコードワードは、ラン情報を含み、一部の1超過情報およびブロック終結情報も含み得る。
別の態様では、run1より大きいがrun2以下のランをもつシンボル組合せに対して、エントロピー符号化ユニット46は、VLCテーブルモジュール104によって維持されるVLCテーブルからのコードワードを、第1レベルVLCテーブル中のコードワードとして、または第1レベルVLCテーブルからのエスケープコードおよび第2レベルVLCテーブルからのコードワードの連結として使って、GTOおよびEOBについての一部の情報と一緒に、ラン情報のみをコーディングする。このような一部の情報の一例は、OR(GTO,EOB)で表すことができ、ここでORは、論理OR演算を表す。その結果、エントロピー符号化ユニット46は、VLCテーブルモジュール104によって維持されるVLCテーブルからのコードワードを使って、ランと、OR(GTO,EOB)の値とを一緒にコーディングし、GTOおよびEOBについてのより詳細な情報を別々にコーディングする。
単一のカットオフラン値または複数のカットオフラン値に基づく、第1レベルVLCテーブルに対する候補シンボル組合せの数の制限など、本開示の態様は、特に4×4より大きい変換ブロックに対して、コーディングおよび復号効率を向上させることができる。
さらに、本開示の態様は、ビデオ符号器20およびビデオ復号器26が生起確率を追跡しなければならないシンボル組合せの数を制限することによって、コーディング効率を向上させることができる。たとえば、4×4より大きい変換ブロックが、ラン、GTO、およびEOBに対して数千または1万をも超える可能なシンボル組合せをもつ場合がある。本開示の態様は、最も頻繁に生起するシンボル組合せを含むと思われる可能な総シンボル組合せの部分集合を識別するのに用いることができる。すると、ビデオ符号器20およびビデオ復号器26は、すべての可能なシンボル組合せではなく、部分集合に関する生起確率を追跡するだけでよく、したがって、生起確率の追跡に専用とされる処理資源の量が低減される。頻繁に生起する一部のシンボル組合せが、部分集合から除外される場合であっても、生起確立の追跡に専用とされる処理資源の低減は、依然として、全体的システム性能において全体として肯定的であり得る。
良好なコーディング効率のために、ビデオ符号器20は、いくつかの要素に基づいて複数のVLCテーブルから適切なVLCテーブルを選択すればよく、そうすることによって所与の状況(またはコンテキスト)の場合、コードワード長がその所与の各状況に対してシンボル分布プロパティに良好にマッチングし得るように、異なるVLCテーブルを使うことができる。
別の態様は、符号化プロセス中に、VLC符号化モジュール98が、コーディングされるべきシンボル組合せに関連づけられたランの第1のゼロ係数の位置索引に基づいて、VLCテーブルモジュール104によって維持される特定のテーブルVLCテーブルを選択することを含む。コーディングは、係数配列中の第1の係数から始まる。シンボル組合せをコーディングするために、シンボル組合せに関連づけられたランの第1のゼロ係数の位置索引が調べられる。次に、走査順の位置索引値に基づいて、カレント・シンボル組合せをコーディングするためのVLCテーブルが選択される。再度一例として図3を使うと、コーディングされるべきシンボル組合せは、(1,1,0)、(1,0,0)、(2,0,1)である。シンボル組合せ(1,1,0)の場合、ランの第1のゼロ係数の位置索引値は0である。同様に、(1,0,0)および(2,0,1)の場合、位置索引値は、それぞれ2、4である。VLCコードワードを受信したことに応答して、VLC復号モジュール106は、VLCテーブル112内で、VLC符号化モジュール98によって使われる特定のVLCテーブルを識別し、VLCコードワードからシンボル組合せを判断するように構成され得る。
本開示の別の態様は、VLC符号化モジュール98が、ブロック中の事前コーディングされたランおよびレベル値の両方に基づいて、VLCテーブルモジュール104によって維持される特定のVLCテーブルを選択することを含む。コーディングは、係数配列中の最後の非ゼロ係数から始まり、逆走査順で実施される。カレント・シンボル組合せをコーディングするために、ブロック中のすべての事前コーディングされたシンボル組合せのレベル、ならびに事前コーディングされたシンボル組合せのランが調べられる。1のレベルをもつ、事前コーディングされたシンボル組合せの数が、事前コーディングされたシンボル組合せのランと一緒に、カレント・シンボル組合せをコーディングするコンテキストとして使われる。ただし、カレント・ブロックの事前コーディングされたシンボル組合せが、1より大きいレベルを少なくとも含む場合、事前コーディングされたシンボル組合せのランのみが、カレント・シンボル組合せをコーディングするコンテキストとして使われる。具体的には、ブロック中の第1のシンボル組合せをコーディングするコンテキストを形成するとき、1のレベルをもつ、事前コーディングされたシンボル組合せの数が1にセットされ、事前コーディングされたシンボル組合せのランが、いくつかの事前コーディングされたブロック中の、第1のコーディングされたシンボル組合せのランの平均としてセットされる。
上述したコンテキスト適応型VLCテーブルは、様々なコーディング条件の下での変換係数用に設計し、構成することができる。それゆえ、各コンテキストに対して複数のVLCテーブルが使用可能であり得る。本開示で説明する一技法の態様は、各コンテキスト向けの最良のVLCテーブルの索引を、スライスヘッダーに入れてシグナリングすることを含む。さらに、各コンテキストの下でのシンボル組合せの生起確率は、スライス中のブロックがコーディングされている間、たとえば、統計分析モジュール100によって累積することができる。各コンテキストの下でのシンボル分布確率は、カレント・スライス中で一定数のブロックがコーディングされるたびに、評価し直し、更新することができる。次に、更新されたシンボル分布プロパティに基づいて、VLCテーブル中のコードワードが、各コンテキスト向けの様々なシンボル組合せに再マッピングされ得る。このようなシンボル組合せの生起確率の累積および再マッピングは、ビデオ符号器20の統計分析モジュール100およびVLC適応モジュール102と、ビデオ復号器26の統計分析モジュール108およびVLC適応モジュール110とによって同じやり方で実施することができる。その結果、どの追加情報も、ビデオ符号器20からビデオ復号器26にシグナリングされる必要がない。
本開示で説明する技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せで実装できる。たとえば、こうした技法の様々な態様は、1つもしくは複数のマイクロプロセッサ、DSP、ASIC、FPGA、または他のどの均等な統合型もしくは個別論理回路、ならびに、符号器、ラップトップ、デスクトップまたはハンドヘルドコンピュータ、ワイヤレスモバイルハンドセット、セットトップボックス、または他のデバイスでも実施されるこのような構成要素のどの組合せにおいても実装することができる。「プロセッサ」または「処理回路」という用語は、一般に、単独で、あるいは他の論理回路または他の等価回路との組合せで上記の論理回路のいずれかを指すことがある。
本開示で説明する技法の態様は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せで実装できる。モジュールまたは構成要素として説明する機能は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装できる。ソフトウェアで実装される場合、本開示で説明したシステムおよびデバイスに帰因する機能性は、RAM、SDRAM、ROM、NVRAM、EEPROM、フラッシュメモリ、磁気媒体、光学媒体などのような非一時的コンピュータ可読記憶媒体上の命令として実施することができる。「非一時的」という用語は、記憶媒体が、搬送波または伝搬信号では具現化されないことを示し得る。ただし、「非一時的」という用語は、記憶媒体が非移動性であることを意味するものと解釈されるべきでない。一例として、記憶媒体は、あるデバイスから取り外され、別のデバイスに移され得る。別の例として、記憶媒体は、あるデバイスに差し込むことができる。いくつかの例では、非一時的記憶媒体は、時間経過に伴って変動し得るデータを(たとえば、RAMに)記憶することができる。命令は、本開示で説明した機能性の1つまたは複数の態様をサポートするように実行することができる。
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路または個別論理回路によって実行され得る。したがって、本開示で使用する「プロセッサ」という用語は、前述の構造、または説明した技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様では、本開示で説明する機能を、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアユニット内に提供することができ、または複合ビデオ符号器/復号器(コーデック(CODEC))に組み込むことができる。
本開示の多くの態様について説明した。特許請求の範囲から逸脱することなく、様々な改変を行い得る。これらおよび他の態様は以下の特許請求の範囲内に入る。
なお、本願の出願当初の請求項と同一の記載を以下に付記する。
[C1] 可変長コーディング(VLC)の方法であって、
変換ブロックの複数のデジタルビデオブロック係数の複数のシンボル組合せに関するラン情報を識別することであって、前記ラン情報が、連続するゼロ係数の数を示すことと、
マルチレベルVLCテーブルを定義するデータを記憶することであって、前記マルチレベルVLCテーブルが、第1レベルVLCテーブルと第2レベルVLCテーブルとを備え、前記第1レベルVLCテーブルが、シンボル組合せにコードワードをマッピングすることと、
連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備える第1のシンボル組合せの場合、前記第1のシンボル組合せに第1のコードワードを割り当てることであって、前記第1のコードワードが、前記第1レベルVLCテーブルからのエスケープコードを備えることと、を備える方法。
[C2] 連続するゼロ係数の第2の数が前記カットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せの場合、前記第2のシンボル組合せに第2のコードワードを割り当てることであって、前記第2のコードワードが、前記第1レベルVLCテーブルからのものであること、をさらに備える、C1に記載の方法。
[C3] 連続するゼロ係数の第2の数が前記カットオフラン値以下であり、第2のカットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せの場合、前記第2のシンボル組合せに第1のタイプのコードワードを割り当てることであって、前記第1のタイプのコードワードが、1超過情報と、ブロック終結情報と、前記第2のラン情報とを備えることと、
連続するゼロ係数の第3の数が前記カットオフラン値以下であり、前記第2のカットオフラン値より大きいことを示す第3のラン情報を備える第3のシンボル組合せの場合、前記第3のシンボル組合せに第2のタイプのコードワードを割り当てることであって、前記第2のタイプのコードワードが、前記第3のラン情報を備えることとをさらに備える、C1に記載の方法。
[C4] 前記第2のタイプのコードワードが、一部の1超過情報およびブロック終結情報をさらに備える、C3に記載の方法。
[C5] 候補シンボル組合せの集合に関するコーディング統計を収集することと、
前記第1レベルVLCテーブルのコードワードと、候補シンボル組合せの前記集合の部分集合との間のマッピングを、前記コーディング統計に基づいて調整することとをさらに備える、C1に記載の方法。
[C6] 候補シンボル組合せの前記集合が、連続するゼロ係数の数が前記カットオフラン値以下であることを示すラン情報をもつシンボル組合せを備える、C5に記載の方法。
[C7] 前記カットオフラン値が、前記変換ブロックのサイズに基づいて決定される、C1に記載の方法。
[C8] 複数のマルチレベルVLCテーブルを定義するデータを記憶することと、
特定のシンボル組合せに対して使われるべき、前記複数のマルチレベルVLCテーブルのうち特定のマルチレベルVLCテーブルを、前記シンボル組合せ向けのコンテキストに基づいて識別することとをさらに備える、C1に記載の方法。
[C9] 前記コンテキストが、シンボルに関連づけられたゼロのランの第1のゼロ係数の位置索引に基づいて決定される、C8に記載の方法。
[C10] 前記コンテキストが、前記変換ブロックに関する、事前コーディングされたラン値およびレベル値に基づいて決定される、C8に記載の方法。
[C11] 前記コンテキストがスライスヘッダーに入れてシグナリングされる、C8に記載の方法。
[C12] 前記第2レベルVLCテーブルが構造化VLCコードを備える、C1に記載の方法。
[C13] 前記第2レベルVLCテーブルがゴロムライスコードを備える、C1に記載の方法。
[C14] 前記方法がビデオ符号化デバイスによって実施される、C1に記載の方法。
[C15] 前記方法がビデオ復号デバイスによって実施される、C1に記載の方法。
[C16] ビデオデータをコーディングするためのビデオコーディングデバイスであって、
マルチレベルVLCテーブルを定義するデータを記憶するように構成された可変長コード(VLC)テーブルモジュールであって、前記マルチレベルテーブルが、第1レベルVLCテーブルと第2レベルVLCテーブルとを備え、前記第1レベルVLCテーブルが、シンボル組合せにコードワードをマッピングする、モジュールと、
第1のシンボル組合せに第1のコードワードを割り当てるように構成されたVLCコーディングモジュールであって、前記第1のシンボル組合せが、連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備え、前記第1のコードワードが、前記第1レベルVLCテーブルからのエスケープコードを備える、モジュールと、
を備えるビデオコーディングデバイス。
[C17] 前記VLCコーディングモジュールが、
連続するゼロ係数の第2の数が前記カットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せに、前記第1レベルVLCテーブルからのものである第2のコードワードを割り当てるようにさらに構成される、C16に記載のビデオコーディングデバイス。
[C18] 前記VLCコーディングモジュールが、
連続するゼロ係数の第2の数が前記カットオフラン値以下であり、第2のカットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せに、1超過情報と、ブロック終結情報と、前記第2のラン情報とを備える第1のタイプのコードワードを割り当て、
連続するゼロ係数の第3の数が前記カットオフラン値以下であり、前記第2のカットオフラン値より大きいことを示す第3のラン情報を備える第3のシンボル組合せに、前記第3のラン情報を備える第2のタイプのコードワードを割り当てるようにさらに構成される、C16に記載のビデオコーディングデバイス。
[C19] 前記第2のタイプのコードワードが、一部の1超過情報およびブロック終結情報をさらに備える、C18に記載のビデオコーディングデバイス。
[C20] 候補シンボル組合せの集合に関するコーディング統計を収集するように構成された統計分析モジュールと、
前記第1レベルVLCテーブルのコードワードと、候補シンボル組合せの前記集合の部分集合の間のマッピングを、前記コーディング統計に基づいて調整するように構成されたVLC適応モジュールとをさらに備える、C16に記載のビデオコーディングデバイス。
[C21] 候補シンボル組合せの前記集合が、連続するゼロ係数の数が前記カットオフラン値以下であることを示すラン情報をもつシンボル組合せを備える、C20に記載のビデオコーディングデバイス。
[C22] 前記カットオフラン値が、前記変換ブロックのサイズに基づいて決定される、C16に記載のビデオコーディングデバイス。
[C23] 前記VLCテーブルモジュールが、複数のマルチレベルVLCテーブルを定義するデータを記憶するようにさらに構成され、
前記VLCコーディングモジュールが、特定のシンボル組合せに対して使われるべき、前記複数のマルチレベルVLCテーブルのうち特定のマルチレベルVLCテーブルを、前記特定のシンボル組合せ向けのコンテキストに基づいて識別するようにさらに構成される、C16に記載のビデオコーディングデバイス。
[C24] 前記コンテキストが、シンボルに関連づけられたゼロのランの第1のゼロ係数の位置索引に基づいて決定される、C23に記載のビデオコーディングデバイス。
[C25] 前記コンテキストが、前記変換ブロックに関する、事前コーディングされたラン値およびレベル値に基づいて決定される、C23に記載のビデオコーディングデバイス。
[C26] 前記コンテキストがスライスヘッダーに入れてシグナリングされる、C23に記載のビデオコーディングデバイス。
[C27] 前記第2レベルVLCテーブルが構造化VLCコードを備える、C16に記載のビデオコーディングデバイス。
[C28] 前記第2レベルVLCテーブルがゴロムライスコードを備える、C16に記載のビデオコーディングデバイス。
[C29] 前記ビデオ復号デバイスがビデオ符号器である、C16に記載のビデオコーディングデバイス。
[C30] 前記ビデオ復号デバイスがビデオ復号器である、C16に記載のビデオコーディングデバイス。
[C31] ビデオコーディング装置であって、
変換ブロックの複数のデジタルビデオブロック係数の複数のシンボル組合せに関するラン情報を識別するための手段であって、前記ラン情報が、連続するゼロ係数の数を示す、手段と、
マルチレベルVLCテーブルを定義するデータを記憶するための手段であって、前記マルチレベルVLCテーブルが、第1レベルVLCテーブルと第2レベルVLCテーブルとを備え、前記第1レベルVLCテーブルが、シンボル組合せにコードワードをマッピングする、手段と、
連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備える第1のシンボル組合せに対して、前記第1のシンボル組合せに第1のコードワードを割り当てるための手段であって、前記第1のコードワードが、前記第1レベルVLCテーブルからのエスケープコードを備える、手段とを備えるビデオコーディング装置。
[C32] 連続するゼロ係数の第2の数が前記カットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せの場合、前記第2のシンボル組合せに第2のコードワードを割り当てる手段であって、前記第2のコードワードが、前記第1レベルVLCテーブルからのものである、手段をさらに備える、C31に記載のビデオコーディング装置。
[C33] 連続するゼロ係数の第2の数が前記カットオフラン値以下であり、第2のカットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せの場合、前記第2のシンボル組合せに第1のタイプのコードワードを割り当てることであって、前記第1のタイプのコードワードが、1超過情報と、ブロック終結情報と、前記第2のラン情報とを備えることと、
連続するゼロ係数の第3の数が前記カットオフラン値以下であり、前記第2のカットオフラン値より大きいことを示す第3のラン情報を備える第3のシンボル組合せの場合、前記第3のシンボル組合せに第2のタイプのコードワードを割り当てることであって、前記第2のタイプのコードワードが、前記第3のラン情報を備えることとをさらに備える、C31に記載のビデオコーディング装置。
[C34] 前記第2のタイプのコードワードが、一部の1超過情報およびブロック終結情報をさらに備える、C33に記載のビデオコーディング装置。
[C35] 候補シンボル組合せの集合に関するコーディング統計を収集するための手段と、
前記第1レベルVLCテーブルのコードワードと、候補シンボル組合せの前記集合の部分集合の間のマッピングを、前記コーディング統計に基づいて調整するための手段とをさらに備える、C31に記載のビデオコーディング装置。
[C36] 候補シンボル組合せの前記集合が、連続するゼロ係数の数が前記カットオフラン値以下であることを示すラン情報をもつシンボル組合せを備える、C35に記載のビデオコーディング装置。
[C37] 前記カットオフラン値が、前記変換ブロックのサイズに基づいて決定される、C31に記載のビデオコーディング装置。
[C38] 複数のマルチレベルVLCテーブルを定義するデータを記憶するための手段と、
特定のシンボル組合せに対して使われるべき、前記複数のマルチレベルVLCテーブルのうち特定のマルチレベルVLCテーブルを、前記シンボル組合せ向けのコンテキストに基づいて識別するための手段とをさらに備える、C31に記載のビデオコーディング装置。
[C39] 前記コンテキストが、シンボルに関連づけられたゼロのランの第1のゼロ係数の位置索引に基づいて決定される、C38に記載のビデオコーディング装置。
[C40] 前記コンテキストが、前記変換ブロックに関する、事前コーディングされたラン値およびレベル値に基づいて決定される、C38に記載のビデオコーディング装置。
[C41] 前記コンテキストがスライスヘッダーに入れてシグナリングされる、C38に記載のビデオコーディング装置。
[C42] 前記第2レベルVLCテーブルが構造化VLCコードを備える、C31に記載のビデオコーディング装置。
[C43] 前記第2レベルVLCテーブルがゴロムライスコードを備える、C31に記載のビデオコーディング装置。
[C44] 前記ビデオコーディング装置がビデオ符号器の一部である、C31に記載のビデオコーディング装置。
[C45] 前記ビデオコーディング装置がビデオ復号器の一部である、C31に記載のビデオコーディング装置。
[C46] 1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
変換ブロックの複数のデジタルビデオブロック係数の複数のシンボル組合せに関する、連続するゼロ係数の数を示すラン情報を識別させ、
シンボル組合せにコードワードをマッピングする第1レベルVLCテーブルと第2レベルVLCテーブルとを備えるマルチレベルVLCテーブルを定義するデータを記憶させ、
連続するゼロ係数の第1の数がカットオフラン値より大きいことを示す第1のラン情報を備える第1のシンボル組合せの場合、前記第1レベルVLCテーブルからのエスケープコードを備える第1のコードワードを、前記第1のシンボル組合せに割り当てさせる、1つまたは複数の命令を有形に記憶するコンピュータ可読記憶媒体。
[C47] 前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
連続するゼロ係数の第2の数が前記カットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せの場合、前記第1レベルVLCテーブルからのものである第2のコードワードを、前記第2のシンボル組合せに割り当てさせる1つまたは複数の追加命令を有形に記憶する、C46に記載のコンピュータ可読記憶媒体。
[C48] 前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
連続するゼロ係数の第2の数が前記カットオフラン値以下であり、第2のカットオフラン値以下であることを示す第2のラン情報を備える第2のシンボル組合せの場合、1超過情報と、ブロック終結情報と、前記第2のラン情報とを備える第1のタイプのコードワードを前記第2のシンボル組合せに割り当てさせ、
連続するゼロ係数の第3の数が前記カットオフラン値以下であり、前記第2のカットオフラン値より大きいことを示す第3のラン情報を備える第3のシンボル組合せの場合、前記第3のラン情報を備える第2のタイプのコードワードを前記第3のシンボル組合せに割り当てさせる、1つまたは複数の追加命令を有形に記憶する、C46に記載のコンピュータ可読記憶媒体。
[C49] 前記第2のタイプのコードワードが、一部の1超過情報およびブロック終結情報をさらに備える、C48に記載のコンピュータ可読記憶媒体。
[C50] 前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
候補シンボル組合せの集合に関するコーディング統計を収集させ、
前記第1レベルVLCテーブルのコードワードと、候補シンボル組合せの前記集合の部分集合との間のマッピングを、前記コーディング統計に基づいて調整させる、1つまたは複数の追加命令を有形に記憶する、C46に記載のコンピュータ可読記憶媒体。
[C51] 候補シンボル組合せの前記集合が、連続するゼロ係数の数が前記カットオフラン値以下であることを示すラン情報をもつシンボル組合せを備える、C50に記載のコンピュータ可読記憶媒体。
[C52] 前記カットオフラン値が、前記変換ブロックのサイズに基づいて決定される、C46に記載のコンピュータ可読記憶媒体。
[C53] 前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
複数のマルチレベルVLCテーブルを定義するデータを記憶させ、
特定のシンボル組合せに対して使われるべき、前記複数のマルチレベルVLCテーブルのうち特定のマルチレベルVLCテーブルを、前記シンボル組合せ向けのコンテキストに基づいて識別させる、1つまたは複数の追加命令を有形に記憶する、C46に記載のコンピュータ可読記憶媒体。
[C54] 前記コンテキストが、シンボルに関連づけられたゼロのランの第1のゼロ係数の位置索引に基づいて決定される、C53に記載のコンピュータ可読記憶媒体。
[C55] 前記コンテキストが、前記変換ブロックに関する、事前コーディングされたラン値およびレベル値に基づいて決定される、C53に記載のコンピュータ可読記憶媒体。
[C56] 前記コンテキストがスライスヘッダーに入れてシグナリングされる、C53に記載のコンピュータ可読記憶媒体。
[C57] 前記第2レベルVLCテーブルが構造化VLCコードを備える、C46に記載のコンピュータ可読記憶媒体。
[C58] 前記第2レベルVLCテーブルがゴロムライスコードを備える、C46に記載のコンピュータ可読記憶媒体。
[C59] 前記1つまたは複数のプロセッサがビデオ符号器の一部である、C46に記載のコンピュータ可読記憶媒体。
[C60] 前記1つまたは複数のプロセッサがビデオ復号器の一部である、C46に記載のコンピュータ可読記憶媒体。