JP6067776B2 - ビデオデータをコンテキスト適応型コーディングすること - Google Patents

ビデオデータをコンテキスト適応型コーディングすること Download PDF

Info

Publication number
JP6067776B2
JP6067776B2 JP2015090535A JP2015090535A JP6067776B2 JP 6067776 B2 JP6067776 B2 JP 6067776B2 JP 2015090535 A JP2015090535 A JP 2015090535A JP 2015090535 A JP2015090535 A JP 2015090535A JP 6067776 B2 JP6067776 B2 JP 6067776B2
Authority
JP
Japan
Prior art keywords
coding
subset
video
probability model
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015090535A
Other languages
English (en)
Other versions
JP2015167381A (ja
Inventor
ジョエル・ソル・ロジャルス
ラジャン・ラクスマン・ジョシ
マルタ・カークゼウィックズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2015167381A publication Critical patent/JP2015167381A/ja
Application granted granted Critical
Publication of JP6067776B2 publication Critical patent/JP6067776B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

優先権の主張
本出願は、それらすべての内容全体が全体として参照により本明細書に組み込まれる、2011年6月3日に出願された米国仮特許出願第61/493,371号、2011年6月30日に出願された米国仮特許出願第61/503,537号、2011年10月28日に出願された米国仮特許出願第61/552,921号、2011年11月1日に出願された米国仮特許出願第61/554,408号、および2011年11月20日に出願された米国仮特許出願第61/561,921号の優先権を主張する。
本開示は、ビデオコーディングに関し、より詳細には、ビデオコーディングプロセスによって生成された残差変換係数のブロックをコーディングすることに関する。
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4、Part 10、アドバンストビデオコーディング(AVC:Advanced Video Coding)、現在開発中の高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を実行する。ブロックベースのビデオコーディングでは、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部)はビデオブロックに区分され得、これらのビデオブロックは、ツリーブロック、コーディングユニット(CU:coding unit)および/またはコーディングノードと呼ばれることがある。ピクチャのイントラコード化(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック内の参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
[0005]空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと、予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、その残差変換係数は、次いで量子化され得る。量子化変換係数は、最初は2次元アレイで構成され、変換係数の1次元ベクトルを生成するために走査され得、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
[0006]本開示の技法は、概して、ビデオデータをエントロピーコーディングすることに関する。たとえば、エントロピーコーディング中に、ビデオコーダは、変換係数を2進形態に変換し、それによって、1つまたは複数のビットまたは「ビン」を生成し得る。ビデオコーダは、次いで、ビンが所与の2進値を有する可能性を示し得る、各ビンの確率推定値を使用してビデオデータのブロックの各ビンをコーディングし得る。確率推定値は、「コンテキストモデル」とも呼ばれる確率モデル内に含まれ得る。ビデオコーダは、ビンのコンテキストを決定することによってコンテキストモデルを選択し得る。シンタックス要素のビンのコンテキストは、前にコーディングされたシンタックス要素の関係するビンの値を含み得る。ビンをコーディングした後に、ビデオコーダは、最新の確率推定値を反映するために、ビンの値に基づいてコンテキストモデルを更新し得る。
[0007]本開示のいくつかの技法は、概して、エントロピーコーディング中の確率更新に関係する。すなわち、いくつかの例では、ビデオコーダが、各ビンをコーディングした後に確率モデルを更新し得る。そのような例では、確率は比較的正確であり得るが、更新プロセスに関連するレイテンシが存在し得る。他の例では、ビデオコーダは、ビン値に関連する統計値を記憶し、ビデオデータの全ブロックをコーディングした後に確率モデルを更新し得る。そのような技法によってレイテンシは低減し得るが、ブロックのコーディング中の確率があまり正確でないことにより、パフォーマンスも低下し得る。本開示の態様は、各ビン後に確率モデルを更新することなしに、確率モデルがビデオデータの全ブロック後よりも頻繁に更新され得るように、確率更新プロセスの粒度を増加させることに関係する。たとえば、本開示の態様は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後に確率を更新することに関係する。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
[0008]本開示のいくつかの態様はまた、並列化エントロピーコーディングのための他の技法に関係する。たとえば、本開示の技法はまた、1つまたは複数の前のビンをコーディングするより前に更新された確率モデルを使用してデータのビンをコーディングすることを含む。すなわち、確率モデルは、現在のビンをコーディングより少なくとも2コーディング反復またはサイクル前に更新され得る。したがって、本開示の技法は、複数の連続するビンが同じ確率モデルを使用してコーディングされるとき、そのモデルを使用して1つのビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。いくつかの例では、そのような技法は、ビデオデータのブロックのビンを並列にコーディングするために適用され得る。
[0009]一例では、本開示の態様は、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすることを含む、データをコーディングする方法に関係する。ビンのシーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた、前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
[0010]別の例では、本開示の態様は、データをコーディングするための装置であって、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするように構成された1つまたは複数のプロセッサを含む装置に関係する。ビンのシーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
[0011]別の例では、本開示の態様は、データをコーディングするための装置であって、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするための手段を含む装置に関係する。ビンのシーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
[0012]別の例では、本開示の態様は、実行されたとき、コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすることを1つまたは複数のプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体に関係する。ビンのシーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、ビンのコンテキストを決定することと、コンテキストに基づいて確率モデルを選択することと、確率モデルは、そのコンテキストを用いてコーディングされ、現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、ビンをコーディングするために確率モデルを適用することと、ビンの値に基づいて確率モデルを更新することとを含む。
[0013]別の例では、本開示の態様は、ビデオコーディングプロセスにおいて残差ビデオデータに関連する変換係数をコーディングする方法であって、変換係数の複数のサブセットのうちの第1のサブセットをコーディングすることと、第1のサブセットをコーディングすることは、1つまたは複数の確率モデルを使用して第1のサブセットをコンテキスト適応型コーディングすることを備え、変換係数の第1のサブセットをコーディングしながら、1つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、第1のサブセットの最終係数をコーディングした後に、記憶された確率モデル統計値に基づいて確率モデルを更新することと、更新された1つまたは複数の確率モデルを使用して変換係数の第2のサブセットをコーディングすることとを含む方法に関係する。
[0014]別の例では、本開示の態様は、残差ビデオデータに関連する変換係数をコーディングするための装置であって、変換係数の複数のサブセットのうちの第1のサブセットをコーディングすることと、第1のサブセットをコーディングすることは、1つまたは複数の確率モデルを使用して第1のサブセットをコンテキスト適応型コーディングすることを備え、変換係数の第1のサブセットをコーディングしながら、1つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、第1のサブセットの最終係数をコーディングした後に、記憶された確率モデル統計値に基づいて確率モデルを更新することと、更新された1つまたは複数の確率モデルを使用して変換係数の第2のサブセットをコーディングすることとを行うように構成された1つまたは複数のプロセッサを含む装置に関係する。
[0015]本開示の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
本開示の技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図。 本開示の技法のいずれかまたはすべてを実装し得るビデオエンコーダの一例を示すブロック図。 符号化されたビデオシーケンスを復号するビデオデコーダの一例を示すブロック図。 例示的な4分木(quadtree)を示す概念図。 対応する最大コーディングユニット(LCU:largest coding unit)を示す概念図。 ビデオデータのブロックの変換係数を走査するための例示的な順方向対角走査パターンを示す概念図。 ビデオデータのブロックの変換係数を走査するための例示的な逆方向対角走査パターンを示す概念図。 変換係数のブロックをサブセットに分割することを示す例示的な概念図。 変換係数のブロックをサブセットに分割することを示す別の例示的な概念図。 ビデオデータのブロックに関連する変換係数のブロックをサブブロックの形態のサブセットに分割することを示す例示的な概念図。 ビデオデータのブロックに関連する変換係数のブロックをサブブロックの形態のサブセットに分割することを示す別の例示的な概念図。 コンテキスト適応型コーディング技法を使用して有効性マップをコーディングする一例を示す流れ図。 サブセットをコーディングした後にコンテキストが更新され得る、修正されたコンテキスト適応型コーディングプロセスの一例を示す流れ図。 ビデオデータのブロックをエントロピーコーディングする例示的な技法を示す流れ図。 遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンスをコーディングする一例を示す概念図。 遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンスをコーディングする例示的な技法を示す図。
[0031]ビデオコーディングデバイスは、空間的冗長性または時間的冗長性を利用することによってビデオデータを圧縮することを試み得る。たとえば、ビデオエンコーダは、隣接する、前にコーディングされたブロックに対してブロックをコーディングすることによって空間的冗長性を利用し得る。同様に、ビデオエンコーダは、前にコーディングされたフレームのデータに対してブロックをコーディングすることによって時間的冗長性を利用し得る。特に、ビデオエンコーダは、空間的ネイバーのデータから、または前にコーディングされたフレームのデータから現在のブロックを予測し得る。ビデオエンコーダは、次いで、ブロックの残差を、ブロックの実際のピクセル値と、ブロックの予測ピクセル値との間の差分として計算し得る。したがって、ブロックの残差は、ピクセル(または空間的)領域におけるピクセルごとの差分値を含み得る。
[0032]ビデオエンコーダは、次いで、残差の値に変換を適用して、ピクセル値のエネルギーを周波数領域における比較的小さい数の変換係数に圧縮し得る。ビデオエンコーダは、次いで、変換係数を量子化し得る。ビデオエンコーダは、量子化変換係数を走査して、量子化変換係数の2次元行列を、量子化変換係数を含む1次元ベクトルに変換し得る。係数を走査するプロセスは、係数を直列化することと呼ばれることがあるある。
[0033]ビデオエンコーダは、次いで、走査された係数をエントロピー符号化するためにエントロピーコーディングプロセスを適用し得る。例示的なエントロピーコーディングプロセスは、たとえば、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは他のエントロピー符号化方法を含み得る。ビデオエンコーダはまた、ビデオデータを復号する際にビデオデコーダが使用するために、符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0034]ビデオデコーダは、ビデオエンコーダによって実行される符号化技法とは概して逆の技法を実行し得る。概して逆であるが、ビデオデコーダは、場合によっては、ビデオエンコーダビデオデコーダによって実行される技法と同様の技法を実行し得る。ビデオデコーダはまた、ビデオエンコーダに関して説明するデータを含む受信ビットストリーム中に含まれているシンタックス要素または他のデータに依拠し得る。
[0035]一例として(CABAC)に関して、ビデオコーダ(ビデオエンコーダおよび/またはビデオデコーダ)は、ビデオデータのブロックに関連するシンボルをコーディングするためにコンテキストに作用する確率モデルまたは「コンテキストモデル」を選択し得る。たとえば、エンコーダにおいて、確率モデルを使用することによってターゲットシンボルがコーディングされ得る。デコーダにおいて、確率モデルを使用することによってターゲットシンボルがパースされ得る。コンテキストは、たとえば、現在コーディングされているシンボルに隣接するシンボルについて値が0であるのか非0であるのかに関係し得る。
[0036]いくつかの例によれば、ビデオブロック中の有効係数(すなわち、非0変換係数)の位置は、変換係数の「レベル」と呼ばれることがある、変換係数の値より前に符号化され得る。有効係数のロケーションをコーディングするプロセスは、有効性マップコーディングと呼ばれることがある。有効性マップ(SM:significance map)は、有効係数のロケーションを示す2進値の2次元アレイを含む。
[0037]たとえば、ビデオデータのブロックについてのSMは、1および0の2次元アレイを含み得、1は、ブロック内の有効変換係数の位置を示し、0は、ブロック内の非有効(0値)変換係数の位置を示す。1および0は「有効係数フラグ」と呼ばれる。さらに、いくつかの例では、SMは1および0の別の2Dアレイを含み得、1は、ブロックに関連する走査順序に従うブロック内の最後有効係数の位置を示し、0は、ブロック内のすべての他の係数の位置を示す。この場合、1および0は「最後有効係数フラグ」と呼ばれる。他の例では、そのような最後有効係数フラグは使用されない。むしろ、ブロック中の最後有効係数は、SMの残りを送る前に最初にコーディングされ得る。いずれの場合も、ビデオデータのブロックのためのSMコーディングは、ブロックをコーディングするために使用されるビデオビットレートのかなりの割合を消費し得る。
[0038]SMがコーディングされた後に、ビデオコーダは、各変換係数のレベルをエントロピーコーディングし得る。たとえば、ビデオコーダは、各非0変換係数の絶対値を2進形態に変換し得る。このようにして、各非0変換係数は、たとえば、1つまたは複数のビットまたは「ビン」を備える単項コードを使用して、「2値化」され得る。さらに、ビデオデコーダがビデオデータを復号することを可能にするために、いくつかの他の2値化されたシンタックス要素が含まれ得る。
[0039]ビデオコーダは、ブロックの変換係数に対応するのかシンタックス情報に対応するのかにかかわらず、ビデオデータのブロックのための各ビンの確率推定値を使用して各ビンをコーディングし得る。確率推定値は、ビンが所与の2進値(たとえば、「0」または「1」)を有する可能性を示し得る。確率推定値は、「コンテキストモデル」とも呼ばれる確率モデル内に含まれ得る。ビデオコーダは、ビンのコンテキストを決定することによって確率モデルを選択し得る。シンタックス要素のビンのコンテキストは、前にコーディングされた隣接シンタックス要素の関係するビンの値を含み得る。
[0040]一例として、ブロックの各有効係数フラグのコンテキストは、ブロックのタイプ(たとえば、ブロックサイズ)と、ブロックに関連する走査順序に従うブロック内のそれぞれのフラグに対応する係数の位置とを含む。別の例として、ブロックの2値化された残差変換係数絶対値の各ビンのためのコンテキストは、絶対値を表す単項(unary)コードワード内のビンの位置と、ブロックの、前にコーディングされた係数の値とを含む。他の例では、シンタックス要素(たとえば、コード化ブロックパターン(coded block pattern)、または「CBP」)のビンのコンテキストは、たとえば、現在のシンタックス要素の上部および左側にある、前にコーディングされた隣接シンタックス要素の関係するビンの値を含む。いずれの場合も、コンテキストごとに異なる確率モデルが定義される。ビンをコーディングした後に、確率モデルは、最新の確率推定値を反映するために、ビンの値に基づいてさらに更新される。
[0041]ビデオデータのブロックに関連するビンは、1つまたは複数のコーディング「パス」においてコーディングされ得る。たとえば、第1のパス中に、ビデオコーダがSMをエントロピーコーディングし得る。第2のパス中に、ビデオコーダは、変換係数レベルの第1のビンをエントロピーコーディングし得る。ビデオコーダは、ブロックの変換係数に関連する情報のすべてがコーディングされるまで、コーディングパスを実行し続け得る。いくつかの例では、ビデオコーダは、コンテキスト適応型コーディングと非コンテキスト適応型コーディングとの組合せを使用してビデオデータのブロックのビンをコーディングし得る。たとえば、1つまたは複数のパスについて、ビデオコーダは、標準算術コーディングプロセスをバイパスまたは省略するためにバイパスモードを使用し得る。そのような場合、バイパスコード化ビンをコーディングするために固定の等確率モデルが使用され得る。バイパスコード化ビンは、コンテキスト更新または確率更新を含まない。
[0042]コンテキスト適応型コーディングを実行するとき、いくつかの例では、複数のフィードバックループに起因する比較的高い直列依存性があり得る。たとえば、ビンをコーディングするための特定の確率モデルを示すコンテキストは、前にコーディングされたビン、たとえば、前にコーディングされたシンタックス要素の関係するビンの値によって影響され得る。さらに、ビンをコーディングするために使用される確率モデルも、前にコーディングされたビンの値によって影響され得る。すなわち、確率モデルは、有限状態機械における状態として維持され得る。各特定の状態は特定の確率値に対応し得る。確率モデルの更新に対応する次の状態は、現在のビン(たとえば、現在コーディングされているビン)の値に依存し得る。
[0043]したがって、前にコーディングされたビンの値は、少なくとも部分的に、ビンが所与の値を有する確率を示すので、確率モデル内の確率推定値は、前にコーディングされたビンの値によって影響され得る。その結果、コンテキスト適応型コーディング(たとえば、CABAC)は直列方式で、たとえば、ビン単位で実行される。たとえば、特定のコンテキストがそれに対し決定される現在のビンをコーディングした後に、そのコンテキストに対応する確率モデルは、同じコンテキストがそれに対し決定され、したがって、同じ確率モデルに対応する、次のビンをコーディングする前に更新されなければならない。
[0044]一例として、ビデオデータのブロックのビンのシーケンス(たとえば、ビン(0)、ビン(1)、...ビン(n))が、同じ確率モデル(たとえば、確率モデルA)を使用して連続してコーディングされ得る。言い換えれば、(たとえば、コンテキストインデックスctx(0)、ctx(1)、...ctx(n)を使用して示される)ビンについて導出されるコンテキストが、それぞれのビンをコーディングするために使用される同じ確率モデルにそれぞれ対応し得る。この例では、ビンのうちの所与の1つをコーディングした後に、確率モデルは、後続のビンをコーディングするために確率モデルが使用され得る前に、ビンの値に基づいて更新されなければならない。確率モデルを更新することにより、所与の値を有するモデルを使用してコーディングされたビンの最新の確率を反映するモデルが得られる。したがって、上記で説明したように、ブロックについて、前のコーディングサイクル、すなわち、前のビンのコーディングの完了後に更新された確率モデルを使用してビデオデータのブロックのための特定のビンをコーディングすることにより、連続するコーディングサイクル間に遅延が生じ得る。特に、前のビンをコーディングした直後に、特定のビンをコーディングするために、確率モデルが直ちに利用できないことがある。その結果、ビンのシーケンスのコーディングは、他の方法を使用したシーケンスのコーディングほど合理的でないことがある。これらの場合、コーディング効率が悪くなり得る。
[0045]さらに、上述のように、特定の確率モデルは、特定の確率値に対応する各特定の状態とともに、有限状態機械における状態として維持され得る。確率モデルの更新に対応する次の状態は、現在のビンの値に依存し得る。状態更新と呼ばれることがあるそのようなフィードバックループは、計算ボトルネックを提示し得る。たとえば、フィードバックループにおける依存性によりスループットを増加させることが困難であり得る。すなわち、あるビンは、前のビンからの確率モデルが更新されるまで処理されないことがある。いくつかの例では、同じコンテキストインデックスが高い頻度で連続的に(ビンごとに)呼び出され得る。一例では、コーダによって符号化される全ビンの25%から35%まで表現し得る、有効性フラグコーディングのためのコンテキストが連続的に呼び出され得る。同じコンテキストを繰り返し呼び出し、各ビン後にモデルを更新するのを待つことにより、全コーダのスループットのボトルネックが提示され得る。
[0046]上記で説明したコンテキスト更新ボトルネックを回避するために、いくつかの例では、ビデオコーダは、いくつかの統計値を記憶し、ビデオデータのブロック全体をコーディングした後に1つまたは複数のコンテキストを更新し得る。たとえば、各ビンをコーディングするためのコンテキストを更新するのではなく、ビデオコーダは、各コンテキストに関連する確率の確率統計値をビデオデータのブロックのためのメモリに記憶し得る。したがって、ブロックの各ビンをコーディングするための確率は変化せず、ブロックループ内で更新された確率への依存性がない。ブロックのコーディング後に、ブロックのコーディング中に更新された記憶されている確率(たとえば、コンテキストの状態)は、次のブロックのための現在の確率に設定される。このようにして、各ビン後にコンテキスト確率を更新する代わりに、現在のブロックのためのビンのコーディングにおいて使用されたコンテキストの確率モデルが、現在のブロックの終わりに1回更新される。ただし、確率はビンごとに更新されず、したがってあまり正確でないことがあるので、全体的なコーディング性能は低下し得る。
[0047]本開示の態様は、各ビン後に確率モデルを更新することなしに、確率モデルがビデオデータの全ブロック後よりも頻繁に更新され得るように、確率更新プロセスの粒度を増加させることに関係する。たとえば、本開示の態様は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後に確率を更新することに関係する。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、1つのサブセットのビンの並列処理を可能にし得る。
[0048]一例では、ビデオコーダが、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。サブセットを決定した後に、ビデオコーダは、各サブセットに対して(たとえば、CABAC、PIPE、または別のコーディング方法などの)コンテキスト適応型コーディングを実行し得る。すなわち、たとえば、ビデオコーダは、第1のサブセットの変換係数の有効性マップと、係数レベルと、係数符号とをコーディングするためのコーディングパスを実行し得る。ビデオコーダは、次いで、次のサブセットに移り、コーディングプロセスを繰り返し得る。ビデオコーダは、ブロック全体がコーディングされるまで、ブロックの各サブセットをコーディングし続け得る。
[0049]本開示の態様によれば、コンテキストに関連する確率を更新することは、各サブセットのコーディングにリンクされ得る。たとえば、ビデオコーダは、変換係数のサブセットをコーディングしながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットをコーディングした後に、ビデオコーダは、記憶された確率統計値を使用してサブセットのコーディング中に使用される各コンテキストの確率モデルを更新し得る。ビデオコーダは、変換係数の次のサブセットをコーディングするために、更新された確率を使用し得る。このようにして、ビデオコーダは、サブセットのコーディング中に確率を更新することなしに各サブセットの変換係数をコーディングし得る。
[0050]ビデオコーダは、サブセットを様々な方法で決定し得る。一例では、サブセットは、所定の数のビンを走査順序(たとえば、ビデオデータのブロックの変換係数が直列化される順序)で含み得る。説明のための一例では、8×8ブロックの変換係数(たとえば、64個の総係数)の場合、第1のサブセットは、第1の16個の係数を走査順序で含み得、第2のサブセットは、第2の16個の係数を走査順序で含み得、第3のサブセットは、第3の16個の係数を走査順序で含み得、第4のサブセットは、ブロックの最後の16個の係数を走査順序で含み得る。ビデオコーダは、走査方向/順序(たとえば、水平、垂直、対角、ジグザグ、適応型など)にかかわらず、このようにしてサブセットを決定し得る。この例では、本開示の態様によれば、ビデオコーダは、各サブセットのすべてのビンを走査順序でコーディングした後に確率を更新し得る。
[0051]別の例では、ビデオコーダは、変換係数のブロックを複数のサブブロックに分割することによってサブセットを決定し得る。説明のための一例では、ビデオコーダは、8×8ブロックの変換係数(たとえば、64個の総係数)を4つの4×4サブブロックに分割し得る。ビデオコーダは、特定の走査順序(たとえば、水平、垂直、対角、ジグザグ、適応型など)を使用してサブブロックの各々を走査し得る。走査順序は、サブブロックの各々について同じであるかまたは異なり得る。この例では、ビデオコーダは、各サブブロックのすべてのビンをコーディングした後に確率を更新し得る。
[0052]特定のサブセットのビンのすべてがコーディングされた後まで確率を更新するのを待つのではなく、本開示の態様によれば、別の例では、ビデオコーダは、各サブセットの各コーディングパス後に確率を更新し得る。この例では、ビデオコーダは、サブセット内の1つのパスの確率モデルの更新プロセスを、サブセットの他のパスと並列化し得る。たとえば、ビデオコーダは、変換係数のサブセットのための有効性情報のビンの確率を更新しながら、当該サブセットの別のコーディングパス中に係数レベルのビン1をコーディングし得る。この例では、あるパスのコンテキストは、サブセット内の他のパスをコーディングするために使用され得ない。
[0053]他の例では、ビデオコーダは、サブセットのビンの所定数をコーディングした後に確率を更新し得る。たとえば、ビデオコーダは、変換係数レベルをコーディングするより前に有効性マップをコーディングし得る。そのような一例では、ビデオコーダは、有効性マップをコーディングし、有効性マップをコーディングした後に確率を更新し得る。ビデオコーダは、次いで、変換係数に関連する残りの情報(たとえば、符号、レベルなど)をコーディングし得る。ビデオコーダがlast_xシンタックス要素とlast_yシンタックス要素の両方をコーディングする例では、ビデオコーダは、最後有効係数のlast_xとlast_yの両方をコーディングした後に確率を更新するか、またはビデオエンコーダは、last_xとlast_yとの各々をコーディングした後に確率を更新し得る。
[0054]本開示の技法は、(たとえば、変換係数の各フルブロックの後にのみコンテキストを更新することと比較して)コーディング性能を維持しながら、(たとえば、各ビンの後にコンテキストを更新することと比較して)ビンを並列に処理する能力を高めるために適用され得る。たとえば、本開示の技法は、1つのサブセットの2つ以上のビンが並列にコーディングされ得るので、コーディング並列化を向上させ得る。本開示の技法はまた、各サブセット後に更新される確率が、ブロックの終わりに更新される確率よりも、1つのブロックのいくつかの変換係数をコーディングするために正確であり得るので、コーディング効率を促進し得る。
[0055]本開示のいくつかの態様はまた、並列化エントロピーコーディングのための技法に関係する。たとえば、本開示の技法は、前のビンをコーディングするより前に更新された確率モデルを使用してデータのビンをコーディングすることを含む。すなわち、確率モデルは、現在のビンをコーディングするより少なくとも2コーディング反復またはサイクル前に更新され得る。したがって、本開示の技法は、複数の連続するビンが同じ確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。いくつかの例では、そのような技法は、ビデオデータのブロックのビンを並列にコーディングするために適用され得る。たとえば、本開示の技法は、確率更新を比較的正確な確率のために依然として維持しながら、変換係数のフルブロックをコーディングした後になど、より低い頻度で確率モデルを更新することに関連する性能劣化を回避し得る。
[0056]説明のための一例では、ビデオデータのブロックのビンのシーケンス、たとえば、ビン(0)、ビン(1)、...、ビン(n−1)、およびビン(n)が、コンテキスト適応型エントロピーコーディングプロセス、たとえば、CABACプロセスを実行することによって連続してコーディングされると仮定する。この例では、ビンのうちのいずれか1つについて決定されるコンテキストに対応する確率モデルは、コンテキストバッファまたは「ctxBuffer」中に含まれる。ビン(n)について決定されるコンテキストに対応する確率モデルがctxBuffer(n)中に含まれるとする。確率モデルは、初期状態によって定義され得、前に説明したように、前にコーディングされたビン、すなわちビン(0)、ビン(1)、...、ビン(n−1)によって影響され得る。
[0057]本開示の態様によれば、ビデオコーダは、ビン(n)をコーディングするために、ctxBuffer(n−K)中に含まれる確率モデルを使用し得る。インデックス「K」は、任意の正の非0整数値に等しくなり得る。たとえば、「1」の「K」値について、コンテキストバッファctxBuffer(n−1)は、現在のコーディングサイクルより2コーディングサイクル前に更新された確率モデルを含む。特に、ctxBuffer(n−1)中に含まれる確率モデルは、ビン(n−2)をコーディングした後に更新されたctxBuffer(n−2)中に含まれる確率モデルである。このように確率モデルを更新することは、確率更新の間に遅延の1つまたは複数のサイクルが導入されるので、遅延状態更新と呼ばれることがある。
[0058]上記で説明した例では、ctxBuffer(n−1)中に含まれる確率モデルは、更新により、ビン(n−1)をコーディングするために直ちに利用できないが、モデルは、1コーディングサイクル後にビン(n)をコーディングするために利用可能である(たとえば、ビン(n)がコーディングされる時間までには更新が完了する)。したがって、コーダは、ビン(n)をコーディングするために、ctxBuffer(n−1)中に含まれる確率モデルが、前のコーディングサイクル中にコーディングされたビン(n−1)に基づいてさらに更新されるまで待つ必要がない。したがって、本開示の態様は、確率更新に関連する遅延を回避し、2つ以上のビンが並列にコーディングされることを可能にし得る。
[0059]いくつかの例では、シーケンスの第1および第2のビンをコーディングするために初期確率モデルが使用される。たとえば、所与のシーケンスのビン(0)とビン(1)が両方ともctxBuffer(0)を使用してコーディングされ得る。ビン(0)は、前に更新された確率モデルが存在しないので、このようにコーディングされ得る。ビン(1)は、ビン(0)の値に基づいてctxBuffer(0)中に含まれる確率モデルを更新することに起因し得る、上記で説明した確率更新遅延を回避するために、このようにコーディングされ得る。
[0060]さらに、コンテキスト区分が使用される例では、本開示の技法はコンテキストパーティションごとに適用され得る。たとえば、シンタックス区分において、ビンがシンタックス要素に基づいてグループ化され、異なるパーティション中に入れられ、次いで、それらのパーティションが、(たとえば、V. SzeおよびA. P. Chandrakasan、「A high throughput CABAC algorithm using syntax element partitioning」、IEEE International Conference on Image Processing、pp. 773-776、2009に記載されているように)並列に処理される。そのような場合、状態更新を遅延させる概念は各パーティションに適用される。たとえば、1つのパーティションが、残差変換係数コーディングのために使用されるすべてのコンテキストを含んでおり、別のパーティションが残りのコンテキストを含んでいる場合、遅延コンテキスト更新は、この例では、各パーティションに別々に適用され得る。
[0061]上記で説明した、遅延状態更新に関する本開示の態様は、1つまたは複数のタイプのビンに適用され得る。たとえば、遅延状態更新技法は、変換係数レベルをコーディングするために使用されるコンテキストのためにのみ適用され得る。別の例では、遅延状態更新技法は、有効性マップコーディングのためにのみ使用され得る。
[0062]したがって、本開示の技法は、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。さらに、本開示の技法は、変換係数のフルブロックをコーディングした後になど、より低い頻度で確率モデルを更新することに関連する性能劣化を回避し得る。いくつかの例では、本開示で説明する技法は、独立して使用され得るかまたは任意の組合せで一緒に使用され得る。
[0063]上記ではバイナリビデオコーディングに関して説明したが、遅延状態更新技法は、概して、他のデータの他の算術コーディングに適用され得ることを理解されたい。
[0064]たとえば、確率モデル中に3つ以上のシンボルが含まれる事例では、単純な状態更新を実行することが実現可能でないことがある。したがって、遅延状態更新を実行するのではなく、本開示の態様は、遅延確率更新を実行することを含む。
[0065]一例として、説明のために、シンボルのシーケンス、たとえば、シンボル(0)、シンボル(1)、...、シンボル(n)などが符号化または復号されていると仮定する。シンボルは、ビデオデータ、オーディオデータ、または任意の他のデータによって生成され得る。さらに、各シンボルは、A、B、C、およびDによって示される4つの値を取り得ると仮定する。さらに、各シンボルに異なるコンテキストモデルが関連付けられ得るが、説明のために、すべてのシンボルが同じコンテキストを使用すると仮定する。さらに、コンテキストごとに別個の確率モデル(たとえば、A、B、C、およびDのための確率)が維持されると仮定する。通常、シンボル(0)がコーディングされた後に、コンテキスト(0)の確率モデルは、シンボル(0)の実際値を考慮するために更新され得る。ただし、本開示の態様によれば、確率モデル更新プロセスは、1つまたは複数の将来のシンボルがコーディングされるようになるまで遅延され得る。たとえば、1の遅延について、(たとえば、シンボル(0)をコーディングした後に)更新されたモデルは、シンボル(2)をコーディングするために利用可能である。
[0066]したがって、いくつかの例では、バイナリコーディングに関して、より詳細にはビデオデータのCABACコーディングに関して説明することがあるが、本開示の技法は、より一般に算術コーディングに適用可能である。すなわち、上記で説明した遅延状態および/または確率更新技法は、コンテキスト適応型であることもないこともあり得る、多値算術コーディング方式に全般的に適用され得る。
[0067]図1は、コンテキスト適応型コーディングのための本開示で説明する技法を利用するように構成され得る、例示的なビデオ符号化および復号システム10を示すブロック図である。図1の例に示すように、システム10は、宛先デバイス14によって復号するための符号化ビデオを生成するソースデバイス12を含む。ソースデバイス12は、通信チャネル16を介して宛先デバイス14に符号化ビデオを送信するか、あるいは、必要に応じて符号化ビデオが宛先デバイス14によってアクセスされ得るように記憶媒体34またはファイルサーバ36に符号化ビデオを記憶し得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソールなどを含む、多種多様なデバイスのいずれかを備え得る。
[0068]多くの場合、そのようなデバイスはワイヤレス通信が可能であり得る。したがって、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。たとえば、通信チャネル16は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0069]本開示で説明する技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0070]図1の例にさらに示すように、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含む。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイスなどのソースを含み得る。ビデオキャプチャデバイスは、例として、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムのうちの1つまたは複数を含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らず、ビデオ符号化および/または復号機能を含む非ワイヤレスデバイスに適用され得る。ソースデバイス12および宛先デバイス16は、本明細書で説明する技法をサポートすることができるコーディングデバイスの例にすぎない。
[0071]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、ワイヤレス通信プロトコルなどの通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
[0072]また、ビデオエンコーダ20によって符号化された、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、後の消費のために記憶媒体34またはファイルサーバ36上に記憶され得る。記憶媒体34は、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶媒体34に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス14によってアクセスされ得る。
[0073]ファイルサーバ36は、符号化ビデオを記憶することと、その符号化ビデオを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または符号化ビデオデータを記憶し、それを宛先デバイスに送信することが可能な任意の他のタイプのデバイスを含む。ファイルサーバ36は、インターネット接続を含む任意の標準データ接続を通して宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ファイルサーバ36からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0074]本開示では、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及し得る。ただし、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分のヘッダに記憶することによってデータを「シグナリング」し得る。場合によっては、そのようなシンタックス要素は、ビデオデコーダ30によって受信され、復号されるより前に、符号化され、記憶され得る(たとえば、記憶媒体34またはファイルサーバ36に記憶され得る)。したがって、「シグナリング」という用語は、通信が、リアルタイムまたはほぼリアルタイムで行われるか、あるいは、符号化時に媒体にシンタックス要素を記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときなどに行われ得る、ある時間期間にわたって行われるかにかかわらず、概して、圧縮ビデオデータを復号するためのシンタックスまたは他のデータの通信を指し得る。
[0075]宛先デバイス14は、図1の例では、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。宛先デバイス14の受信機26はチャネル16を介して情報を受信し、モデム28は、その情報を復調して、ビデオデコーダ30のための復調されたビットストリームを生成する。チャネル16を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ30が使用する、ビデオエンコーダ20によって生成された様々なシンタックス情報を含み得る。また、そのようなシンタックスは、記憶媒体34またはファイルサーバ36に記憶された符号化ビデオデータに含まれ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、ビデオデータを符号化または復号することが可能である、それぞれのエンコーダデコーダ(コーデック)の一部を形成し得る。
[0076]ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み得、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0077]ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(HEVC)規格などのビデオ圧縮規格に従って動作し得、HEVCテストモデル(HM:HEVC Test Model)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part10、アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、MPEG−2およびITU−T H.263がある。
[0078]HEVC規格では、ビデオデータのブロックをコーディングユニット(CU)と呼ぶ。概して、CUは、CUがサイズ差異を有しないことを除いて、H.264に従ってコーディングされたマクロブロックと同様の目的を有する。したがって、CUはサブCUに分割され得る。概して、本開示におけるCUへの言及は、ピクチャの最大コーディングユニット(LCU)またはLCUのサブCUを指すことがある。たとえば、ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大のコーディングユニットであるLCUを定義し得る。LCUはサブCUに分割され得、各サブCUはサブCUに分割され得る。ビットストリームのシンタックスデータは、最大CU深さと呼ばれる、LCUが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。
[0079]LCUは階層4分木データ構造に関連付けられ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードがLCUに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。
[0080]分割されないCUは、1つまたは複数の予測ユニット(PU:prediction unit)を含み得る。概して、PUは、対応するCUの全部または一部分を表し、そのPUの参照サンプルを取り出すためのデータを含む。たとえば、PUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルが指す参照フレーム、および/または動きベクトルの参照リスト(たとえば、リスト0もしくはリスト1)を記述し得る。(1つまたは複数の)PUを定義するCUのデータはまた、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかの間で異なり得る。
[0081]1つまたは複数のPUを有するCUはまた、1つまたは複数の変換ユニット(TU:transform unit)を含み得る。PUを使用した予測の後に、ビデオエンコーダは、PUに対応するCUの部分の残差値を計算し得る。残差値は変換され、量子化され、走査され得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、同じCUの対応するPUよりも大きいことも小さいこともある。いくつかの例では、TUの最大サイズは、対応するCUのサイズであり得る。本開示ではまた、CU、PU、またはTUのいずれかを指すために「ブロック」という用語を使用する。
[0082]上記で説明したように、概して、符号化ビデオデータは予測データと残差データとを含み得る。ビデオエンコーダ20は、イントラ予測モードまたはインター予測モード中に予測データを生成し得る。イントラ予測は、概して、あるピクチャのブロック中のピクセル値を、同じピクチャの隣接する、前にコーディングされたブロック中の参照サンプルに対して予測することを伴う。インター予測は、概して、あるピクチャのブロック中のピクセル値を、前にコーディングされたピクチャのデータに対して予測することを伴う。
[0083]イントラ予測またはインター予測の後に、ビデオエンコーダ20はブロックの残差ピクセル値を計算し得る。残差値は、概して、ブロックの予測ピクセル値データと、ブロックの真のピクセル値データとの間の差分に対応する。たとえば、残差値は、コード化ピクセルと予測ピクセルとの間の差分を示すピクセル差分値を含み得る。いくつかの例では、コード化ピクセルは、コーディングされるべきピクセルのブロックに関連し得、予測ピクセルは、コード化ブロックを予測するために使用されるピクセルの1つまたは複数のブロックに関連し得る。
[0084]ブロックの残差値をさらに圧縮するために、残差値は、(「エネルギー」とも呼ばれる)できるだけ多くのデータをできるだけ少数の係数に構成する変換係数のセットに変換され得る。変換技法は、離散コサイン変換(DCT)プロセスまたは概念的に同様のプロセス、整数変換、ウェーブレット変換、または他のタイプの変換を備え得る。その変換は、ピクセルの残差値を空間領域から変換領域に変換する。変換係数は、元のブロックと通常同じサイズである係数の2次元行列に対応する。言い換えれば、残差データの元のブロック中のピクセルとちょうど同数の変換係数がある。ただし、変換により、変換係数の多くは、0に等しい値を有し得る。
[0085]ビデオエンコーダ20は、次いで、ビデオデータをさらに圧縮するために変換係数を量子化し得る。量子化は、概して、相対的に大きい範囲内の値を相対的に小さい範囲中の値にマッピングし、それによって、量子化変換係数を表すために必要とされるデータの量を低減することを伴う。より詳細には、量子化は、量子化中に変換係数に適用される量子化器ステップサイズにインデックス付けされ得る、量子化パラメータ(QP:quantization parameter)に従って適用され得る。
[0086]量子化の後に、ビデオエンコーダ20は、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。ビデオエンコーダ20は、次いで、データをなお一層圧縮するために、得られたアレイをエントロピー符号化し得る。概して、エントロピーコーディングは、量子化変換係数のシーケンスおよび/または他のシンタックス情報をまとめて圧縮する、1つまたは複数のプロセスを備える。たとえば、ΔQP、予測ベクトル、コーディングモード、フィルタ、オフセット、または他の情報など、シンタックス要素はまた、エントロピーコード化ビットストリーム中に含まれ得る。走査された係数は、次いで、たとえば、CAVLC、CABAC、PIPE、または別のエントロピーコーディングプロセスを介して、任意のシンタックス情報とともにエントロピーコーディングされる。
[0087]CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルの可変長コードを選択し得る。VLCのコードワードは、相対的により短いコードがより可能性が高いシンボルに対応し、より長いコードがより可能性が低いシンボルに対応するように構築され得る。このようにして、VLCを使用することにより、たとえば、送信されるべきシンボルごとに等長コードワードを使用する場合よりもビットレート節約が達成され得る。
[0088]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストモデルを選択し得る。コンテキストは、たとえば、隣接値が非0であるか否かに関係し得る。ビデオエンコーダ20はまた、適応型走査を実行するときに生成される有効係数フラグおよび最後係数フラグなど、シンタックス要素をエントロピー符号化し得る。
[0089]概して、ビデオデコーダ30によって実行されるビデオ復号プロセスは、ビデオエンコーダ20によって実行される符号化技法とは逆の技法を含み得る。概して逆であるが、ビデオデコーダ30は、場合によっては、ビデオエンコーダ20によって実行される技法と同様の技法を実行することがある。ビデオデコーダ30はまた、ビデオエンコーダ20に関して説明したデータを含む受信ビットストリーム中に含まれているシンタックス要素または他のデータに依拠し得る。
[0090]本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後にエントロピーコーディング中に使用される確率モデルを更新し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、ブロック全体がコーディングされるまで、ブロックの各サブセットをコーディングし続け得る。本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、各サブセットをコーディングした後に、コンテキストに関連する確率を更新し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、変換係数のサブセットをコーディングしながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットをコーディングした後に、ビデオエンコーダ20および/またはビデオデコーダ30は、記憶された確率統計値を使用してサブセットのコーディング中に使用される各コンテキストの確率モデルを更新し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、変換係数の次のサブセットをコーディングするために、更新された確率を使用し得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、サブセットのコーディング中に確率を更新することなしに各サブセットの変換係数をコーディングし得る。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
[0091]他の例では、本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、並列化エントロピーコーディングのための他の技法を実行し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのブロックの前のビンをコーディングするより前に更新された確率モデルを使用してブロックのビンをコーディングし得る。すなわち、ビデオエンコーダ20および/またはビデオデコーダ30は、現在のビンをコーディングするより少なくとも2コーディング反復またはサイクル前に確率モデルを更新し得る。したがって、ビデオエンコーダ20および/またはビデオデコーダ30は、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。
[0092]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0093]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0094]図2は、コンテキスト適応型コーディングのための本開示の技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。図2のいくつかの構成要素は、概念的な目的のために単一の構成要素に関して図示および説明されることがあるが、1つまたは複数の機能ユニットを含み得ることを理解されたい。さらに、図2のいくつかの構成要素は、単一の構成要素に関して図示および説明されることがあるが、そのような構成要素は、物理的に1つまたは2つ以上の個別および/または一体型ユニットから構成され得る。
[0095]図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオピクチャ内の現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、動き補償ユニット44と、動き推定ユニット42と、参照フレームストア64と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。
[0096]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオピクチャまたはスライスを受信する。ピクチャまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信ビデオブロックのインター予測コーディングを実行する。すなわち、動き推定ユニット42は、異なる時間インスタンスの1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信ビデオブロックのインター予測コーディング、たとえば、同じビューの1つまたは複数の参照フレームを使用した動き推定を実行し得る。さらに、動き推定ユニット42は、同じ時間インスタンスの1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信ビデオブロックのインター予測コーディング、たとえば、異なるビューの1つまたは複数の参照フレームを使用した動き視差を実行し得る。
[0097]イントラ予測ユニット46は、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信ビデオブロックのイントラ予測コーディングを実行し得る。モード選択ユニット40は、たとえば誤差結果に基づいて、コーディングモード、すなわち、イントラまたはインターのうちの1つを選択し得、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に与え、参照フレーム中で使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に与える。
[0098]動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在フレーム(または、他のコード化ユニット)内でコーディングされている現在ブロックに対する予測参照フレーム(または、他のコード化ユニット)内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定ユニット42によって決定された動きベクトル(または変位ベクトル)に基づいて予測ブロックをフェッチまたは生成することを伴い得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。
[0099]動き推定ユニット42は、ビデオブロックを参照フレームストア64中の参照フレームのビデオブロックと比較することによってインターコード化ピクチャのビデオブロックの動きベクトルを計算し得る。動き補償ユニット44はまた、参照フレーム、たとえば、IフレームまたはPフレームのサブ整数ピクセルを補間し得る。ITU−T H.264規格では、参照フレームの「リスト」、たとえば、リスト0およびリスト1に言及する。リスト0は、現在ピクチャよりも前の表示順序を有する参照フレームを含むが、リスト1は、現在ピクチャよりも後の表示順序を有する参照フレームを含む。他のコーディング方式では、単一のリストが維持され得る。
[0100]動き推定ユニット42は、参照フレームストア64からの1つまたは複数の参照フレームのブロックを、現在ピクチャ、たとえば、PピクチャまたはBピクチャの符号化されるべきブロックと比較する。参照フレームストア64中の参照フレームがサブ整数ピクセルの値を含むとき、動き推定ユニット42によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。動きベクトルによって識別される参照フレームブロックは予測ブロックと呼ばれることがある。動き補償ユニット44は、参照フレームの予測ブロックの残差誤差値を計算する。
[0101]変換ユニット52は、離散コサイン変換(DCT)、整数変換、または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換ユニット52は、概念的にDCTと同様である、H.264規格によって定義される変換など、他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換ユニット52は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
[0102]量子化ユニット54は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深さを低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。たとえば、量子化は、概して、相対的に大きい範囲内の値を相対的に小さい範囲中の値にマッピングし、それによって、量子化変換係数を表すために必要とされるデータの量を低減することを伴う。ビデオエンコーダは、あらかじめ定義されたアルゴリズムに従って量子化パラメータ(QP)を適用することによって変換係数を量子化し得る。ビデオエンコーダは、QPを調整することによって、変換係数値に適用される量子化の程度を変更し得る。
[0103]量子化の後に、エントロピー符号化ユニット56は、量子化変換係数を走査し、エントロピーコーディングする。エントロピー符号化ユニット56は、CAVLC、CABAC、PIPE、または別のエントロピーコーディング技法を実行し得る。エントロピー符号化ユニット56は、エントロピーコーディングを実行するとき、本開示の技法のいずれかを実行し得る。
[0104]たとえば、本開示の態様によれば、エントロピー符号化ユニット56は、ビデオデータのブロックに関連する変換係数の所定のサブセットをコーディングした後にエントロピーコーディング中に使用される確率モデルを更新し得る。たとえば、エントロピー符号化ユニット56は、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。エントロピー符号化ユニット56は、ブロック全体がコーディングされるまで、ブロックの各サブセットをコーディングし続け得る。本開示の態様によれば、エントロピー符号化ユニット56は、各サブセットをコーディングした後に、コンテキストに関連する確率を更新し得る。たとえば、エントロピー符号化ユニット56は、変換係数のサブセットをコーディングしながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットをコーディングした後に、エントロピー符号化ユニット56は、記憶された確率統計値を使用してサブセットのコーディング中に使用される各コンテキストの確率モデルを更新し得る。エントロピー符号化ユニット56は、変換係数の次のサブセットをコーディングするために、更新された確率を使用し得る。このようにして、エントロピー符号化ユニット56は、サブセットのコーディング中に確率を更新することなしに各サブセットの変換係数をコーディングし得る。このようにして、本開示の技法は、コーディング性能とコーディング速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
[0105]追加または代替として、本開示の態様によれば、エントロピー符号化ユニット56は、並列化エントロピーコーディングのための他の技法を実行し得る。たとえば、エントロピー符号化ユニット56は、ビデオデータのブロックの前のビンをコーディングするより前に更新された確率モデルを使用してブロックのビンをコーディングし得る。すなわち、エントロピー符号化ユニット56は、現在のビンをコーディングするより少なくとも2コーディング反復またはサイクル前に確率モデルを更新し得る。したがって、エントロピー符号化ユニット56は、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。
[0106]場合によっては、エントロピー符号化ユニット56またはビデオエンコーダ20の別のユニットはまた、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット56は、CUおよび/またはPUのためのコード化ブロックパターン(CBP)値を決定するように構成され得る。また、場合によっては、エントロピー符号化ユニット56は、マクロブロックまたはそれのパーティション中の係数のランレングスコーディングを実行し得る。エントロピー符号化ユニット56はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素を用いてヘッダ情報を構成し得る。
[0107]逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームストア64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照フレームストア64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0108]図3は、符号化ビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット130と、動き補償ユニット132と、イントラ予測ユニット134と、逆量子化ユニット136と、逆変換ユニット138と、参照フレームストア142と、加算器140とを含む。
[0109]エントロピー復号ユニット130は、受信されたビットストリームをエントロピー復号し得る。たとえば、エントロピー復号ユニット130は、直列化された変換係数を受信し、変換係数を逆走査して変換係数の2次元アレイを生成し得る。エントロピー復号ユニット130は本開示の技法のいずれかを実装し得る。
[0110]たとえば、本開示の態様によれば、エントロピー復号ユニット130は、ビデオデータのブロックに関連する変換係数の所定のサブセットを復号した後にエントロピー復号中に使用される確率モデルを更新し得る。たとえば、エントロピー復号ユニット130は、ビデオデータのブロックに関連する変換係数を複数のサブセットに分割し得る。エントロピー復号ユニット130は、ブロック全体が復号されるまで、ブロックの各サブセットを復号し続け得る。本開示の態様によれば、エントロピー復号ユニット130は、各サブセットを復号した後に、コンテキストに関連する確率を更新し得る。たとえば、エントロピー復号ユニット130は、変換係数のサブセットを復号しながら、適用される確率モデルに関連する統計値を収集し、記憶し得る。サブセットを復号した後に、エントロピー復号ユニット130は、記憶された確率統計値を使用してサブセットの復号中に使用される各コンテキストの確率モデルを更新し得る。エントロピー復号ユニット130は、変換係数の次のサブセットを復号するために、更新された確率を使用し得る。このようにして、エントロピー復号ユニット130は、サブセットの復号中に確率を更新することなしに各サブセットの変換係数を復号し得る。このようにして、本開示の技法は、コーディング性能と復号速度との間のバランスをとり、サブセットのビンの並列処理を可能にし得る。
[0111]追加または代替として、本開示の態様によれば、エントロピー復号ユニット130は、並列化エントロピーコーディングのための他の技法を実行し得る。たとえば、エントロピー復号ユニット130は、ビデオデータのブロックの前のビンをコーディングするより前に更新された確率モデルを使用してブロックのビンを復号し得る。すなわち、エントロピー復号ユニット130は、現在のビンを復号するより少なくとも2コーディング反復またはサイクル前に確率モデルを更新し得る。したがって、エントロピー復号ユニット130は、複数の連続するビンが確率モデルを使用して復号されるとき、そのモデルを使用してビンを復号した後にそのモデルを更新することに起因する遅延を回避し得る。
[0112]動き補償ユニット132は、エントロピー復号ユニット130から受信された動きベクトルに基づいて予測データを生成し得る。動き補償ユニット132は、ビットストリーム中で受信された動きベクトルを使用して、参照フレームストア142中の参照フレーム中の予測ブロックを識別し得る。イントラ予測ユニット134は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。
[0113]逆量子化ユニット136は、ビットストリーム中で与えられ、エントロピー復号ユニット130によって復号された量子化ブロック係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。本開示のいくつかの態様によれば、逆量子化ユニット136は、図2の例に示すビデオエンコーダ20に関して上記で説明した量子化ユニット54の方法とは概して逆の方法で動作するように構成され得る。
[0114]逆変換ユニット158は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。動き補償ユニット132は、動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット132は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルのための補間値を計算し得る。動き補償ユニット132は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0115]動き補償ユニット132は、シンタックス情報のいくつかを使用して、符号化ビデオシーケンスの(1つまたは複数の)フレームを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのフレームの各マクロブロックがどのように区分されるのかを記述するパーティション情報と、各パーティションがどのように符号化されるのかを示すモードと、各インター符号化マクロブロックまたはパーティションのための1つまたは複数の参照フレーム(またはリスト)と、符号化ビデオシーケンスを復号するための他の情報と、を決定する。
[0116]加算器140は、残差ブロックを、動き補償ユニット132またはイントラ予測ユニットによって生成される対応する予測ブロックと加算して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。復号ビデオブロックは、次いで、参照フレームストア142に記憶され、参照フレームストア142は、参照ブロックを後続の動き補償に与え、また、(図1のディスプレイデバイス32などの)ディスプレイデバイス上での提示のために復号ビデオを生成する。
[0117]図4Aおよび図4Bは、例示的な4分木150と、対応する最大コーディングユニット172とを示す概念図である。図4Aは、階層式に構成されたノードを含む、例示的な4分木150を示している。4分木150は、たとえば、提案されているHEVC規格に従ってツリーブロックに関連付けられ得る。4分木150など、4分木中の各ノードは、子をもたないリーフノードであるか、または4つの子ノードを有し得る。図4Aの例では、4分木150はルートノード152を含む。ルートノード152は、リーフノード156A〜156C(リーフノード156)とノード154とを含む、4つの子ノードを有する。ノード154はリーフノードでないので、ノード154は、この例ではリーフノード158A〜158D(リーフノード158)である、4つの子ノードを含む。
[0118]4分木150は、この例ではLCU172など、対応する最大コーディングユニット(LCU)の特性を記述するデータを含み得る。たとえば、4分木150は、それの構造により、サブCUへのLCUの分割を記述し得る。LCU172が2N×2Nのサイズを有すると仮定する。LCU172は、この例では、4つのサブCU176A〜176C(サブCU176)および174を有し、各々はN×Nサイズである。サブCU174はさらに4つのサブCU178A〜178D(サブCU178)に分割され、各々はサイズN/2×N/2である。この例では、4分木150の構造はLCU172の分割に対応する。すなわち、ルートノード152はLCU172に対応し、リーフノード156はサブCU176に対応し、ノード154はサブCU174に対応し、リーフノード158はサブCU178に対応する。
[0119]4分木150のノードのデータは、ノードに対応するCUが分割されるかどうかを記述し得る。CUが分割される場合、4分木150中に4つの追加のノードが存在し得る。いくつかの例では、4分木のノードは以下の擬似コードと同様に実装され得る。
split_flag値は、現在のノードに対応するCUが分割されるかどうかを表す1ビット値であり得る。CUが分割されない場合、split_flag値は「0」であり得るが、CUが分割される場合、split_flag値は「1」であり得る。4分木150の例に関して、分割フラグ値のアレイは101000000であり得る。
[0120]いくつかの例では、サブCU176およびサブCU178の各々は、同じイントラ予測モードを使用してイントラ予測符号化され得る。したがって、ビデオエンコーダ20は、ルートノード152においてイントラ予測モードの指示を与え得る。
[0121]図4AではCU4分木の一例を示したが、同様の4分木がリーフノードCUのTUに適用され得ることを理解されたい。すなわち、リーフノードCUは、CUのためのTUの区分を記述するTU4分木を含み得る。TU4分木は、TU4分木がCUのTUのイントラ予測モードを個々にシグナリングし得ることを除いて、概してCU4分木に似ていることがある。
[0122]図5Aおよび図5Bに、概して、エントロピーコーディング中にビデオデータのブロックに関連する変換係数を走査するための対角走査パターンを示す。すなわち、たとえば、走査パターンは、変換係数の2次元アレイを直列化するときに(ビデオエンコーダ20などの)ビデオエンコーダによって使用され得る。別の例では、走査パターンは、コーディングされた変換係数の受信された直列化アレイからビデオデータのブロックを再構成するときに、(ビデオデコーダ30などの)ビデオデコーダによって使用され得る。
[0123]たとえば、図5Aは、ビデオデータのブロックの変換係数(たとえば、TUに関連する変換係数)を走査するための順方向対角走査パターン180を示している。概して、順方向対角走査パターン180は、左から右に、および上から下に45度の角度でブロックを通過する。すなわち、図5Aに示す例では、第1の係数182はブロックの左上隅に位置するDC成分であり、走査されるべき最後係数184はブロックの右下隅に位置する。
[0124]図5Bは、ビデオデータのブロックの変換係数(たとえば、TUに関連する変換係数)を走査するための逆方向対角走査パターン186を示している。概して、逆方向対角走査パターン186は、右から左に、および下から上に45度の角度でブロックを通過する。すなわち、図5Bに示す例では、第1の係数188はブロックの右下隅に位置するDC成分であり、走査されるべき最後係数190はブロックの左上隅に位置する。
[0125]図5Aおよび図5Bに示す走査パターンは説明のために与えたものにすぎないことを理解されたい。たとえば、図5Aおよび図5Bは対角走査パターンを示しているが、ジグザグパターン、適応型走査順序、水平パターン、および垂直パターンなど、他の走査パターンが利用可能であり得る。さらに、異なる配向および/または方向のパターンを使用して、変換係数に関連する異なる成分(たとえば、有効性、符号、レベルなど)が走査され得る。たとえば、いくつかの事例では、有効性情報(たとえば、有効性マップ)が、変換係数レベルの反対方向に走査され得る。他の事例では、有効性情報と変換係数レベルとが同じ方向に走査されるような、ユニファイド走査パターンが実装され得る。
[0126]図6Aおよび図6Bに、概して、本開示の態様による、変換係数のブロックをサブセットに分割することを示す。図6Aおよび図6Bではビデオデコーダ30(図1および図3)に関して説明するが、本開示の技法は、ビデオエンコーダ20(図1および図2)、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
[0127]図6Aに関して、本開示の態様によれば、ビデオデコーダ30は、ブロック200を復号しながら、ブロック200をサブセット202、204、206、および208に走査順序で分割し得る。図6Aに示す例では、第1のサブセット202は、第1の16個の変換係数を走査順序で含み、第2のサブセット204は、次の16個の変換係数を走査順序で含み、第3のサブセット206は、次の16個の変換係数を走査順序で含み、第4のサブセット208は、最後の16個の変換係数を走査順序で含む。
[0128]本開示の態様によれば、ビデオデコーダ30は、コンテキスト適応型コーディングプロセスに関連する確率更新をサブセット202〜208にリンクし得る。たとえば、ブロック200の復号中に、ビデオデコーダ30は、初めに、確率モデルの第1のセットを使用してサブセット202を復号し得る。確率モデルの第1のセットは、サブセット202のコーディング中に更新されず、その結果、ビデオデコーダ30は確率モデルの第1のセットを使用してサブセット202全体を復号し得る。さらに、ビデオデコーダ30は、サブセット202を復号しながら、適用される確率モデルの第1のセットに関連する統計値を収集し、記憶し得る。たとえば、上述のように、ビンをコーディングするための特定の確率モデルを示すコンテキストは、前にコーディングされたビン、たとえば、前にコーディングされたシンタックス要素の関係するビンの値によって影響され得る。さらに、ビンをコーディングするために使用される確率モデルも、前にコーディングされたビンの値によって影響され得る。本開示の態様によれば、直列方式で、たとえば、ビン単位で確率モデルを更新するのではなく、ビデオデコーダ30は、コーディングされたビンに基づいてコンテキストの更新状態を記憶し得る。
[0129]本開示の態様によれば、サブセット202を復号した後に、ビデオデコーダ30は、記憶された確率統計値を使用して確率モデルの第1のセットを更新し得る。ビデオデコーダ30は、次いで、変換係数の第2のサブセット204を復号するために、この更新された確率モデルの第2のセットを使用し得る。ビデオデコーダ30は、ブロック200が復号されるまで、ブロック200をこのように復号し続け得る。すなわち、第2のサブセット204を復号した後に、ビデオデコーダ30は、第2のサブセットの復号中に記憶された統計値を使用して確率モデルを更新し、更新された確率モデルを使用して第3のサブセット206を復号し得る。その上、ビデオデコーダ30は、第4のサブセット208を復号するために同じプロセスを実行し得る。
[0130]いくつかの例では、特定のサブセットのビンのすべてがコーディングされた後まで確率モデルを更新するのを待つのではなく、ビデオデコーダ30は、各サブセットの各コーディングパス後に確率を更新し得る。この例では、ビデオデコーダ30は、サブセット内のあるパスの確率モデルの更新プロセスをサブセットの他のパスと並列化し得る。たとえば、ビデオコーダは、変換係数のサブセットのための有効性情報のビンの確率を、当該サブセットの別のコーディングパス中に係数レベルのビン1をコーディングしながら、更新し得る。この例では、あるパスのコンテキストは、サブセット内の他のパスをコーディングするために使用され得ない。
[0131]他の例では、ビデオデコーダ30は、サブセットのビンの所定数をコーディングした後に確率を更新し得る。たとえば、ビデオデコーダ30は、変換係数レベルをコーディングするより前に有効性マップをコーディングし得る。そのような一例では、ビデオデコーダ30は、有効性マップを復号し、有効性マップを復号した後に確率を更新し得る。ビデオデコーダ30は、次いで、変換係数に関連する残りの情報(たとえば、符号、レベルなど)を復号し得る。ビデオデコーダ30がlast_xシンタックス要素とlast_yシンタックス要素の両方を復号する例では、ビデオデコーダ30は、最後有効係数のlast_xとlast_yの両方を復号した後に確率を更新するか、またはlast_xとlast_yとの各々を復号した後に確率を更新し得る。
[0132]図6Aに関して説明したのと同様の方法で、ビデオデコーダ30は、図6Bのブロック210をサブセット212、214、216、および218に走査順序で分割し得る。すなわち、図6Bに示す例では、第1のサブセット212は、第1の16個の変換係数を走査順序で含み、第2のサブセット214は、次の16個の変換係数を走査順序で含み、第3のサブセット216は、次の16個の変換係数を走査順序で含み、第4のサブセット218は、最後の16個の変換係数を走査順序で含む。ビデオデコーダ30は、次いで、図6Aに関して説明したのと同様の確率モデル更新プロセスを実行し得る。
[0133]図6Aおよび図6Bに示す例は概して対角走査パターンを示したが、図5Aおよび図5Bに関して上述したように、ジグザグパターン、適応型走査順序、水平パターン、垂直パターンなど、様々な他の走査パターンが使用され得る。
[0134]さらに、図6Aおよび図6Bに示す例は、16個の変換係数を含むサブセットをもつ8×8ブロックの変換係数を示したが、本開示の技法は、他のサイズのブロック、および任意の数の変換係数を有するサブセットに適用され得ることを理解されたい。たとえば、サブセットは、変換ユニット(TU)のn個の変換係数の任意のセットであり得、ただし、nは、TUの変換係数の数よりも小さい何らかの数である。説明のための他の例では、32×32ブロックの変換係数が32個のサブセットに分割され得、各サブセットが32個の変換係数を有するか、または、8×8ブロックの変換係数が2つのサブセットに分割され得、各サブセットが32個の変換係数を有する。他の例も可能である。
[0135]たとえば、サブセットは、16個の連続する係数を任意の連続走査順序(たとえば、水平、垂直、対角、適応型、または何らかの他の走査順序)で含み得る。
[0136]図7Aおよび図7Bに、概して、本開示の態様による、ビデオデータのブロックに関連する変換係数のブロックをサブブロックの形態のサブセットに分割することを示す。図7Aおよび図7Bではビデオデコーダ30(図1および図3)に関して説明するが、本開示の技法は、ビデオエンコーダ20(図1および図2)、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
[0137]図7Aに関して、本開示の態様によれば、ビデオデコーダ30は、ブロック220を復号しながら、ブロック220をサブブロック222A、222B、222C、および222D(総称してサブブロック222)に分割し得る。図7Aに示す例では、第1のサブブロック222Aは、ブロック220の左上隅に位置する4×4ブロックの変換係数を含み、第2のサブブロック222Bは、ブロック220の左下隅に位置する4×4ブロックの変換係数を含み、第3のサブブロック222Cは、ブロック220の右上隅に位置する4×4ブロックの変換係数を含み、第4のサブブロック222Dは、ブロック220の右下隅に位置する4×4ブロックの変換係数を含む。
[0138]いくつかの例では、ビデオデコーダ30は、サブブロック222の変換係数を走査するためにユニファイド(unified)走査を使用し得る。たとえば、ビデオデコーダ30は、図7Aに示す対角走査を使用して有効性情報(たとえば、有効性マップ)と係数レベルとを走査し得る。他の例では、ビデオデコーダ30は、逆方向走査または他の配向を有する走査を使用して変換係数の成分(たとえば、有効性、符号、レベルなど)を走査し得る。たとえば、ビデオデコーダ30は、順方向ジグザグ走査を使用することによって、各方形(または矩形)8×8ブロックおよびそれ以上の変換係数レベルマップの絶対値を4×4サブブロックの順序セット(たとえば、ベクトル)上にマッピングし得る。ビデオデコーダ30は、次いで、逆方向ジグザグ走査で各4×4サブブロック内の変換係数レベルを処理して、変換係数レベルのベクトルを生成し得る。
[0139]いくつかの例では、サブブロック222をコーディングするために、ビデオデコーダ30は、有効性情報をコーディングする第1のパスを実行し得る。ビデオデコーダ30は、次いで、変換係数レベルのビン1を復号する別のパスと、変換係数レベルの残りのビンを復号する別のパスと、変換係数レベルの符号を復号する別のパスとを実行し得る。サブブロック222のうちの1つを完了すると、ビデオデコーダ30は、ブロック220が完全に復号されるまで、次のサブブロックの復号パスを実行し得る。他の例では、別の数のコーディングパスが実装され得る。
[0140]本開示の態様によれば、ビデオデコーダ30は、コンテキスト適応型コーディングプロセスに関連する確率更新をサブブロック222にリンクし得る。たとえば、ブロック220の復号中に、ビデオデコーダ30は、初めに、確率モデルの第1のセットを使用してサブブロック222Aを復号し得る。ビデオデコーダ30が確率モデルの第1のセットを使用してサブブロック222A全体を復号するように、確率モデルの第1のセットは、サブブロック222Aの復号中に更新され得ない。さらに、ビデオデコーダ30は、サブブロック222Aを復号しながら、適用される確率モデルの第1のセットに関連する統計値(たとえば、コンテキストの状態)を収集し、記憶し得る。
[0141]本開示の態様によれば、サブブロック222Aをコーディングした後に、ビデオデコーダ30は、記憶された確率統計値を使用して確率モデルの第1のセットを更新し得る。ビデオデコーダ30は、次いで、変換係数の第2のサブブロック222Bを復号するために、この更新された確率モデルの第2のセットを使用し得る。ビデオデコーダ30は、ブロック220が復号されるまで、ブロック220をこのように復号し続け得る。すなわち、第2のサブブロック222Bを復号した後に、ビデオデコーダ30は、第2のサブブロックの復号中に記憶された統計値を使用して確率モデルを更新し、更新された確率モデルを使用して第3のサブブロック222Cを復号し得る。その上、ビデオデコーダ30は、第4のサブブロック222Dを復号するために同じプロセスを実行し得る。
[0142]いくつかの例では、特定のサブセットのビンのすべてがコーディングされた後まで確率モデルを更新するのを待つのではなく、ビデオデコーダ30は、各サブセットの各コーディングパス後に確率を更新し得る。この例では、ビデオデコーダ30は、サブセット内のあるパスの確率モデルの更新プロセスをサブセットの他のパスと並列化し得る。
[0143]他の例では、ビデオデコーダ30は、サブセットのビンの所定数をコーディングした後に確率を更新し得る。たとえば、ビデオデコーダ30は、変換係数レベルをコーディングするより前に有効性マップをコーディングし得る。そのような一例では、ビデオデコーダ30は、有効性マップを復号し、有効性マップをコーディングした後に確率を更新し得る。ビデオデコーダ30は、次いで、変換係数に関連する残りの情報(たとえば、符号、レベルなど)を復号し得る。ビデオデコーダ30がlast_xシンタックス要素とlast_yシンタックス要素の両方を復号する例では、ビデオデコーダ30は、最後有効係数のlast_xとlast_yの両方を復号した後に確率を更新するか、またはlast_xとlast_yとの各々を復号した後に確率を更新し得る。
[0144]図7Aに関して説明したのと同様の方法で、ビデオデコーダ30は、ブロック220を復号しながら、図7Bのブロック224をサブブロック226A、226B、226C、および226Dに分割し得る。図7Bに示す例では、第1のサブブロック226Aは、ブロック224の右下隅に位置する4×4ブロックの変換係数を含み、第2のサブブロック226Bは、ブロック224の右上隅に位置する4×4ブロックの変換係数を含み、第3のサブブロック226Cは、ブロック224の左下隅に位置する4×4ブロックの変換係数を含み、第4のサブブロック226Dは、ブロック224の左上隅に位置する4×4ブロックの変換係数を含む。
[0145](図7Aに関して)図7Bに示す逆走査を可能にするために、いくつかの例では、ビデオデコーダ30は、最初にブロック224の最後有効係数を識別し得る。最後有効係数を識別した後に、ビデオコーダ30は、図7Bに示す走査を適用し得、次いで、図7Aに関して説明したのと同様の確率モデル更新プロセスを実行し得る。
[0146]図7Aおよび図7Bに示す例は概して対角走査パターンを示したが、図5Aおよび図5Bに関して上述したように、ジグザグパターン、適応型走査順序、水平パターン、垂直パターンなど、様々な他の走査パターンが使用され得る。
[0147]さらに、図7Aおよび図7Bに示す例は、4×4サブブロックをもつ8×8ブロックの変換係数を示したが、本開示の技法は、他のサイズのブロック、ならびに他のサイズのサブブロックに適用され得ることを理解されたい。たとえば、サブブロックは、変換ユニット(TU)の変換係数の任意のn×nブロックを含み得、ただし、n×nはTUのサイズよりも小さい。さらに、図7Aおよび図7Bに示す、等しいサイズのサブブロックは、ハードウェア効率を達成するための助けにいくらかなり得る(たとえば、ハードウェアが、静的サブブロックサイズで動作するように最適化され得る)。ただし、他の例では、本開示の技法は、サイズが異なるサブブロックに適用され得る。
[0148]その上、図7Aおよび図7Bは、概してジグザグパターンで走査されるサブブロック222およびサブブロック226を示している。すなわち、図7Aに示す例では、サブブロック222Aの走査の後にサブブロック222Bの走査が続き、その後にサブブロック222Cおよび222Dの走査が続く。図7Bに示す例では、サブブロック226Aの走査の後にサブブロック226Bの走査が続き、その後にサブブロック226Cおよび226Dの走査が続く。ただし、図7Aおよび図7Bは、例として与えたものにすぎないことを理解されたい。すなわち、他の例では、サブブロック222およびサブブロック226は異なる順序で走査され得る。説明のための一例では、図7Aに関して、サブブロック222Aの走査の後にサブブロック222Cまたはサブブロック222Dが続き得る。
[0149]さらに、サブブロック222または226自体が走査されるより前に、サブブロック222またはサブブロック226のうちの2つ以上が完全にコーディングされ得る。すなわち、サブブロック222およびサブブロック226をコーディングした後に、サブブロック自体が特定の走査順序に従って走査され得る。いくつかの例では、サブブロック222またはサブブロック226は対角的に走査され得るが、ジグザグ、水平、および垂直など、他の走査も使用され得る。サブブロック内で走査するために、ならびにサブブロック自体を走査するために使用される特定の走査は、変換係数の残差データを生成するために使用されるイントラモードに依存し得る。
[0150]図8に、概して、CABACなどのコンテキスト適応型コーディング技法を使用して有効性マップをコーディングすることを示す。図8では概してビデオデコーダ30(図1および図3)に関して説明するが、本開示の技法は、ビデオエンコーダ20(図1および図2)、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
[0151]図8に示す例によれば、ビデオデコーダ30は、初めに、2値化された変換係数の特定のビンを復号するためのコンテキストを選択する(240)。上述のように、シンタックス要素のビンのコンテキストは、前にコーディングされたシンタックス要素の関係するビンの値を含み得る。コンテキストは、たとえば、現在コーディングされているシンボルに隣接するシンボルについて値が0であるのか非0であるのかに関係し得る。
[0152]ビデオデコーダ30は、次いで、選択されたコンテキストに対応する確率(たとえば、コンテキストの状態)をロードする(「コンテキストロード」(242))。すなわち、ビデオデコーダ30は、確率モデルに関連するコンテキストの状態を決定する。ビデオデコーダ30は、次いで、ロードされた確率を使用して現在のビンを復号する(「ビンコーディング」(244))。図8に示す例によれば、ビデオデコーダ30は、算術コーダの範囲を直列方式で、たとえば、ビン単位で更新する。したがって、特定のビンをコーディングした後に、ビデオデコーダ30は、次いで、特定のビンの値を用いて算術コーダの範囲を更新する(「範囲更新」(246))。
[0153]図8に示す範囲更新(246)は復号プロセスに直列依存性を導入する。すなわち、後続のビンが、動作「ビン復号」(244)に対して直列依存性を有する。すなわち、「ビン復号」は、後続のビンを復号する前に完了する必要がある。さらに、ビデオデコーダ30は、復号されたビンに基づいて確率を更新する(「現在の状態に基づくコンテキスト更新」(248))。図8に示す例では、ビデオデコーダ30は、更新されたコンテキストを使用して次のビンを復号する(「コンテキスト更新」(250))。したがって、後続のビンは、動作「現在の状態に基づくコンテキスト更新」に対する直列依存性をも有する。すなわち、「現在の状態に基づくコンテキスト更新」(248)ステップは、後続のビンを復号する前に完了する必要がある。ビデオデコーダ30は、特定のブロックのすべてのビンがコーディングされるまでこのようにし続ける。ビデオデコーダ30は、次いで、ビデオデータの次のブロックに移る(「ブロックループ」(252))。
[0154]説明のための一例では、ビデオデコーダ30は、同じ確率モデル(たとえば、確率モデルA)を使用してビデオデータのブロックのビンのシーケンス(たとえば、ビン(0)、ビン(1)、...ビン(n))を連続して復号し得る。言い換えれば、(たとえば、コンテキストインデックスctx(0)、ctx(1)、...ctx(n)を使用して示される)ビンについて導出されるコンテキストが、それぞれのビンをコーディングするために使用される同じ確率モデルにそれぞれ対応し得る。この例では、ビンのうちの所与の1つを復号した後に、ビデオデコーダ30は、後続のビンを復号するために確率モデルが使用され得る前に、現在のビンの値に基づいて確率モデルを更新しなければならない(ステップ248)。確率モデルを更新することにより、モデルを使用してコーディングされたビンが所与の値を有する最新の確率をモデルが反映することが可能になる。したがって、前の復号サイクル、すなわち、前のビンの復号の完了後に更新された確率モデルを使用してビデオデータのブロックのための特定のビンを復号することにより、連続するコーディングサイクル間の遅延が生じ得る。特に、特定のビンをコーディングするために、前のビンを復号した直後に確率モデルが直ちに利用できないことがある。その結果、ビンのシーケンスのコーディングは、他の方法を使用したシーケンスの復号ほど合理的でないことがある。
[0155]したがって、「範囲更新」および「コンテキスト更新」のステップは、エンコーダとデコーダの両方においてフィードバックループを含む。そのようなフィードバックループは、フィードバックループにおける依存性によりスループットを増加させることが困難であり得るので、計算ボトルネックを提示し得る。すなわち、あるビンは、前のビンからの確率モデルが更新されるまで処理されないことがある。現在提案されているHEVCによれば、同じコンテキストインデックスが高い頻度で連続的に(ビンごとに)呼び出され得る。一例では、コーディングされる全ビンの25%から35%まで表現し得る、有効性フラグコーディングのためのコンテキストが連続的に呼び出され得る。同じコンテキストを繰り返し呼び出し、各ビン後にモデルを更新するのを待つことにより、ビデオデコーダ30のスループットのボトルネックが提示され得る。
[0156]いくつかの例では、そのようなボトルネックを回避するために、ビデオデコーダ30は、何らかの統計値(たとえば、コンテキストの状態)を記憶し、ビデオデータのブロック全体をコーディングした後に1つまたは複数のコンテキストを更新し得る。このようにして、後続のブロックは、現在のブロックによって更新された確率を使用し、コンテキストを更新することに関連する遅延はブロックごとに1回のみ生じる。ただし、確率はビンごとに更新されず、したがってあまり正確でないことがあるので、全体的なコーディング性能は低下し得る。
[0157]上述のように、ビデオデコーダ30を用いてデータを復号することに関して説明したが、図8において説明した技法と同様のまたは同じ技法は、ビデオエンコーダ20など、別のビデオコーダを用いて実行され得る。
[0158]図9に、概して、本開示の態様による、サブセットをコーディングした後にコンテキストが更新され得る、修正されたコンテキスト適応型コーディングプロセスを示す。図9では概してビデオデコーダ30(図1および図3)に関して説明するが、本開示の技法は、ビデオエンコーダ20(図1および図2)、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
[0159]図9に示す例では、ビデオデコーダ30は、最初に、すべての関係するコンテキストの現在の状態をメモリに記憶する(280)。一例として、変換係数コーディングのために、変換係数コーディングにおいて使用されるコンテキストの状態のみが記憶され得る。ビデオデコーダ30は、次いで、2値化された変換係数の特定のビンを復号するためのコンテキストを選択する(282)。ビデオデコーダ30は、次いで、選択されたコンテキストに対応する確率(たとえば、コンテキストの状態)をロードする(「コンテキストロード」(284))。ビデオデコーダ30は、次いで、ロードされた確率を使用して現在のビンを復号する(「ビンコーディング」(286))。ビデオデコーダ30はまた、算術コーダの範囲をビン単位で更新する(「範囲更新」(288))。
[0160]本開示の態様によれば、(たとえば、図8に示すように)次のビンをコーディングするためにコンテキストを更新するのではなく、ビデオデコーダ30は、ビンのコーディング中に使用されるコンテキストに関連する確率の確率統計値を記憶する(290)。すなわち、ビデオデコーダ30は、コーディングされたビンに基づいてコンテキストの更新状態を記憶し得る。したがって、次のビンをコーディングするための確率は変化せず、ブロックループ内で更新された確率への依存性がない。むしろ、ビデオデコーダ30は、サブセットのすべてのビンをコーディングし続ける(「サブセットループ」(292))。
[0161]サブセットの復号後に、本開示の態様によれば、ビデオデコーダ30は、次のサブセットをコーディングするために、記憶されたコンテキストを現在のコンテキストに設定する(294)。すなわち、ビデオデコーダ30は、前のサブセットの復号中に収集された、記憶された確率統計値に基づいて、1つまたは複数の確率モデルを更新し得る。したがって、ビデオデコーダ30は、更新された確率を使用して後続のサブセットを復号し得る。更新および記憶の動作はサブセットループの外で実行されるので、これらの動作は各ビン後に遅延を生じない。むしろ、コンテキストを更新することに関連する遅延はサブセットごとに1回のみ生じる。図9に示す例では、ブロックの復号中にコンテキスト状態更新を記憶するために必要なメモリは、復号されているビンのコンテキストサイズに等しくなり得る。たとえば、ビデオデコーダが、ビデオデータのブロックに関連する変換係数を復号している場合、変換係数コーディング中に使用されるコンテキストが記憶される必要があり得る。
[0162]上述のように、ビデオデコーダ30を用いてデータを復号することに関して説明したが、図9において説明した技法と同様のまたは同じ技法は、ビデオエンコーダ20など、別のビデオコーダを用いて実行され得る。
[0163]図10は、本開示の態様による、ビデオデータのブロックをエントロピーコーディングする例示的な技法を示す流れ図である。図10に示す例は、概して、ビデオコーダによって実行されるものとして説明する。すなわち、たとえば、ビデオコーダがビデオエンコーダである例では、エンコーダは、確率モデルを使用してターゲットシンボルをコーディングし得る。ビデオコーダがビデオデコーダである例では、デコーダは、確率モデルを使用してターゲットシンボルをパースし得る。したがって、図10に関して図示および説明する技法は、ビデオエンコーダ20(図1および図2)、ビデオデコーダ30(図1および図3)、または様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットによって行われ得ることを理解されたい。
[0164]図10に示す例では、ビデオコーダが、1つまたは複数の確率モデルとともにコンテキスト適応型コーディングを使用して、変換係数の第1のサブセットをコーディングする(302)。たとえば、ビデオコーダは、変換係数の第1のサブセットをCABACコーディングし得る。上述のように、第1のサブセットは、所定の数の変換係数を走査順序で含むか、または変換係数のサブブロックを含み得る。したがって、ビデオデータのブロックは、概して、n/m個のサブセットを含み得、ただし、nは変換係数の数を表し、mは各サブセット中の変換係数の数を表す。
[0165]変換係数の第1のサブセットをコーディングしながら、ビデオコーダは、第1のサブセットをコーディングするために使用される確率モデルに関連する確率モデル統計値を記憶する(302)。たとえば、ビデオコーダは、第1のサブセットの各ビンをコーディングした後にコンテキストの状態を記憶し得る。コンテキストの状態は、コーディングされているビンの値に基づいて特定の確率を示し得る。ビデオコーダはまた、確率を生成するために実際のビン値を記憶し得る。
[0166]次いで、第1のサブセットの最終係数をコーディングした後に、ビデオコーダは、記憶された確率モデル統計値に基づいて確率モデルを更新する(304)。ビデオコーダは、次いで、更新された確率モデルを使用して変換係数の第2のサブセットをコーディングする(306)。図10に関して説明する技法は変換係数のビンのサブセットに対して実行され得ることを理解されたい。すなわち、サブセットのいくつかのビンは、コンテキスト適応型コーディングを使用してコーディングされるのではなく、確率を更新することなしに、バイパスモードでコーディングされ得る。
[0167] 図10において説明する技法は、スループットを増加させることと、正確な確率との間のバランスをとり得る。たとえば、図10において説明する技法は、(たとえば、複数のビンが並列にコーディングされることを可能にして)各サブセットの並列化を向上させながら、その後にコーディングされるサブセットのためにより正確な確率をも使用し得る。
[0168]また、図10に関して図示および説明するステップは一例として与えたものにすぎないことを理解されたい。すなわち、図10の方法のステップは必ずしも図10に示す順序で実行される必要があるとは限らず、より少数の、追加の、または代替のステップが実行され得る。
[0169]図11は、本開示の態様による、遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンス320をコーディングすることを示す概念図である。図11では概してビデオデコーダ30(図1および図3)に関して説明するが、本開示の技法は、ビデオエンコーダ20(図1および図2)、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどを含む、様々な他のビデオコーダによって行われ得ることを理解されたい。
[0170]図11に示すように、ビデオデコーダ30が、ビン(0)〜ビン(N)322〜330のビンを含む、ビンのシーケンス320を復号し得る。ビン(0)〜ビン(N)322〜330のビンはそれぞれ、コンテキストバッファCTXB(0)〜CTXB(N)332〜340に記憶された確率モデルに対応するコンテキストインデックスに関連付けられる。ここで、ビン(K−1)が復号され、ビン(K−1)に対応するコンテキスト状態が更新された後に、コンテキストバッファCTXB(K)は、すべてのコンテキストに対応する状態を記憶する。図11の例では、復号サイクルを初期化する一部として、ビデオデコーダ30は、コンテキストバッファCTXB(0)332に記憶された(初期「リビジョン」と呼ばれることがある)初期確率モデルを使用してビン(0)322を復号し得る。
[0171]本開示の態様によれば、ビデオデコーダ30は、後続のビン、すなわち、ビン(1)〜ビン(N)324〜330を、コンテキストバッファCTXB(0)〜CTXB(N−1)に記憶され得るそれらのそれぞれのコーディングサイクルより少なくとも2コーディングサイクル前に対応する確率モデルリビジョンを使用して復号し得る。たとえば、ビデオデコーダ30は、ビン(1)〜ビン(N)324〜330の各々を、それの現在のコーディングサイクルに対して前のコーディングサイクルより前に生じた確率モデルリビジョンを使用して復号し得る。
[0172]説明のための一例では、ビデオデコーダ30は、CTXB(0)332に記憶された初期確率モデルリビジョンを使用してビン(1)324を復号し得る。この初期確率モデルリビジョンは、ビン(0)322を復号するより前に存在した、または「生じた」。同様に、ビデオデコーダ30は、ビン(1)324を復号するより前に存在した、CTXB(1)に記憶された確率モデルリビジョンを使用してビン(2)326をコーディングし得る。
[0173]図11に示す例は概して2サイクル状態遅延を示しているが、本開示の技法は、概して、追加の遅延サイクルを有する遅延状態更新に適用可能である。たとえば、本開示の態様によれば、ビデオデコーダ30は、CTXB(0)に記憶された確率モデルリビジョンを使用してビン(2)326をコーディングし得る(たとえば、3サイクル遅延)。追加の遅延状態サイクルも実装され得る(たとえば、4サイクル遅延、5サイクル遅延など)。
[0174]遅延サイクルの数は、いくつかの例では、並列にコーディングされるべきビンの数に対応し得る。たとえば、図11に示す例は、概して、ビン間で確率を更新することに関連する遅延を生じることなしに、2つのビンが並列に復号されることを可能にし得る。すなわち、ビンはすでに決定された確率モデルリビジョンを使用するので、ビデオデコーダ30は、状態更新に関連する遅延を生じることなしに、ビン(1)324とビン(2)326とを並列に復号し得る。追加の遅延サイクルにより、より多くのビンが並列に復号されることが可能になり得る。
[0175]図11に関して図示および説明する技法は、CAVLC、CABAC、PIPE、または別のコンテキスト適応型エントロピーコーディング方法を含む、任意のコンテキスト適応型エントロピーコーディング方法とともに使用され得る。その上、図11に関して図示および説明する技法は、概して、他のデータ(たとえば、オーディオデータまたは様々な他のデータ)の他の算術コーディングに適用され得る。たとえば、図11の技法は、遅延確率更新を実行するために使用され得る。
[0176]一例として、説明のために、シンボルのシーケンス、たとえば、シンボル(0)、シンボル(1)、...、シンボル(n)などが符号化または復号されていると仮定する。シンボルは、ビデオデータ、オーディオデータ、または任意の他のデータによって生成され得る。さらに、各シンボルは、A、B、C、およびDによって示される4つの値を取り得ると仮定する。さらに、各シンボルに異なるコンテキストモデルが関連付けられ得るが、説明のために、すべてのシンボルが同じコンテキストを使用すると仮定する。さらに、コンテキストごとに別個の確率モデル(たとえば、A、B、C、およびDのための確率)が維持されると仮定する。通常、シンボル(0)がコーディングされた後に、コンテキスト(0)の確率モデルは、シンボル(0)の実際値を考慮するために更新され得る。しかしながら、図11に示すように、本開示の技法は、1つまたは複数の将来のシンボルがコーディングされるようになるまで確率モデル更新処理が遅延されるように確率モデル更新遅延を実装することを含み得る。たとえば、1の遅延について、(たとえば、シンボル(0)をコーディングした後に)更新されたモデルは、シンボル(2)をコーディングするために利用可能である。この例では、確率モデルを記憶するために、(上記で説明したコンテキストバッファCTXBと同様の)バッファが使用され得る。
[0177]図12に、本開示の態様による、遅延状態更新コンテキスト適応型エントロピーコーディングを使用してビンのシーケンスをコーディングする例示的な技法を示す。図12に示す例は、概して、ビデオコーダによって実行されるものとして説明する。すなわち、たとえば、ビデオコーダがビデオエンコーダである例では、エンコーダは、確率モデルを使用してターゲットシンボル(たとえば、ビン)をコーディングし得る。ビデオコーダがビデオデコーダである例では、デコーダは、確率モデルを使用してターゲットシンボル(たとえば、ビン)を復号し得る。したがって、図10に関して図示および説明する技法は、ビデオエンコーダ20(図1および図2)、ビデオデコーダ30(図1および図3)、または様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットによって行われ得ることを理解されたい。
[0178]図12に示す例では、ビデオコーダが、初めに、エントロピーコーディングサイクル中にビンのコンテキストを決定する(360)。上述のように、エントロピーコーディングサイクルは、概して、ビンをコーディングするために使用される確率モデルに対応するコンテキストを決定し、確率モデルを適用してビンをコーディングすることを含む。
[0179]ビデオコーダは、次いで、コンテキストに基づいて確率モデルを選択し、確率モデルは、現在のコーディングサイクルより少なくとも2サイクル前にコーディングされた、前にコーディングされたビンの値に基づいて更新される(362)。たとえば、概して、ビン、たとえば、ビン(n)のコンテキストは、確率モデルに対応するコンテキストインデックス、たとえば、ctx(n)を使用して示され得る。しかしながら、本開示の技法によれば、ビデオコーダは、ビデオデータのブロックの前のビンをコーディングする前に、すなわち、現在のビンをコーディングするより少なくとも2コーディング反復またはサイクル前に更新された確率モデルを使用して、ブロックの特定のビンをコーディングし得る。したがって、以下でより詳細に説明するように、ビデオコーダは、複数の連続するビンが確率モデルを使用してコーディングされるとき、そのモデルを使用してビンをコーディングした後にそのモデルを更新することに起因する遅延を回避し得る。
[0180]説明のための一例では、ビデオデータのブロックのビンのシーケンス、たとえば、ビン(0)、ビン(1)、...、ビン(n−1)、およびビン(n)が、CABACプロセスを実行することによって連続してコーディングされると仮定する。この例では、ビン(0)、ビン(1)、...、ビン(n−1)、およびビン(n)をコーディングするために使用されるコンテキストが、ctx(0)、ctx(1)、...、ctx(n−1)、およびctx(n)によって示されると仮定する。さらに、すべてのコンテキストに対応する確率モデル(または状態)が、ctxBuffer(0)、ctxBuffer(1)、...、ctxBuffer(n−1)、およびctxBuffer(n)に記憶されると仮定する。ここで、ビン(K−1)がコーディングされ、ビン(K−1)に対応するコンテキスト状態が更新された後に、コンテキストバッファctxBuffer(K)は、すべてのコンテキストに対応する状態を記憶する。そのようなバッファの使用は、ビンをコーディングするために使用される確率モデルの複数のバージョンまたは「リビジョン」を維持するために必要とされ得る。確率モデルは、初期状態によって定義され得、前に説明したように、前にコーディングされたビン、すなわちビン(0)、ビン(1)、...、ビン(n−1)によって影響され得る。新生のHEVCおよびH.264規格によれば、ビン(n)をコーディングするために以下のステップが実行される。
1.ビン(n)をコーディングするために使用されることになるコンテキストctx(n)を決定する。
2.コンテキストバッファctxBuffer(n)からctx(n)のための確率モデルを取り出す。
3.確率モデルを使用してビン(n)を符号化する。
4.ビン(n)に基づいて確率モデルを更新する。更新された確率モデルはctxBuffer(n+1)中に含まれる。
[0181]上記に示したプロセスによって示されるように、CABACプロセスは、ステップのすべてが完了するまで次のビン、たとえば、ビン(n+1)をコーディングすることに進むことができず、これにより、コーディングプロセスに遅延が生じ得る。本開示の態様によれば、ビデオコーダは、ctxBuffer(n−K)中に含まれる確率モデルを使用してビン(n)をコーディングし得る。すなわち、たとえば、本開示の態様は、ビデオコーダがコンテキストバッファctxBuffer(n−K)からctx(n)のための確率モデルを取り出すように上記のプロセスのステップ2を修正することを含む。「n」が「K」以下である例では、ビデオコーダはctxBuffer(0)を使用し得る。
[0182]インデックス「K」は、任意の正の非0整数値に等しくなり得る。たとえば、「K」の値「1」について、コンテキストバッファctxBuffer(n−1)は、現在のコーディングサイクルより2コーディングサイクル前に更新された確率モデルを含む。特に、ctxBuffer(n−1)中に含まれる確率モデルは、ビン(n−2)をコーディングした後に更新されたctxBuffer(n−2)中に含まれる確率モデルに対応し得る。
[0183]本開示の態様によれば、ビデオコーダは、初期確率モデルを使用して、シーケンスの第1のビンと第2のビンとをコーディングし得る。たとえば、ビデオコーダは、ctxBuffer(0)を使用して、所与のシーケンスのビン(0)とビン(1)の両方をコーディングし得る。ビン(0)は、前に更新された確率モデルが存在しないので、このようにコーディングされ得る。ビン(1)は、ctxBuffer(1)中に含まれるべきビン(0)の値に基づいてctxBuffer(0)中に含まれる確率モデルを更新することに起因し得る状態更新遅延を回避するために、このようにコーディングされ得る。したがって、いくつかの例では、ステップ362は、所定の数のビンをコーディングした後に実行され得る。
[0184]確率モデルを選択した後に(362)、ビデオコーダは、ビンをコーディングするために確率モデルを適用する(364)。ビデオコーダは、次いで、ビンの値に基づいて確率モデルを更新する(366)。コンテキスト適応型コーディングにおける状態更新に関連する遅延を回避することによって、図12に関して図示および説明する態様は、ビデオコーディングにおいてCABACプロセスを実行するとき、ビデオデータのブロックの残差変換係数の効率的なコーディングを可能にし得る。さらに、コンテキスト区分が使用される例では、本開示の技法はコンテキストパーティションごとに適用され得る。
[0185]図11に関して上述したように、上記ではバイナリビデオコーディングに関して説明したが、遅延状態更新技法は、概して、他のデータの他の算術コーディングに適用され得ることを理解されたい。さらに、図12に関して図示および説明するステップは一例として与えたものにすぎないことをも理解されたい。すなわち、図12の方法のステップは必ずしも図12に示す順序で実行される必要があるとは限らず、より少数の、追加の、または代替のステップが実行され得る。
[0186]例に応じて、本明細書で説明した方法のうちのいずれかのいくつかの行為またはイベントは、異なるシーケンスで実行され得、互いに付加、マージ、または除外され得る(たとえば、すべての説明した行為またはイベントが、方法の実施のために必要であるとは限らない)ことを理解されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して、同時に実行され得る。
[0187]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。
[0188]このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0189]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
[0190]ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0191]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
[0192]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0193]本開示の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
データをコーディングする方法であって、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングすること、を備え、
ビンの前記シーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、方法。
[C2]
前記確率モデルはコンテキストバッファに記憶され、前記少なくとも2コーディングサイクルはKサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも(K+1)サイクル前に前記コンテキストバッファに記憶された前記確率モデルを選択することを備える、C1に記載の方法。
[C3]
ビンの前記シーケンスのうちの2つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記2つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、C1に記載の方法。
[C4]
ビンの前記シーケンスのうちの前記少なくとも1つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記方法は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化すること、をさらに備え、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、C1に記載の方法。
[C5]
前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、有効性ビンをコーディングすることを備え、
前記方法は、非コンテキスト適応型コーディングプロセスを使用してレベルビンをコーディングすることをさらに備える、C1に記載の方法。
[C6]
ビンの前記シーケンスは第1のパーティションを備え、前記方法は、前記第1のパーティションと並列に第2のパーティションのビンの第2のシーケンスをコーディングすることをさらに備える、C1に記載の方法。
[C7]
ビンの前記シーケンスのうちの少なくとも2つのビンを並列にコーディングすることをさらに備える、C1に記載の方法。
[C8]
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング(CABAC)プロセスを備える、C1に記載の方法。
[C9]
ビンの前記シーケンスをコーディングすることは、ビンの前記シーケンスを符号化することを備える、C1に記載の方法。
[C10]
ビンの前記シーケンスを符号化するより前に、
変換係数を生成するためにビデオデータのブロックの1つまたは複数の残差値に変換を適用することと、
量子化変換係数を生成するために前記変換係数を量子化することと、
ビンの前記シーケンスを生成するために前記量子化変換係数を2値化することと、
をさらに備える、C9に記載の方法。
[C11]
ビンの前記シーケンスをコーディングすることは、ビンの前記シーケンスを復号することを備える、C1に記載の方法。
[C12]
変換係数を生成するためにビンの前記シーケンスを逆量子化することと、
ビデオデータのブロックの残差値を生成するためにビンの前記逆量子化シーケンスに逆変換を適用することと、
をさらに備える、C11に記載の方法。
[C13]
データをコーディングするための装置であって、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングするように構成された1つまたは複数のプロセッサを備え、
ビンの前記シーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、装置。
[C14]
前記装置は、前記確率モデルを記憶するコンテキストバッファをさらに備え、前記少なくとも2コーディングサイクルはKサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも(K+1)サイクル前に前記コンテキストバッファに記憶された前記確率モデルを選択することを備える、C13に記載の装置。
[C15]
ビンの前記シーケンスのうちの2つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記2つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、C13に記載の装置。
[C16]
ビンの前記シーケンスのうちの前記少なくとも1つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記装置は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化することと、をさらに備え、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、C13に記載の装置。
[C17]
前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、有効性ビンをコーディングすることを備え、
前記装置は、非コンテキスト適応型コーディングプロセスを使用してレベルビンをコーディングすることをさらに備える、C13に記載の装置。
[C18]
ビンの前記シーケンスは第1のパーティションを備え、前記1つまたは複数のプロセッサは、前記第1のパーティションと並列に第2のパーティションのビンの第2のシーケンスをコーディングするようにさらに構成された、C13に記載の装置。
[C19]
前記1つまたは複数のプロセッサは、ビンの前記シーケンスのうちの少なくとも2つのビンを並列にコーディングするようにさらに構成された、C13に記載の装置。
[C20]
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング(CABAC)プロセスを備える、C13に記載の装置。
[C21]
前記1つまたは複数のプロセッサは、ビンの前記シーケンスを符号化するように構成された、C13に記載の装置。
[C22]
前記1つまたは複数のプロセッサは、ビンの前記シーケンスを符号化するより前に、
変換係数を生成するためにビデオデータのブロックの1つまたは複数の残差値に変換を適用することと、
量子化変換係数を生成するために前記変換係数を量子化することと、
ビンの前記シーケンスを生成するために前記量子化変換係数を2値化することと、
を行うようにさらに構成された、C21に記載の装置。
[C23]
前記1つまたは複数のプロセッサは、ビンの前記シーケンスを復号するように構成された、C13に記載の装置。
[C24]
前記1つまたは複数のプロセッサは、
変換係数を生成するためにビンの前記シーケンスを逆量子化することと、
ビデオデータのブロックの残差値を生成するためにビンの前記逆量子化シーケンスに逆変換を適用することと、
を行うようにさらに構成された、C23に記載の装置。
[C25]
データをコーディングするための装置であって、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングする手段を備え、
ビンの前記シーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、装置。
[C26]
前記装置は、前記確率モデルを記憶する手段をさらに備え、前記少なくとも2コーディングサイクルはKサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも(K+1)サイクル前に、前記確率モデルを記憶する手段に記憶された前記確率モデルを選択することを備える、C25に記載の装置。
[C27]
ビンの前記シーケンスのうちの2つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記2つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、C25に記載の装置。
[C28]
ビンの前記シーケンスのうちの前記少なくとも1つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記装置は、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化する手段をさらに備え、前記初期化する手段は、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、C25に記載の装置。
[C29]
ビンの前記シーケンスは第1のパーティションを備え、前記コーディングする手段は、前記第1のパーティションと並列に第2のパーティションのビンの第2のシーケンスをコーディングするようにさらに構成された、C25に記載の装置。
[C30]
前記コーディングする手段は、ビンの前記シーケンスのうちの少なくとも2つのビンを並列にコーディングするようにさらに構成された、C25に記載の装置。
[C31]
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング(CABAC)プロセスを備える、C25に記載の装置。
[C32]
命令を記憶したコンピュータ可読記憶媒体であって、実行されたとき、1つまたは複数のプロセッサに、
コンテキスト適応型エントロピーコーディングプロセスに従ってビンのシーケンスをコーディングさせる命令を備え、
ビンの前記シーケンスのうちの少なくとも1つのビンをコーディングするために使用される現在のコーディングサイクルは、
前記ビンのコンテキストを決定することと、
前記コンテキストに基づいて確率モデルを選択することと、前記確率モデルは、前記コンテキストを用いてコーディングされ、前記現在のコーディングサイクルより少なくとも2コーディングサイクル前にコーディングされた前のビンの値に基づいて更新され、
前記ビンをコーディングするために前記確率モデルを適用することと、
前記ビンの値に基づいて前記確率モデルを更新することと、
を含む、コンピュータ可読記憶媒体。
[C33]
前記命令は、さらに、前記1つまたは複数のプロセッサに、コンテキストバッファに前記確率モデルを記憶させ、前記少なくとも2コーディングサイクルはKサイクルの遅延を備え、
前記確率モデルを選択することは、前記現在のコーディングサイクルより少なくとも(K+1)サイクル前に前記コンテキストバッファに記憶された前記確率モデルを選択することを備える、C32に記載のコンピュータ可読記憶媒体。
[C34]
ビンの前記シーケンスのうちの2つ以上の連続するビンは、それらのそれぞれのコーディングサイクルを使用してそれぞれコーディングされ、前記2つ以上のビンの各々について決定される前記それぞれのコンテキストは同じコンテキストを備える、C32に記載のコンピュータ可読記憶媒体。
[C35]
ビンの前記シーケンスのうちの前記少なくとも1つのビンは、前記シーケンスのうちの初期ビン以外の前記シーケンスのうちの任意のビンと、コーディング順序において前記初期ビンに続くビンとを備え、前記命令は、さらに、前記1つまたは複数のプロセッサに、
前記初期ビンと前記初期ビンに続く前記ビンとの各々をコーディングするために使用されるコーディングサイクルを初期化させ、前記初期化することは、
前記それぞれのビンの初期化コンテキストを決定することと、
前記初期化コンテキストに基づいて初期化確率モデルを選択することと、
前記それぞれのビンをコーディングするために前記初期化コンテキストに基づいて前記初期化確率モデルを適用することと、
前記それぞれのビンの値に基づいて前記初期化確率モデルを更新することと、
を含む、C32に記載のコンピュータ可読記憶媒体。
[C36]
前記コンテキスト適応型エントロピーコーディングプロセスに従ってビンの前記シーケンスをコーディングすることは、有効性ビンをコーディングすることを備え、
前記コンピュータ可読記憶媒体は、さらに、前記1つまたは複数のプロセッサに、非コンテキスト適応型コーディングプロセスを使用してレベルビンをコーディングさせる命令を備える、C32に記載のコンピュータ可読記憶媒体。
[C37]
ビンの前記シーケンスが第1のパーティションを備え、前記命令は、前記1つまたは複数のプロセッサに、前記第1のパーティションと並列に第2のパーティションのビンの第2のシーケンスをコーディングさせる、C32に記載のコンピュータ可読記憶媒体。
[C38]
前記命令は、前記1つまたは複数のプロセッサに、ビンの前記シーケンスのうちの少なくとも2つのビンを並列にコーディングさせる、C32に記載のコンピュータ可読記憶媒体。
[C39]
前記コンテキスト適応型エントロピーコーディングプロセスはコンテキスト適応型バイナリ算術コーディング(CABAC)プロセスを備える、C32に記載のコンピュータ可読記憶媒体。
[C40]
ビデオコーディングプロセスにおいて残差ビデオデータに関連する変換係数をコーディングする方法であって、
変換係数の複数のサブセットのうちの第1のサブセットをコーディングすることと、前記第1のサブセットをコーディングすることは、1つまたは複数の確率モデルを使用して前記第1のサブセットをコンテキスト適応型コーディングすることを備え、
変換係数の前記第1のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、
前記第1のサブセットの最終係数をコーディングした後に、前記記憶された確率モデル統計値に基づいて前記確率モデルを更新することと、
前記更新された1つまたは複数の確率モデルを使用して前記変換係数の第2のサブセットをコーディングすることと、
を備える、方法。
[C41]
変換係数の前記第2のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する第2の確率モデル統計値を記憶することと、
前記第2のサブセットの最終係数をコーディングした後に、前記記憶された第2の確率モデル統計値に基づいて前記確率モデルを更新することと、
前記第2のサブセットから前記更新された確率モデルを使用して前記複数のサブセットのうちの第3のサブセットをコーディングすることと、
をさらに備える、C40に記載の方法。
[C42]
前記第1のサブセットをコーディングすることは、前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングすることを備える、C40に記載の方法。
[C43]
前記サブセットは変換係数のサブブロックを備え、前記方法は、さらに、前記複数のサブセットのうちの各サブセットを連続的にコーディングすることを備える、C40に記載の方法。
[C44]
前記サブセットは、前記変換係数の走査順序に基づいて連続的に走査されるサブセットを備え、前記方法は、さらに、前記複数のサブセットのうちの各サブセットを連続的にコーディングすることを備える、C40に記載の方法。
[C45]
第1の走査において前記第1のサブセットをコーディングすることは、第1の走査において前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングすることと、1つまたは複数の追加の走査において、前記第1のサブセットの前記変換係数に関連するレベル情報を表す複数のビンをコーディングすることとを備える、
確率モデル統計値を記憶することは、各走査中に前記確率モデル統計値を記憶することを備え、
前記確率モデルを更新することは、各走査後に前記確率モデルを更新することを備える、
C40に記載の方法。
[C46]
前記複数のサブセットのうちの少なくとも1つの他のサブセットと並列に前記第1のサブセットをコーディングすることをさらに備える、C40に記載の方法。
[C47]
前記変換係数をコーディングすることは、前記変換係数を符号化することを備える、C40に記載の方法。
[C48]
前記変換係数をコーディングすることは、前記変換係数を復号することを備える、C40に記載の方法。
[C49]
残差ビデオデータに関連する変換係数をコーディングするための装置であって、
変換係数の複数のサブセットのうちの第1のサブセットをコーディングすることと、前記第1のサブセットをコーディングすることは、1つまたは複数の確率モデルを使用して前記第1のサブセットをコンテキスト適応型コーディングすることを備え、
変換係数の前記第1のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、
前記第1のサブセットの最終係数をコーディングした後に、前記記憶された確率モデル統計値に基づいて前記確率モデルを更新することと、
前記更新された1つまたは複数の確率モデルを使用して前記変換係数の第2のサブセットをコーディングすることと、
を行うように構成された1つまたは複数のプロセッサを備える、装置。
[C50]
前記1つまたは複数のプロセッサは、
変換係数の前記第2のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する第2の確率モデル統計値を記憶することと、
前記第2のサブセットの最終係数をコーディングした後に、前記記憶された第2の確率モデル統計値に基づいて前記確率モデルを更新することと、
前記第2のサブセットから前記更新された確率モデルを使用して前記複数のサブセットのうちの第3のサブセットをコーディングすることと、
を行うようにさらに構成された、C49に記載の装置。
[C51]
前記第1のサブセットをコーディングするために、前記1つまたは複数のプロセッサは、前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングするように構成された、C49に記載の装置。
[C52]
前記サブセットは変換係数のサブブロックを備え、前記1つまたは複数のプロセッサは、前記複数のサブセットのうちの各サブセットを連続的にコーディングするように構成された、C49に記載の装置。
[C53]
前記サブセットは、前記変換係数の走査順序に基づいて連続的に走査されるサブセットを備え、前記1つまたは複数のプロセッサは、前記複数のサブセットのうちの各サブセットを連続的にコーディングするように構成された、C49に記載の装置。
[C54]
前記1つまたは複数のプロセッサは、
第1の走査において前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングすることと、1つまたは複数の追加の走査において、前記第1のサブセットの前記変換係数に関連するレベル情報を表す複数のビンをコーディングすることと、を備える、第1の走査において前記第1のサブセットをコーディングすることと、
各走査中に前記確率モデル統計値を記憶することを備える、確率モデル統計値を記憶することと、
各走査後に前記確率モデルを更新することを備える、前記確率モデルを更新することと、
を行うように構成された、C49に記載の装置。
[C55]
前記1つまたは複数のプロセッサは、前記複数のサブセットのうちの少なくとも1つの他のサブセットと並列に前記第1のサブセットをコーディングするように構成された、C49に記載の装置。
[C56]
前記1つまたは複数のプロセッサはビデオエンコーダを備える、C49に記載の装置。
[C57]
前記1つまたは複数のプロセッサはビデオデコーダを備える、C49に記載の装置。

