【文献】
Benjamin Bross et al., ”High efficiency video coding (HEVC) text specification draft 6”, Joint Collaborative Team on Video Coding (JCT−VC) of ITU−T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting: Geneva, CH, 2012−04−02, [JCTVC−H1003] (version 22), pp.88,191−192
(58)【調査した分野】(Int.Cl.,DB名)
前記コンテキストパターンを選択することが、水平走査、垂直走査、および対角走査の走査タイプのために前記コンテキストパターンを選択することを備える、請求項1に記載の方法。
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、および前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する、前記コンテキストパターンを選択することを備える、請求項1に記載の方法。
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択することを備える、請求項1に記載の方法。
前記コンテキストパターンを選択することが、1次元コンテキストパターンとしてそれぞれ記憶された複数のコンテキストパターンから前記コンテキストパターンを選択することを備える、請求項1に記載の方法。
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、そして、ここにおいて、前記2次元コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、
請求項6に記載の方法。
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、および、ここにおいて、前記2次元コンテキストパターンが、対角方向、水平方向、および垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、請求項6に記載の方法。
前記複数のコンテキストパターンのうちの1つが第1の2次元コンテキストパターンから事前計算され、および、ここにおいて、前記第1の2次元コンテキストパターンが、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを備える、請求項6に記載の方法。
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、および前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する、前記コンテキストパターンを選択することを備える、請求項13に記載の方法。
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択することを備える、請求項13に記載の方法。
前記コンテキストパターンを選択することが、1次元コンテキストパターンとしてそれぞれ記憶された複数のコンテキストパターンから前記コンテキストパターンを選択することを備える、請求項13に記載の方法。
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、そして、ここにおいて、前記2次元コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、請求項17に記載の方法。
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、および、ここにおいて、前記2次元コンテキストパターンが、対角方向、水平方向、および垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、請求項17に記載の方法。
前記複数のコンテキストパターンのうちの1つが第1の2次元コンテキストパターンから事前計算され、および、ここにおいて、前記第1の2次元コンテキストパターンが、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを備える、請求項17に記載の方法。
【発明を実施するための形態】
【0022】
[0038]本明細書ではHEVC WD7と呼ばれ、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v5.zipから入手可能な、高効率ビデオコーディング(HEVC)規格のワーキングドラフト7(WD7)において提案されているものなど、いくつかの例に従って設計されたビデオコーダは、4×4サブブロック係数グループに対するデータアクセスとは異なる非正方形係数グループに対するデータアクセスを必要とし得る。これは、ビデオコーダの実装中に追加のハードウェアおよびソフトウェア複雑さを課し得る。追加のハードウェアおよびソフトウェア複雑さは、非正方形係数グループが削除され、4×4サブブロック係数が対角、垂直、または水平走査タイプのうちの1つに従って走査される場合に低減され得る。しかしながら、この変更は、HEVC WD7に従って定義されたコンテキスト導出が、サブブロックが有意係数を含むかどうかを示すシンタックス要素にコンテキストを割り当てるために使用されるとき、コーディング効率を低減し得る。したがって、本開示は、改善されたコーディング効率を与え得る、サブブロックが有意係数を含むかどうかを示すシンタックス要素にコンテキストを割り当てるための技法について説明する。
【0023】
[0039]たとえば、これらの他の技法(すなわち、必ずしも、本開示で説明される技法によるとは限らない技法)のうちのいくつかでは、コンテキストパターンは、変換ユニット(TU(transform unit)または変換ブロック)の複数の変換係数の有意性を示すシンタックス要素(複数の有意性シンタックス要素と呼ばれる)のコーディングのために、変換ユニットの可能なサイズのサブセットのために使用される。また、これらの他の技法は、限られた走査タイプのためのコンテキストパターンを使用した。したがって、コンテキストパターンが使用され得るかどうかに関する判断が行われ得るように、TUのサイズを判断しなければならないことによって、計算リソースが浪費される。
【0024】
[0040]本開示で説明される技法では、様々な異なるサイズのTUのための複数の走査タイプ(たとえば、水平走査、垂直走査、および対角走査)のために同じコンテキストパターンが使用される。たとえば、ビデオエンコーダまたはビデオデコーダは、8×8TUの4×4サブブロックのための走査タイプにかかわらず(たとえば、4×4サブブロックが水平方向に走査されるのか、垂直方向に走査されるのか、または対角方向に走査されるのかにかかわらず)、4×4サブブロックのために同じ複数のコンテキストパターンからコンテキストパターンを選択し得る。より詳細に説明されるように、複数のコンテキストパターンの各々は、1つまたは複数の隣接サブブロックが有意複数の変換係数(たとえば、非0変換係数)を含むかどうかの条件に関連する。同じくより詳細に説明されるように、本開示は、ビデオエンコーダまたはビデオデコーダがコンテキストパターンをそれらから選択する複数のコンテキストパターンの特性について説明する。このようにして、ビデオエンコーダおよびビデオデコーダは、8×8ブロック(すなわち、8×8TU)の4×4サブブロックを含む、サブブロックの複数の有意性シンタックス要素のための複数の走査タイプ(たとえば、水平走査、垂直走査、および対角走査)について、複数の有意性シンタックス要素のためのコンテキストを判断するために同じコンテキストパターンを使用することができるので、計算効率が実現され得る。
【0025】
[0041]上記の例では、コンテキストパターンは2次元コンテキストパターンであり得る。ただし、本開示の態様はそのように限定されない。いくつかの例では、ビデオエンコーダおよびビデオデコーダはコンテキストパターン(たとえば、1次元コンテキストパターンとして記憶されたコンテキストパターン)を選択する。たとえば、いくつかのコンテキストパターンは2次元コンテキストパターンとして定義され得る。2次元コンテキストパターンから1次元コンテキストパターンを事前計算することが可能であり得る。事前計算は符号化および復号プロセスの速度を上げ得る。たとえば、複数の変換係数は2次元ブロックから1次元ブロックに変換され得る。事前計算された1次元パターンを用いて、1次元ブロックに対して2次元コンテキストパターンを使用することと比較して、変換係数が1次元ブロックに変換されるので、複数の有意性シンタックス要素を符号化または復号するために1次元パターンが使用される場合、符号化および復号効率が実現され得る。2次元コンテキストパターンから1次元コンテキストパターンを事前計算することは、あらゆる例において必要とされるとは限らず、1次元コンテキストパターンを判断する限定された方法と見なされるべきでないことを理解されたい。
【0026】
[0042]1次元コンテキストパターンが計算され得る様々な方法があり得る。一例として、2次元コンテキストパターンは、3つの1次元コンテキストパターン(たとえば、走査タイプごとに1つ)を生成するために、対角方向に走査され、水平方向に走査され、垂直方向に走査され得る。本開示で説明される技法では、2次元コンテキストパターンは、生成される1次元コンテキストパターンの総数を低減する特性を備え得る。
【0027】
[0043]たとえば、1次元コンテキストパターンを生成するために水平方向、垂直方向、および対角方向にそれぞれ走査される4つの2次元コンテキストパターンがある場合、1次元コンテキストパターンは合計12個になるであろう。いくつかの例では、4つの2次元コンテキストパターンは、2つの異なる走査が同じ1次元コンテキストパターンを生じるような方法で構成されたコンテキストを含み得る。
【0028】
[0044]たとえば、2次元コンテキストパターンのうちの1つは、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを含み得る。別の例として、2次元コンテキストパターンのうちの1つは、水平方向に走査されたときに、2次元コンテキストパターンのうちの別のものが垂直方向に走査された場合に生じるであろう同じ1次元ベクトルである1次元コンテキストパターンを生じるコンテキストを含み得る。別の例として、2次元コンテキストパターンのうちの1つは、水平方向、垂直方向、または対角方向に走査されたときに同じ1次元コンテキストパターンを生じるコンテキストを含み得る。
【0029】
[0045]このようにして、コンテキストパターンの異なる走査から生じる得られた1次元コンテキストパターンには重複があり得、これは、記憶される必要がある1次元コンテキストパターンの総数を低減する。これは、1つのコンテキストパターンがサブブロックの2つ以上の走査タイプのために使用されることを可能にする。
【0030】
[0046]たとえば、上記で説明されたように、2次元コンテキストパターンのうちの1つは、水平方向、垂直方向、および対角方向に走査されたときに同じ1次元コンテキストパターンを生じるコンテキストを含む。したがって、このコンテキストパターンでは、1次元コンテキストパターンがコンテキストパターン走査のすべての3つのタイプについて同じであるので、ただ1つの1次元コンテキストパターンが記憶される。
【0031】
[0047]別の例として、2次元コンテキストパターンのうちの1つは、水平方向または垂直方向に走査されたときに同じ1次元コンテキストパターンを生じるコンテキストを含む。この場合、対角走査のための1次元コンテキストパターンが記憶され、水平走査から生じる1次元コンテキストパターンと垂直走査から生じる1次元コンテキストパターンとが同じであるので、水平走査のための1次元コンテキストパターンまたは垂直走査のための1次元コンテキストパターンの両方ではなくいずれかが記憶される。これらの例では、2次元コンテキストパターンから計算されたこれらの1次元コンテキストパターンは、事前計算され、記憶され得、これは、符号化および復号プロセスの速度を上げ得る。
【0032】
[0048]その上、いくつかの例では、1次元コンテキストパターンは、必ずしも、2次元コンテキストパターンから計算される必要があるとは限らない。そうではなく、1次元コンテキストパターンは、1次元コンテキストパターンとしてあらかじめ選択され、記憶され得る。これらの例でも、1次元コンテキストパターンは、現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別し得る。
【0033】
[0049]デジタルビデオデバイスは、デジタルビデオ情報をより効率的に符号化および復号するためのビデオ圧縮技法を実装する。ビデオ圧縮技法は、JCT−VCによって現在開発中のHEVC規格などのビデオコーディング規格に従って定義され得る。HEVCの規格化の取り組みは、HEVCテストモデル(HM:HEVC Test Model)と呼ばれるビデオコーディングデバイスのモデルに基づく。HMは、以前のビデオコーディング規格、たとえば、ITU−T H.264/AVCの開発中に利用可能なビデオコーディングデバイスに対するビデオコーディングデバイスの能力の改善を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HEVCは35個ものイントラ予測符号化モードを提供する。さらに、HEVC規格化の取り組みの一部として、JCT−VCは、HEVC規格のドラフトへの個々の変更が全体的コーディング性能にどのように影響を及ぼし得るかを評価するために使用され得るテスト条件を定義した。コーディング性能を評価するために使用される1つの基準は、いわゆるBDレートである。
【0034】
[0050]「HEVCワーキングドラフト7」または「WD7」と呼ばれるHEVCの最近のワーキングドラフト(WD)は、文書JCTVC−I1003_d4、Brossら、「High efficiency video coding (HEVC) text specification draft 7」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第9回会合:スイス、ジュネーブ、2012年4月〜5月に記載されている。さらに、HEVCの別の最近のワーキングドラフト、ワーキングドラフト9(WD9)は、文書JCTVC−K1003_v7、Brossら、「High Efficiency Video Coding (HEVC) Text Specification Draft 9」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第11回会合:中国、上海、2012年10月に記載されている。WD9の最新バージョンは、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v29.zipから見つけられる。
【0035】
[0051]本開示の技法は、ITU−T H.264規格および今度のHEVC規格に関して説明されるが、本開示の技法は、概して、任意のビデオコーディング規格に適用可能である。本出願では、例示のために、開発中のHEVC規格の現在提案されている態様のいくつかに従うコーディングが説明される。ただし、本開示で説明される技法はまた、ITU−T H.264または他の規格に従って定義されるビデオコーディングプロセスあるいはプロプライエタリビデオコーディングプロセスなど、他のビデオコーディングプロセスのために有用であり、それらのプロセスに適用され得る。
【0036】
[0052]ビデオシーケンスは、一般に、ピクチャとも呼ばれる一連のビデオフレームを含む。ピクチャのグループ(GOP:group of pictures)は、概して、一連の1つまたは複数のビデオフレームを備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。各フレームは複数のスライスを含み得る。ピクチャの各スライスは、それぞれのスライスのコーディングモードを記述するスライスシンタックスデータを含み得る。各スライスは複数のビデオブロックまたはコーディングユニットを含み得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
【0037】
[0053]ビデオブロックは、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(フレーム内)予測および/または時間的(フレーム間)予測技法を適用することによって符号化され得る。空間的予測は「イントラモード」(Iモード)と呼ばれることがあり、時間的予測は「インターモード」(PモードまたはBモード)と呼ばれることがある。予測技法は、参照サンプルのブロックと呼ばれることもある、ビデオデータの予測ブロックを生成する。コーディングされるべき元のビデオデータのブロックが予測ブロックと比較される。ビデオデータの元のブロックと予測ブロックとの間の差分は残差データと呼ばれることがある。残差データは、一般に、予測ブロックのピクセル値とビデオデータの元のブロックのピクセル値との間の差分のアレイである。
【0038】
[0054]変換、たとえば、離散コサイン変換(DCT:discrete cosine transform)または概念的に同様の変換、整数変換、ウェーブレット変換、または他のタイプの変換が、複数の変換係数の対応するセットを生成するために、コーディングプロセス中に残差データに適用され得る。したがって、ビデオの元のブロックは、複数の変換係数に対して逆変換を実行し、残差データを予測ブロックに加算することによって復元され得る。複数の変換係数はまた、量子化され得る。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために複数の変換係数が量子化され、さらなる圧縮を行うプロセスを指す。すなわち、複数の変換係数の値は、定義されたビット深度によるビットストリングとして表され得る。たとえば、量子化中にnビット値がmビット値に切り捨てられ得、ただし、mはnよりも小さい。場合によっては、量子化は、低い値の複数の変換係数を0として表すことになり得る。量子化複数の変換係数は複数の変換係数レベルと呼ばれることがある。
【0039】
[0055]量子化の後、量子化複数の変換係数は、たとえば、コンテンツ適応型可変長コーディング(CAVLC:content adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または確率間隔区分エントロピーコーディング(PIPE:probability interval partitioning entropy coding)などのエントロピーコーディング方法に従ってエントロピー符号化され得る。予測モードを定義するシンタックス要素などのシンタックス要素もエントロピーコーディングされ得る。CAVLCを実行するために、ビデオエンコーダは、送信されるべきシンボルのための可変長コードを選択し得る。VLCにおけるコードワードは、相対的により短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。CABACを実行するために、ビデオエンコーダは、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。
【0040】
[0056]いくつかのエントロピー符号化技法では、量子化複数の変換係数を走査して、エントロピー符号化され得る量子化複数の変換係数のシリアル化ベクトルを生成するために、あらかじめ定義された走査順序が使用され得る。したがって、予測ビデオコーディングに従って、ピクセル差分値を備える残差値は、エントロピーコーディングのためのシリアル化複数の変換係数(serialized transform coefficient)を生成するために、複数の変換係数に変換され、量子化され、走査され得る。
【0041】
[0057]ビデオコーディングでは、一例として、ビデオフレームは1つまたは複数のスライスに区分され、スライスは、連続する整数個のコーディングユニットを含む。コーディングユニット(CU)は、概して、ビデオ圧縮のために様々なコーディングツールが適用される基本ユニットとして働く矩形画像領域を指す。概して、本開示の技法は、CUのデータを変換し、量子化し、走査し、エントロピーコーディングすることに関する。CUは、一般に正方形であり、たとえば、ITU−T H.264などの他のビデオコーディング規格に記載されているいわゆる「マクロブロック」と同様であると見なされ得る。CUは、ビデオサンプル値のアレイと見なされ得る。ビデオサンプル値は、画素、ピクセル、またはペルと呼ばれることもある。CUは、通常、Yとして示されるルミナンス成分と、UおよびVとして示される2つのクロマ成分とを有する。2つのクロマ成分は、それぞれ、C
bおよびC
r成分として示されることもある。CUのサイズは、水平方向および垂直方向のサンプルの数によって定義され得る。したがって、CUはN×NまたはN×M CUと記述され得る。本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法に関するビデオブロックのピクセル寸法、たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ただし、Nは非負整数値を表す。ブロック中のピクセルは行と列に構成され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備え得、ただし、Mは必ずしもNに等しいとは限らない。
【0042】
[0058]より良好なコーディング効率を達成するために、CUはビデオコンテンツに応じて可変サイズを有し得る。HEVCによれば、ビットストリーム内のシンタックスデータは、サンプルの数に関してフレームまたはピクチャのための最大のCUである最大コーディングユニット(LCU:largest coding unit)を定義し得る。一般に、LCUは64×64ルーマサンプルを含むが、LCUのサイズはコーディング適用例に応じて変動し得る。LCUは「コーディングツリーユニット」と呼ばれることもある。他の寸法のCUは、LCUをサブCUに再帰的に区分することによって生成され得る。サブCUへのLCUの区分は、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して実行され得る。したがって、LCUはツリーブロックと呼ばれることもある。4分木区分によれば、LCUなど、4分木のルートノードは、4つのより小さいノードに分割され得、各子ノードは、次に、別の4つのより小さいノードにさらに分割され得る。ビットストリームのためのシンタックスデータは、CU深度と呼ばれる、LCUが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。一般に、SCUは8×8ルーマサンプルを含む。したがって、一例では、4つの32×32CUは、64×64LCUを4つのサブCUに区分することによって生成され得、32×32CUの各々は16個の8×8CUにさらに区分され得る。
【0043】
[0059]CUは、1つまたは複数の関連する予測ユニット(PU:prediction unit)および/または変換ユニット(TU)を含み得る。概して、PUは、CUのためのビデオデータの予測ブロックを生成するために使用されるデータを含む。PUは「予測パーティション」と呼ばれることもある。CUに関連するシンタックスデータは、CUを1つまたは複数のPUに区分することを記述し得る。PUは、形状が正方形または非正方形であり得る。PU中に含まれるタイプデータは、CUが、スキップモード符号化またはダイレクトモード符号化されるのか、イントラ予測モード符号化されるのか、あるいはインター予測モード符号化されるのかに応じて異なり得る。たとえば、CUがイントラモード符号化されるべきであるとき、PUは、イントラ予測モードを記述するデータを含み得、CUがインターモード符号化されるべきであるとき、PUは、PUのための動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリストを記述し得る。CUのPUを使用した予測の後、ビデオコーダはCUの残差データを計算し得る。
【0044】
[0060]HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2NまたはN×NのPUサイズでのイントラ予測をサポートし、2N×2N、2N×N、N×2N、またはN×Nの対称的なPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称区分をサポートする。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、または「Right」という表示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5N PUと下部の2N×1.5N PUとで水平方向に区分された2N×2N CUを指す。
【0045】
[0061]上記で説明されたように、残差データをピクセル領域から変換領域に変換するために、残差データに変換が適用され得る。HEVC規格は、CUごとに異なり得るTUに従う変換を可能にする。TUは、一般に、所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUのサイズはCUのサイズと同じであり得るか、またはCUは複数のTUに区分され得る。TUは、一般にPUと同じサイズであるかまたはPUよりも小さい。HEVCでは、CUに関連するシンタックスデータは、4分木に従ってCUを1つまたは複数のTUに区分することを記述し得る。
【0046】
[0062]概して、TUは、残差データを複数の変換係数に変換するプロセスのために使用される。TUは、形状が正方形または非正方形であり得る。たとえば、8×8残差値のブロックは8×8複数の変換係数のセットに変換され得る。複数の変換係数のこのセットは、より一般的には変換ブロックと呼ばれることがある。たとえば、ある変換は、サンプルの16×16アレイに関連する残差値に対して実行され得るか、または、ある変換は、サンプルの4つの8×8アレイの各々に対して実行され得る。より大きいTUは、概して、再構成画像中のより知覚できる「ブロッキネス」とともにより多くの圧縮を与えるが、より小さいTUは、概して、あまり知覚できない「ブロッキネス」とともにより少ない圧縮を与える。TUサイズの選択はレートひずみ最適化分析に基づき得る。利用可能なTUサイズは、32×32、16×16、および8×8TUを含み得る。本開示は、一般に、CUのコーディングノードを指すために「ビデオブロック」という用語を使用することに留意されたい。いくつかの特定の場合において、本開示は、コーディングノードならびにPUおよびTUを含む、ツリーブロック、すなわち、LCUまたはCUを指すためにも「ビデオブロック」という用語を使用し得る。
【0047】
[0063]概念的に、変換ブロックまたはTUは複数の変換係数の2次元(2D)行列であり得る。上記で説明されたように、ビデオコーダは、変換ブロックに対して量子化演算を実行し得る。量子化複数の変換係数を走査して、量子化複数の変換係数のシリアル化ベクトルを生成するために、あらかじめ定義された走査順序が使用され得る。量子化複数の変換係数のシリアル化ベクトルは、次いで、さらなる圧縮を行うためにエントロピー符号化され得る。
【0048】
[0064]いくつかの例では、16×16TUおよび32×32TUでは、量子化複数の変換係数のシリアル化ベクトルを生成するために4×4サブブロック走査が使用される。たとえば、サブブロックは、右上から左下への走査を使用して逆方向に走査される。また、サブブロック内では、複数の変換係数は、右下から左上への走査を使用して逆方向に走査される。このタイプの走査は対角4×4サブブロック走査と呼ばれることがある。いくつかの例では、8×8TUも、1つの可能な走査として対角4×4サブブロック走査を使用し得る。
図1は、ビデオブロックのための係数グループおよび走査の一例を示す概念図である。
図1は、サブブロックの各々に対して対角走査が実行される、4つの4×4サブブロックに分割された8×8ビデオブロックを示している。サブブロックは係数グループと呼ばれることもある。
図1では、各係数グループは、より太い内側の線を使用して識別および分離されている。
図1に示されているように、4つの係数グループがあり、各係数グループは16個の係数を含む。
図1におけるサブブロック内の走査は、矢印を使用して示されている。
【0049】
[0065]対角4×4サブブロック走査に加えて、モード依存係数走査が、いくつかの8×8イントラ予測モードのための非正方形水平および垂直走査を可能にする。8×8TUの非正方形水平および垂直走査では、係数グループは非正方形水平走査のための8×2矩形(すなわち、走査順序における16個の連続する係数)として定義される。同様にして、係数グループは非正方形垂直走査のための2×8矩形として定義される。
図2A〜
図2Bに、それぞれ、8×8TUの水平走査および垂直走査をもつ非正方形係数グループを示す。
図2A〜
図2Bでは、各係数グループは、より太い内側の線を使用して識別および分離されている。
図2A〜
図2Bに示されているように、4つの係数グループがあり、各係数グループは16個の係数を含む。
図2Aでは、サブブロックは、右から左への走査を使用して走査される。
図2Bに示されているように、サブブロックは、下から上への走査を使用して走査される。
図2A〜
図2Bにおけるサブブロック内の走査は、矢印を使用して示されている。HEVC WD7に従って設計されたビデオコーダは、標準4×4サブブロック係数グループに対するデータアクセスとは異なる非正方形係数グループに対するデータアクセスを必要とし得ることに留意されたい。これは、ビデオコーダの実装中に追加のハードウェアおよびソフトウェア複雑さを課し得る。
【0050】
[0066]したがって、対角4×4サブブロック走査ならびに非正方形水平および垂直走査に加えて、水平および垂直サブブロック走査も、非正方形水平および垂直走査の代替として8×8TUの4×4サブブロックのために提案された。サブブロック水平および垂直走査の例は、各々が参照により本明細書に組み込まれる、(1)Rosewarne,C.、Maeda,M.「Non-CE11: Harmonisation of 8x8 TU residual scan」JCT−VC Contribution JCTVC−H0145、(2)Yu,Y.、Panusopone,K.、Lou,J.、Wang,L.「Adaptive Scan for Large Blocks for HEVC;JCT−VC Contribution JCTVC−F569、(3)2012年7月17日に出願された米国特許出願第13/551,458号に記載されている。8×8TUのために使用され得る2つの例示的な水平および垂直4×4サブブロック走査が
図3A〜3Bに示されている。
図3A〜
図3Bでは、各係数グループは、より太い内側の線を使用して識別および分離されている。
図1に示されたグループと同様に、
図3A〜3Bでは、右上から左下への走査を使用して逆方向に走査される4つの4×4係数グループがある。サブブロック内の走査は、矢印を使用して示されている。
【0051】
[0067]提案JCTVC−H0145に従って、非正方形水平および垂直走査の代替として水平4×4サブブロック走査および垂直4×4サブブロック走査を使用しながら、8×8TUの可能な走査として、対角4×4サブブロック、水平4×4サブブロック走査、および垂直4×4サブブロック走査のセットを使用することが、8×8TUのための可能な走査として、対角4×4サブブロック、水平8×2矩形走査、および垂直2×8矩形走査のセットを使用することと比較して、イントラ構成について0.3%の性能BDレート損失を生じたことに留意されたい。すなわち、
図2A〜
図2Bに示された走査の代わりに
図3A〜
図3Bに示された走査を使用することは、いくつかのテストケースにおいて0.3%だけコーディング性能を減少させた。
【0052】
[0068]ビデオコーディングの例では、各サブブロックは、5つのコーディングパス、すなわち、(1)有意性パス、(2)1超(greater than one)パス、(3)2超(greater than two)パス、(4)符号パス、および(5)係数レベル剰余(coefficient level remaining)パスを使用してコーディングされる。有意性コーディングは、サブブロック内の係数のいずれかが1以上の値を有するかどうかを示すためのシンタックス要素を生成することを指す。すなわち、1以上の値をもつ係数は有意と見なされる。有意性のコーディングは2つの部分を含む。有意性コーディングの第1の部分では、非0係数がサブブロック中にあるかどうかを示すシンタックス要素が、各係数グループ(すなわち、4×4サブブロック)についてコーディングまたは推論される。そのようなシンタックス要素の一例は係数グループフラグ(CGF:coefficient group flag)と呼ばれる。HEVC WD7では、CGFはシンタックス要素significant_coeff_group_flagによって表され得る。HEVC WD9では、係数グループフラグのシンタックス要素名は、significant_coeff_group_flagからcoded_sub_block_flag(係数グループが4×4サブブロックであるので、CSBFと呼ばれることもある)に変更された。本開示は、係数グループフラグをCGFと呼び、CGFはsignificant_coeff_group_flagシンタックス要素またはcoded_sub_block_flagシンタックス要素のいずれかに対応し得る。
【0053】
[0069]有意コーディングの第2の部分では、CGFが1である(すなわち、非0係数がサブブロック中にある)場合、複数の変換係数が有意(すなわち、1以上の値)であるか否かを示すシンタックス要素が係数グループ中の各複数の変換係数について生成される。そのようなシンタックス要素の例は複数の有意性シンタックス要素と呼ばれ、それらの例は有意係数フラグである。HEVC WD7およびWD9では、有意係数フラグはシンタックス要素significant_coefficient_flagによって表される。
【0054】
[0070]言い換えれば、係数の有意性のコーディングでは、2つのタイプのシンタックス要素がコーディングされる。非0係数がコーディンググループ中にあるかどうかを示す第1のシンタックス要素(たとえば、CGF)が各コーディンググループ(すなわち、サブブロック)についてコーディングされる。第1のシンタックス要素が、少なくとも1つの非0係数がコーディンググループ中にあることを示す場合、係数が0であるのか非0係数であるのかを示す第2のシンタックス要素(たとえば、複数の有意性シンタックス要素またはsignificant_coefficient_flag)がコーディンググループ中の各係数についてコーディングされる。
【0055】
[0071]1超パスは、有意係数の絶対値が1よりも大きいかどうかを示すためのシンタックス要素を生成する。一例では、coeff_abs_level_greater1_flag(略して「gr1Flag」)と呼ばれるシンタックス要素は、有意係数が1よりも大きい絶対値を有するかどうかに関する指示を与える。同様にして、2超パスは、1よりも大きい係数の絶対値が2よりも大きいかどうかを示すためのシンタックス要素を生成する。一例では、coeff_abs_level_greater2_flag(略して「gr2Flag」)と呼ばれるシンタックス要素は、1よりも大きい係数が2よりも大きい絶対値を有するかどうかに関する指示を与える。
【0056】
[0072]符号パスは、有意係数についての符号情報を示すためのシンタックス要素を生成する。一例では、coeff_sign_flag(略して「signFlag」)と呼ばれるシンタックス要素は有意係数についての符号情報を示し得る。たとえば、signFlagのための値0は正号を示し得、値1は負号を示し得る。係数レベル剰余パスは、複数の変換係数レベルの残りの絶対値(たとえば、剰余値)を示すシンタックス要素を生成する。一例では、coeff_abs_level_remain(略して「levelRem」)と呼ばれるシンタックス要素がこの指示を与え得る。一例として、gr2Flagが所与の係数について存在しない限り、levelRemシンタックス要素はシグナリングされ得ないが、そのような限定が常に必要とされるとは限らない。一例では、levelの値をもつ係数は、(abs(level)−x)としてコーディングされ得、ただし、xの値は、gr1Flagおよびgr2Flagの存在に依存する。たとえば、gr2Flagが存在する場合、xは3に等しくなり得る。いくつかの例では、levelの値は、剰余があるいずれの係数についても(abs(level)−3)としてコーディングされ得る。5パス手法は、複数の変換係数をコーディングするために使用され得る1つの例示的な技法にすぎず、本明細書で説明される技法は、他の技法に等しく適用可能であり得ることに留意されたい。
【0057】
[0073]さらに、上記で説明されたシンタックス要素に加えて、TU内の最後有意係数の位置がビットストリーム中でシグナリングされ得る。TU中の最後有意係数の位置は、TUに関連する走査順序に依存する。最後有意係数を識別するための走査順序は、上記で説明された走査順序のうちのいずれか、または別の所定の走査順序であり得る。HEVC WD7では、ブロック内の最後有意係数の位置は、x座標値とy座標値とを指定することによって示される。x座標値は、last_significant_coeff_x_prefixシンタックス要素とlast_significant_coeff_x_suffixシンタックス要素とを使用して示され得る。y座標値は、last_significant_coeff_y_prefixシンタックス要素とlast_significant_coeff_y_suffixシンタックス要素とを使用して示され得る。
【0058】
[0074]このようにして、上記で説明されたシンタックス要素は、複数の変換係数のいわゆる有意性マップをシグナリングするために使用され得、有意性マップは、TUに関する有意係数の位置を示した。
図4は、変換ブロック中の複数の変換係数と変換マップに関連する有意性マップとの間の関係を示す概念図である。
図4に示されているように、有意性マップは、変換ブロック中の有意係数値、すなわち、0よりも大きい値の各インスタンスを示す「1」を含む。また、この例では、CFGの値は、少なくとも1つの非0係数がコーディンググループ(すなわち、サブブロック)中にあることを示す「1」である。
【0059】
[0075]たとえば、
図4中の左側のサブブロックは例示的な複数の変換係数(たとえば、量子化複数の変換係数)を示す。図示のように、サブブロック中に少なくとも1つの非0係数があり、したがってCFGは1である。また、
図4中の右側の有意性マップは、サブブロック中の各複数の変換係数のための複数の有意性シンタックス要素(たとえば、有意係数フラグ)を含む。たとえば、すべての対応する複数の変換係数のための有意係数フラグ値1は、これらの複数の変換係数の値が0でないことを示し(すなわち、非0変換係数)、すべての対応する複数の変換係数のための値0は、これらの複数の変換係数の値が0であることを示す。
【0060】
[0076]HEVCでは、上記で説明されたsignificant_coeff_group_flagおよびsignificant_coefficient_flagなど、量子化複数の変換係数に関係するシンタックス要素および他のシンタックス要素は、CABAC(コンテキスト適応型バイナリ算術コーディング)を使用してエントロピーコーディングされ得る。シンタックス要素にCABACコーディングを適用するために、「ビン」と呼ばれる一連の1つまたは複数のビットを形成するためにシンタックス要素に2値化が適用され得る。さらに、コーディングコンテキストはシンタックス要素のビンに関連付けられ得る。コーディングコンテキストは、特定の値を有するビンをコーディングする確率を識別し得る。たとえば、コーディングコンテキストは、(この事例では、「優勢シンボル」の一例を表す)0の値のビンをコーディングする0.7の確率と、1の値のビンをコーディングする0.3の確率とを示し得る。コーディングコンテキストを識別した後に、コンテキストに基づいてビンが算術的にコーディングされ得る。場合によっては、特定のシンタックス要素またはそのビンに関連するコンテキストは、他のシンタックス要素またはコーディングパラメータに依存し得る。
【0061】
[0077]たとえば、CGFコンテキスト導出は、対応する係数グループの走査順序に依存する。たとえば、対角4×4サブブロック走査に従って走査される係数グループでは(たとえば、16×16TUおよび32×32TUおよびいくつかの8×8TUの場合)、CGFコンテキスト(すなわち、シンタックス要素significant_coeff_group_flagのコンテキスト)は、係数グループの右側のサブブロックのCGF(CGF
R)と、係数グループの下側のサブブロックのCGF(CGF
B)とに依存する。
図2A〜
図2Bに示された非正方形水平および垂直走査では(たとえば、8×8TUの場合)、係数グループのCGFコンテキストは、前にコーディングされた係数グループのCGFのみに依存する。水平走査の場合、前のコード化係数グループは係数グループの下側のコード化係数グループを指す。垂直走査の場合、前の係数グループは係数グループの右側の係数グループを指す。
【0062】
[0078]HEVC WD7では、CGFのコンテキスト導出は、対角4×4サブブロック走査(すなわち、CGF
RとCGF
Bとに依存する)と非正方形水平および垂直走査(すなわち、前のCGFのみに依存する)とでは異なるので、4×4対角サブブロック係数グループのためのCGFコンテキスト導出と、非正方形水平および垂直走査のためのCGFコンテキスト導出とのために異なる論理パスが必要とされ、これは、同じくハードウェアおよびソフトウェア複雑さを課し得ることに留意されたい。
【0063】
[0079]HEVC WD7では、significant_coefficient_flagシンタックス要素に割り当てられるコンテキストは、(1)4×4サブブロック内の複数の変換係数の位置、(2)現在のサブブロックの右側のサブブロックのCGF(CGF
R)および現在のサブブロックの下側のサブブロックのCGF(CGF
B)、ならびに(3)サブブロックがDC係数を含んでいるかどうかに依存する。その全体が参照により本明細書に組み込まれる、Kumakura,T.、Fukushima,S.「Non-CE3: Simplified context derivation for significant map」JCT−VC Contribution JCTVC−I0296は、4×4サブブロック内の係数が、CGF
RおよびCGF
Bの値とサブブロック内の係数の位置とに応じてコンテキストを割り当てられる、一例を与えている。
【0064】
[0080]
図5A〜
図5Dに、CGF
RとCGF
Bとに応じた4×4サブブロックの有意係数フラグのコンテキスト割当ての4つの異なるパターンを示す。
図5A〜
図5Dでは、コンテキスト番号付けが0から開始しているが、これは説明のためであり、HEVC WD7において使用される実際のコンテキスト番号を反映しておらず、相対的なコンテキスト番号付けにすぎないことに留意されたい。
図5A〜
図5Dに示されているように、各コンテキストパターンは16個のコンテキスト値を含み、各コンテキスト値は、それぞれの位置にある係数に対応する。さらに、
図5A〜
図5Dに示されているように、コンテキストパターンは、CGF
RおよびCGF
Bの値に基づいて判断される。このようにして、
図5A〜
図5Dにおけるパターンは、コンテキストが、4×4サブブロック内の複数の変換係数の位置とCGF
RおよびCGF
Bの値とに基づいて有意係数フラグに割り当てられる、一例を示す。
図5A〜
図5Dに示されたコンテキスト割当ては、走査を使用して生成されたベクトル内の有意係数のあり得るロケーションに基づいて、
図3A〜
図3Bに示された水平または垂直サブブロック走査のために最適ではないことに留意されたい。
【0065】
[0081]さらに、一例では、コンテキストパターン内のコンテキストの値は、対応するサブブロックがDC係数を含むかどうかに基づいて変更され得る。DC係数は、変換の第1の係数であり得、一例として、概して、ブロック全体中の平均量エネルギーを示し得る。ルーマ複数の変換係数では、4×4サブブロックがDC係数を含んでいない場合、コンテキストオフセットが適用され得る。いくつかの例では、コンテキストオフセット3が適用される。一例として、4×4サブブロックがDC係数を含まず、コンテキストパターンから導出されたコンテキスト割当てが2である場合、使用される実際のコンテキストは5であり得る。言い換えれば、コンテキスト導出プロセスはどちらの場合もまったく同じであり得る(すなわち、パターンは、CGF
RおよびCGF
Bの値に基づいてパターンのセットから選択される)が、コンテキストの異なるセットがDCサブブロックと非DCサブブロックとのために使用される。すなわち、DCブロックと非DCブロックは同じコンテキストを共有しない。
【0066】
[0082]本開示は、「DCサブブロック」という用語を、ブロックのDC係数を含む、ブロック(たとえば、TU)のサブブロックを指すために使用する。たとえば、TUのDC係数が左上端の係数であると仮定すると、DC係数を含むTUの左上端のサブブロックはDCサブブロックと呼ばれることがある。さらに、一例では、クロマ複数の変換係数の場合、4×4サブブロックがDC係数を含んでいるかどうかに基づくコンテキストオフセット判断が適用されない。すなわち、コンテキストは、クロマ複数の変換係数についてDCサブブロックと非DCサブブロックとのために共有される。したがって、場合によっては、3つのコンテキストのみが、クロマ成分に関連する複数の変換係数のために使用される。さらに、場合によっては、DC係数は、すべてのTUサイズのために共有される別個のコンテキストを常に使用し得る。さらに、HEVC WD7では、8×8TUのための有意性マップコンテキスト導出は、コンテキスト割当てのためにスケーリングされた8×8テーブルを使用し、したがって、8×8TUのための有意性マップコーディングは、16×16TUおよび32×32TUのための有意性マップコンテキスト導出と統合されない。
【0067】
[0083]本開示は、コーディンググループフラグシンタックス要素(すなわち、significant_coeff_group_flagまたはcoded_sub_block_flag)および有意係数シンタックス要素(すなわち、significant_coefficient_flag)など、変換ブロック中に含まれる複数の変換係数に関連するシンタックス要素をコーディングするためのいくつかの技法について説明する。特に、本開示は、
図3A〜
図3Bにおける走査順序が、
図2A〜
図2Bに示された非正方形係数グループの代替として使用され得る技法について説明する。さらに、本開示は、複数の変換係数に関連するシンタックス要素のためのコンテキスト導出技法について説明し、本技法は、
図3A〜
図3Bに示されたサブブロック走査の特性に基づく。一例では、コンテキスト導出技法は、
図3A〜
図3Bに示された走査が、
図2A〜
図2Bに示された走査の代わりに使用されるとき、上記で説明されたBDレート性能損失を緩和し得る。
【0068】
[0084]
図6は、本開示で説明される技法を利用してコンテキストを割り当てるために構成され得る例示的なビデオ符号化および復号システム10を示すブロック図である。
図6に示されているように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。ただし、本開示の技法は、必ずしもワイヤレス適用例または環境に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするために構成され得る。
【0069】
[0085]
図6の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ12によって符号化され得る。符号化ビデオデータは、リンク16を介してソースデバイス20の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化ビデオデータは、さらに(または代替として)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス32上に記憶され得る。
【0070】
[0086]リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータをトランスポートすることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が、符号化ビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【0071】
[0087]ストレージデバイス32は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散したまたはローカルでアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス32は、ソースデバイス12によって生成された符号化ビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス32から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。
【0072】
[0088]
図6の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス34とを含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介してまたはストレージデバイス32から符号化ビデオデータを受信する。リンク16を介して通信され、またはストレージデバイス32上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、またはファイルサーバ上に記憶される符号化ビデオデータとともに含まれ得る。
【0073】
[0089]ディスプレイデバイス34は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み得、また、外部ディスプレイデバイスとインターフェースするために構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。ディスプレイデバイス34は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【0074】
[0090]ビデオエンコーダ20およびビデオデコーダ30は、上記で説明されたように、現在開発中のHEVC規格などのビデオ圧縮規格に従って動作し得、概して、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.264規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。さらに、ビデオエンコーダ20およびビデオデコーダ30は、本明細書で説明される技法を組み込むために変更されたビデオ圧縮規格に従って動作し得る。
【0075】
[0091]
図6には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルに準拠し得る。
【0076】
[0092]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(CODEC)の一部として統合され得る。
【0077】
[0093]
図7は、本開示で説明する技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。
図8の例では、ビデオエンコーダ20は、モード選択ユニット35と、予測処理ユニット41と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測モジュール46とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換モジュール60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(
図7に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。追加のループフィルタ(ループ内またはループ後)もデブロッキングフィルタに加えて使用され得る。予測処理ユニット41および変換処理ユニット52は、上記で説明されたPUおよびTUと混同されるべきでないことに留意されたい。
【0078】
[0094]
図7に示されているように、ビデオエンコーダ20はビデオデータを受信し、モード選択ユニット35はデータをビデオブロックに区分する。この区分は、たとえば、LCUおよびCUの4分木構造に従って、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分をも含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット41は、誤り結果(たとえば、コーディングレートおよびひずみレベル)に基づいて現在のビデオブロックのために、複数のイントラコーディングモードのうちの1つ、または複数のインターコーディングモードのうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット41は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構成するために加算器62に与え得る。
【0079】
[0095]予測処理ユニット41内のイントラ予測ユニット46は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対する現在のビデオブロックのインター予測コーディングを実行する。
【0080】
[0096]動き推定ユニット42は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを判断するために構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスに指定し得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。
【0081】
[0097]予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって判断され得るピクセル差分に関して、コーディングされるべきビデオブロックのPUにぴったり一致することが発見されるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに関して動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【0082】
[0098]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
【0083】
[0099]動き補償ユニット44によって実行される動き補償は、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実行することを伴い得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマとクロマの両方の差分成分を含み得る。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。動き補償ユニット44はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
【0084】
[0100]イントラ予測ユニット46は、上記で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを判断し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット35)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット46は、様々なテストされるイントラ予測モードのためにレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を判断する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを判断するために、様々な符号化ブロックのひずみおよびレートから比を計算し得る。
【0085】
[0101]いずれの場合も、ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に与え得る。エントロピー符号化ユニット56は、本明細書で説明されるエントロピー技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックのための符号化コンテキストの定義と、コンテキストの各々のために使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る、構成データを含め得る。
【0086】
[0102]予測処理ユニット41が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、1つまたは複数のTUに含まれ得、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差複数の変換係数に変換し得る。変換処理ユニット52は、ピクセル領域からの残差ビデオデータを周波数領域などの変換領域に変換し得る。場合によっては、変換処理ユニット52は、(水平方向と垂直方向の両方における)2次元(2D)変換をTU中の残差データに適用し得る。いくつかの例では、変換処理ユニット52は、代わりに、TUの各々中の残差データに、水平方向1D変換を適用すること、垂直方向1D変換を適用すること、または変換を適用しないことがある。
【0087】
[0103]変換処理ユニット52は、得られた複数の変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために複数の変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深さを低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化複数の変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
【0088】
[0104]上記で説明されたように、変換ブロックに対して実行される走査は変換ブロックのサイズに基づき得る。量子化処理ユニット54および/またはエントロピー符号化ユニット56は、
図1、
図2A〜
図2B、および
図3A〜3Bに関して上記で説明されたサブブロック走査の任意の組合せを使用して、8×8、16×16、および32×32変換ブロックを走査し得る。一例では、32×32変換ブロックおよび16×16変換ブロックは、
図1に関して上記で説明された4×4対角サブブロック走査を使用して走査され得、8×8変換ブロックは、
図1および
図3A〜
図3Bに関して上記で説明された4×4サブブロック走査を使用して走査され得る。2つ以上の走査が変換ブロックのために利用可能であるとき、エントロピー符号化ユニット56は、変換ブロックに対応する予測ユニットに関連する予測モードなど、変換ブロックに関連するコーディングパラメータに基づいて走査を選択し得る。エントロピー符号化ユニット56に関するさらなる詳細は、
図8に関して以下で説明される。
【0089】
[0105]逆量子化処理ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するためにピクセル領域において残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための参照ブロックを生成する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット42と動き補償ユニット44とによって参照ブロックとして使用され得る。
【0090】
[0106]量子化の後に、エントロピー符号化ユニット56は量子化複数の変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE)コーディングあるいは別のエントロピー符号化方法または技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームは、ビデオデコーダ30に送信されるか、あるいはビデオデコーダ30が後で送信するかまたは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。エントロピー符号化ユニット56は、CABACを使用して、上記で説明された、significant_coeff_group_flag、significant_coefficient_flag、coeff_abs_level_remain、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、およびcoeff_sign_flagシンタックス要素などのシンタックス要素をエントロピー符号化し得る。
【0091】
[0107]
図8は、本開示で説明される技法を実装し得る例示的なエントロピー符号化ユニット56を示すブロック図である。
図8に示されたエントロピー符号化ユニット56はCABACエンコーダであり得る。例示的なエントロピー符号化ユニット56は、2値化ユニット502と、バイパス符号化エンジン504と正規符号化エンジン508とを含む算術符号化ユニット510と、コンテキストモデリングユニット506とを含み得る。
【0092】
[0108]エントロピー符号化ユニット56は、上記で説明されたsignificant_coeff_group_flagまたはcoded_sub_block_flagシンタックス要素のいずれか、ならびにsignificant_coefficient_flag、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、およびcoeff_abs_level_remainシンタックス要素など、1つまたは複数のシンタックス要素を受信し得る。2値化ユニット502は、シンタックス要素を受信し、ビンストリング(すなわち、バイナリストリング)を生成する。2値化ユニット502は、たとえば、ビンストリングを生成するために、固定長コーディング、単項コーディング、短縮単項コーディング、短縮ライスコーディング、ゴロムコーディング、指数ゴロムコーディング、およびゴロムライスコーディングといった技法のうちのいずれか1つまたは組合せを使用し得る。さらに、場合によっては、2値化ユニット502は、シンタックス要素をバイナリストリングとして受信し、ビン値を単にパススルーし得る。一例では、2値化ユニット502は、シンタックス要素significant_coeff_group_flagを受信し、ビンストリングを生成する。
【0093】
[0109]算術符号化ユニット510は、2値化ユニット502からビンストリングを受信し、そのビンストリングに対して算術符号化を実行するために構成される。
図8に示されているように、算術符号化ユニット510は、バイパス経路または正規コーディング経路からビン値を受信し得る。バイパス経路に従うビン値は、バイパスコーディングされたものとして識別されるビン値であり得、正規符号化経路に従うビン値は、CABACコーディングされたものとして識別され得る。上記で説明されたCABACプロセスに従って、算術符号化ユニット510がバイパス経路からビン値を受信した場合、バイパス符号化エンジン504は、ビン値に割り当てられた適応型コンテキストを利用せずに、ビン値に対して算術符号化を実行し得る。一例では、バイパス符号化エンジン504は、ビンの可能な値について等しい確率を仮定し得る。
【0094】
[0110]算術符号化ユニット510が正規経路を介してビン値を受信した場合、コンテキストモデリングユニット506は、正規符号化エンジン508が、コンテキストモデリングユニット506によって与えられたコンテキスト割当てに基づいて算術符号化を実行し得るように、コンテキスト変数(たとえば、コンテキスト状態)を与え得る。コンテキスト割当ては、今度のHEVC規格などのビデオコーディング規格に従って定義され得る。さらに、一例では、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、本明細書で説明される技法に基づいて、significant_coeff_group_flagおよびsignificant_coefficient_flagシンタックス要素のビンにコンテキストを割り当てるために構成され得る。本技法は、HEVCまたは別のビデオコーディング規格に組み込まれ得る。コンテキストモデルはメモリに記憶され得る。コンテキストモデリングユニット506は、特定のビンのためのコンテキストとコンテキスト変数とを判断するために、一連のインデックス付きデーブルを含み、および/またはマッピング関数を利用し得る。ビン値を符号化した後、正規符号化エンジン508は、実際のビン値に基づいてコンテキストを更新し得る。
【0095】
[0111]上記で説明されたように、
図5A〜
図5Dに示されたコンテキスト割当ては、
図3A〜
図3Bに示された水平または垂直4×4サブブロック走査のために最適ではない。たとえば、
図5Aおよび
図5Dに示されたパターンは、対角線に沿って分割されたコンテキスト割当て領域を有する。これらの領域は、水平または垂直4×4サブブロック走査が適用されるとき、有意係数の予想されるロケーションと対応しない。また、水平4×4サブブロック走査の第1の行は、第2の行よりも有意である、はるかに高い確率を有する。同様にして、垂直4×4サブブロック走査の第1の列は、第2の列よりも有意である、はるかに高い確率を有する。したがって、
図5A〜
図5Dに示されたコンテキストパターンは、水平4×4サブブロック走査または垂直4×4サブブロック走査に従って走査された有意係数フラグに対してより最適なコンテンツ割当てを行うために変更され得る。したがって、HEVC WD7に従って定義されたコンテキスト割当てに基づいて算術符号化を実行することに加えて、正規符号化エンジン508は、本明細書で開示される技法に従って導出されたコンテキストに基づいて算術符号化を実行するために構成され得る。
【0096】
[0112]
図9A〜
図9Dに、水平4×4サブブロック走査または垂直4×4サブブロック走査に関する有意係数の予想される位置に基づくコンテキストパターンを示す。
図9A〜
図9Dでは、
図5A〜
図5Dに示されたコンテキストパターンの場合と同様に、コンテキスト番号付けが0から開始しているが、これは説明のためであり、実際のコンテキスト番号を反映しておらず、相対的なコンテキスト番号付けにすぎないことに留意されたい。
図9A〜
図9Dは、CGF
RとCGF
Bとに応じて4×4サブブロックの有意係数フラグのコンテキスト割当てのために使用され得る4つの異なるパターンを示しており、ただし、CGF
Rは、右側のコーディンググループ(すなわち、右サブブロック)のためのコンテキストグループフラグを指し、CGF
Bは、下側のコーディンググループ(すなわち、下サブブロック)のためのコンテキストグループフラグを指す。この場合も、コンテキストグループフラグシンタックス要素は、コーディンググループの複数の変換係数のいずれかが非0であるかどうかを示す。
【0097】
[0113]本開示で説明される技法によれば、ビデオエンコーダ20は、複数の有意性シンタックス要素を符号化するためにコンテキストパターンを選択し、ビデオデコーダ30は、複数の有意性シンタックス要素を復号するためにコンテキストパターンを選択する。
図9A〜
図9Dは、ビデオエンコーダ20およびビデオデコーダ30が符号化および復号のためにコンテキストパターンをそれらから選択し得る複数の2次元コンテキストパターンの例を示している。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、複数の走査タイプのために同じコンテキストパターン(たとえば、
図9A〜
図9Dに示されているもの)からコンテキストパターンを選択し得る。たとえば、水平走査の場合、ビデオエンコーダ20およびビデオデコーダ30は同じコンテキストパターンから選択し得る。垂直走査の場合、ビデオエンコーダ20およびビデオデコーダ30は、水平走査のためのものと同じコンテキストパターンから選択し得る。対角走査の場合、ビデオエンコーダ20およびビデオデコーダ30は、水平走査および垂直走査のためのものと同じコンテキストパターンから選択し得る。
【0098】
[0114]概して、
図9A〜
図9Dに示されたコンテキストパターンは、
図5A〜
図5Dに示されたそれぞれのパターンと比較して、より少ない対角方向割当て挙動と、より多くの行/列方向割当て挙動とを有すると言われ得る。エントロピー符号化ユニット56は、
図9A〜
図9Dに示されたコンテキストパターンに基づいてsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために構成され得る。
【0099】
[0115]
図9A〜
図9Dに示されているように、各コンテキストパターンは16個のコンテキスト値を含み、各コンテキスト値は、それぞれの位置にある係数に対応する。
図9Dにおけるコンテキストパターン(すなわち、CGF
B=1、CGF
R=1の場合)は、すべての位置について均一(すなわち、コンテキスト=2)であることに留意されたい。
図9Dは、コンテキストパターンが均一でない
図5Dとは対照的であり得る。さらに、
図9Bに示されたCGF
B=0、CGF
R=1の場合のコンテキストパターン、および
図9Cに示されたCGF
B=1、CGF
R=0の場合のコンテキストパターンは、それぞれ、第1の行および列に、
図5Bおよび
図5Cに示されたコンテキストパターンよりも多くの重要性を与える。また、
図9Aに示されたCGF
B=0、CGF
R=0の場合のコンテキストパターンは、
図5Aに示されたコンテキストパターンと比較して、より方形であり、左上係数により多くの重要性を与える。
【0100】
[0116]一例では、エントロピー符号化ユニット56は、水平および垂直4×4サブブロック走査の場合には、
図9A〜
図9Dに示されたコンテキストパターンに基づいてsignificant_coefficient_flagシンタックス要素にコンテキストを割り当て、対角4×4サブブロック走査の場合には、
図5A〜
図5Dに示されたコンテキストパターンに基づいてsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために構成され得る。別の例では、コンテキストパターンの総数を制限するために、エントロピー符号化ユニット56は、対角、水平、および垂直4×4サブブロック走査のすべてについて、
図9A〜
図9Dに示されたコンテキストパターンに基づいてsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために構成され得る。
【0101】
[0117]さらに、
図5A〜
図5Dおよび
図9A〜
図9Dに示されたコンテキストパターンの組合せが、significant_coefficient_flagシンタックス要素にコンテキストを割り当てるために使用され得る。たとえば、水平4×4サブブロック走査は、CGF
BおよびCBF
Rのそれぞれの値について、
図5A、
図9B、
図5C、および
図9Dに示されたコンテキストパターンを使用し得る。この例では、水平4×4サブブロック走査は、垂直特性をもつパターン(すなわち、
図9Cに示されたパターン)を使用しない。これは、水平走査の統計値が、通常、
図9Cに示された分布に一致しないので、コーディングを改善し得る。別の例では、水平4×4サブブロック走査の場合、事例(CGF
B=1、CBF
R=0)のための
図9Cに示されたパターンを使用する代わりに、
図9Dに示されたパターンが、事例(CGF
B=1、CBF
R=0)と事例(CGF
B=1、CBF
R=1)の両方ために使用され得る。この例では、所与の走査のための異なるCGF構成のためにパターン共有が行われる。そのようなパターン共有は他の走査タイプにも適用され得る。
【0102】
[0118]上記で説明されたように、一例では、量子化処理ユニット54および/またはエントロピー符号化ユニット56は、
図1に関して上記で説明された4×4対角サブブロック走査を使用して32×32変換ブロックと16×16変換ブロックとを走査し得、8×8変換ブロックは、
図1および
図3Aおよび
図3Bに関して上記で説明された4×4サブブロック走査を使用して走査され得る。一例では、エントロピー符号化ユニット56は、8×8変換ブロックのために使用されるコンテキストパターンに基づいてsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために使用されるコンテキストパターンに基づいて、32×32および16×16変換ブロックのためのsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために構成され得る。
【0103】
[0119]一例では、エントロピー符号化ユニット56は、32×32、16×16、および8×8変換ブロックの各々のためのコンテキストを導出するために、
図9A〜
図9Dに示されたコンテキストパターンを使用し得る。別の例では、エントロピー符号化ユニット56は、4×4対角サブブロック走査が適用されるとき、32×32、16×16、および8×8変換ブロックのためのコンテキストを導出するために、
図5A〜
図5Bに示されたものなど、コンテキストパターンのセットを使用し、4×4水平サブブロック走査または4×4垂直サブブロック走査のいずれかが適用されるとき、8×8変換ブロックのためのコンテキストを導出するために、
図9A〜
図9Dに示されたものなど、コンテキストパターンの異なるセットを使用し得る。この例では、コンテキストの導出は、異なるサイズのTUのために共有され得、走査タイプに依存し得る。
【0104】
[0120]さらに、コンテキストを導出し、DCおよび非DCサブブロックに割り当てる場合と同様に、コンテキスト導出は、32×32、16×16、および8×8変換ブロックの各々のために共有され得るが、実際のコンテキストは、各サイズの変換ブロックについて異なり得る。たとえば、32×32、16×16、および8×8変換ブロックのために使用される実際のコンテキストの各々は、
図5A〜
図5Bに示されたコンテキストパターンに基づき得るが、TUのサイズに基づいてコンテキストパターンの各々にオフセットが適用され得る。この例では、32×32、16×16、および8×8変換ブロックの各々は、実際のコンテキストではなく、コンテキスト導出を共有するであろう。別の例では、コンテキスト導出は、TUのサイズまたは走査タイプにかかわらず、すべてのサブブロックについて同じであり得る(たとえば、
図9A〜
図9Dに示されたパターンがすべての場合に使用され得る)が、実際のコンテキストの3つのセット、すなわち、大きいTU(16×16および32×32)のためのコンテキストの1つのセット、対角走査を伴う8×8TUのためのコンテキストの1つのセット、および水平または垂直走査を使用するときの8×8TUのためのコンテキストの1つのセットがあり得る。これらのセットは、コンテキストパターンのセットに異なるオフセットを適用することによって定義され得る。したがって、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、すべての走査順序のための統合されたコンテキスト導出を使用してsignificant_coefficient_flagにコンテキストを割り当てるために構成され得る。
【0105】
[0121]上記で説明されたように、DCサブブロックのためのsignificant_coefficient_flagには、非DCサブブロックのためのsignificant_coefficient_flagとは異なるコンテキストのセットが割り当てられ得る。すなわち、実際のコンテキストを判断するときに、コンテキストパターンにオフセットが適用され得る。これの理由は、4×4対角サブブロック走査が使用されるとき、DCサブブロックの統計値が、一般に、非DCサブブロックの統計値とははるかに異なることである。しかしながら、サブブロックが4×4水平または垂直サブブロック走査を使用して走査されるとき、DCサブブロックの統計値と非DCサブブロックの統計値とは類似していることがある。たとえば、水平サブブロック走査を使用する8×8TUの場合、DCサブブロックの右側のサブブロックは、他の非DCサブブロックよりもDCサブブロックと類似している統計値を有し得る。同様に、垂直走査の場合、DCサブブロックの下側のサブブロックは、他の非DCサブブロックよりもDCサブブロックと類似している統計値を有し得る。
【0106】
[0122]非DCサブブロックのうちの1つが、DCサブブロックと類似している統計値を有し得ることを補償するために、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、DCサブブロックおよび隣接する非DCサブブロックのためにコンテキストの第1のセットを使用するために構成され得、コンテキストの第2のセットが、他の非DCサブブロックにコンテキストを割り当てるために使用され得る。たとえば、水平4×4サブブロック走査が8×8TUのために使用されるとき、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、サブブロックの第1の行にコンテキストを割り当てるためにコンテキストの第1のセットを使用し、サブブロックの第2の行にコンテキストを割り当てるためにコンテキストの第2のセットを使用するために構成され得る。たとえば、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、
図5A〜
図5Dに示されたコンテキストパターンを使用し、第2の行のために
図9A〜
図9Dに示されたコンテキストパターンを使用するために構成され得る。さらに、DCサブブロックが、依然として一意のコンテキストセットを有し得るように、非DCサブブロックにオフセットがさらに適用され得る。同様にして、垂直サブブロック走査タイプの場合、コンテキストパターンは列ベースで割り当てられ得る。さらに、この概念は、3つ以上の列または行をもつより大きいTUに拡張され得る。サブブロックの行または列に基づいてコンテキストを導出し、割り当てる技法は、すべてのサイズのTUに適用され得る。したがって、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、サブブロック走査タイプと変換ブロック内のサブブロックのロケーションとに基づいて、significant_coefficient_flagにコンテキストを割り当てるために構成され得る。
【0107】
[0123]上記で説明されたように、
図9A〜
図9Dは、ビデオエンコーダ20が、変換ブロックのサブブロックの複数の変換係数の複数の有意性シンタックス要素を符号化するためのコンテキストを判断するために選択する例示的なコンテキストパターンを示している。いくつかの例では、サブブロックの複数の走査タイプのために(すなわち、サブブロックが水平方向、垂直方向、または対角方向に走査されるべきである場合)、ビデオエンコーダ20は、
図9A〜
図9Dに示されたコンテキストパターンのうちの1つからコンテキストパターンを選択し得る。言い換えれば、ビデオエンコーダ20がコンテキストパターンをそれらから選択し得るコンテキストパターンは、複数の走査タイプ(たとえば、水平走査、垂直走査、および対角走査)について同じであり得る。
【0108】
[0124]さらに、
図9A〜
図9Dに示されたように、コンテキストパターンの各々は、1つまたは複数の隣接サブブロックが非0変換係数を含むかどうかの条件に関連する。たとえば、1つまたは複数の隣接サブブロックは、第1の隣接サブブロックと第2の隣接サブブロックとを含む。いくつかの例では、コンテキストパターンの各々は、第1の隣接サブブロック(たとえば、現在のサブブロックの下側にある下サブブロック)が非0変換係数を含むかどうか、および第2の隣接サブブロック(たとえば、現在のサブブロックの右側にある右サブブロック)が非0変換係数を含むかどうかの条件に関連する。上記で説明されたように、CGF
Bは、下サブブロックが非0変換係数を含むかどうかを示し、CGF
Rは、右サブブロックが非0変換係数を含むかどうかを示す。
【0109】
[0125]ビデオエンコーダ20は、以下で説明されるように、様々なファクタに基づいて、
図9A〜
図9Dに示されたコンテキストパターンのうちの1つを選択し得る。いずれの場合も、ビデオエンコーダ20は、選択されたコンテキストパターンに基づいて、複数の変換係数の複数の有意性シンタックス要素の各々にコンテキストを割り当て得る。
【0110】
[0126]たとえば、ビデオエンコーダ20が、第1の隣接サブブロックが非0変換係数を含まず、第2の隣接サブブロックが少なくとも1つの非0変換係数を含む(すなわち、CGF
Bが0に等しく、CGF
Rが1に等しい)という条件に関連するコンテキストパターンを選択した場合、ビデオエンコーダ20は、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素の第1の行に、現在のサブブロックのための複数の変換係数の有意性要素の他の行のためのコンテキストとは異なるコンテキストを割り当て得る。たとえば、CGF
Bが0に等しく、CGF
Rが1に等しい場合、
図9Bは、変換ブロックの第1の行が、サブブロックの第1の行の複数の有意性シンタックス要素を符号化するために、サブブロックの他の行のためのコンテキストとは異なるコンテキスト2(またはオフセット3を仮定して5)を割り当てられることを示す。
【0111】
[0127]ビデオデコーダ30は実質的に同様の方法で機能し得る。たとえば、ビデオデコーダ30が、
図9Bに示されたコンテキストパターン(たとえば、CGF
Bが0に等しく、CGF
Rが1に等しいという条件)を選択した場合、ビデオデコーダ30は、それに応じて、変換ブロックのサブブロックの複数の有意性シンタックス要素にコンテキストを割り当てる。たとえば、ビデオエンコーダ20と同様に、ビデオデコーダ30は、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素の第1の行に、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素の他の行のためのコンテキストとは異なるコンテキストを割り当てる。
【0112】
[0128]別の例として、ビデオエンコーダ20が、第1の隣接サブブロックが少なくとも1つの非0変換係数を含み、第2の隣接サブブロックが非0変換係数を含まない(すなわち、CGF
Bが1に等しく、CGF
Rが0に等しい)という条件に関連するコンテキストパターンを選択した場合、ビデオエンコーダ20は、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素の第1の列に、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素の他の列のためのコンテキストとは異なるコンテキストを割り当て得る。たとえば、CGF
Bが1に等しく、CGF
Rが0に等しい場合、
図9Cは、変換ブロックの第1の列が、サブブロックの第1の列の複数の有意性シンタックス要素を符号化するために、サブブロックの他の列のためのコンテキストとは異なるコンテキスト2(またはオフセット3を仮定して5)を割り当てられることを示す。
【0113】
[0129]ビデオデコーダ30は実質的に同様の方法で機能し得る。たとえば、ビデオデコーダ30が、
図9Cに示されたコンテキストパターン(たとえば、CGF
Bが1に等しく、CGF
Rが0に等しいという条件)を選択した場合、ビデオデコーダ30は、それに応じて、変換ブロックのサブブロックの複数の有意性シンタックス要素にコンテキストを割り当てる。たとえば、ビデオエンコーダ20と同様に、ビデオデコーダ30は、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素の第1の列に、現在のサブブロックのための複数の変換係数の有意性要素の他の列のためのコンテキストとは異なるコンテキストを割り当てる。
【0114】
[0130]別の例として、ビデオエンコーダ20が、第1の隣接サブブロックが少なくとも1つの非0変換係数を含み、第2の隣接サブブロックが少なくとも1つの非0変換係数を含む(すなわち、CGF
Bが1に等しく、CGF
Rが1に等しい)という条件に関連するコンテキストパターンを選択した場合、ビデオエンコーダ20は、現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素に同じコンテキストを割り当て得る。たとえば、CGF
Bが1に等しく、CGF
Rが1に等しい場合、
図9Dは、複数の有意性シンタックス要素のためのすべてのコンテキストが同じ(すなわち、2)であることを示す。
【0115】
[0131]ビデオデコーダ30は実質的に同様の方法で機能し得る。たとえば、ビデオデコーダ30が、
図9Dに示されたコンテキストパターン(たとえば、CGF
Bが1に等しく、CGF
Rが1に等しいという条件)を選択した場合、ビデオデコーダ30は、それに応じて、変換ブロックのサブブロックの複数の有意性シンタックス要素にコンテキストを割り当てる。たとえば、ビデオエンコーダ20と同様に、ビデオデコーダ30は、現在のサブブロックのための複数の変換係数の有意性要素に同じコンテキストを割り当てる。
【0116】
[0132]CGF
Bが0に等しく、CGF
Rが0に等しい場合、ビデオエンコーダ20は、
図9Aに示されたコンテキストパターンを選択し、それに応じて、変換ブロックのサブブロックの複数の有意性シンタックス要素にコンテキストを割り当て得る。ビデオデコーダ30は、CGF
Bが0に等しく、CGF
Rが0に等しい場合、実質的に同様の方法で機能し得る。
【0117】
[0133]さらに、
図9A〜
図9Dに示されたコンテキストパターンは、上記で説明されたもの以外の特性を含み得る。たとえば、(たとえば、CGF
Bが0に等しく、CGF
Rが0に等しいときの)コンテキストパターンの特性のうちの1つは、コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元ベクトルを生じるコンテキストを含むことである。
【0118】
[0134]たとえば、
図9Aに示されたコンテキストパターンが右下から左上に水平方向に走査された場合、得られた1次元ベクトルは、[0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 2]である。
図9Aに示されたコンテキストパターンが右下から左上に垂直方向に走査された場合、得られた1次元ベクトルは、[0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 2]である。見られ得るように、これらの2つの1次元ベクトルは同じである。
【0119】
[0135]コンテキストパターンの特性の別の例として、コンテキストパターンのうちの2つは、コンテキストパターンのうちの1つの水平走査と、コンテキストパターンのうちの別の1つの垂直走査とが同じ1次元ベクトルを生じるような、互いの転置である。たとえば、右下から左上への
図9Bに示されたコンテキストパターンの水平走査は1次元ベクトル[0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2]を生じる。右下から左上への
図9Cに示されたコンテキストパターンの垂直走査は1次元ベクトル[0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2]を生じる。見られ得るように、これらの2つの1次元ベクトルは同じである。
【0120】
[0136]コンテキストパターンの特性の別の例として、コンテキストパターンのうちの1つは、水平方向、垂直方向、対角方向に走査された場合に同じ1次元ベクトルを生じるコンテキストを含む。たとえば、
図9Dに示されたコンテキストパターンのコンテキストの水平走査、垂直走査、または対角走査は同じ1次元ベクトル[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]を生じる。
【0121】
[0137]上記で説明されたように、ビデオエンコーダ20は、様々なファクタに基づいて、
図9A〜
図9Dに示されたコンテキストパターンのうちの1つを選択する。一例として、ビデオエンコーダ20は、下および右サブブロックのCGFに基づいてコンテキストパターンを選択する。ただし、追加のファクタもあり得る。たとえば、ビデオエンコーダ20は、走査タイプに基づいてコンテキストパターンを選択し得る。走査タイプがサブブロックの水平走査である場合、ビデオエンコーダ20は、
図9Bに示されたコンテキストパターンを選択し得る。走査タイプがサブブロックの垂直走査である場合、ビデオエンコーダ20は、
図9Cに示されたコンテキストパターンを選択し得る。ビデオデコーダ30は同様の方法で機能し得る。
【0122】
[0138]いくつかの例では、上記で説明されたように、ビデオエンコーダ20は、どのコンテキストパターンを選択すべきかを判断するために、ビデオエンコーダ20が評価するコンテンツパターンからコンテキストパターンを除外し得る。たとえば、サブブロックの走査タイプが水平である場合、ビデオエンコーダ20は、CGF
Bが1に等しく、CGF
Rが0に等しい場合でも、
図9Cに示されたコンテキストパターンはコンテキストパターンとして選択され得ないと判断し得る。この場合、ビデオエンコーダ20は、
図9Dに示されたコンテキストパターンを選択し得る。たとえば、サブブロックの走査タイプが水平である場合、ビデオエンコーダ20は
図9Cに示されたコンテキストパターンを除外し得る。残りのコンテキストパターンから、ビデオエンコーダ20は、
図9Dに示されたコンテキストパターンを選択し得る。この場合、CGF
BおよびCGF
Rの異なる値のためにコンテキストパターン共有が行われ得る。たとえば、水平走査では、ビデオエンコーダ20は、CGF
Bが0に等しく、CGF
Rが1に等しい場合、またはCGF
Bが1に等しく、CGF
Rが1に等しい場合、
図9Dに示されたコンテキストパターンを選択し得る。
【0123】
[0139]垂直走査の走査タイプでは、ビデオエンコーダ20は、CGF
Bが0に等しく、CGF
Rが1に等しい場合でも、
図9Bに示されたコンテキストパターンを除外し得ることを除いて、ビデオエンコーダ20は同様の方法で機能し得る。この例では、ビデオエンコーダ20は、残りの複数のコンテキストパターンからコンテキストパターンを選択する。ビデオデコーダ30は同様の方法で機能する。
【0124】
[0140]たとえば、ビデオエンコーダ20およびビデオデコーダ30は、現在のサブブロックの走査タイプを判断し、現在のサブブロックの判断された走査タイプに基づいて、複数のコンテキストパターンから、コンテキストパターンとして選択され得ない少なくとも1つのコンテキストパターンを判断する。ビデオエンコーダ20およびビデオデコーダ30は、判断された少なくとも1つのコンテキストパターンを除く複数のコンテキストパターンに基づいてコンテキストパターンを選択する。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、下隣接サブブロックが非0変換係数を含むかどうか、および右隣接サブブロックが非0変換係数を含むかどうかにかかわらず、判断された少なくとも1つのコンテキストパターンを除く複数のコンテキストパターンに基づいてコンテキストパターンを選択する。
【0125】
[0141]
図5A〜
図5Dおよび
図9A〜
図9Dでは、コンテキストパターンは、2Dブロックとして図示および定義されている。ただし、いくつかの実際的実装形態では、ビデオエンコーダ20などのビデオエンコーダは、コンテキスト割当てプロセスの速度を上げるために、選択されたサブブロック走査タイプに従って2Dブロックを1Dベクトルとして表し、1Dベクトルを記憶し得る。この状況では、異なるサブブロック走査タイプを使用したサブブロックにコンテキストを割り当てるために同じ2Dコンテキストパターンが使用される場合でも、選択されたサブブロック走査タイプに基づいて、異なる1Dベクトルが取得され得る。たとえば、水平走査に従って走査された、
図9Cに示されたコンテキストパターンの1Dベクトルは、以下の1Dベクトル表現を有するであろう。
【数1】
【0126】
一方、垂直走査に従って走査された、
図9Cに示されたコンテキストパターンは、以下の1Dベクトル表現を有するであろう。
【数2】
【0127】
[0142]この場合、ビデオエンコーダ20などのビデオエンコーダが、1Dベクトル(すなわち、1次元コンテキストパターン)としてコンテキストパターンを記憶する場合、各コンテキストパターンについていくつかのベクトルがあり得る。各コンテキストパターンについてのいくつかの異なる1Dベクトルの記憶を克服する1つの方法は、コンテキストパターンを1Dベクトル(すなわち、1次元コンテキストパターン)として直接定義し、2つ以上のサブブロック走査タイプのために同じベクトルを使用することによる方法である。たとえば、一定値(すなわち、すべて2)をもつコンテキストパターンは、走査タイプにかかわらず同じ走査1Dを与える。この例では、1Dベクトルは、同じコンテキスト(たとえば、2)または複数の有意性シンタックス要素のすべてを指定し得る。1Dベクトルは以下のように表され得る。
【数3】
【0128】
[0143]別の例では、1次元コンテキストパターンは、走査順序における第1の複数の有意性シンタックス要素のために第1のコンテキストを定義し、走査順序における第2および第3の複数の有意性シンタックス要素のために第2のコンテキストを定義し、走査順序における残りの複数の有意性シンタックス要素のために第3のコンテキストを定義する。たとえば、1Dベクトルは、第1の有意係数フラグのためにコンテキスト2を指定し、第2および第3の割当てのためにコンテキスト1を指定し、残りの割当てのためにコンテキスト0を指定し得、以下のように表され得る。
【数4】
【0129】
[0144]別の可能なコンテキストパターンは、Scan_Pattern=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]である。この例では、コンテキストパターンは、走査順序における第1の複数の有意性シンタックス要素のために第1のコンテキスト(たとえば、1)を定義し、走査順序における残りの複数の有意性シンタックス要素のために第2のコンテキスト(たとえば、0)を定義する。
図10は、サブブロック中の係数のためのコンテキスト割当てのパターンの一例を示す概念図である。
図10に示されたコンテキストパターンのための得られた走査パターンは、上記で定義されたように、対角、水平および垂直4×4サブブロック走査について同じである。コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、1Dベクトル(すなわち、1次元コンテキストパターン)としてコンテキストパターンを記憶するために構成され得る。一例では、同じ記憶された走査パターンが、対角、水平および垂直4×4サブブロック走査など、複数のサブブロック走査タイプのためのsignificant_coefficient_flagにコンテキストを割り当てるために使用され得る。
【0130】
[0145]いくつかの例では、1次元コンテキストパターンは、
図9A〜
図9Dに示されたものなどの2次元コンテキストパターンから事前計算され得る。たとえば、
図9A〜9Dに示されたコンテキストパターンは、1次元コンテキストパターンを生成するために、水平方向、垂直方向、および対角方向に走査され得る。したがって、この例では、最高12個の1次元コンテキストパターンがあり得る。しかしながら、
図9A〜
図9Dに示されたコンテキストパターンの特性は、12個よりも少ない1次元コンテキストパターンが事前計算され、記憶されるような特性であり得る。
【0131】
[0146]たとえば、上記で説明されたように、
図9Aに示されたコンテキストパターンの水平走査と垂直走査は同じ1次元ベクトルを生じる。したがって、
図9Aに示されたコンテキストパターンの水平、垂直、および対角走査は、3つではなく、2つの一意の1次元コンテキストパターンを生じる。
【0132】
[0147]また、
図9Bおよび
図9Cに示されたコンテキストパターンについて、それらのうちの一方では、3つ(すなわち、走査タイプごとに1つ)の一意の1次元コンテキストパターンがあり得る。しかしながら、他方では、ただ2つの一意の1次元コンテキストパターンがあり得る。これは、
図9Bに示されたコンテキストパターンの水平走査と、
図9Cに示されたコンテキストパターンの垂直走査とが同じ1次元コンテキストパターンを生じるからである。したがって、
図9Bおよび
図9Cに示されたコンテキストパターン間には合計5つの一意の1次元コンテキストパターンがある。言い換えれば、複数の1次元コンテキストパターンのうちの1つは、
図9Bに示されたコンテキストパターン(たとえば、第1の2次元コンテキストパターン)から事前計算される。第1の2次元コンテキストパターンは、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを含む。第1の2次元パターンが
図9Bに示されたものであるときの、第2の2次元コンテキストパターンの一例は、
図9Cに示された2次元コンテキストパターンである。
【0133】
[0148]
図9Dに示されたコンテキストパターンでは、ただ1つの一意の1次元コンテキストパターンがある(すなわち、対角、水平、および垂直走査が、すべて、同じ1次元コンテキストパターンを生じる)。たとえば、
図9Dに示されたコンテキストパターンが、1次元パターンを事前計算するために使用されるとき、(垂直方向に走査されたのか、水平方向に走査されたのか、または対角方向に走査されたのかにかかわらず)得られた1次元パターンは、サブブロックの複数の変換係数の複数の有意性シンタックス要素のすべてのために同じコンテキスト(たとえば、2)を定義するコンテキストパターンを生じる。したがって、
図9A〜
図9Dに示されたコンテキストパターンの特性は、合計8つ(すなわち、
図9Aから2つ、
図9Bおよび
図9Cから5つ、および
図9Dから1つ)の1次元コンテキストパターンを生じ、これは、コンテキストパターンが
図9A〜
図9Dに示されたコンテキストパターンの特性を備えない場合に記憶される必要があるであろう12個の1次元コンテキストパターンよりも少ない。
【0134】
[0149]上記で説明されたように、significant_coefficient_flagシンタックス要素にコンテキストを割り当てることに加えて、一例では、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、significant_coeff_group_flagにコンテキストを割り当てるために構成され得る。上記で説明されたように、HEVC WD7では、significant_coeff_group_flagのコンテキスト導出は、走査順序(すなわち、対角4×4走査が適用されるのか、非正方形水平走査が適用されるのか、または非正方形垂直走査が適用されるのか)に依存する。非正方形走査の代わりに、
図3A〜
図3Bに示された走査が使用される場合、significant_coeff_group_flagのコンテキスト導出は、HEVC WD7で説明されているコンテキスト導出から変更され得る。一例では、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、サブブロックに関連するTUの走査タイプおよびサイズにかかわらず、サブブロックのすべてのために同じコンテキスト導出を使用してsignificant_coeff_group_flagにコンテキストを割り当てるために構成され得る。しかしながら、一例では、significant_coeff_group_flagに割り当てられる実際のコンテキストは、サブブロックが、対角4×4サブブロック走査を使用して走査されるのか、水平4×4サブブロック走査を使用して走査されるのか、垂直4×4サブブロック走査を使用して走査されるのかに基づいて異なり得る。一例では、4×4対角走査が適用されるときには、significant_coeff_group_flagにコンテキストを割り当てるためにコンテキストの第1のセットが使用され得、水平または垂直4×4サブブロック走査が適用されるときには、significant_coeff_group_flagにコンテキストを割り当てるためにコンテキストの第2のセットが使用され得る。一例では、コンテキストの第2のセットは、第1のコンテキストセットにオフセットを追加することによって導出され得る。
【0135】
[0150]したがって、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56がsignificant_coeff_group_flagおよびsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために使用したいくつかの技法がある。エントロピー符号化ユニット56は、上記で説明された技法の任意の組合せを使用して、significant_coeff_group_flagおよびsignificant_coefficient_flagシンタックス要素にコンテキストを割り当てるために構成され得る。
【0136】
[0151]
図11は、本開示の技法による、ビデオデータを符号化することの一例を示すフローチャートである。
図11におけるプロセスは、概して、ビデオエンコーダ20によって実行されるものとして以下で説明されるが、プロセスは、ビデオエンコーダ20、エントロピー符号化ユニット56、および/またはコンテキストモデリングユニット506の任意の組合せによって実行され得る。
【0137】
[0152]
図11に示されるように、ビデオエンコーダ20は、ブロックの現在のサブブロックの複数の変換係数のための複数の有意性シンタックス要素を生成する(1102)。複数の変換係数の複数の有意性シンタックス要素(たとえば、有意性係数フラグ)は、複数の変換係数の値が0(すなわち、0複数の変換係数)であるのか非0(すなわち、非0変換係数)であるのかを示す。いくつかの例では、サブブロックは4×4サブブロックであり、ブロックは8×8変換ブロックである。
【0138】
[0153]ビデオエンコーダ20は、現在のサブブロックの複数の変換係数の複数の有意性シンタックス要素のための複数の走査タイプ(たとえば、水平走査、垂直走査、および対角走査)のために同じ複数の2次元コンテキストパターンからコンテキストパターンを選択する(1104)。コンテキストパターンの例としては、
図9A〜
図9Dに示されたコンテキストパターンがある。本開示で説明される技法では、ビデオエンコーダ20は、サブブロックが水平方向、垂直方向、または対角方向に走査される場合、同じ複数の2次元コンテキストパターンから選択し得る。言い換えれば、走査タイプは水平または垂直であり、ビデオエンコーダ20は、走査タイプが対角である場合、ビデオエンコーダ20がそれらから選択する同じ複数の2次元コンテキストパターンの中から選択する。
【0139】
[0154]また、上記で説明されたように、コンテキストパターンの各々は、1つまたは複数の隣接サブブロックが非0変換係数を含むかどうかの条件に関連する。たとえば、1つまたは複数の隣接サブブロックは、第1の隣接サブブロックと第2の隣接サブブロックとを含み、コンテキストパターンの各々は、第1の隣接サブブロックが非0変換係数を含むかどうか、および第2の隣接サブブロックが非0変換係数を含むかどうかの条件に関連し得る(すなわち、各コンテキストは、CGF
BおよびCGF
Rの値が1であるのか0であるのかの条件に関連する)。
【0140】
[0155]ビデオエンコーダ20は、選択されたコンテキストパターンに基づいて、複数の変換係数の複数の有意性シンタックス要素の各々にコンテキストを割り当てる(1106)。たとえば、上記で説明されたように、ビデオエンコーダ20が、CGF
Bが0に等しく、CGF
Rが1に等しい(すなわち、下サブブロックが非0変換係数を含まず、右ブロックが少なくとも1つの非0変換係数を含む)という条件に関連するコンテキストパターンを選択した場合、ビデオエンコーダ20は、サブブロックの複数の有意性シンタックス要素の第1の行に、他の行のためのコンテキストとは異なるコンテキスト(たとえば、コンテキスト2、またはオフセット3をもつコンテキスト5)を割り当てる。
【0141】
[0156]ビデオエンコーダ20が、CGF
Bが1に等しく、CGF
Rが0に等しい(すなわち、下サブブロックが少なくとも1つの非0変換係数を含み、右ブロックが非0変換係数を含まない)という条件に関連するコンテキストパターンを選択した場合、ビデオエンコーダ20は、サブブロックの複数の有意性シンタックス要素の列に、他の列のためのコンテキストとは異なるコンテキスト(たとえば、コンテキスト2、またはオフセット3をもつコンテキスト5)を割り当てる。ビデオエンコーダ20が、CGF
Bが1に等しく、CGF
Rが1に等しい(すなわち、下サブブロックが少なくとも非0変換係数を含み、右ブロックが少なくとも1つの非0変換係数を含む)という条件に関連するコンテキストパターンを選択した場合、ビデオエンコーダ20は、現在のサブブロックの複数の有意性シンタックス要素に同じコンテキスト(たとえば、コンテキスト2、またはオフセット3をもつコンテキスト5)を割り当てる。
【0142】
[0157]ビデオエンコーダ20は、割り当てられたコンテキストに基づいて複数の有意性シンタックス要素をCABAC符号化する(1108)。ビデオエンコーダ20は、符号化された複数の有意性シンタックス要素を符号化ビットストリームの一部として出力する(1110)。
【0143】
[0158]
図12は、本開示の技法による、ビデオデータを符号化することの一例を示すフローチャートである。
図12におけるプロセスは、概して、ビデオエンコーダ20によって実行されるものとして以下で説明されるが、プロセスは、ビデオエンコーダ20、エントロピー符号化ユニット56、および/またはコンテキストモデリングユニット506の任意の組合せによって実行され得る。
【0144】
[0159]
図12に示されるように、ビデオエンコーダ20は、ブロックの現在のサブブロックの複数の変換係数のための複数の有意性シンタックス要素を生成する(1202)。複数の変換係数の複数の有意性シンタックス要素(たとえば、有意性係数フラグ)は、複数の変換係数の値が0(すなわち、0複数の変換係数)であるのか非0(すなわち、非0変換係数)であるのかを示す。いくつかの例では、サブブロックは4×4サブブロックであり、ブロックは8×8変換ブロックである。
【0145】
[0160]ビデオエンコーダ20はコンテキストパターン(たとえば、1次元コンテキストパターンとして記憶されたコンテキストパターン)を選択する(1204)。いくつかの例では、コンテキストパターンは、現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別する。たとえば、選択されたコンテキストパターンは、水平走査、垂直走査、および対角走査の走査タイプのためのものである。
【0146】
[0161]一例として、選択されたコンテキストパターンは、走査順序における第1の複数の有意性シンタックス要素のために第1のコンテキストを定義し、走査順序における第2および第3の複数の有意性シンタックス要素のために第2のコンテキストを定義し、走査順序における残りの複数の有意性シンタックス要素のために第3のコンテキストを定義する。別の例として、選択されたコンテキストパターンは、走査順序における第1の複数の有意性シンタックス要素のために第1のコンテキストを定義し、走査順序における残りの複数の有意性シンタックス要素のために第2のコンテキストを定義する。別の例として、選択されたコンテキストパターンは、複数の有意性シンタックス要素のすべてのために同じコンテキストを定義する。
【0147】
[0162]いくつかの例では、選択されたコンテキストパターンは、1次元コンテキストパターンとして記憶された複数のコンテキストパターンから選択される。たとえば、複数のコンテキストパターンは、
図9A〜
図9Dに示された2次元コンテキストパターンから事前計算され、記憶される。一例として、複数のコンテキストパターンのうちの1つは、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを含む2次元コンテキストパターンから事前計算される。そのような2次元コンテキストパターンの一例は、
図9Aに示されたコンテキストパターンである。別の例として、複数のコンテキストパターンのうちの1つは、水平方向、垂直方向、または対角方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを含む2次元コンテキストパターンから事前計算される。そのような2次元コンテキストパターンの一例は、
図9Dに示されたコンテキストパターンである。
【0148】
[0163]別の例として、複数のコンテキストパターンのうちの1つは、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを含む第1の2次元コンテキストパターンから事前計算される。第1の2次元コンテキストパターンの一例は、
図9Bに示されたコンテキストパターンである。第2の2次元コンテキストパターンの一例は、
図9Cに示されたコンテキストパターンである。
[0164]ビデオエンコーダ20は、選択されたコンテキストに基づいて複数の有意性シンタックス要素にコンテキストを割り当てる(1206)。ビデオエンコーダ20は、割り当てられたコンテキストに基づいて複数の有意性シンタックス要素をCABAC符号化する(1208)。ビデオエンコーダ20は、符号化された複数の有意性シンタックス要素を符号化ビットストリームの一部として出力する(1210)。
【0149】
[0165]
図13は、本開示で説明される技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。
図13の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測処理ユニット81と、逆量子化処理ユニット86と、逆変換処理ユニット88と、加算器90と、参照ピクチャメモリ92とを含む。予測処理ユニット81は、動き補償ユニット82と、イントラ予測モジュール84とを含む。ビデオデコーダ30は、いくつかの例では、
図7のビデオエンコーダ20に関して説明された符号化パスとは概して逆の復号パスを実行し得る。
【0150】
[0166]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数、動きベクトル、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、動きベクトルと他のシンタックス要素とを予測モジュール81に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0151】
[0167]
図14は、本開示で説明される技法を実装し得る例示的なエントロピー復号ユニット70を示すブロック図である。エントロピー復号ユニット70は、エントロピー符号化ビットストリームを受信し、そのビットストリームからのシンタックス要素を復号する。シンタックス要素は、上記で説明された、シンタックス要素significant_coeff_group_flag、significant_coefficient_flag、coeff_abs_level_remain、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、およびcoeff_sign_flagシンタックス要素を含み得る。
図14の例示的なエントロピー復号ユニット70は、バイパス復号エンジン704と正規復号エンジン706とを含み得る算術復号ユニット702を含む。例示的なエントロピー復号ユニット70はまた、コンテキストモデリングユニット708と逆2値化ユニット710とを含む。例示的なエントロピー復号ユニット70は、
図8に関して説明された例示的なエントロピー符号化ユニット56の逆の機能を実行し得る。このようにして、エントロピー復号ユニット70は、本明細書で説明される技法に基づいてエントロピー復号を実行し得る。
【0152】
[0168]算術復号ユニット702は符号化ビットストリームを受信する。
図14に示されるように、算術復号ユニット702は、バイパス経路または正規コーディング経路に従って、符号化されたビン値を処理し得る。符号化されたビン値がバイパス経路に従って処理されるべきであるのか、正規経路に従って処理されるべきであるのかについての指示は、より高いレベルのシンタックスを用いてビットストリーム中でシグナリングされ得る。上記で説明されたCABACプロセスに従って、算術復号ユニット702がバイパス経路からビン値を受信した場合、バイパス復号エンジン704は、ビン値に割り当てられたコンテキストを利用せずに、ビン値に対して算術符号化を実行し得る。一例では、バイパス復号エンジン704は、ビンの可能な値について等しい確率を仮定し得る。
【0153】
[0169]算術復号ユニット702が正規経路を介してビン値を受信した場合、コンテキストモデリングユニット708は、正規復号エンジン706が、コンテキストモデリングユニット708によって与えられたコンテキスト割当てに基づいて算術符号化を実行し得るように、コンテキスト変数を与え得る。コンテキスト割当ては、HEVCなどのビデオコーディング規格に従って定義され得る。コンテキストモデルはメモリに記憶され得る。コンテキストモデリングユニット708は、符号化ビットストリームのコンテキストとコンテキスト変数部分とを判断するために、一連のインデックス付きデーブルを含み、および/またはマッピング関数を利用し得る。さらに、一例では、コンテキストモデリングユニット506および/またはエントロピー符号化ユニット56は、本明細書で説明される技法に基づいて、significant_coeff_group_flagおよびsignificant_coefficient_flagシンタックス要素のビンにコンテキストを割り当てるために構成され得る。ビン値を復号した後、正規コーディングエンジン706は、復号されたビン値に基づいてコンテキストを更新し得る。さらに、逆2値化ユニット710は、ビン値に対して逆2値化を実行し、ビン照合関数を使用してビン値が有効であるかどうかを判断し得る。逆2値化ユニット710はまた、照合判断に基づいてコンテキストモデリングユニットを更新し得る。したがって、逆2値化ユニット710は、コンテキスト適応型復号技法に従ってシンタックス要素を出力する。
【0154】
[0170]ビデオスライスがイントラコード化(I)スライスとしてコーディングされたとき、予測モジュール81のイントラ予測モジュール84は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされたとき、予測モジュール81の動き補償ユニット82は、エントロピー復号ユニット80から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構成し得る。
【0155】
[0171]動き補償ユニット82は、動きベクトルと他のシンタックス要素とをパースすることによって現在のビデオスライスのビデオブロックのための予測情報を判断し、その予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット82は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを判断するために、受信されたシンタックス要素のいくつかを使用する。
【0156】
[0172]動き補償ユニット82はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット82は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット82は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを判断し、その補間フィルタを使用して予測ブロックを生成し得る。
【0157】
[0173]逆量子化処理ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された、量子化複数の変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を判断し、同様に、適用されるべき逆量子化の程度を判断するための、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータの使用を含み得る。逆変換処理ユニット88は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを複数の変換係数に適用する。
【0158】
[0174]場合によっては、逆変換処理ユニット88は、(水平方向と垂直方向の両方における)2次元(2D)逆変換を係数に適用し得る。本開示の技法によれば、逆変換処理ユニット88は、代わりに、TUの各々中の残差データに、水平方向1D逆変換を適用すること、垂直方向1D逆変換を適用すること、または変換を適用しないことがある。ビデオエンコーダ20において残差データに適用される変換のタイプは、適切なタイプの逆変換を複数の変換係数に適用するために、ビデオデコーダ30にシグナリングされ得る。
【0159】
[0175]動き補償ユニット82が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、他のループフィルタが(コーディングループ中またはコーディングループ後のいずれかで)使用され得る。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ92に記憶される。参照ピクチャメモリ92はまた、
図6のディスプレイデバイス34などのディスプレイデバイス上での後の表示のための、復号ビデオを記憶する。
【0160】
[0176]
図15は、本開示の技法による、ビデオデータを復号することの一例を示すフローチャートである。
図15におけるプロセスは、概して、ビデオデコーダ30によって実行されるものとして以下で説明されるが、プロセスは、ビデオデコーダ30、エントロピー復号ユニット56、および/またはコンテキストモデリングユニット708の任意の組合せによって実行され得る。
【0161】
[0177]
図15に示されるように、ビデオデコーダ30は、エントロピー符号化ビットストリーム中で、ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を受信する(1502)。サブブロックは4×4サブブロックであり得、ブロックは8×8変換ブロックであり得る。ビデオエンコーダ20(たとえば、
図11のブロック1104)と同様に、ビデオデコーダ30は、現在のサブブロックの複数の変換係数の複数の有意性シンタックス要素のための複数の走査タイプ(たとえば、水平走査、垂直走査、および対角走査)のために2次元コンテキストパターンのうちの同じ複数のコンテキストパターンからコンテキストパターンを選択する(1504)。この例では、コンテキストパターンの各々は、1つまたは複数の隣接ブロック(たとえば、第1の隣接サブブロックおよび第2の隣接ブロック)が非0変換係数を含むかどうかの条件に関連する。
【0162】
[0178]ビデオデコーダ30は、ビデオエンコーダ20(たとえば、
図11のブロック1106)に関して上記で説明されたのと同様の方法で、選択されたコンテキストパターンに基づいて、複数の変換係数の複数の有意性シンタックス要素の各々にコンテキストを割り当てる(1506)。たとえば、CGF
Bが0に等しく、CGF
Rが1に等しいという条件に関連するコンテキストパターンが選択された場合、ビデオデコーダ30は、第1の行に他の行のためのコンテキストとは異なるコンテキストを割り当てる。CGF
Bが1に等しく、CGF
Rが0に等しいという条件に関連するコンテキストパターンが選択された場合、ビデオデコーダ30は、第1の列に他の列のためのコンテキストとは異なるコンテキストを割り当てる。CGF
Bが1に等しく、CGF
Rが1に等しいという条件に関連するコンテキストパターンが選択された場合、ビデオデコーダ30は複数の有意性シンタックス要素に同じコンテキストを割り当てる。ビデオデコーダ30は、割り当てられたコンテキストに基づいて、CABACが複数の有意性シンタックス要素を復号する(1508)。
【0163】
[0179]
図16は、本開示の技法による、ビデオデータを復号することの一例を示すフローチャートである。
図16におけるプロセスは、概して、ビデオデコーダ30によって実行されるものとして以下で説明されるが、プロセスは、ビデオデコーダ30、エントロピー復号ユニット70、および/またはコンテキストモデリングユニット708の任意の組合せによって実行され得る。
【0164】
[0180]
図16に示されるように、ビデオデコーダ30は、エントロピー符号化ビットストリーム中で、ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を受信する(1602)。サブブロックは4×4サブブロックであり得、ブロックは8×8変換ブロックであり得る。ビデオエンコーダ20(たとえば、
図12のブロック1204)と同様に、ビデオデコーダ30は、1次元コンテキストパターンとして記憶されたコンテキストパターンを選択する(1604)。コンテキストパターンは、2つ以上の走査タイプ(たとえば、水平、対角、および垂直走査タイプ)のためのものであり得る。
【0165】
[0180]
図16に示されるように、ビデオデコーダ30は、エントロピー符号化ビットストリーム中で、ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を受信する(1602)。サブブロックは4×4サブブロックであり得、ブロックは8×8変換ブロックであり得る。ビデオエンコーダ20(たとえば、
図12のブロック1204)と同様に、ビデオデコーダ30はコンテキストパターン(たとえば、1次元コンテキストパターンとして記憶されたコンテキストパターン)を選択する(1604)。コンテキストパターンは、2つ以上の走査タイプ(たとえば、水平、対角、および垂直走査タイプ)のためのものであり得る。
【0166】
[0181]一例として、上記で説明されたように、選択されたコンテキストパターンは、走査順序における第1の複数の有意性シンタックス要素のために第1のコンテキストを定義し、走査順序における第2および第3の複数の有意性シンタックス要素のために第2のコンテキストを定義し、走査順序における残りの複数の有意性シンタックス要素のために第3のコンテキストを定義する。別の例として、上記で説明されたように、選択されたコンテキストパターンは、走査順序における第1の複数の有意性シンタックス要素のために第1のコンテキストを定義し、走査順序における残りの複数の有意性シンタックス要素のために第2のコンテキストを定義する。別の例として、選択されたコンテキストパターンは、複数の有意性シンタックス要素のすべてのために同じコンテキストを定義する。
【0167】
[0182]いくつかの例では、選択されたコンテキストパターンは、1次元コンテキストパターンとして記憶された複数のコンテキストパターンから選択される。たとえば、複数のコンテキストパターンは、
図9A〜
図9Dに示された2次元コンテキストパターンから事前計算され、記憶される。一例として、複数のコンテキストパターンのうちの1つは、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを含む2次元コンテキストパターンから事前計算される。そのような2次元コンテキストパターンの一例は、
図9Aに示されたコンテキストパターンである。別の例として、複数のコンテキストパターンのうちの1つは、水平方向、垂直方向、または対角方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを含む2次元コンテキストパターンから事前計算される。そのような2次元コンテキストパターンの一例は、
図9Dに示されたコンテキストパターンである。
【0168】
[0183]別の例として、複数のコンテキストパターンのうちの1つは、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを含む第1の2次元コンテキストパターンから事前計算される。第1の2次元コンテキストパターンの一例は、
図9Bに示されたコンテキストパターンである。第2の2次元コンテキストパターンの一例は、
図9Cに示されたコンテキストパターンである。
【0169】
[0184]ビデオデコーダ30は、選択されたコンテキストに基づいて複数の有意性シンタックス要素にコンテキストを割り当てる(1606)。ビデオデコーダ20は、割り当てられたコンテキストに基づいて、CABACが複数の有意性シンタックス要素を復号する(1608)。
【0170】
[0185]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0171】
[0186]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0172】
[0187]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
【0173】
[0188]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示された技法を実行するために構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【0174】
[0189]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを復号するための方法であって、
ビットストリーム中で、ブロックの現在のサブブロックのための複数の変換係数の有意性シンタックス要素を受信することと、
コンテキストパターンを選択することと、ここにおいて、前記コンテキストパターンは前記現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別する、
前記選択されたコンテキストパターンに基づいて、前記現在のサブブロックのための前記複数の変換係数の前記有意性シンタックス要素にコンテキストを割り当てることと、
コンテキスト適応型バイナリ算術コーディング(CABAC)が、前記割り当てられたコンテキストに基づいて、前記現在のサブブロックの前記複数の変換係数の前記有意性シンタックス要素を復号することと
を備える、方法。
[C2]
前記コンテキストパターンを選択することが、水平走査、垂直走査、および対角走査の走査タイプのために前記コンテキストパターンを選択することを備える、C1に記載の方法。
[C3]
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、および前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する、前記コンテキストパターンを選択することを備える、C1に記載の方法。
[C4]
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択することを備える、C1に記載の方法。
[C5]
前記コンテキストパターンを選択することが、前記有意性シンタックス要素のすべてのために同じコンテキストを定義する前記コンテキストパターンを選択することを備える、C1に記載の方法。
[C6]
前記現在のサブブロックが4×4サブブロックを備え、および前記ブロックが8×8ブロックを備える、C1に記載の方法。
[C7]
前記コンテキストパターンを選択することが、1次元コンテキストパターンとしてそれぞれ記憶された複数のコンテキストパターンから前記コンテキストパターンを選択することを備える、C1に記載の方法。
[C8]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、そして、ここにおいて、前記2次元コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、
C7に記載の方法。
[C9]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、および、ここにおいて、前記2次元コンテキストパターンが、対角方向、水平方向、および垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C7に記載の方法。
[C10]
前記複数のコンテキストパターンのうちの1つが第1の2次元コンテキストパターンから事前計算され、および、ここにおいて、前記第1の2次元コンテキストパターンが、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを備える、C7に記載の方法。
[C11]
ビデオデータを復号するためのデバイスであって、前記デバイスが、
ビットストリーム中で、ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を受信することと、
コンテキストパターンを選択することと、ここにおいて、前記コンテキストパターンが前記現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別する、
前記選択されたコンテキストパターンに基づいて、前記現在のサブブロックのための前記複数の変換係数の前記有意性シンタックス要素にコンテキストを割り当てることと、
コンテキスト適応型バイナリ算術コーディング(CABAC)が、前記割り当てられたコンテキストに基づいて、前記現在のサブブロックの前記複数の変換係数の前記有意性シンタックス要素を復号することと
を行うように構成されたビデオデコーダを備える、デバイス。
[C12]
前記コンテキストパターンを選択するために、前記ビデオデコーダが、水平走査、垂直走査、および対角走査の走査タイプのために前記コンテキストパターンを選択するように構成された、C11に記載のデバイス。
[C13]
前記コンテキストパターンを選択するために、前記ビデオデコーダが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、および、前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する前記コンテキストパターンを選択するように構成された、C11に記載のデバイス。
[C14]
前記コンテキストパターンを選択するために、前記ビデオデコーダが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択するように構成された、C11に記載のデバイス。
[C15]
前記コンテキストパターンを選択するために、前記ビデオデコーダが、前記有意性シンタックス要素のすべてのために同じコンテキストを定義する前記コンテキストパターンを選択するように構成された、C11に記載のデバイス。
[C16]
前記現在のサブブロックが4×4サブブロックを備え、前記ブロックが8×8ブロックを備える、C11に記載のデバイス。
[C17]
前記コンテキストパターンを選択するために、前記ビデオデコーダが、1次元コンテキストパターンとしてそれぞれ記憶された複数のコンテキストパターンから前記コンテキストパターンを選択するように構成された、C11に記載のデバイス。
[C18]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、そして、前記2次元コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C17に記載のデバイス。
[C19]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、そして、前記2次元コンテキストパターンが、対角方向、水平方向、および垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C17に記載のデバイス。
[C20]
前記複数のコンテキストパターンのうちの1つが第1の2次元コンテキストパターンから事前計算され、そして前記第1の2次元コンテキストパターンが、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを備える、C17に記載のデバイス。
[C21]
前記デバイスが、
集積回路と、
マイクロプロセッサと、
前記ビデオデコーダを含むワイヤレス通信デバイスと
のうちの1つを備える、C11に記載のデバイス。
[C22]
実行されたとき、ビデオデータを復号するためのデバイスの1つまたは複数のプロセッサに、
ビットストリーム中で、ブロックの現在のサブブロックのための複数の変換係数の有複数の意性シンタックス要素を受信することと、
コンテキストパターンを選択することと、ここにおいて、前記コンテキストパターンが前記現在のサブブロックの2つ以上の走査タイプのための複数のコンテキストを識別する、
前記選択されたコンテキストパターンに基づいて、前記現在のサブブロックのための前記複数の変換係数の前記複数の有意性シンタックス要素にコンテキストを割り当てることと、
コンテキスト適応型バイナリ算術コーディング(CABAC)が、前記割り当てられたコンテキストに基づいて、前記現在のサブブロックの前記複数の変換係数の前記複数の有意性シンタックス要素を復号することと、
を行わせる命令を記憶したコンピュータ可読記憶媒体。
[C23]
前記1つまたは複数のプロセッサに、前記コンテキストパターンを選択させる前記命令が、前記1つまたは複数のプロセッサに、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、そして前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する前記コンテキストパターンを選択させる、命令を備えるC22に記載のコンピュータ可読記憶媒体。
[C24]
前記1つまたは複数のプロセッサに、前記コンテキストパターンを選択させる前記命令が、前記1つまたは複数のプロセッサに、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、そして前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択させる命令を備える、C22に記載のコンピュータ可読記憶媒体。
[C25]
前記1つまたは複数のプロセッサに、前記コンテキストパターンを選択させる前記命令が、前記1つまたは複数のプロセッサに、前記複数の有意性シンタックス要素のすべてのために同じコンテキストを定義する前記コンテキストパターンを選択させる命令を備える、C22に記載のコンピュータ可読記憶媒体。
[C26]
ビデオデータを符号化するための方法であって、
ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を生成することと、
コンテキストパターンを選択することであって、ここにおいて、前記コンテキストパターンが前記現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別する、選択することと、
前記選択されたコンテキストパターンに基づいて、前記現在のサブブロックのための前記複数の変換係数の前記複数の有意性シンタックス要素にコンテキストを割り当てることと、
コンテキスト適応型バイナリ算術コーディング(CABAC)が、前記割り当てられたコンテキストに基づいて、前記現在のサブブロックの前記変換係数の前記有意性シンタックス要素を符号化することと、
前記符号化された複数の有意性シンタックス要素を出力することと
を備える、方法。
[C27]
前記コンテキストパターンを選択することが、水平走査、垂直走査、および対角走査の走査タイプのために前記コンテキストパターンを選択することを備える、C26に記載の方法。
[C28]
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、および前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する前記コンテキストパターンを選択することを備える、C26に記載の方法。
[C29]
前記コンテキストパターンを選択することが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択することを備える、C26に記載の方法。
[C30]
前記コンテキストパターンを選択することが、前記複数の有意性シンタックス要素のすべてのために同じコンテキストを定義する前記コンテキストパターンを選択することを備える、C26に記載の方法。
[C31]
前記現在のサブブロックが4×4サブブロックを備え、前記ブロックが8×8ブロックを備える、C26に記載の方法。
[C32]
前記コンテキストパターンを選択することが、1次元コンテキストパターンとしてそれぞれ記憶された複数のコンテキストパターンから前記コンテキストパターンを選択することを備える、C26に記載の方法。
[C33]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、前記2次元コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C32に記載の方法。
[C34]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、前記2次元コンテキストパターンが、対角方向、水平方向、および垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C32に記載の方法。
[C35]
前記複数のコンテキストパターンのうちの1つが第1の2次元コンテキストパターンから事前計算され、前記第1の2次元コンテキストパターンが、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを備える、C32に記載の方法。
[C36]
ビデオデータを符号化するためのデバイスであって、前記デバイスが、
ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を生成することと、
コンテキストパターンを選択することと、ここにおいて、前記コンテキストパターンが前記現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別する、
前記選択されたコンテキストパターンに基づいて、前記現在のサブブロックのための前記複数の変換係数の前記複数の有意性シンタックス要素にコンテキストを割り当てることと、
コンテキスト適応型バイナリ算術コーディング(CABAC)が、前記割り当てられたコンテキストに基づいて、前記現在のサブブロックの前記複数の変換係数の前記複数の有意性シンタックス要素を符号化することと、
前記符号化された複数の有意性シンタックス要素を出力することと
を行うように構成されたビデオエンコーダを備える、デバイス。
[C37]
前記コンテキストパターンを選択するために、前記ビデオエンコーダが、水平走査、垂直走査、および対角走査の走査タイプのために前記コンテキストパターンを選択するように構成された、C36に記載のデバイス。
[C38]
前記コンテキストパターンを選択するために、前記ビデオエンコーダが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、そして前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する前記コンテキストパターンを選択するように構成された、C36に記載のデバイス。
[C39]
前記コンテキストパターンを選択するために、前記ビデオエンコーダが、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、そして前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択するように構成された、C36に記載のデバイス。
[C40]
前記コンテキストパターンを選択するために、前記ビデオエンコーダが、前記複数の有意性シンタックス要素のすべてのために同じコンテキストを定義する前記コンテキストパターンを選択するように構成された、C36に記載のデバイス。
[C41]
前記現在のサブブロックが4×4サブブロックを備え、前記ブロックが8×8ブロックを備える、C36に記載のデバイス。
[C42]
前記コンテキストパターンを選択するために、前記ビデオエンコーダが、1次元コンテキストパターンとしてそれぞれ記憶された複数のコンテキストパターンから前記コンテキストパターンを選択するように構成された、C36に記載のデバイス。
[C43]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、前記2次元コンテキストパターンが、水平方向または垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C42に記載のデバイス。
[C44]
前記複数のコンテキストパターンのうちの1つが2次元コンテキストパターンから事前計算され、前記2次元コンテキストパターンが、対角方向、水平方向、および垂直方向に走査された場合に同じ1次元コンテキストパターンを生じるコンテキストを備える、C42に記載のデバイス。
[C45]
前記複数のコンテキストパターンのうちの1つが第1の2次元コンテキストパターンから事前計算され、前記第1の2次元コンテキストパターンが、水平方向に走査された場合に、第2の2次元コンテキストパターンが垂直方向に走査されたときと同じ1次元コンテキストパターンを生じるコンテキストを備える、C42に記載のデバイス。
[C46]
ビデオデータを符号化するためのデバイスであって、
ブロックの現在のサブブロックのための複数の変換係数の複数の有意性シンタックス要素を生成するための手段と、
コンテキストパターンを選択するための手段と、ここにおいて、前記コンテキストパターンが前記現在のサブブロックの2つ以上の走査タイプのためのコンテキストを識別する、
前記選択されたコンテキストパターンに基づいて、前記現在のサブブロックのための前記複数の変換係数の前記複数の有意性シンタックス要素にコンテキストを割り当てるための手段と、
コンテキスト適応型バイナリ算術コーディング(CABAC)が、前記割り当てられたコンテキストに基づいて、前記現在のサブブロックの前記変換係数の前記有意性シンタックス要素を符号化するための手段と、
前記符号化された有意性シンタックス要素を出力するための手段と
を備える、デバイス。
[C47]
前記コンテキストパターンを選択するための前記手段が、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、前記走査順序における第2および第3の有意性シンタックス要素のために第2のコンテキストを定義し、そして前記走査順序における残りの有意性シンタックス要素のために第3のコンテキストを定義する前記コンテキストパターンを選択するための手段を備える、C46に記載のデバイス。
[C48]
前記コンテキストパターンを選択するための前記手段が、走査順序における第1の有意性シンタックス要素のために第1のコンテキストを定義し、そして前記走査順序における残りの有意性シンタックス要素のために第2のコンテキストを定義する前記コンテキストパターンを選択するための手段を備える、C46に記載のデバイス。
[C49]
前記コンテキストパターンを選択するための前記手段が、前記有意性シンタックス要素のすべてのために同じコンテキストを定義する前記コンテキストパターンを選択するための手段を備える、C46に記載のデバイス。