Claims (18)

  1. ビデオコーディングプロセスにおいて残差ビデオデータに関連する変換係数をコーディングする方法であって、
    変換係数のブロックを走査順序で変換係数の複数のサブセットに分割することと、
    前記複数のサブセットのうちの第1のサブセットをコーディングすることと、前記第1のサブセットをコーディングすることは、1つまたは複数の確率モデルを使用して前記第1のサブセットをコンテキスト適応型コーディングすることを備え、
    変換係数の前記第1のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、
    前記第1のサブセットの最終係数をコーディングした後に、前記記憶された確率モデル統計値に基づいて前記確率モデルを更新することと、
    前記更新された1つまたは複数の確率モデルを使用して、前記複数のサブセットのうち、前記走査順序で前記第1のサブセットの次の第2のサブセットをコーディングすることと、
    を備える、方法。
  2. 変換係数の前記第2のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する第2の確率モデル統計値を記憶することと、
    前記第2のサブセットの最終係数をコーディングした後に、前記記憶された第2の確率モデル統計値に基づいて前記確率モデルを更新することと、
    前記第2のサブセットから前記更新された確率モデルを使用して、前記複数のサブセットのうち、前記走査順序で前記第2のサブセットの次の第3のサブセットをコーディングすることと、
    をさらに備える、請求項1に記載の方法。
  3. 前記第1のサブセットをコーディングすることは、前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングすることを備える、請求項1に記載の方法。
  4. 前記サブセットは変換係数のサブブロックを備え、前記方法は、さらに、前記複数のサブセットのうちの各サブセットを連続的にコーディングすることを備える、請求項1に記載の方法。
  5. 前記サブセットは、前記変換係数の走査順序に基づいて連続的に走査されるサブセットを備え、前記方法は、さらに、前記複数のサブセットのうちの各サブセットを連続的にコーディングすることを備える、請求項1に記載の方法。
  6. 第1の走査において前記第1のサブセットをコーディングすることは、第1の走査において前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングすることと、1つまたは複数の追加の走査において、前記第1のサブセットの前記変換係数に関連するレベル情報を表す複数のビンをコーディングすることとを備える、
    確率モデル統計値を記憶することは、各走査中に前記確率モデル統計値を記憶することを備え、
    前記確率モデルを更新することは、各走査後に前記確率モデルを更新することを備える、
    請求項1に記載の方法。
  7. 前記複数のサブセットのうちの少なくとも1つの他のサブセットと並列に前記第1のサブセットをコーディングすることをさらに備える、請求項1に記載の方法。
  8. 前記変換係数をコーディングすることは、前記変換係数を符号化することを備える、請求項1に記載の方法。
  9. 前記変換係数をコーディングすることは、前記変換係数を復号することを備える、請求項1に記載の方法。
  10. 残差ビデオデータに関連する変換係数をコーディングするための装置であって、
    変換係数のブロックを走査順序で変換係数の複数のサブセットに分割することと、
    前記複数のサブセットのうちの第1のサブセットをコーディングすることと、前記第1のサブセットをコーディングすることは、1つまたは複数の確率モデルを使用して前記第1のサブセットをコンテキスト適応型コーディングすることを備え、
    変換係数の前記第1のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する確率モデル統計値を記憶することと、
    前記第1のサブセットの最終係数をコーディングした後に、前記記憶された確率モデル統計値に基づいて前記確率モデルを更新することと、
    前記更新された1つまたは複数の確率モデルを使用して、前記複数のサブセットのうち、前記走査順序で前記第1のサブセットの次の第2のサブセットをコーディングすることと、
    を行うように構成された1つまたは複数のプロセッサを備える、装置。
  11. 前記1つまたは複数のプロセッサは、
    変換係数の前記第2のサブセットをコーディングしながら、前記1つまたは複数の確率モデルに関連する第2の確率モデル統計値を記憶することと、
    前記第2のサブセットの最終係数をコーディングした後に、前記記憶された第2の確率モデル統計値に基づいて前記確率モデルを更新することと、
    前記第2のサブセットから前記更新された確率モデルを使用して、前記複数のサブセットのうち、前記走査順序で前記第2のサブセットの次の第3のサブセットをコーディングすることと、
    を行うようにさらに構成された、請求項10に記載の装置。
  12. 前記第1のサブセットをコーディングするために、前記1つまたは複数のプロセッサは、前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングするように構成された、請求項10に記載の装置。
  13. 前記サブセットは変換係数のサブブロックを備え、前記1つまたは複数のプロセッサは、前記複数のサブセットのうちの各サブセットを連続的にコーディングするように構成された、請求項10に記載の装置。
  14. 前記サブセットは、前記変換係数の走査順序に基づいて連続的に走査されるサブセットを備え、前記1つまたは複数のプロセッサは、前記複数のサブセットのうちの各サブセットを連続的にコーディングするように構成された、請求項10に記載の装置。
  15. 前記1つまたは複数のプロセッサは、
    第1の走査において前記第1のサブセットの前記変換係数に関連する有効性マップをコーディングすることと、1つまたは複数の追加の走査において、前記第1のサブセットの前記変換係数に関連するレベル情報を表す複数のビンをコーディングすることと、を備える、第1の走査において前記第1のサブセットをコーディングすることと、
    各走査中に前記確率モデル統計値を記憶することを備える、確率モデル統計値を記憶することと、
    各走査後に前記確率モデルを更新することを備える、前記確率モデルを更新することと、
    を行うように構成された、請求項10に記載の装置。
  16. 前記1つまたは複数のプロセッサは、前記複数のサブセットのうちの少なくとも1つの他のサブセットと並列に前記第1のサブセットをコーディングするように構成された、請求項10に記載の装置。
  17. 前記1つまたは複数のプロセッサはビデオエンコーダを備える、請求項10に記載の装置。
  18. 前記1つまたは複数のプロセッサはビデオデコーダを備える、請求項10に記載の装置。
JP2015090535A 2011-06-03 2015-04-27 ビデオデータをコンテキスト適応型コーディングすること Expired - Fee Related JP6067776B2 (ja)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US201161493371P 2011-06-03 2011-06-03
US61/493,371 2011-06-03
US201161503537P 2011-06-30 2011-06-30
US61/503,537 2011-06-30
US201161552921P 2011-10-28 2011-10-28
US61/552,921 2011-10-28
US201161554408P 2011-11-01 2011-11-01
US61/554,408 2011-11-01
US201161561921P 2011-11-20 2011-11-20
US61/561,921 2011-11-20
US13/485,225 2012-05-31
US13/485,225 US9379736B2 (en) 2011-06-03 2012-05-31 Context-adaptive coding video data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014513751A Division JP5937206B2 (ja) 2011-06-03 2012-06-01 ビデオデータをコンテキスト適応型コーディングすること

Publications (2)

Publication Number Publication Date
JP2015167381A JP2015167381A (ja) 2015-09-24
JP6067776B2 true JP6067776B2 (ja) 2017-01-25

Family

ID=46229957

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014513751A Expired - Fee Related JP5937206B2 (ja) 2011-06-03 2012-06-01 ビデオデータをコンテキスト適応型コーディングすること
JP2015090535A Expired - Fee Related JP6067776B2 (ja) 2011-06-03 2015-04-27 ビデオデータをコンテキスト適応型コーディングすること

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014513751A Expired - Fee Related JP5937206B2 (ja) 2011-06-03 2012-06-01 ビデオデータをコンテキスト適応型コーディングすること

Country Status (6)

Country Link
US (1) US9379736B2 (ja)
EP (1) EP2754293A1 (ja)
JP (2) JP5937206B2 (ja)
KR (2) KR101657853B1 (ja)
CN (1) CN103563381B (ja)
WO (1) WO2012167103A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8891616B1 (en) 2011-07-27 2014-11-18 Google Inc. Method and apparatus for entropy encoding based on encoding cost
WO2013069991A1 (ko) * 2011-11-08 2013-05-16 삼성전자 주식회사 비디오의 산술 부호화 방법 및 그 장치, 비디오의 산술 복호화 방법 및 그 장치
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
US9503717B2 (en) * 2012-01-09 2016-11-22 Texas Instruments Incorporated Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency
US9363510B2 (en) * 2012-03-02 2016-06-07 Qualcomm Incorporated Scan-based sliding window in context derivation for transform coefficient coding
US9774856B1 (en) 2012-07-02 2017-09-26 Google Inc. Adaptive stochastic entropy coding
US20140064366A1 (en) * 2012-09-03 2014-03-06 Texas Instruments Incorporated Intra-Prediction Estimation Using Approximate Reconstructed Samples
CN108259900B (zh) * 2013-01-16 2021-01-01 黑莓有限公司 针对视频的上下文自适应二进制熵编码的变换系数编码
US10291912B2 (en) * 2013-01-16 2019-05-14 Blackberry Limited Context determination for entropy coding of run-length encoded transform coefficients
US9509998B1 (en) 2013-04-04 2016-11-29 Google Inc. Conditional predictive multi-symbol run-length coding
US9445132B2 (en) * 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
US9392288B2 (en) 2013-10-17 2016-07-12 Google Inc. Video coding using scatter-based scan tables
US9179151B2 (en) 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
KR102250088B1 (ko) * 2013-10-24 2021-05-10 삼성전자주식회사 비디오 스트림을 복호화하는 방법 및 장치
US10432945B2 (en) 2014-11-04 2019-10-01 Samsung Electronics Co., Ltd. Probability update method for binary arithmetic coding/decoding, and entropy coder/decoder using the same
US10250912B2 (en) * 2015-02-17 2019-04-02 Mediatek Inc. Method and apparatus for entropy decoding with arithmetic decoding decoupled from variable-length decoding
CN111614957B (zh) * 2015-05-19 2022-03-22 联发科技股份有限公司 图像或者视频数据的熵编解码的方法及熵编解码装置
KR102469145B1 (ko) * 2015-10-13 2022-11-21 삼성전자주식회사 영상을 부호화 또는 복호화하는 방법 및 장치
KR102445668B1 (ko) * 2016-06-01 2022-09-21 삼성전자주식회사 부호화 순서 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
US10880548B2 (en) * 2016-06-01 2020-12-29 Samsung Electronics Co., Ltd. Methods and apparatuses for encoding and decoding video according to coding order
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
US10554977B2 (en) * 2017-02-10 2020-02-04 Intel Corporation Method and system of high throughput arithmetic entropy coding for video coding
US10554988B2 (en) * 2017-03-22 2020-02-04 Qualcomm Incorporated Binary arithmetic coding with parameterized probability estimation finite state machines
KR102414164B1 (ko) * 2017-03-31 2022-06-29 한국전자통신연구원 향상된 산술부호화를 제공하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치
WO2018194190A1 (ko) * 2017-04-18 2018-10-25 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
WO2019009450A1 (ko) * 2017-07-06 2019-01-10 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
US11057629B2 (en) 2017-07-19 2021-07-06 Samsung Electronics Co., Ltd. Encoding method and apparatus therefor, decoding method and apparatus therefor
KR20190140862A (ko) * 2018-06-12 2019-12-20 한국전자통신연구원 문맥 적응적 이진 산술 부호화 방법 및 장치
US10887594B2 (en) 2018-07-05 2021-01-05 Mediatek Inc. Entropy coding of coding units in image and video data
US11006150B2 (en) * 2018-09-24 2021-05-11 Tencent America LLC Method and apparatus for video coding
US11172197B2 (en) * 2019-01-13 2021-11-09 Tencent America LLC Most probable mode list generation scheme
FR3098070B1 (fr) * 2019-06-27 2022-02-18 S A Vitec Procédé d’encodage et de décodage vidéo par signalisation d’un sous-ensemble de candidat
US11418790B2 (en) 2019-06-28 2022-08-16 Qualcomm Incorporated Arithmetic coding with selective adaptation for video coding
US11765370B2 (en) * 2021-07-27 2023-09-19 Mediatek Inc. Video residual decoding apparatus using neighbor storage device with smaller storage size to store neighbor data for context selection and associated method
WO2023194561A1 (en) * 2022-04-08 2023-10-12 Interdigital Ce Patent Holdings, Sas Context-adaptive binary arithmetic coding update refinement

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6900748B2 (en) 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
KR100664936B1 (ko) 2005-04-13 2007-01-04 삼성전자주식회사 코딩 효율이 향상된 컨텍스트 기반 적응적 산술 코딩 및디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오 코딩및 디코딩 방법과 이를 위한 장치
US7894523B2 (en) 2005-09-05 2011-02-22 Lg Electronics Inc. Method for modeling coding information of a video signal for compressing/decompressing coding information
KR20070077059A (ko) 2006-01-19 2007-07-25 삼성전자주식회사 엔트로피 부호화/복호화 방법 및 장치
KR100809301B1 (ko) 2006-07-20 2008-03-04 삼성전자주식회사 엔트로피 부호화/복호화 방법 및 장치
US7365659B1 (en) 2006-12-06 2008-04-29 Silicon Image Gmbh Method of context adaptive binary arithmetic coding and coding apparatus using the same
KR101356733B1 (ko) 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
US8156364B2 (en) 2007-06-12 2012-04-10 International Business Machines Corporation Synchronized parallel processing of rows of data with dependencies by determining start time for processors
US9008171B2 (en) 2008-01-08 2015-04-14 Qualcomm Incorporated Two pass quantization for CABAC coders
US8891615B2 (en) * 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
US8542748B2 (en) 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
US7876257B2 (en) 2008-04-28 2011-01-25 Mitsubishi Electric Research Laboratories, Inc. Method and apparatus for compressing SAR signals
KR101549823B1 (ko) 2008-09-02 2015-09-04 삼성전자주식회사 적응적 이진화를 이용한 영상 부호화, 복호화 방법 및 장치
CN101836454B (zh) 2008-12-03 2012-08-22 联发科技股份有限公司 对有序熵切片执行平行cabac码处理的方法及装置
KR20100102386A (ko) 2009-03-11 2010-09-24 삼성전자주식회사 레지듀얼 값 분포에 적응적인 부호표 선택에 기초한 영상 부호화, 복호화 방법 및 장치
WO2011042645A1 (fr) 2009-10-05 2011-04-14 France Telecom Procedes de codage et de décodage d'images, dispositifs de codage et de decodage et programmes d'ordinateur correspondants
EP2312854A1 (de) * 2009-10-15 2011-04-20 Siemens Aktiengesellschaft Verfahren zur Codierung von Symbolen aus einer Folge digitalisierter Bilder
KR101457894B1 (ko) * 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
JP2011109390A (ja) * 2009-11-17 2011-06-02 Jvc Kenwood Holdings Inc 画像符号化装置、画像符号化方法、画像復号装置、及び、画像復号方法
US8077064B2 (en) 2010-02-26 2011-12-13 Research In Motion Limited Method and device for buffer-based interleaved encoding of an input sequence
JP5676744B2 (ja) * 2010-04-13 2015-02-25 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン エントロピー符号化
ITVI20100175A1 (it) * 2010-06-21 2011-12-22 St Microelectronics Pvt Ltd Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale
WO2012019297A1 (en) * 2010-07-28 2012-02-16 Research In Motion Limited Method and device for compression of binary sequences by grouping multiple symbols
US8976861B2 (en) 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US8755620B2 (en) 2011-01-12 2014-06-17 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus for performing arithmetic coding and/or arithmetic decoding
US9338449B2 (en) 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
TWI487295B (zh) * 2011-05-17 2015-06-01 Univ Nat Cheng Kung 高產出平行化avc/h.264前後文適應性二位元算數解碼器之方法
US8995523B2 (en) * 2011-06-03 2015-03-31 Qualcomm Incorporated Memory efficient context modeling
US9264706B2 (en) * 2012-04-11 2016-02-16 Qualcomm Incorporated Bypass bins for reference index coding in video coding

Also Published As

Publication number Publication date
CN103563381B (zh) 2018-01-19
EP2754293A1 (en) 2014-07-16
KR101812395B1 (ko) 2017-12-26
US9379736B2 (en) 2016-06-28
JP2014518466A (ja) 2014-07-28
CN103563381A (zh) 2014-02-05
KR20150121251A (ko) 2015-10-28
JP2015167381A (ja) 2015-09-24
WO2012167103A1 (en) 2012-12-06
KR101657853B1 (ko) 2016-09-30
JP5937206B2 (ja) 2016-06-22
US20120328026A1 (en) 2012-12-27
KR20140017016A (ko) 2014-02-10

Similar Documents

Publication Publication Date Title
JP6067776B2 (ja) ビデオデータをコンテキスト適応型コーディングすること
JP6081499B2 (ja) 変換係数コーディングのためのコンテキスト導出における走査ベーススライディングウィンドウ
JP6193446B2 (ja) ビデオコード化における係数の走査
JP5852133B2 (ja) ビデオコーディングにおいてビデオブロックについての走査順序情報を効率的にコーディングするために最確走査順序を使用すること
JP5869114B2 (ja) ビデオコーディングにおける非正方ブロックのためのコンテキスト適応型エントロピーコーディング
JP5746363B2 (ja) ビデオコーディングにおいてブロックの走査順序に基づいてビデオブロック内の最後有効係数の位置をコーディングすること
JP5940726B2 (ja) ビデオコーディングにおけるバイパスコーディングされたシンタックス要素のグループ化
JP6162150B2 (ja) ビデオコーディング用の残差4分木(rqt)コーディング
JP5792382B2 (ja) ビデオコーディングにおける最後の有意変換係数のスキャン順序での位置の導出
JP5902307B2 (ja) イントラモードビデオコーディング
JP5869108B2 (ja) メモリ効率的コンテキストモデリング
JP5955955B2 (ja) リーフレベルコード化単位のサブセットについての変換係数のシンタックス要素の信号伝達
JP5855759B2 (ja) 最後有効係数の位置のプログレッシブコーディング
JP6284954B2 (ja) イントラ予測のためのモード決定の簡略化
JP5823623B2 (ja) ビデオコーディングのための動きベクトル予測子候補クリッピング削除
JP5731013B2 (ja) Cabacを使用したビデオコーディングのためのイントラ予測モード選択の指示
JP6231109B2 (ja) コンテキスト適応型、マルチレベル有意性コーディングに関するコンテキスト導出
US20120014433A1 (en) Entropy coding of bins across bin groups using variable length codewords
JP2016076963A (ja) ビデオコーディングにおける並列コンテキスト計算

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067776

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees