IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クアルコム,インコーポレイテッドの特許一覧

特表2025-503628ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定
<>
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図1
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図2
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図3
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図4
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図5
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図6
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図7
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図8A
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図8B
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図9
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図10
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図11
  • 特表-ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-04
(54)【発明の名称】ビデオコーディングのためのコンテキスト適応型バイナリ算術コーディング(CABAC)確率推定
(51)【国際特許分類】
   H04N 19/13 20140101AFI20250128BHJP
   H04N 19/157 20140101ALI20250128BHJP
   H04N 19/176 20140101ALI20250128BHJP
   H04N 19/46 20140101ALI20250128BHJP
【FI】
H04N19/13
H04N19/157
H04N19/176
H04N19/46
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024541058
(86)(22)【出願日】2022-12-23
(85)【翻訳文提出日】2024-07-08
(86)【国際出願番号】 US2022053966
(87)【国際公開番号】W WO2023132951
(87)【国際公開日】2023-07-13
(31)【優先権主張番号】63/266,623
(32)【優先日】2022-01-10
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】18/145,399
(32)【優先日】2022-12-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ジエ・ドン
(72)【発明者】
【氏名】ヴァディム・セレジン
(72)【発明者】
【氏名】マルタ・カルチェヴィチ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159ME11
5C159RC11
5C159TA58
5C159TB08
5C159TC41
5C159TC42
5C159TD15
5C159UA02
5C159UA05
(57)【要約】
ビデオデコーダは、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信し、受信されたビン値に基づいて第1のシフト値を決定し、受信されたビン値に基づいて第2のシフト値を決定し、第1のシフト値に基づいて第1の状態変数を更新し、第2のシフト値に基づいて第2の状態変数を更新し、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定し、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号し、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定する、ように構成される。
【特許請求の範囲】
【請求項1】
ビデオデータを復号する方法であって、前記方法は、
コンテキストモデルに従ってビン値を受信することであって、前記コンテキストモデルが、1つ又は複数の確率状態を含み、前記ビン値が、前記ビデオデータの1つ又は複数のシンタックス要素に対応する、受信することと、
前記受信されたビン値に基づいて第1のシフト値を決定することと、
前記受信されたビン値に基づいて第2のシフト値を決定することと、
前記第1のシフト値に基づいて第1の状態変数を更新することと、
前記第2のシフト値に基づいて第2の状態変数を更新することと、
復号されるべき次のビンについて、前記第1の状態変数及び前記第2の状態変数に基づいて前記コンテキストモデルの確率状態を決定することと、
前記確率状態に基づいて、前記復号されるべき次のビンをコンテキスト復号することと、
前記受信されたビン値及び前記コンテキスト復号された次のビン値に基づいて前記1つ又は複数のシンタックス要素の値を決定することと、を含む、方法。
【請求項2】
前記第1の状態変数及び前記第2の状態変数に基づいて前記コンテキストモデルの前記確率状態を決定することが、前記第1の状態変数及び前記第2の状態変数の加重平均に基づいて前記確率状態を決定することを含む、請求項1に記載の方法。
【請求項3】
前記コンテキストモデルに基づいて、前記第1の状態変数及び前記第2の状態変数の前記加重平均を計算するための重みを決定すること、を更に含む、請求項2に記載の方法。
【請求項4】
前記重みが、第1の重み及び第2の重みを含み、前記第1の重みと前記第2の重みとの和が、1に等しい、請求項3に記載の方法。
【請求項5】
前記コンテキストモデルの識別子に基づいて前記重みの値を決定すること、を更に含む、請求項3に記載の方法。
【請求項6】
前記受信されたビン値に基づいて前記第1のシフト値を決定することは、
前記コンテキストモデルの識別子及び受信された最後のM個のビン値に基づいてルックアップテーブル中のエントリを識別することであって、Mが、1より大きい整数値である、識別することと、
前記エントリに基づいて前記第1のシフト値を決定することと、を含む、請求項1に記載の方法。
【請求項7】
前記エントリに基づいて前記第2のシフト値を決定すること、を更に含む、請求項6に記載の方法。
【請求項8】
前記エントリが8ビット値を含み、前記8ビット値の最初の4ビットが前記第1のシフト値を識別し、前記8ビット値の最後の4ビットが前記第2のシフト値を識別する、請求項7に記載の方法。
【請求項9】
前記第1のシフト値が、前記第2のシフト値より高いレートで更新される、請求項1に記載の方法。
【請求項10】
前記受信されたビン値が、前記コンテキストモデルによって復号された最後のM個のビンに対応し、Mが、0より大きい整数値である、請求項1に記載の方法。
【請求項11】
Mが1に等しい、請求項10に記載の方法。
【請求項12】
ビデオデータを復号するデバイスであって、前記デバイスが、
ビデオデータを記憶するように構成されたメモリと、
回路に実装された1つ又は複数のプロセッサと、を備え、前記1つ又は複数のプロセッサは、
コンテキストモデルに従ってビン値を受信することであって、前記コンテキストモデルが、1つ又は複数の確率状態を含み、前記ビン値が、前記ビデオデータの1つ又は複数のシンタックス要素に対応する、受信することと、
前記受信されたビン値に基づいて第1のシフト値を決定することと、
前記受信されたビン値に基づいて第2のシフト値を決定することと、
前記第1のシフト値に基づいて第1の状態変数を更新することと、
前記第2のシフト値に基づいて第2の状態変数を更新することと、
復号されるべき次のビンについて、前記第1の状態変数及び前記第2の状態変数に基づいて前記コンテキストモデルの確率状態を決定することと、
前記確率状態に基づいて、前記復号されるべき次のビンをコンテキスト復号することと、
前記受信されたビン値及び前記コンテキスト復号された次のビン値に基づいて前記1つ又は複数のシンタックス要素の値を決定することと、を行うように構成されている、デバイス。
【請求項13】
前記第1の状態変数及び前記第2の状態変数に基づいて前記コンテキストモデルの前記確率状態を決定するために、前記1つ又は複数のプロセッサが、前記第1の状態変数及び前記第2の状態変数の加重平均に基づいて前記確率状態を決定するように更に構成されている、請求項12に記載のデバイス。
【請求項14】
前記1つ又は複数のプロセッサが、
前記コンテキストモデルに基づいて、前記第1の状態変数及び前記第2の状態変数の前記加重平均を計算するための重みを決定する、ように更に構成されている、請求項13に記載のデバイス。
【請求項15】
前記重みが、第1の重み及び第2の重みを含み、前記第1の重みと前記第2の重みとの和が、1に等しい、請求項14に記載のデバイス。
【請求項16】
前記1つ又は複数のプロセッサが、
前記コンテキストモデルの識別子に基づいて前記重みの値を決定する、ように更に構成されている、請求項14に記載のデバイス。
【請求項17】
前記受信されたビン値に基づいて前記第1のシフト値を決定するために、前記1つ又は複数のプロセッサは、
前記コンテキストモデルの識別子及び受信された最後のM個のビン値に基づいてルックアップテーブル中のエントリを識別し、Mが、1より大きい整数値であり、
前記エントリに基づいて前記第1のシフト値を決定する、ように更に構成されている、請求項12に記載のデバイス。
【請求項18】
前記1つ又は複数のプロセッサが、
前記エントリに基づいて前記第2のシフト値を決定する、ように更に構成されている、請求項17に記載のデバイス。
【請求項19】
前記エントリが8ビット値を含み、前記8ビット値の最初の4ビットが前記第1のシフト値を識別し、前記8ビット値の最後の4ビットが前記第2のシフト値を識別する、請求項18に記載のデバイス。
【請求項20】
前記第1のシフト値が、前記第2のシフト値より高いレートで更新される、請求項12に記載のデバイス。
【請求項21】
前記受信されたビン値が、前記コンテキストモデルによって復号された最後のM個のビンに対応し、Mが、0より大きい整数値である、請求項12に記載のデバイス。
【請求項22】
Mが1に等しい、請求項21に記載のデバイス。
【請求項23】
前記デバイスが符号化ビデオデータを受信するように構成された受信機を更に備えるワイヤレス通信デバイスを備える、請求項12に記載のデバイス。
【請求項24】
前記ワイヤレス通信デバイスが電話ハンドセットを備え、前記受信機が、ワイヤレス通信規格に従って、前記符号化ビデオデータを含む信号を復調するように構成されている、請求項23に記載のデバイス。
【請求項25】
復号されたビデオデータを表示するように構成されたディスプレイ、を更に備える、請求項12に記載のデバイス。
【請求項26】
前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ又は複数を備える、請求項12に記載のデバイス。
【請求項27】
ビデオデータを復号する装置であって、前記装置は、
コンテキストモデルに従ってビン値を受信する手段であって、前記コンテキストモデルが、1つ又は複数の確率状態を含み、前記ビン値が、前記ビデオデータの1つ又は複数のシンタックス要素に対応する、受信する手段と、
前記受信されたビン値に基づいて第1のシフト値を決定する手段と、
前記受信されたビン値に基づいて第2のシフト値を決定する手段と、
前記第1のシフト値に基づいて第1の状態変数を更新する手段と、
前記第2のシフト値に基づいて第2の状態変数を更新する手段と、
復号されるべき次のビンについて、前記第1の状態変数及び前記第2の状態変数に基づいて前記コンテキストモデルの確率状態を決定する手段と、
前記確率状態に基づいて、前記復号されるべき次のビンをコンテキスト復号する手段と、
前記受信されたビン値及び前記コンテキスト復号された次のビン値に基づいて前記1つ又は複数のシンタックス要素の値を決定する手段と、を備える、装置。
【請求項28】
前記第1の状態変数及び前記第2の状態変数に基づいて前記コンテキストモデルの前記確率状態を決定することが、前記第1の状態変数及び前記第2の状態変数の加重平均に基づいて前記確率状態を決定することを含む、請求項27に記載の装置。
【請求項29】
前記コンテキストモデルに基づいて、前記第1の状態変数及び前記第2の状態変数の前記加重平均を計算するための重みを決定する手段、を更に備える、請求項28に記載の装置。
【請求項30】
前記重みが、第1の重み及び第2の重みを含み、前記第1の重みと前記第2の重みとの和が、1に等しい、請求項29に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2022年1月10日に出願された米国仮特許出願第63/266,623号及び2022年12月22日に出願された米国特許出願第18/145,399号に対する優先権を主張する。2022年12月22日に出願された米国特許出願第18/145,399号は、2022年1月10日に出願された米国仮特許出願第63/266,623号の利益を主張し、これらの各々の内容全体は参照により本明細書に組み込まれる。
【0002】
本開示は、ビデオ符号化及びビデオ復号に関する。
【背景技術】
【0003】
デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(personal digital assistants、PDAs)、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラー又は衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスの中に組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part10、アドバンストビデオコーディング(Advanced Video Coding、AVC)、ITU-T H.265/高効率ビデオコーディング(High Efficiency Video Coding、HEVC)、ITU-T H.266/汎用ビデオコーディング(Versatile Video Coding、VVC)によって定義された規格、及びそのような規格の拡張、並びにAlliance for Open Mediaによって開発されたAOMedia Video1(AV1)などのプロプライエタリビデオコーデック/フォーマットに記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、及び/又は記憶する場合がある。
【0004】
ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減又は除去するために、空間(ピクチャ内)予測及び/又は時間(ピクチャ間)予測を含む。ブロックベースのビデオコーディングの場合、ビデオスライス(例えば、ビデオピクチャ又はビデオピクチャの一部分)は、ビデオブロックに分割されてもよく、ビデオブロックは、コーディングツリーユニット(coding tree units、CTUs)、コーディングユニット(coding units、CUs)及び/又はコーディングノードと呼ばれることもある。ピクチャのイントラコーディングされた(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(P又はB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測又は他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれる場合があり、参照ピクチャは参照フレームと呼ばれる場合がある。
【発明の概要】
【0005】
いくつかのシンタックス要素をコーディングするために必要とされるビットを低減するために、いくつかのシンタックス要素は、コンテキスト適応型バイナリ算術コーディング(context adaptive binary arithmetic coding、CABAC)を使用してコーディングされる場合がある。CABACは、コンテキストを使用して、次のビットがある値を有する確率を決定する。本開示では、バイナリ算術コーダの確率推定の精度を改善する技法について説明する。本技法は、ビデオエンコーダ及びビデオデコーダが、CABACに関連付けられたコンテキストモデルの確率状態を計算及び更新するために使用され得る。本開示の技法は、汎用ビデオコーディング(VVC)において実装されるようなCABACなど、線形領域中での現実の確率を確率状態が表すバイナリ演算コーダに好適であり得る。
【0006】
通常、コンテキスト状態は、2つの状態変数、すなわち低レート状態変数及び高レート状態変数の関数として選択される。低レート状態変数及び高レート状態変数は、前にコーディングされたビンの値に基づいて次のビンのために更新される。本開示の技法によれば、低レート状態変数及び高レート状態変数は、更に、最後のM個のビンの値の特定の組み合わせに基づいて更新され得る。既存の技法では、前のビンがある値を有していた場合、低レート状態変数及び高レート状態変数は常に同じ方法で更新されよう。
【0007】
しかしながら、本発明の技法によれば、前のビンが同じ値を有する2つのコーディングシナリオでは、コーディングされるべきビンが同じであっても、最後のM個のビンが異なるので、状態変数への更新が異なり得る。例えば、ビデオコーダは、受信されたビン値に基づいて第1のシフト値を決定し、受信されたビン値に基づいて第2のシフト値を決定するように構成され得る。ビデオコーダは次いで、第1のシフト値に基づいて、低レート状態変数などの第1の状態変数を更新し、第2のシフト値に基づいて、高レート状態変数などの第2の状態変数を更新することができる。本開示の技法は、ビデオコーダが、シンタックス要素がより少ないビットでシグナリングされることを可能にするより良いコンテキストを選択することを可能にでき、それによりビデオ圧縮が改善される。
【0008】
本開示の一例によれば、ビデオデータを復号する方法は、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信することと、受信されたビン値に基づいて第1のシフト値を決定することと、受信されたビン値に基づいて第2のシフト値を決定することと、第1のシフト値に基づいて第1の状態変数を更新することと、第2のシフト値に基づいて第2の状態変数を更新することと、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定することと、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号することと、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定することと、を含む。
【0009】
本開示の一例によれば、ビデオデータを復号するデバイスは、ビデオデータを記憶するように構成されたメモリと、回路に実装された1つ又は複数のプロセッサと、を含み、1つ又は複数のプロセッサは、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信し、受信されたビン値に基づいて第1のシフト値を決定し、受信されたビン値に基づいて第2のシフト値を決定し、第1のシフト値に基づいて第1の状態変数を更新し、第2のシフト値に基づいて第2の状態変数を更新し、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定し、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号し、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定する、ように構成される。
【0010】
本開示の一例によれば、ビデオデータを復号する装置は、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信する手段と、受信されたビン値に基づいて第1のシフト値を決定する手段と、受信されたビン値に基づいて第2のシフト値を決定する手段と、第1のシフト値に基づいて第1の状態変数を更新する手段と、第2のシフト値に基づいて第2の状態変数を更新する手段と、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定する手段と、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号する手段と、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定する手段と、を含む。
【0011】
本開示の一例によれば、コンピュータ可読記憶媒体は命令を記憶し、命令は、1つ又は複数のプロセッサによって実行されたとき、1つ又は複数のプロセッサに、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信することを行わせ、受信されたビン値に基づいて第1のシフト値を決定させ、受信されたビン値に基づいて第2のシフト値を決定させ、第1のシフト値に基づいて第1の状態変数を更新させ、第2のシフト値に基づいて第2の状態変数を更新させ、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定させ、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号させ、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定させる。
【0012】
ビデオデータを符号化するデバイスは、ビデオデータを記憶するように構成されたメモリと、回路に実装された1つ又は複数のプロセッサと、を含み、1つ又は複数のプロセッサは、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を決定し、受信されたビン値に基づいて第1のシフト値を決定し、受信されたビン値に基づいて第2のシフト値を決定し、第1のシフト値に基づいて第1の状態変数を更新し、第2のシフト値に基づいて第2の状態変数を更新し、符号化されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定し、確率状態に基づいて、符号化されるべき次のビンをコンテキスト符号化する、ように構成される。
【0013】
1つ又は複数の例の詳細が、添付の図面及び以下の説明に記載されている。他の特徴、目的、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0014】
図1】本開示の技法を実行し得る例示的なビデオ符号化及び復号システムを示すブロック図である。
図2】本開示の技法に従って使用され得るビンメモリの一例を示す。
図3】本開示の技法に従って使用され得る2Dルックアップテーブルの一例を示す。
図4】本開示の技法を実行し得る例示的なビデオエンコーダを示すブロック図である。
図5】本開示の技法を実行し得る例示的なビデオデコーダを示すブロック図である。
図6】本開示の技法による、現在ブロックを符号化する例示的なプロセスを示すフローチャートである。
図7】本開示の技法による、現在ブロックを復号する例示的なプロセスを示すフローチャートである。
図8A】バイナリ算術コーディングにおける範囲更新プロセスを示す概念図である。
図8B】バイナリ算術コーディングにおける範囲更新プロセスを示す概念図である。
図9】バイナリ算術コーディングにおける出力プロセスを示す概念図である。
図10】ビデオエンコーダ中のコンテキスト適応型バイナリ算術コーディング(CABAC)コーダを示すブロック図である。
図11】ビデオデコーダ中のCABACコーダを示すブロック図である。
図12】本開示の技法による、現在ブロックを復号する例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【0015】
ビデオコーディング(例えば、ビデオ符号化及び/又はビデオ復号)は、通常、同じピクチャの中のビデオデータのすでにコーディングされたブロック(例えば、イントラ予測)又は異なるピクチャの中のビデオデータのすでにコーディングされたブロック(例えば、インター予測)のいずれかから、ビデオデータのブロックを予測することを伴う。いくつかの事例では、ビデオエンコーダはまた、予測ブロックを元のブロックと比較することによって残差データを計算する。したがって、残差データは、予測ブロックと元のブロックとの間の差分を表す。残差データをシグナリングするために必要とされるビットの数を低減するために、ビデオエンコーダは、残差データを変換及び量子化し、変換及び量子化された残差データを符号化ビットストリーム中でシグナリングする。変換及び量子化プロセスによって達成される圧縮は不可逆であることがあり、これは、変換及び量子化プロセスが復号されたビデオデータに歪みをもたらし得ることを意味する。
【0016】
ビデオデコーダは、残差データを復号し予測ブロックに加算して、予測ブロック単独よりも元のビデオブロックと厳密に一致する再構成されたビデオブロックを生成する。残差データの変換及び量子化によってもたらされる損失により、最初の再構成されたブロックは歪み又はアーチファクトを有することがある。1つの一般のタイプのアーチファクト又は歪みは、ビデオデータをコーディングするために使用されるブロックの境界が見えるブロッキネスと呼ばれる。
【0017】
復号されたビデオの品質を更に改善するために、ビデオデコーダは、再構成されたビデオブロックに対して1つ又は複数のフィルタ処理演算を実行することができる。これらのフィルタ処理演算の例としては、デブロッキングフィルタ処理、サンプル適応オフセット(SAO)フィルタ処理、及び適応ループフィルタ処理(ALF)が挙げられる。これらのフィルタ処理演算のためのパラメータは、ビデオエンコーダによって決定され符号化ビデオビットストリーム中で明示的にシグナリングされ得るか、又はパラメータが符号化ビデオビットストリーム中で明示的にシグナリングされる必要なくビデオデコーダによって暗黙的に決定され得るかのいずれかである。
【0018】
いくつかのシンタックス要素をコーディングするために必要とされるビットを低減するために、いくつかのシンタックス要素は、コンテキスト適応型バイナリ算術コーディング(CABAC)を使用してコーディングされる場合がある。CABACは、コンテキストを使用して、次のビットがある値を有する確率を決定する。本開示では、バイナリ算術コーダの確率推定の精度を改善する技法について説明する。本技法は、ビデオエンコーダ及びビデオデコーダが、CABACに関連付けられたコンテキストモデルの確率状態を計算及び更新するために使用され得る。本開示の技法は、汎用ビデオコーディング(VVC)において実装されるようなCABACなど、線形領域中での現実の確率を確率状態が表すバイナリ演算コーダに好適であり得る。
【0019】
通常、コンテキスト状態は、2つの状態変数、すなわち低レート状態変数及び高レート状態変数の関数として選択される。低レート状態変数及び高レート状態変数は、前にコーディングされたビンの値に基づいて次のビンのために更新される。本開示の技法によれば、低レート状態変数及び高レート状態変数は、更に、最後のM個のビンの値の特定の組み合わせに基づいて更新され得る。既存の技法では、前のビンがある値を有していた場合、低レート状態変数及び高レート状態変数は常に同じ方法で更新されよう。しかしながら、本発明の技法によれば、前のビンが同じ値を有する2つのコーディングシナリオでは、コーディングされるべきビンが同じであっても、最後のM個のビンが異なるので、状態変数への更新が異なり得る。例えば、ビデオコーダは、受信されたビン値に基づいて第1のシフト値を決定し、受信されたビン値に基づいて第2のシフト値を決定するように構成され得る。ビデオコーダは次いで、第1のシフト値に基づいて、低レート状態変数などの第1の状態変数を更新し、第2のシフト値に基づいて、高レート状態変数などの第2の状態変数を更新することができる。本開示の技法は、ビデオコーダが、シンタックス要素がより少ないビットでシグナリングされることを可能にするより良いコンテキストを選択することを可能にでき、それによりビデオ圧縮が改善される。
【0020】
本開示で使用されるビデオコーディングという用語は、一般的に、ビデオ符号化又はビデオ復号のいずれかを指す。同様に、ビデオコーダという用語は、一般的に、ビデオエンコーダ又はビデオデコーダを指すことがある。更に、ビデオ復号に関して本開示で説明されるいくつかの技法は、ビデオ符号化に適用されることもあり、その逆も同様である。例えば、しばしば、ビデオエンコーダ及びビデオデコーダは、同じプロセス又は相反するプロセスを実行するように構成される。また、ビデオエンコーダは、通常、ビデオデータをどのように符号化すべきかを決定するプロセスの一部として、ビデオ復号(再構成とも呼ばれる)を実行する。例えば、ビデオデコーダは、ビデオエンコーダとビデオデコーダの両方がコンテキストを明示的にシグナリングする必要なしに同じコンテキストを使用することができるように、ビデオエンコーダと同じ方法でCABACのコンテキストを決定するように構成され得る。
【0021】
図1は、本開示の技法を実行し得る例示的なビデオ符号化及び復号システム100を示すブロック図である。本開示の技法は、一般に、ビデオデータをコーディング(符号化及び/又は復号)することを対象とする。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、未加工の符号化されていないビデオ、符号化されたビデオ、復号された(例えば、再構成された)ビデオ、及びシグナリングデータなどのビデオメタデータを含んでもよい。
【0022】
図1に示されるように、この例では、システム100は、宛先デバイス116によって復号され表示されるべき、符号化ビデオデータを提供するソースデバイス102を含む。具体的には、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102及び宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、モバイルデバイス、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、表示デバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、ブロードキャスト受信機デバイスなどを含む、広範囲にわたるデバイスのうちのいずれかを備えてもよい。場合によっては、ソースデバイス102及び宛先デバイス116は、ワイヤレス通信に対応し得るので、ワイヤレス通信デバイスと呼ばれ得る。
【0023】
図1の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、及び出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、及び表示デバイス118を含む。本開示によれば、ソースデバイス102のビデオエンコーダ200及び宛先デバイス116のビデオデコーダ300は、確率推定のための開示される技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの一例を表し、一方で宛先デバイス116はビデオ復号デバイスの一例を表す。他の例では、ソースデバイス及び宛先デバイスは、他の構成要素又は構成を含み得る。例えば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信してもよい。同様に、宛先デバイス116は、一体型表示デバイスを含むのではなく、外部表示デバイスとインターフェースしてもよい。
【0024】
図1に示すようなシステム100は一例にすぎない。一般に、いかなるデジタルビデオ符号化及び/又は復号デバイスも、確率推定の技法を実行し得る。ソースデバイス102及び宛先デバイス116は、ソースデバイス102が宛先デバイス116へ送信するためのコーディングされたビデオデータを生成するような、コーディングデバイスの例にすぎない。本開示は、データのコーディング(符号化及び/又は復号)を実行するデバイスを「コーディング」デバイスと呼ぶ。したがって、ビデオエンコーダ200及びビデオデコーダ300は、コーディングデバイス、具体的には、それぞれビデオエンコーダ及びビデオデコーダの例を表す。いくつかの例では、ソースデバイス102及び宛先デバイス116は、ソースデバイス102及び宛先デバイス116の各々がビデオ符号化及び復号構成要素を含むように、実質的に対称的な方式で動作し得る。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、又はビデオ電話のために、ソースデバイス102と宛先デバイス116との間での一方向又は両方向のビデオ送信をサポートし得る。
【0025】
一般に、ビデオソース104は、ビデオデータのソース(すなわち、未加工の符号化されていないビデオデータ)を表し、ビデオデータの連続した一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた未加工のビデオを含むビデオアーカイブ、及び/又はビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。更なる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、又はライブビデオ、アーカイブされたビデオ、及びコンピュータ生成されたビデオの組み合わせを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、事前にキャプチャされたビデオデータ、又はコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、受信された順序(「表示順序」と呼ばれることがある)からコーディングのためのコーディング順序へと、ピクチャを並べ替え得る。ビデオエンコーダ200は、符号化ビデオデータを含むビットストリームを生成し得る。ソースデバイス102は次いで、例えば宛先デバイス116の入力インターフェース122によって受信する及び/又は取り出すために、出力インターフェース108を介してコンピュータ可読媒体110へと、符号化ビデオデータを出力し得る。
【0026】
ソースデバイス102のメモリ106及び宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、未加工のビデオデータ、例えば、ビデオソース104からの未加工のビデオと、ビデオデコーダ300からの未加工の復号されたビデオデータと、を記憶し得る。追加又は代替として、メモリ106、120は、例えば、ビデオエンコーダ200及びビデオデコーダ300によってそれぞれ実行可能なソフトウェア命令を記憶し得る。メモリ106及びメモリ120は、この例ではビデオエンコーダ200及びビデオデコーダ300とは別個に示されるが、ビデオエンコーダ200及びビデオデコーダ300はまた、機能的に類似の又は等価な目的のために内部メモリを含み得ることを理解されたい。更に、メモリ106、120は、例えば、ビデオエンコーダ200から出力されビデオデコーダ300へ入力される、符号化ビデオデータを記憶し得る。いくつかの例では、メモリ106、120の部分は、例えば、未加工の復号ビデオデータ及び/又は符号化ビデオデータを記憶するための、1つ又は複数のビデオバッファとして割り振られ得る。
【0027】
コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化ビデオデータを移すことが可能な任意のタイプの媒体又はデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、例えば、無線周波数ネットワーク又はコンピュータベースのネットワークを介して、符号化ビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化ビデオデータを含む送信信号を変調してもよく、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調してもよい。通信媒体は、無線周波数(RF)スペクトル又は1つ若しくは複数の物理伝送線路などの、任意のワイヤレス又はワイヤードの通信媒体を備えてもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成してもよい。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス102から宛先デバイス116への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0028】
いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化されたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からの符号化されたデータにアクセスし得る。記憶デバイス112は、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性若しくは不揮発性メモリ、又は符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、様々な分散されたデータ記憶媒体又はローカルでアクセスされるデータ記憶媒体のうちのいずれかを含み得る。
【0029】
いくつかの例では、ソースデバイス102は、符号化ビデオデータを、ソースデバイス102によって生成された符号化ビデオデータを記憶し得るファイルサーバ114又は別の中間記憶デバイスに出力し得る。宛先デバイス116は、ストリーミング又はダウンロードを介して、ファイルサーバ114からの記憶されたビデオデータにアクセスし得る。
【0030】
ファイルサーバ114は、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(例えば、ウェブサイトのための)ウェブサーバ、(ファイル転送プロトコル(File Transfer Protocol、FTP)又は片方向伝送路上ファイル配信(File Delivery over Unidirectional Transport、FLUTE)プロトコルなどの)ファイル転送プロトコルサービスを提供するように構成されたサーバ、コンテンツ配信ネットワーク(content delivery network、CDN)デバイス、ハイパーテキスト転送プロトコル(hypertext transfer protocol、HTTP)サーバ、マルチメディアブロードキャストマルチキャストサービス(Multimedia Broadcast Multicast Service、MBMS)若しくは拡張MBMS(Enhanced MBMS、eMBMS)サーバ、及び/又はネットワークアタッチトストレージ(network attached storage、NAS)デバイスを表し得る。ファイルサーバ114は、追加又は代替として、HTTP経由動的適応ストリーミング(Dynamic Adaptive Streaming over HTTP、DASH)、HTTPライブストリーミング(HTTP Live Streaming、HLS)、リアルタイムストリーミングプロトコル(Real Time Streaming Protocol、RTSP)、HTTP動的ストリーミング(HTTP Dynamic Streaming)などの1つ又は複数のHTTPストリーミングプロトコルを実装し得る。
【0031】
宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通じて、ファイルサーバ114からの符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、デジタル加入者線(digital subscriber line、DSL)、ケーブルモデムなど)、又はファイルサーバ114に記憶されている符号化ビデオデータにアクセスするのに適した両方の組み合わせを含み得る。入力インターフェース122は、ファイルサーバ114からメディアデータを取り出すか若しくは受信するための上述の様々なプロトコル、又はメディアデータを取り出すための他のそのようなプロトコルのうちのいずれか1つ又は複数に従って動作するように構成され得る。
【0032】
出力インターフェース108及び入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーク構成要素(例えば、Ethernetカード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、又は他の物理構成要素を表し得る。出力インターフェース108及び入力インターフェース122がワイヤレス構成要素を備える例では、出力インターフェース108及び入力インターフェース122は、4G、4G-LTE(ロングタームエボリューション(Long-Term Evolution))、LTEアドバンスト、5Gなどのセルラー通信規格に従って、符号化ビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108及び入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(商標))、Bluetooth(商標)規格などの他のワイヤレス規格に従って、符号化ビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102及び/又は宛先デバイス116は、それぞれのシステムオンチップ(system-on-a-chip、SoC)デバイスを含み得る。例えば、ソースデバイス102は、ビデオエンコーダ200及び/又は出力インターフェース108に起因する機能を実行するSoCデバイスを含んでもよく、宛先デバイス116は、ビデオデコーダ300及び/又は入力インターフェース122に起因する機能を実行するSoCデバイスを含んでもよい。
【0033】
本開示の技法は、オーバージエアテレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、HTTP経由動的適応ストリーミング(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、又は他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用されてもよい。
【0034】
宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(例えば、通信媒体、記憶デバイス112、ファイルサーバ114など)から、符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロック又は他のコードディングされたユニット(例えば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性及び/又は処理を記述する値を有するシンタックス要素などの、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含んでもよい。表示デバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。表示デバイス118は、液晶ディスプレイ(liquid crystal display、LCD)、プラズマディスプレイ、有機発光ダイオード(organic light emitting diode、OLED)ディスプレイ、又は別のタイプの表示デバイスなど、様々な表示デバイスのいずれかを表し得る。
【0035】
図1には示されないが、いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は各々、オーディオエンコーダ及び/又はオーディオデコーダと統合されてもよく、共通のデータストリームにおいてオーディオとビデオの両方を含む多重化されたストリームを扱うために、適切なMUX-DEMUXユニット、又は他のハードウェア及び/若しくはソフトウェアを含んでもよい。
【0036】
ビデオエンコーダ200及びビデオデコーダ300は各々、1つ若しくは複数のマイクロプロセッサ、デジタル信号プロセッサ(digital signal processors、DSPs)、特定用途向け集積回路(application specific integrated circuits、ASICs)、フィールドプログラマブルゲートアレイ(field programmable gate arrays、FPGAs)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせなど、様々な好適なエンコーダ及び/又はデコーダ回路のいずれかとして実装され得る。技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために1つ又は複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ200及びビデオデコーダ300の各々は、1つ又は複数のエンコーダ又はデコーダに含まれてもよく、それらのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック(CODEC))の一部として統合されてもよい。ビデオエンコーダ200及び/又はビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、及び/又はセルラー電話などのワイヤレス通信デバイスを備えてもよい。
【0037】
ビデオエンコーダ200及びビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格、又は、マルチビュー及び/若しくはスケーラブルビデオコーディング拡張などのその拡張規格に従って動作し得る。代替として、ビデオエンコーダ200及びビデオデコーダ300は、汎用ビデオコーディング(VVC)とも呼ばれるITU-T H.266など、他のプロプライエタリ規格又は業界規格に従って動作し得る。他の例では、ビデオエンコーダ200及びビデオデコーダ300は、AOMedia Video1(AV1)、AV1の拡張、及び/又はAV1の後継バージョン(例えば、AV2)など、プロプライエタリビデオコーデック/フォーマットに従って動作し得る。他の例では、ビデオエンコーダ200及びビデオデコーダ300は、他のプロプライエタリフォーマット又は業界規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格又はフォーマットにも限定されない。一般に、ビデオエンコーダ200及びビデオデコーダ300は、CABACプロセスの一部として確率推定を使用する任意のビデオコーディング技法とともに本開示の技法を実行するように構成され得る。
【0038】
一般に、ビデオエンコーダ200及びビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行してもよい。「ブロック」という用語は、一般に、処理される(例えば、符号化、復号、又はそうでなければ符号化及び/又は復号プロセスにおいて使用される)べきデータを含む構造を指す。例えば、ブロックは、ルミナンス及び/又はクロミナンスデータのサンプルの2次元行列を含んでもよい。一般に、ビデオエンコーダ200及びビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルに対する赤、緑、及び青(RGB)のデータをコーディングするのではなく、ビデオエンコーダ200及びビデオデコーダ300は、ルミナンス成分及びクロミナンス成分をコーディングしてもよく、クロミナンス成分は、赤色と青色の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、受信されたRGBフォーマットデータを符号化する前にYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニット及び後処理ユニット(図示せず)が、これらの変換を実行してもよい。
【0039】
本開示は、一般に、ピクチャのデータを符号化又は復号するプロセスを含むものとして、ピクチャのコーディング(例えば、符号化及び復号)に言及することがある。同様に、本開示は、ブロックのためのデータを符号化又は復号するプロセス、例えば予測及び/又は残差コーディングを含むものとして、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、一般に、コーディング決定(例えば、コーディングモード)及びブロックへのピクチャの分割を表すシンタックス要素のための一連の値を含む。したがって、ピクチャ又はブロックをコーディングすることへの言及は、一般に、ピクチャ又はブロックを形成するシンタックス要素のためのコーディング値として理解されるべきである。
【0040】
HEVCは、コーディングユニット(CUs)、予測ユニット(prediction units、PUs)、及び変換ユニット(transform units、TUs)を含む、様々なブロックを定義する。HEVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、四分木構造に従ってコーディングツリーユニット(CTU)をCUに分割する。すなわち、ビデオコーダは、CTU及びCUを4個の等しい重複しない正方形に分割し、四分木の各ノードは、0個又は4個のいずれかの子ノードを有する。子ノードがないノードは「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つ又は複数のPU、及び/又は、1つ又は複数のTUを含んでもよい。ビデオコーダは、PU及びTUを更に分割し得る。例えば、HEVCでは、残差四分木(residual quadtree、RQT)はTUの分割を表す。HEVCでは、PUはインター予測データを表し、TUは残差データを表す。イントラ予測されたCUは、イントラモード指示などのイントラ予測情報を含む。
【0041】
別の例として、ビデオエンコーダ200及びビデオデコーダ300は、VVCに従って動作するように構成され得る。VVCによれば、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTUs)に分割する。ビデオエンコーダ200は、四分木二分木(quadtree-binary tree、QTBT)構造又はマルチタイプツリー(Multi-Type Tree、MTT)構造などの木構造に従って、CTUを分割し得る。QTBT構造は、HEVCのCU、PU、及びTUの間の分離などの、複数の区分タイプの概念を排除する。QTBT構造は、2つのレベル、すなわち、四分木分割に従って分割された第1のレベル、及び二分木分割に従って分割された第2のレベルを含む。QTBT構造のルートノードは、CTUに対応する。二分木のリーフノードは、コーディングユニット(CUs)に対応する。
【0042】
MTT分割構造では、ブロックは、四分木(quadtree、QT)分割、二分木(binary tree、BT)分割、及び1つ又は複数のタイプの三分木(triple tree、TT)(三元木(ternary tree、TT)とも呼ばれる)分割を使用して分割され得る。三分木分割又は三元木分割は、ブロックが3個のサブブロックに分けられる分割である。いくつかの例では、三分木分割又は三元木分割は、中心を通って元のブロックを分けることなく、ブロックを3個のサブブロックに分ける。MTTにおける分割タイプ(例えば、QT、BT、及びTT)は、対称又は非対称であり得る。
【0043】
AV1コーデックに従って動作するとき、ビデオエンコーダ200及びビデオデコーダ300は、ブロック中のビデオデータをコーディングするように構成され得る。AV1では、処理され得る最大コーディングブロックは、スーパーブロックと呼ばれる。AV1では、スーパーブロックは、128×128のルーマサンプル又は64×64のルーマサンプルのいずれかであり得る。しかしながら、後継ビデオコーディングフォーマット(例えば、AV2)では、スーパーブロックは、異なる(例えば、より大きい)ルーマサンプルサイズによって定義され得る。いくつかの例では、スーパーブロックは、ブロック4分木のトップレベルである。ビデオエンコーダ200は、スーパーブロックをより小さいコーディングブロックに更に分割し得る。ビデオエンコーダ200は、正方形又は非正方形分割を使用してスーパーブロック及び他のコーディングブロックをより小さいブロックに分割し得る。非正方形ブロックは、N/2×N、N×N/2、N/4×N、及びN×N/4ブロックを含み得る。ビデオエンコーダ200及びビデオデコーダ300は、コーディングブロックの各々に対して別個の予測及び変換プロセスを実行し得る。
【0044】
AV1はまた、ビデオデータのタイルを定義する。タイルは、他のタイルとは無関係にコーディングされ得るスーパーブロックの長方形アレイである。すなわち、ビデオエンコーダ200及びビデオデコーダ300は、他のタイルからのビデオデータを使用せずにタイル内のコーディングブロックを、それぞれ、符号化及び復号し得る。ただし、ビデオエンコーダ200及びビデオデコーダ300は、タイル境界を越えてフィルタ処理を実行し得る。タイルは、サイズが均一であっても不均一であってもよい。タイルベースのコーディングは、エンコーダ及びデコーダ実装形態のために、並列処理及び/又はマルチスレッディングを可能にし得る。
【0045】
いくつかの例では、ビデオエンコーダ200及びビデオデコーダ300は、ルミナンス成分及びクロミナンス成分の各々を表すために単一のQTBT構造又はMTT構造を使用してもよく、他の例では、ビデオエンコーダ200及びビデオデコーダ300は、ルミナンス成分のための1つのQTBT/MTT構造及び両方のクロミナンス成分のための別のQTBT/MTT構造(又はそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)などの、2つ以上のQTBT又はMTT構造を使用してもよい。
【0046】
ビデオエンコーダ200及びビデオデコーダ300は、四分木分割、QTBT分割、MTT分割、スーパーブロック分割、又は他の分割構造を使用するように構成され得る。
【0047】
いくつかの例では、CTUは、ルーマサンプルのコーディングツリーブロック(CTB)、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、又はモノクロームピクチャ若しくはサンプルをコーディングするために使用される3つの別個の色平面及びシンタックス構造を使用してコーディングされたピクチャのサンプルのCTBを含む。CTBは、成分をCTBに分けるように分割するような、何らかのNの値に対するサンプルのN×Nのブロックであってもよい。成分は、1つのアレイ又は4:2:0、4:2:2、若しくは4:4:4カラーフォーマットでピクチャを構成する3つのアレイ(ルーマ及び2つのクロマ)のうちの1つからの単一のサンプル、あるいはアレイ又はモノクロームフォーマットでピクチャを構成するアレイの単一のサンプルである。いくつかの例では、コーディングブロックは、CTBをコーディングブロックに分けるように分割するような、いくつかのM及びNの値に対するサンプルのM×Nのブロックである。
【0048】
ブロック(例えば、CTU又はCU)は、ピクチャの中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャの中の特定のタイル内のCTU行の長方形領域を指すことがある。タイルは、ピクチャの中の特定のタイル列及び特定のタイル行内のCTUの長方形領域であり得る。タイル列は、ピクチャの高さに等しい高さ及び(例えば、ピクチャパラメータセットの中などの)シンタックス要素によって指定される幅を有する、CTUの長方形領域を指す。タイル行は、(例えば、ピクチャパラメータセットの中などの)シンタックス要素によって指定される高さ及びピクチャの幅に等しい幅を有する、CTUの長方形領域を指す。
【0049】
いくつかの例では、タイルは複数のブリックに分割されてもよく、ブリックの各々はタイル内の1つ又は複数のCTU行を含み得る。複数のブリックに分割されないタイルも、ブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。ピクチャの中のブリックは、スライスとしても並べられ得る。スライスは、単一のネットワークアブストラクションレイヤ(network abstraction layer、NAL)ユニットの中に独占的に含まれ得る、ピクチャの整数個のブリックであってもよい。いくつかの例では、スライスは、いくつかの完全なタイル、又は1つのタイルの完全なブリックの連続シーケンスのみ、のいずれかを含む。
【0050】
本開示は、垂直次元及び水平次元において(CU又は他のビデオブロックなどの)ブロックのサンプル次元を指すために、互換的に「N×N」及び「N掛けるN」、例えば、16×16サンプル又は16掛ける16サンプルを使用してもよい。一般に、16×16のCUは、垂直方向に16個のサンプル(y=16)及び水平方向に16個のサンプル(x=16)を有する。同様に、N×NのCUは、一般に、垂直方向にN個のサンプル及び水平方向にN個のサンプルを有し、Nは非負の整数値を表す。CUの中のサンプルは、行及び列をなして並べられてもよい。その上、CUは、必ずしも水平方向において垂直方向における数と同じ数のサンプルを有する必要があるとは限らない。例えば、CUはN×Mのサンプルを備えてもよく、Mは必ずしもNに等しいとは限らない。
【0051】
ビデオエンコーダ200は、予測及び/又は残差情報、並びに他の情報を表すCUのためのビデオデータを符号化する。予測情報は、CUに対する予測ブロックを形成するためにCUがどのように予測されることになるのかを示す。残差情報は、一般に、符号化する前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
【0052】
CUを予測するために、ビデオエンコーダ200は、一般に、インター予測又はイントラ予測を通してCUに対する予測ブロックを形成してもよい。インター予測は、一般に、以前にコーディングされたピクチャのデータからCUを予測することを指し、イントラ予測は、一般に、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つ又は複数の動きベクトルを使用して予測ブロックを生成してもよい。ビデオエンコーダ200は、一般に、例えば、CUと参照ブロックとの間の差分に関してCUと厳密に一致する参照ブロックを識別するために、動き探索を実行し得る。ビデオエンコーダ200は、参照ブロックが現在のCUと厳密に一致するかどうかを決定するために、差分絶対値和(sum of absolute difference、SAD)、差分二乗和(sum of squared differences、SSD)、平均絶対差(mean absolute difference、MAD)、平均二乗差(mean squared differences、MSD)、又は他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測又は双方向予測を使用して現在のCUを予測し得る。
【0053】
VVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームイン若しくはズームアウト、回転、遠近移動、又は他の不規則な動きタイプなどの、非並進運動を表す2つ以上の動きベクトルを決定し得る。
【0054】
イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためにイントラ予測モードを選択してもよい。VVCのいくつかの例は、様々な方向モードを含む67個のイントラ予測モード、並びに平面モード及びDCモードを提供する。一般に、ビデオエンコーダ200は、現在ブロック(例えば、CUのブロック)に対する隣接サンプルを記述し、そこから現在ブロックのサンプルを予測する、イントラ予測モードを選択する。ビデオエンコーダ200がラスター走査順序(左から右、上から下)でCTU及びCUをコーディングすると仮定すると、そのようなサンプルは一般に、現在ブロックと同じピクチャにおいて、現在ブロックの上、上及び左、又は左にあり得る。
【0055】
ビデオエンコーダ200は、現在ブロックに対する予測モードを表すデータを符号化する。例えば、インター予測モードの場合、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるのか、並びに対応するモードに対する動き情報を表すデータを符号化してもよい。単方向又は双方向インター予測の場合、例えば、ビデオエンコーダ200は、高度動きベクトル予測(advanced motion vector prediction、AMVP)モード又はマージモードを使用して動きベクトルを符号化してもよい。ビデオエンコーダ200は、アフィン動き補償モードの動きベクトルを符号化するために類似のモードを使用してもよい。
【0056】
AV1は、ビデオデータのコーディングブロックを符号化及び復号するための2つの一般的な技法を含む。2つの一般的な技法は、イントラ予測(例えば、イントラフレーム予測又は空間予測)及びインター予測(例えば、インターフレーム予測又は時間予測)である。AV1のコンテキストでは、イントラ予測モードを使用してビデオデータの現在フレームのブロックを予測するとき、ビデオエンコーダ200及びビデオデコーダ300は、ビデオデータの他のフレームからのビデオデータを使用しない。たいていのイントラ予測モードでは、ビデオエンコーダ200は、現在ブロック中のサンプル値と、同じフレーム中の参照サンプルから生成される予測値との間の差分に基づいて、現在フレームのブロックを符号化する。ビデオエンコーダ200は、イントラ予測モードに基づいて参照サンプルから生成される予測値を決定する。
【0057】
ブロックのイントラ予測又はインター予測などの予測に続いて、ビデオエンコーダ200はブロックの残差データを計算してもよい。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成されたそのブロックに対する予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域において変換データを生成するために、1つ又は複数の変換を残差ブロックに適用してもよい。例えば、ビデオエンコーダ200は、離散コサイン変換(discrete cosine transform、DCT)、整数変換、ウェーブレット変換、又は概念的に類似の変換を残差ビデオデータに適用してもよい。加えて、ビデオエンコーダ200は、モード依存非分離可能二次変換(mode-dependent non-separable secondary transform、MDNSST)、信号依存変換、カルーネンレーベ変換(Karhunen-Loeve transform、KLT)などの二次的な変換を、最初の変換に続いて適用してもよい。ビデオエンコーダ200は、1つ又は複数の変換の適用に続いて、変換係数を生成する。
【0058】
上述のように、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行してもよい。量子化は、一般に、変換係数を表すために使用されるデータの量をできる限り低減するために変換係数が量子化され、更なる圧縮を行うプロセスを指す。量子化プロセスを実行することによって、ビデオエンコーダ200は、変換係数の一部又は全てに関連付けられたビット深度を低減し得る。例えば、ビデオエンコーダ200は、量子化の間にnビット値をmビット値に切り捨ててもよく、nはmより大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビットごとの右シフトを実行し得る。
【0059】
量子化に続いて、ビデオエンコーダ200は、変換係数を走査してもよく、量子化された変換係数を含む2次元行列から1次元ベクトルを生成する。走査は、より高いエネルギー(したがって、より低い周波数)の変換係数をベクトルの前方に置き、より低いエネルギー(したがって、より高い周波数)の変換係数をベクトルの後方に置くように設計され得る。いくつかの例では、ビデオエンコーダ200は、シリアル化ベクトルを生成し、次いで、ベクトルの量子化された変換係数をエントロピー符号化するために、量子化された変換係数を走査するためのあらかじめ定義された走査順序を使用し得る。他の例では、ビデオエンコーダ200は、適応走査を実行してもよい。量子化された変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、例えば、コンテキスト適応型バイナリ算術コーディング(context-adaptive binary arithmetic coding、CABAC)に従って、1次元ベクトルをエントロピー符号化してもよい。ビデオエンコーダ200はまた、ビデオデータを復号する際にビデオデコーダ300が使用する符号化ビデオデータに関連付けられたメタデータを記述するシンタックス要素に対する値をエントロピー符号化してもよい。
【0060】
CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当ててもよい。コンテキストは、例えば、シンボルの隣接値が0値化されているか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0061】
ビデオエンコーダ200は更に、ビデオデコーダ300に対して、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、及びシーケンスベースのシンタックスデータなどのシンタックスデータを、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、又は、シーケンスパラメータセット(sequence parameter set、SPS)、ピクチャパラメータセット(picture parameter set、PPS)、若しくはビデオパラメータセット(video parameter set、VPS)などの他のシンタックスデータにおいて生成し得る。ビデオデコーダ300は、そのようなシンタックスデータを同様に復号して、対応するビデオデータをどのように復号すべきかを決定してもよい。
【0062】
このようにして、ビデオエンコーダ200は、符号化ビデオデータ、例えば、ブロック(例えば、CU)へのピクチャの分割並びにブロックに対する予測情報及び/又は残差情報を記述するシンタックス要素を含む、ビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化ビデオデータを復号し得る。
【0063】
一般に、ビデオデコーダ300は、ビデオエンコーダ200によって実行されるプロセスに対する相反プロセスを実行して、ビットストリームの符号化ビデオデータを復号する。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスとは相反ではあるが実質的に類似の方式で、CABACを使用してビットストリームのシンタックス要素に対する値を復号してもよい。シンタックス要素は、CTUのCUを定義するために、CTUへのピクチャの分割、及びQTBT構造などの対応する分割構造に従った各CTUの分割のための、分割情報を定義し得る。シンタックス要素は、ビデオデータのブロック(例えば、CU)に対する予測情報及び残差情報を更に定義し得る。
【0064】
残差情報は、例えば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックの量子化された変換係数を逆量子化し逆変換して、ブロックのための残差ブロックを再生し得る。ビデオデコーダ300は、シグナリングされた予測モード(イントラ予測又はインター予測)及び関係する予測情報(例えば、インター予測の動き情報)を使用して、ブロックに対する予測ブロックを形成する。ビデオデコーダ300は次いで、予測ブロックと残差ブロックとを(サンプルごとに)組み合わせて、元のブロックを再生し得る。ビデオデコーダ300は、ブロックの境界に沿った視覚アーチファクトを低減するためのデブロッキングプロセスを実行するなどの、追加の処理を実行してもよい。
【0065】
本開示は全般に、シンタックス要素などの何らかの情報を「シグナリングすること」に言及することがある。「シグナリング」という用語は、一般に、シンタックス要素に対する値、及び/又は符号化ビデオデータを復号するために使用される他のデータの通信を指すことがある。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素に対する値をシグナリングし得る。一般に、シグナリングは、ビットストリームにおいて値を生成することを指す。上述のように、ソースデバイス102は、実質的にリアルタイムで、又は非リアルタイムでビットストリームを宛先デバイス116に転送してもよく、これは、例えば、宛先デバイス116によって後で取り出すためにシンタックス要素を記憶デバイス112に記憶するときに起こることがある。
【0066】
CABACは、VVCにおいて実装されるように、各コンテキストモデルについて2つの確率状態を採用する。CABACビン符号化及び復号に使用される確率は、以下に示されるように、2つの確率状態の平均として計算される。
state=(state[0]+state[1])>>N (1)
ここで、stateは、第iのコンテキストモデルの確率状態を意味する。Nは、stateの精度を制御する整数であり、平均を生成する。
【0067】
ビデオエンコーダ200及びビデオデコーダ300は、ビンが符号化又は復号された後に、それぞれ低レート及び高レートで2つの確率状態を更新するように構成され得る。以下の例では、state[0]はより遅いレートで更新されており、state[1]はより高いレートで適応されている。すなわち、一例では、より遅いレートの状態変数に対する状態値は、より高いレートの状態変数の状態値より多くの以前のビンを考慮に入れ、したがって、典型的には、1つの追加のビンの結果としてより少なく変化する。対照的に、より高いレートの状態変数に対する状態値は、より低いレートの状態変数の状態値より少ない以前のビンを考慮に入れ、したがって、典型的には、1つの追加のビンの結果としてより多く変化する。別の例では、両方のレートは、以前のビンの同じ量に基づいて適応される。
【0068】
ビデオエンコーダ200及びビデオデコーダ300は、以下に示されるように確率を更新するように構成され得る。
たった今コーディングされているビンが1に等しい場合、
state[0]=state[0]+(((210-1)-state[0])>>shiftL)(2)
state[1]=state[1]+(((214-1)-state[1])>>shiftH)(3)
そうではなく、たった今コーディングされているビンが0に等しい場合、
state[0]=state[0]-(state[0]>>shiftL)(4)
state[1]=state[1]-(state[1]>>shiftH)(5)
shiftL及びshiftHは、第iのコンテキストモデルの適応レートを制御するために使用されることに留意されたい。shiftHはshiftL以上であり、これは、より速い適応を意味する。これらの2つのパラメータは、各コンテキストモデルに対してあらかじめ定義され、ROMに記憶されるべきである。
【0069】
本開示の技法によれば、ビデオエンコーダ200及びビデオデコーダ300は、より多くの次元の柔軟性を提供することによって更新及び確率状態計算を決定するように構成され得る。開示される技法は2つの手法を含み、それらは別々に又は組み合わせて使用されてもよい。
【0070】
一例では、ビデオエンコーダ200及びビデオデコーダ300は、VVCの場合のように均一平均を行う代わりに、確率計算のために加重平均を決定するように構成され得る。このような技法を以下に示す。
state=(w×state[0]+w×state[1])>>N (6)
ここで、w及びwは、それぞれ2つの確率状態に割り当てられた2つの重みである。
【0071】
また、この手法のいくつかの変形があり、これらは別々に使用されてもよいし、組み合わされてもよい。一例では、(w,w)のペアは、コンテキストモデルごとにあらかじめ定義され得る。更に、(w,w)は、そのコンテキストモデルが、Iスライス、Bスライス、又はPスライスなどの異なるタイプのスライスをコーディングする際に使用されるとき、異なってもよい。別の例では、(w,w)のペアは、最小平均二乗誤差など、ある特定の最適化基準によって、符号化又は復号プロセス中に導出されてもよい。別の例では、(w,w)のペアは正規化され、これはw+wが1.0に等しいことを意味するか、又は正規化されないがc<w+w<cのように制限され得る。別の例では、一般に、(w,w)のペアは、実数(浮動小数点)値によって表されるが、実際の実装形態では、スケーリングによって整数に変換される。したがって、確率計算では、正規化のために適切なシフトを使用することができる。
【0072】
本開示の他の技法によれば、ビデオエンコーダ200及びビデオデコーダ300は、shiftL及びshiftHを調整することによって、遅い適応レート及び速い適応レートをローカルアクティビティ(例えば、所与のコンテキストのための全てのビンとは対照的なビンのあるローカルシーケンス)に適応させるように構成され得る。提案される確率更新プロセスを以下に示す。
たった今コーディングされているビンが1に等しい場合、
state[0]=state[0]+(((210-1)-state[0])>>(shiftL+deltaL))、(7)
state[1]=state[1]+(((214-1)-state[1])>>(shiftH+deltaH))、(8)
そうではなく、たった今コーディングされているビンが0に等しい場合、
state[0]=state[0]-(state[0]>>(shiftL+deltaL))、(9)
state[1]=state[1]-(state[1]>>(shiftH+deltaH))、(10)
【0073】
式(7)~(10)において、deltaL及びdeltaHは整数であり、-3~3、-5~5、及び-7~7などの範囲内にあり得る。deltaL及びdeltaHの値は、コンテキストモデルの先行するM個のビンによって決定されたローカルアクティビティに適応し得る。いくつかの実装形態では、Mの典型的な値は16を超えないことがある。図2に示される例のように、コンテキストモデルが与えられると、次のビン(ビン130)を処理する前に、確率状態は、式(7)~(10)による更新であり、deltaL及びdeltaHは、先行するMビンメモリによって決定される。
【0074】
Mビンメモリの2個の可能な組み合わせが存在する。例えば、Mが10に等しい場合、1024個の異なるMビンメモリがあり、各メモリは、次のビン130に対する一意の条件(又はコンテキスト)を示す。2エントリルックアップテーブルが、正しいdeltaL及びdeltaHを検索するために各コンテキストモデルに対して開発され、したがって、バイナリ表現がMビンメモリである整数インデックスを使用してテーブルをルックアップし、deltaL及びdeltaHを見つけることができる。
【0075】
図3は、本開示の技法に従って使用され得る2Dルックアップテーブル140の一例を示す。2エントリルックアップテーブルが各コンテキストモデルに対して開発されるので、ルックアップテーブルは最終的に2Dであり、コンテキストモデルID及びMビンメモリを検索するための2つのインデックスとして有する。したがって、ビデオエンコーダ200及びビデオデコーダ300は、コンテキストモデルの識別子及び最後のM個のビンに基づいてdeltaL及びdeltaHの値を決定するように構成され得る。図3の例では、(ctxとして示される)コンテキストモデルの識別子がx軸上にあり、2M個のMビンメモリがy軸上に示されている。deltaL及びdeltaHの値は、図3に示されるように、バイト(8ビット)エントリ142にパックされ、deltaL及びdeltaHはそれぞれ4ビットである。
【0076】
図4は、本開示の技法を実行し得る、例示的なビデオエンコーダ200を示すブロック図である。図4は、説明のために提供され、本開示において広く例示されて説明される技法を限定するものと見なされるべきでない。説明の目的で、本開示は、VVC(開発中のITU-T H.266)及びHEVC(ITU-T H.265)の技法に従って、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格、並びに、AV1及びAV1の後継のビデオコーディングフォーマットなどのビデオコーディングフォーマットに構成された、ビデオ符号化デバイスによって実行され得る。
【0077】
図4の例では、ビデオエンコーダ200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、復号ピクチャバッファ(decoded picture buffer、DPB)218、及びエントロピー符号化ユニット220を含む。ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、フィルタユニット216、DPB218、及びエントロピー符号化ユニット220のうちのいずれか又は全てが、1つ若しくは複数のプロセッサに又は処理回路に実装され得る。例えば、ビデオエンコーダ200のユニットは、ハードウェア回路の一部としての1つ又は複数の回路若しくは論理要素として、又はプロセッサ、ASIC、若しくはFPGAの一部として実装され得る。その上、ビデオエンコーダ200は、これら及び他の機能を実行するための追加若しくは代替のプロセッサ又は処理回路を含んでもよい。
【0078】
ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、ビデオデータメモリ230に記憶されたビデオデータを、例えば、ビデオソース104(図1)から受信し得る。DPB218は、ビデオエンコーダ200によって後続のビデオデータの予測において使用するための参照ビデオデータを記憶する、参照ピクチャメモリとして機能してもよい。ビデオデータメモリ230及びDPB218は、同期ダイナミックランダムアクセスメモリ(synchronous dynamic random access memory、SDRAM)を含むDRAM、磁気抵抗RAM(magnetoresistive RAM、MRAM)、抵抗RAM(resistive RAM、RRAM)、又は他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230及びDPB218は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、示されるように、ビデオエンコーダ200の他の構成要素とともにオンチップであってもよく、又はそれらの構成要素に対してオフチップであってもよい。
【0079】
本開示では、ビデオデータメモリ230への言及は、そのように特に記載されない限り、ビデオエンコーダ200の内部のメモリに、又はそのように特に記載されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして、解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(例えば、符号化されるべき現在ブロックに対するビデオデータ)を記憶する参照メモリとして理解されるべきである。図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的な記憶を提供し得る。
【0080】
図4の様々なユニットは、ビデオエンコーダ200によって実行される動作を理解する助けとなるように示される。ユニットは、固定機能回路、プログラマブル回路、又はそれらの組み合わせとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作があらかじめ設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作においてフレキシブルな機能を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義される方式でプログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は(例えば、パラメータを受信するか又はパラメータを出力する)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは一般に不変である。いくつかの例では、ユニットのうちの1つ又は複数は、異なる回路ブロック(固定機能又はプログラマブル)であってもよく、いくつかの例では、ユニットのうちの1つ又は複数は集積回路であってもよい。
【0081】
ビデオエンコーダ200は、算術論理ユニット(arithmetic logic units、ALUs)、基本機能ユニット(elementary function units、EFUs)、デジタル回路、アナログ回路、及び/又は、プログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図1)が、ビデオエンコーダ200が受信及び実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶してもよく、又はビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶してもよい。
【0082】
ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成されている。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204及びモード選択ユニット202に提供してもよい。ビデオデータメモリ230中のビデオデータは、符号化されるべき未加工のビデオデータであってもよい。
【0083】
モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、及びイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行する追加の機能ユニットを含んでもよい。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222及び/又は動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(linear model、LM)ユニットなどを含んでもよい。
【0084】
モード選択ユニット202は一般に、複数の符号化パスを協調させて、符号化パラメータの組み合わせと、そのような組み合わせに対して結果として得られるレート歪み値を試験する。符号化パラメータは、CUへのCTUの分割、CUに対する予測モード、CUの残差データに対する変換タイプ、CUの残差データに対する量子化パラメータなどを含んでもよい。モード選択ユニット202は最終的に、他の試験された組み合わせより良いレート歪み値を有する符号化パラメータの組み合わせを選択し得る。
【0085】
ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに分割し、1つ又は複数のCTUをスライス内にカプセル化してもよい。モード選択ユニット202は、上述のMTT構造、QTBT構造、スーパーブロック構造、又は四分木構造など、木構造に従ってピクチャのCTUを分割し得る。上記で説明されたように、ビデオエンコーダ200は、木構造に従ってCTUを分割することから1つ又は複数のCUを形成し得る。そのようなCUは、一般に、「ビデオブロック」又は「ブロック」と呼ばれることもある。
【0086】
一般に、モード選択ユニット202はまた、現在ブロック(例えば、現在のCU、又はHEVCでは、PU及びTUの重複部分)に対する予測ブロックを生成するように、その構成要素(例えば、動き推定ユニット222、動き補償ユニット224、及びイントラ予測ユニット226)を制御する。現在ブロックのインター予測の場合、動き推定ユニット222は、1つ又は複数の参照ピクチャ(例えば、DPB218内に記憶されている1つ又は複数の以前にコーディングされたピクチャ)の中の1つ又は複数の厳密に一致する参照ブロックを識別するために、動き探索を実行し得る。具体的には、動き推定ユニット222は、例えば、差分絶対値和(SAD)、差分二乗和(SSD)、平均絶対差(MAD)、平均二乗差(MSD)などに従って、可能性のある参照ブロックが現在ブロックとどれだけ類似しているかを表す値を計算し得る。動き推定ユニット222は一般に、現在ブロックと検討されている参照ブロックとの間のサンプルごとの差分を使用して、これらの計算を実行し得る。動き推定ユニット222は、現在ブロックと最も厳密に一致する参照ブロックを示す、これらの計算に起因する最低の値を有する参照ブロックを識別し得る。
【0087】
動き推定ユニット222は、現在ピクチャの中の現在ブロックの位置に対する参照ピクチャの中の参照ブロックの位置を定義する、1つ又は複数の動きベクトル(MVs)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。例えば、単方向のインター予測の場合、動き推定ユニット222は単一の動きベクトルを提供してもよく、一方、双方向インター予測の場合、動き推定ユニット222は2つの動きベクトルを提供してもよい。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出してもよい。別の例として、動きベクトルが小数サンプル精度を有する場合、動き補償ユニット224は、1つ又は複数の補間フィルタに従って、予測ブロックに対する値を補間し得る。その上、双方向インター予測の場合、動き補償ユニット224は、それぞれの動きベクトルによって識別される2つの参照ブロックに対するデータを取り出し、例えば、サンプルごとの平均又は加重平均を通じて、取り出されたデータを組み合わせ得る。
【0088】
動き推定ユニット222及び動き補償ユニット224は、AV1ビデオコーディングフォーマットに従って動作するとき、並進動き補償、アフィン動き補償、重複ブロック動き補償(overlapped block motion compensation、OBMC)、及び/又は合成インター-イントラ予測を使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を符号化するように構成され得る。
【0089】
別の例として、イントラ予測又はイントラ予測コーディングの場合、イントラ予測ユニット226は、現在ブロックに隣接するサンプルから予測ブロックを生成し得る。例えば、方向モードの場合、イントラ予測ユニット226は一般に、予測ブロックを作り出すために、隣接サンプルの値を数学的に組み合わせて、現在ブロックにわたって定められた方向においてこれらの計算された値をポピュレートし得る。別の例として、DCモードの場合、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックの各サンプルに対するこの得られた平均を含むように予測ブロックを生成し得る。
【0090】
イントラ予測ユニット226は、AV1ビデオコーディングフォーマットに従って動作する場合、方向性イントラ予測、非方向性イントラ予測、再帰的フィルタイントラ予測、ルーマからクロマ(chroma-from-luma、CFL)予測、イントラブロックコピー(intra block copy、IBC)、及び/又はカラーパレットモードを使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックとの両方)を符号化するように構成され得る。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行する追加の機能ユニットを含んでもよい。
【0091】
モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの未加工の符号化されていないバージョン、及びモード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとのサンプルごとの差分を計算する。得られるサンプルごとの差分は、現在ブロックに対する残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(residual differential pulse code modulation、RDPCM)を使用して残差ブロックを生成するために、残差ブロックの中のサンプル値の間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つ又は複数の減算器回路を使用して形成され得る。
【0092】
モード選択ユニット202がCUをPUへと分割する例では、各PUは、ルーマ予測ユニット及び対応するクロマ予測ユニットに関連付けられ得る。ビデオエンコーダ200及びビデオデコーダ300は、様々なサイズを有するPUをサポートすることができる。前述のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ユニットのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対して2N×2N又はN×NのPUサイズ、及びインター予測に対して2N×2N、2N×N、N×2N、N×N、又は類似の、対称のPUサイズをサポートし得る。ビデオエンコーダ200及びビデオデコーダ300はまた、インター予測に対して2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズのための非対称分割をサポートし得る。
【0093】
モード選択ユニット202がCUをPUに更に分割しない例では、各CUはルーマコーディングブロック及び対応するクロマコーディングブロックに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがある。ビデオエンコーダ200及びビデオデコーダ300は、2N×2N、2N×N、又はN×2NのCUサイズをサポートしてもよい。
【0094】
いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、及び線形モデル(LM)モードコーディングなどの他のビデオコーディング技法の場合、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックに対する予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成しなくてもよく、代わりに、選択されたパレットに基づいてブロックを再構成する方式を示すシンタックス要素を生成してもよい。そのようなモードでは、モード選択ユニット202は、これらのシンタックス要素を符号化されるようにエントロピー符号化ユニット220に提供し得る。
【0095】
上記で説明されたように、残差生成ユニット204は、現在ブロック及び対応する予測ブロックに対するビデオデータを受信する。残差生成ユニット204は次いで、現在ブロックに対する残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
【0096】
変換処理ユニット206は、変換係数のブロック(本明細書では「変換係数ブロック」と呼ばれる)を生成するために、1つ又は複数の変換を残差ブロックに適用する。変換処理ユニット206は、変換係数ブロックを形成するために、様々な変換を残差ブロックに適用し得る。例えば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、又は概念的に類似の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、複数の変換、例えば、1次変換及び回転変換などの2次変換を、残差ブロックに対して実行し得る。いくつかの例では、変換処理ユニット206は、変換を残差ブロックに適用しない。
【0097】
変換処理ユニット206は、AV1に従って動作する場合、(本明細書では「変換係数ブロック」と呼ばれる)変換係数のブロックを生成するために、1つ又は複数の変換を残差ブロックに適用し得る。変換処理ユニット206は、変換係数ブロックを形成するために、様々な変換を残差ブロックに適用し得る。例えば、変換処理ユニット206は、離散コサイン変換(DCT)と、非対称離散サイン変換(asymmetric discrete sine transform、ADST)と、反転ADST(例えば、逆順におけるADST)と、恒等変換(identity transform、IDTX)とを含み得る、水平/垂直変換組み合わせを適用し得る。恒等変換を使用する場合、変換は、垂直方向又は水平方向のうちの1つにおいてスキップされる。いくつかの例では、変換処理はスキップされてもよい。
【0098】
量子化ユニット208は、変換係数ブロックにおける変換係数を量子化して、量子化された変換係数ブロックを生成してもよい。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(quantization parameter、QP)値に従って、変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は、変換処理ユニット206によって生成された元の変換係数より精度が低いことがある。
【0099】
逆量子化ユニット210及び逆変換処理ユニット212は、それぞれ、逆量子化及び逆変換を量子化された変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構成し得る。再構成ユニット214は、モード選択ユニット202によって生成される再構成された残差ブロック及び予測ブロックに基づいて、(ある程度の歪みを伴う可能性があるが)現在ブロックに対応する再構成されたブロックを生成し得る。例えば、再構成ユニット214は、再構成されたブロックを生成するために、再構成された残差ブロックのサンプルを、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに加算し得る。
【0100】
フィルタユニット216は、再構成されたブロックに対して1つ又は複数のフィルタ動作を実行し得る。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーチファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット216の動作は、いくつかの例では、スキップされてもよい。
【0101】
フィルタユニット216は、AV1に従って動作する場合、再構成されたブロックに対して1つ又は複数のフィルタ動作を実行し得る。例えば、フィルタユニット216は、CUのエッジに沿ったブロッキネスアーチファクトを低減するためにデブロッキング動作を実行し得る。他の例では、フィルタユニット216は、制約付き方向性強調フィルタ(constrained directional enhancement filter、CDEF)を適用してもよく、これは、デブロッキングの後に適用されてもよく、推定されたエッジ方向に基づく、分離不可能、非線形、ローパス方向性フィルタの適用を含み得る。フィルタユニット216はまた、ループ復元フィルタを含んでもよく、これは、CDEFの後に適用され、分離可能対称正規化ウィーナーフィルタ又はデュアル自己誘導フィルタを含み得る。
【0102】
ビデオエンコーダ200は、再構成されたブロックをDPB218に記憶する。例えば、フィルタユニット216の動作が実行されない例では、再構成ユニット214が、再構成されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が実行される例では、フィルタユニット216が、フィルタ処理された再構成されたブロックをDPB218に記憶し得る。動き推定ユニット222及び動き補償ユニット224は、後で符号化されるピクチャのブロックをインター予測するために、再構成された(かつ、フィルタ処理された可能性のある)ブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在ピクチャの中の他のブロックをイントラ予測するために、DPB218内の、現在ピクチャの再構成されたブロックを使用し得る。
【0103】
一般に、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。例えば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測のための動き情報又はイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化データを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つ又は複数のエントロピー符号化動作を実行し得る。例えば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(context-adaptive variable length coding、CAVLC)動作、CABAC動作、可変長-可変長(variable-to-variable、V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding、SBAC)動作、確率間隔分割エントロピー(Probability Interval Partitioning Entropy、PIPE)コーディング動作、指数ゴロム符号化動作、又は別のタイプのエントロピー符号化動作を、データに対して実行し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【0104】
ビデオエンコーダ200は、スライス又はピクチャのブロックを再構成するために必要とされるエントロピー符号化シンタックス要素を含むビットストリームを出力し得る。具体的には、エントロピー符号化ユニット220がビットストリームを出力してもよい。
【0105】
エントロピー符号化ユニット220は、AV1に従って、シンボル対シンボル適応マルチシンボル算術コーダ(symbol-to-symbol adaptive multi-symbol arithmetic coder)として構成され得る。AV1におけるシンタックス要素はN個の要素のアルファベットを含み、コンテキスト(例えば、確率モデル)はN個の確率のセットを含む。エントロピー符号化ユニット220は、確率をnビット(例えば、15ビット)累積分布関数(cumulative distribution functions、CDFs)として記憶し得る。エントロピー符号化ユニット22は、コンテキストを更新するために、アルファベットサイズに基づく更新ファクタを用いて、再帰的スケーリングを実行し得る。
【0106】
上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロック及び/又はクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、CUのルーマ成分及びクロマ成分である。いくつかの例では、ルーマコーディングブロック及びクロマコーディングブロックは、PUのルーマ成分及びクロマ成分である。
【0107】
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)及び参照ピクチャを識別する動作が、クロマブロックのためのMV及び参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされてもよく、参照ピクチャは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロック及びクロマコーディングブロックについて同じであってもよい。
【0108】
ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路に実装され、本開示で説明される任意の技法に従ってシンボルが特定の値を有する確率を計算し、シンボルが特定の値を有する確率に従ってシンボルをバイナリ算術コーディングするように構成された1つ又は複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表す。
【0109】
図5は、本開示の技法を実行し得る、例示的なビデオデコーダ300を示すブロック図である。図5は、説明のために提供され、本開示において広く例示されて説明される技法を限定するものではない。説明のために、本開示は、VVC(開発中のITU-T H.266)、及びHEVC(ITU-T H.265)の技法によるビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格へと構成されたビデオコーディングデバイスによって実行され得る。
【0110】
図5の例では、ビデオデコーダ300は、コーディングされたピクチャバッファ(coded picture buffer、CPB)メモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、及び復号ピクチャバッファ(decoded picture buffer、DPB)314を含む。CPBメモリ320、エントロピー復号ユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、フィルタユニット312、及びDPB314のいずれか又は全てが、1つ又は複数のプロセッサに又は処理回路に実装され得る。例えば、ビデオデコーダ300のユニットは、ハードウェア回路の一部としての1つ又は複数の回路若しくは論理要素として、又はプロセッサ、ASIC、若しくはFPGAの一部として実装され得る。その上、ビデオデコーダ300は、これらの機能及び他の機能を実行する追加若しくは代替のプロセッサ又は処理回路を含んでもよい。
【0111】
予測処理ユニット304は、動き補償ユニット316及びイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行する追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含んでもよい。他の例では、ビデオデコーダ300は、より多い、より少ない、又は異なる機能構成要素を含んでもよい。
【0112】
動き補償ユニット316は、AV1に従って動作するとき、上記で説明されたように、並進動き補償、アフィン動き補償、OBMC、及び/又は合成インター-イントラ予測を使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を復号するように構成され得る。イントラ予測ユニット318は、上記で説明されたように、方向性イントラ予測、非方向性イントラ予測、再帰的フィルタイントラ予測、CFL、イントラブロックコピー(IBC)、及び/又はカラーパレットモードを使用して、ビデオデータのコーディングブロック(例えば、ルーマコーディングブロックとクロマコーディングブロックの両方)を復号するように構成され得る。
【0113】
CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき符号化されたビデオビットストリームなどのビデオデータを記憶してもよい。CPBメモリ320内に記憶されたビデオデータは、例えば、コンピュータ可読媒体110(図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化ビデオデータ(例えば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時的なデータなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、符号化されたビデオビットストリームの後続のデータ又はピクチャを復号するときにビデオデコーダ300が参照ビデオデータとして出力及び/又は使用し得る復号されたピクチャを記憶する。CPBメモリ320及びDPB314は、SDRAM、MRAM、RRAM、又は他のタイプのメモリデバイスなどを含む、DRAMなどの様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320及びDPB314は、同じメモリデバイス又は別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであってもよく、又はそれらの構成要素に対してオフチップであってもよい。
【0114】
追加又は代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からのコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320について上述されたようなデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部又は全てがビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されるとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
【0115】
図5に示される様々なユニットは、ビデオデコーダ300によって実行される動作を理解する助けとなるように示されている。ユニットは、固定機能回路、プログラマブル回路、又はそれらの組み合わせとして実装され得る。図4と同様に、固定機能回路は、特定の機能を提供する回路を指し、実行され得る動作があらかじめ設定されている。プログラマブル回路は、様々なタスクを実行するようにプログラムされ得る回路を指し、実行され得る動作においてフレキシブルな機能を提供する。例えば、プログラマブル回路は、ソフトウェア又はファームウェアの命令によって定義される方式でプログラマブル回路を動作させるソフトウェア又はファームウェアを実行し得る。固定機能回路は(例えば、パラメータを受信するか又はパラメータを出力する)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは一般に不変である。いくつかの例では、ユニットのうちの1つ又は複数は、異なる回路ブロック(固定機能又はプログラマブル)であってもよく、いくつかの例では、ユニットのうちの1つ又は複数は集積回路であってもよい。
【0116】
ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、及び/又は、プログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップメモリ又はオフチップメモリが、ビデオデコーダ300が受信及び実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶してもよい。
【0117】
エントロピー復号ユニット302は、シンタックス要素を再生するために、符号化ビデオデータをCPBから受信し、ビデオデータをエントロピー復号してもよい。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構成ユニット310、及びフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【0118】
一般に、ビデオデコーダ300は、ブロックごとにピクチャを再構成する。ビデオデコーダ300は、各ブロックに対して再構成動作を個別に実行し得る(現在再構成されているブロック、すなわち復号されているブロックは、「現在ブロック」と呼ばれることがある)。
【0119】
エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数、並びに量子化パラメータ(QP)及び/又は変換モード指示(単数若しくは複数)などの変換情報を定義する、シンタックス要素をエントロピー復号してもよい。逆量子化ユニット306は、量子化の程度、及び同様に逆量子化ユニット306が適用すべき逆量子化の程度を決定するために、量子化された変換係数ブロックに関連付けられたQPを使用してもよい。逆量子化ユニット306は、例えば、量子化された変換係数を逆量子化するために、ビットごとの左シフト演算を実行してもよい。それによって、逆量子化ユニット306は、変換係数を含む変換係数ブロックを形成し得る。
【0120】
逆量子化ユニット306が変換係数ブロックを形成した後、逆変換処理ユニット308は、現在ブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つ又は複数の逆変換を適用し得る。例えば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、又は別の逆変換を変換係数ブロックに適用し得る。
【0121】
更に、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそこから取り出すべきDPB314内の参照ピクチャ、並びに、現在ピクチャの中の現在ブロックの位置に対する参照ピクチャの中の参照ブロックの位置を識別する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(図4)に関して説明した方式と実質的に類似の方式で、インター予測プロセスを実行することができる。
【0122】
別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って、予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(図4)に関して説明した方式と実質的に類似の方式で、イントラ予測プロセスを実行することができる。イントラ予測ユニット318は、現在ブロックに対する隣接サンプルのデータをDPB314から取り出し得る。
【0123】
再構成ユニット310は、予測ブロック及び残差ブロックを使用して現在ブロックを再構成し得る。例えば、再構成ユニット310は、現在ブロックを再構成するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
【0124】
フィルタユニット312は、再構成されたブロックに対して1つ又は複数のフィルタ動作を実行し得る。例えば、フィルタユニット312は、再構成されたブロックのエッジに沿ったブロッキネスアーチファクトを低減するために、デブロッキング動作を実行してもよい。フィルタユニット312の動作は必ずしも全ての例において実行される必要はない。
【0125】
ビデオデコーダ300は、再構成されたブロックをDPB314に記憶してもよい。例えば、フィルタユニット312の動作が実行されない例では、再構成ユニット310が、再構成されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実行される例では、フィルタユニット312が、フィルタ処理された再構成されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、イントラ予測のための現在ピクチャ及び後続の動き補償のための以前に復号されたピクチャのサンプルなどの参照情報を、予測処理ユニット304に提供してもよい。更に、ビデオデコーダ300は、図1の表示デバイス118などの表示デバイス上に後で表示するための復号されたピクチャ(例えば、復号されたビデオ)を、DPB314から出力し得る。
【0126】
このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路に実装され、本開示で説明される任意の技法に従ってシンボルが特定の値を有する確率を計算し、シンボルが特定の値を有する確率に従ってシンボルをバイナリ算術コーディングするように構成された1つ又は複数の処理ユニットとを含む、ビデオ復号デバイスの一例を表す。
【0127】
図6は、本開示の技法による、現在ブロックを符号化する例示的なプロセスを示すフローチャートである。現在ブロックは、現在のCUを含み得る。ビデオエンコーダ200(図1及び図4)に関して説明されるが、他のデバイスが図6のプロセスと類似のプロセスを実行するように構成され得ることを理解されたい。
【0128】
この例では、ビデオエンコーダ200は最初に、現在ブロックを予測する(350)。例えば、ビデオエンコーダ200は、現在ブロックに対する予測ブロックを形成することができる。ビデオエンコーダ200は、次いで、現在ブロックに対する残差ブロックを計算することができる(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元の符号化されていないブロックと現在ブロックに対する予測ブロックとの間の差分を計算することができる。ビデオエンコーダ200は、次いで、残差ブロックを変換し、残差ブロックの変換係数を量子化することができる(354)。次に、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査することができる(356)。走査の間に又は走査に続いて、ビデオエンコーダ200は、変換係数をエントロピー符号化することができる(358)。例えば、ビデオエンコーダ200は、CAVLC又はCABACを使用して変換係数を符号化することができる。ビデオエンコーダ200は、次いで、ブロックのエントロピー符号化されたデータを出力することができる(360)。
【0129】
図7は、本開示の技法による、ビデオデータの現在ブロックを復号する例示的なプロセスを示すフローチャートである。現在ブロックは、現在のCUを含み得る。ビデオデコーダ300(図1及び図5)に関して説明されるが、他のデバイスが図7のプロセスと類似のプロセスを実行するように構成され得ることを理解されたい。
【0130】
ビデオデコーダ300は、エントロピー符号化された予測情報及び現在ブロックに対応する残差ブロックの変換係数のエントロピー符号化されたデータなどの、現在ブロックに対するエントロピー符号化されたデータを受信することができる(370)。ビデオデコーダ300は、現在ブロックに対する予測情報を決定し、残差ブロックの変換係数を再生するために、エントロピー符号化されたデータをエントロピー復号することができる(372)。ビデオデコーダ300は、現在ブロックに対する予測ブロックを計算するために、例えば、現在ブロックに対する予測情報によって示されるイントラ予測モード又はインター予測モードを使用して、現在ブロックを予測することができる(374)。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された変換係数を逆走査することができる(376)。ビデオデコーダ300は、次いで、残差ブロックを生成するために、変換係数を逆量子化し、変換係数に逆変換を適用することができる(378)。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、現在ブロックを最終的に復号することができる(380)。
【0131】
図8A及び図8Bは、ビンnにおけるCABACプロセスの例を示す。図8Aの例400では、ビンnにおいて、ビン2における範囲は、あるコンテキスト状態(σ)が与えられると、最低確率シンボル(LPS)(pσ)の確率によって与えられるRangeMPS及びRangeLPSを含む。例400は、ビンnの値が最高確率シンボル(MPS)に等しいときの、ビンn+1における範囲の更新を示す。この例では、低は同じままあるが、ビンn+1における範囲の値は、ビンnにおいてRangeMPSの値まで下げられる。図8Bの例402は、ビンnの値がMPSに等しくない(すなわち、LPSに等しい)とき、ビンn+1における範囲の更新を示す。この例では、低は、ビンnにおいてRangeLPSのより低い範囲値に移される。加えて、ビンn+1における範囲の値は、ビンnにおけるRangeLPSの値まで下げられる。
【0132】
HEVCビデオコーディングプロセスの一例では、範囲は9ビットで表され、低は10ビットで表される。範囲及び低の値を十分な精度で維持するための再正規化プロセスがある。再正規化は、範囲が256未満であるときはいつでも起こる。したがって、範囲は、再正規化の後は常に256以上である。範囲及び低の値に応じて、バイナリ算術コーダ(binary arithmetic coder、BAC)は、ビットストリームに、「0」、若しくは「1」を出力し、又は今後の出力に備えるために、内部変数(BO:未解決ビットと呼ばれる)を更新する。図9は、範囲に応じたBAC出力の例を示す。例えば、範囲及び低がある閾値(例えば、512)を上回るとき、「1」がビットストリームに出力される。範囲及び低がある閾値(例えば、512)を下回るとき、「0」がビットストリームに出力される。範囲及びより低がある閾値とある閾値との間にあるとき、ビットストリームには何も出力されない。そうではなく、BO値がインクリメントされ、次のビンが符号化される。
【0133】
H.264/AVCのCABACコンテキストモデルでは、及びHEVCのいくつかの例では、128個の状態がある。0~63であり得る64個の可能なLPS確率(状態σによって表記される)がある。各MPSは、0又は1であり得る。したがって、128個の状態は、64個の状態確率×MPSの2つの可能な値(0又は1)である。したがって、状態は、7ビットでインデックス付けされ得る。
【0134】
LPS範囲(rangeLPSσ)を導出する計算を減らすために、全ての事例についての結果が、近似としてあらかじめ計算され、ルックアップテーブルに記憶されてもよい。したがって、LPS範囲は、単純なテーブルルックアップを使用することによって、いかなる乗算も用いずに取得され得る。乗算を避けることは、いくつかのデバイス又はアプリケーションにとって重要であることがあり、それは、この演算が、多くのハードウェアアーキテクチャにおいて多大な待ち時間を引き起こし得るからである。
【0135】
4列のあらかじめ計算されたLPS範囲テーブルが、乗算の代わりに使用され得る。範囲は、4つのセグメントに分割される。セグメントインデックスが、質問(範囲>>6)&3によって導出され得る。実際には、セグメントインデックスは、ビットをシフトし、実際の範囲から除去することによって導出される。以下の表1は、可能な範囲と、それらの対応するインデックスとを示す。
【0136】
【表1】
【0137】
そして、LPS範囲テーブルは、64個のエントリ(各確率状態に対して1つ)×4(各範囲インデックスに対して1つ)を有する。各エントリは、RangeLPS、すなわち、範囲とLPS確率を乗算した値である。このテーブルの一部の一例が、以下の表2に示される。表2は、確率状態9~12を示す。HEVCに対する1つの提案では、確率状態は0~63にわたり得る。
【0138】
【表2】
【0139】
各セグメント(すなわち、範囲値)の中で、各確率状態σのLPS範囲があらかじめ定義される。言い換えると、確率状態σのLPS範囲は、4つの値(すなわち、各範囲インデックスに対して1つの値)へと量子化される。所与の点において使用される具体的なLPS範囲は、どのセグメントに範囲が属すかに依存する。テーブルにおいて使用される可能なLPS範囲の数は、テーブル列の数(すなわち、可能なLPS範囲値の数)とLPS範囲精度との間のトレードオフである。一般に、列が多いほど、LPS範囲値の量子化誤差は小さくなるが、テーブルを記憶するための、より多くのメモリの必要性も増す。列が少ないと量子化誤差が増大するが、テーブルを記憶するのに必要とされるメモリも減る。
【0140】
上記で説明されたように、各LPS確率状態は、対応する確率を有する。各状態の確率pは、次のように導出される。
σ=αpσ-1
ここで、状態σは0~63である。定数αは、各コンテキスト状態間の確率変化の量を表す。一例では、α=0.9493であり、又は、より厳密には、α=(0.01875/0.5)1/63である。状態σ=0における確率は、0.5(すなわち、p=1/2)に等しい。すなわち、コンテキスト状態0において、LPS及びMPSは等しく起こり得る。各々の連続する状態における確率は、前の状態をαと乗算することによって導出される。したがって、LPSがコンテキスト状態α=1において起こる確率は、p 0.9493(0.50.9493=0.47465)である。したがって、状態αのインデックスが増大すると、LPSが起こる確率が下がる。
【0141】
CABACは、確率状態が信号統計(すなわち、前にコーディングされたビンの値)に従うために更新されるので、適応的である。更新プロセスは次の通りである。所与の確率状態について、更新は、状態インデックスと、LPS又はMPSのいずれかとして識別された符号化されたシンボルの値とに依存する。更新プロセスの結果として、新しい確率状態が導出され、これは、修正された可能性のあるLPS確率推定値と、必要であれば、修正されたMPS値とからなる。
【0142】
ビン値がMPSに等しい場合、所与の状態インデックスが1だけインクリメントされ得る。これは、MPSが、LPS確率がすでにその最低値である(又は等価的に、最高のMPS確率に達している)、状態インデックス62において起こるときを除いて、全ての状態に当てはまる。この場合、状態インデックス62は、LPSが見つかるか、又は最後のビン値が符号化される(最後のビン値の特殊な場合に対しては、状態63が使用される)まで、固定されたままである。LPSが起こると、状態インデックスは、以下の式に示されるように、状態インデックスをある量だけデクリメントすることによって変更される。この規則は全般に、以下を例外として、LPSの各発生に対して適用される。確率が等しい事例に対応するインデックスσ=0の状態において、LPSが符号化されていると仮定すると、状態インデックスは固定されたままであるが、MPS値は、LPS及びMPSの値が交換されるように切り替えられる。全ての他の事例では、どのシンボルが符号化されていても、MPS値は変えられない。LPS確率に対する遷移規則の導出は、所与のLPS確率poldと、その更新された確率pnewとの間の以下の関係に基づく。
MPSが起こる場合、Pnew=max(αpold,p62
LPSが起こる場合、Pnew=(1-α)+αpold
【0143】
CABACにおける確率推定プロセスの現実的な実装形態に関して、全ての遷移規則が、6ビットの符号なし整数値の63個のエントリを各々有する、最大で2つのテーブルによって実現され得ることに留意することが重要である。いくつかの例では、単一のテーブルTransIdxLPSを用いて状態遷移が決定されてもよく、このテーブルは、所与の状態インデックスσに対して、LPSが観察されている事例における新しい更新された状態インデックスTransIdxLPS[σ]を決定する。1という固定値による、状態インデックスの単純な(飽和した)インクリメントによって、MPSにより引き起こされる遷移を得ることができ、更新された状態インデックスmin(σ+1,62)をもたらす。以下の表3は、部分的TransIdxLPSテーブルの一例である。
【0144】
【表3】
【0145】
前のBAC手法(例えば、H.264/AVCにおいて使われるBAC手法)に伴う1つの問題は、テーブルRangeLPS及びTransIdxLPSが、低解像度ビデオ(すなわち、共通中間フォーマット(CIF)及びクオーターCIF(QCIF)ビデオ)用に調整されることである。現在では、大量のビデオコンテンツが高精細(HD)であり、場合によっては、HDより大きい。HDであるか、又はHD解像度より大きいビデオコンテンツは、H.264/AVCを開発するために使われた、10年昔のQCIFシーケンスとは異なる統計値を有する。
【0146】
したがって、H.264/AVCからのテーブルRangeLPS及びTransIdxLPSは、状態の間で、速すぎるような適応を引き起こす場合がある。すなわち、特にLPSが起こるときの、確率状態の間の遷移は、HDビデオのより滑らかな、より高解像度のコンテンツにとっては大きすぎることがある。したがって、従来技法に従って使われる確率モデルは、HD及びエクストラHDコンテンツにとって正確でない。加えて、HDビデオコンテンツは、より大きい範囲のピクセル値を含むので、H.264/AVCテーブルは、HDコンテンツに存在し得るより極端な値を考慮するための十分なエントリを含まない。
【0147】
したがって、RangeLPS及びTransIdxLPSテーブルは、この新しいコンテンツの特性を考慮するように修正される必要がある。これはまた、BACが少なくとも2つの側面において異なるべきであることを含意する。1つの違いは、BACプロセスが、より遅い適応プロセスを可能にするテーブルを使うべきであることである。別の違いは、BACプロセスが、より極端な事例(すなわち、傾斜した確率)を考慮すべきであることである。
【0148】
現在のRangeLPS及びTransIdxLPSテーブルは、単により多くの確率状態及び範囲を含めることによって、これらの目標を達成するように修正され得る。ただし、この解決策は、テーブルのサイズのかなりの増大を招く。より遅い適応は、現在使われているパラメータα(例えば、α=0.9493)より1に近いパラメータαを使うことによって達成され得る。ただし、より大きい値のαを使うと、確率は、よりゆっくりと0に向かい、したがって、より多くの状態が必要とされる。加えて、より遅い適応を達成するために、最も低い可能な確率が、現在使われている最も低い確率よりはるかに低ければ有益であり得る。したがって、その非常に低い確率値に達するために、一層より多くの状態が必要とされ得る。
【0149】
上記の問題に鑑みて、本開示は、テーブルサイズ(例えば、RangeLPS及びTransIdxLPSテーブル)を現実的なレベルに保ったまま、より遅い適応及びより傾斜した確率を遂げるように、BACを修正する技法を提案する。言い換えると、本開示は、比較的小さいサイズのテーブルを使いながら、より遅い適応及びより極端な確率(すなわち、0及び1により近い確率)を達成する技法を記載する。
【0150】
本開示に記載される技法は、より多くの確率状態、例えば、H.264/AVC又はHEVCとともにBACにおいて使われるより多くの確率状態を使うことができる。この場合、TransIdxLPSテーブルは、より遅い適応及びより低い確率を取得し得る。一例では、本開示に記載される技法は、64個ではなく、128個の確率状態を使うことができる。こうすることにより、テーブルTransIdxLPSは、64個のエントリだけ増大する(すなわち、64個ではなく、128個のエントリ)。この増大は、より遅い適応及びより低い極小確率を可能にする。一例として、パラメータα=0.9689を設定することによって、連続的確率の間の差がより小さくなる。更に、最も低い最小確率は0.009まで下がり、これは、H.264/AVC事例の約2分の1(すなわち、0.01875)である。他の数の状態及びα値も可能であるが、概して、状態の数は増大されてもよく、αの値は、α=0.9493のH.264/AVC事例より1に近くなり得る。
【0151】
HD又はエクストラHDコーディングを改善するために修正されてもよい別のパラメータは、パラメータpである。pの値は概して、LPSについての最大確率を示す。この可能性を検討する理由は、より低いpを有することは、極小確率も低下することを意味するからである。pの値は、従来のBACプロセスでは0.5に設定される。本開示は、pについて他の値を可能にすることを提案する。0.5より低い他の値のpを有することにより、MPS/LPSスワップが起きたとき、状態0におけるより滑らかな遷移が可能になる。一例では、pは0.493に等しくてもよいが、多くの他の例が使われ得る。
【0152】
通常、各確率状態は、それ自体のエントリをRangeLPSテーブル中に有する。テーブルサイズは、
#確率状態×#量子化された範囲インデックス
として表すことができ、これは、HEVC向けのいくつかの提案では64×4=256バイトである。状態の数は、本開示の例では増大する(上の例では2倍になる)ので、RangeLPSテーブルサイズは128×4=512バイトであり得る。ただし、RangeLPSテーブルサイズのこの増大を避けるために、本開示は、RangeLPSサイズをインデックス付けするために、確率状態インデックスを、より低いサイズ(すなわち、少数のインデックス)にマッピングすることを更に提案する。言い換えると、本開示は、範囲計算プロセスから状態遷移プロセスを切り離すことを提案する。これは、本例では、状態から範囲への計算のためのマップがあることを意味する。ビデオエンコーダ200及び/又はビデオデコーダ300は、決定された確率状態を示すインデックスを、複数のグループ化インデックスのうちの1つ(例えば、RangeLPSテーブル用のグループ化インデックス)にマッピングするように構成されてもよく、グループ化インデックスのうちの少なくとも1つは、複数の確率状態のうちの少なくとも2つを表す。したがって、RangeLPSテーブル(又は他のBACテーブル)は、確率状態が存在するより少数のインデックスを使い得る。
【0153】
本開示の一例では、RangeLPSテーブル用のエントリとして使うための新規インデックスを生成するように、確率状態数が2で除算されてもよい。この場合、128個の確率状態は、64個のエントリまで低減される。したがって、RangeLPSテーブルは、H.264/AVCにおいて使われる現在のサイズを保ち得る。したがって、範囲LPSテーブル中のエントリをインデックス付けするのに確率状態σを使うのではなく、本開示に記載される技法は(σ>>1)を利用し、すなわち、状態σは、2で除算され、RangeLPSテーブル中へのグループ化インデックスとしての使用のために、より低い整数に丸められる。除算は、RangeLPSテーブルが所与の実装のためにより小さいことが望まれる場合、又は状態の数がより大きい(例えば、256個の確率状態の)場合、より大きい数によるものであってもよい。このコンテキストでは、各グループ化インデックスは2つの確率状態を表す。本開示の他の例では、グループ化インデックスは、2つ以上の確率状態を表し得る。
【0154】
最適エントロピーの観点から、除算又は右ビットシフト演算を使うことによる、RangeLPSテーブルのための状態のグループ化は、有益であり得るが、常に最適な技法であるとは限らない場合がある。最適なグループ化は、特に、状態の数及びパラメータαを含む、いくつかの要因に依存し得る。最も望ましい(及び、おそらく最適な)グループ化は、ビットシフト演算のような簡単な演算ではない可能性がある。概して、グループ化は、確率状態の総数から始まって、低減された数の確率状態(すなわち、グループ化状態)までのテーブルを用いて記述され得る。別の例では、本開示は、この種類のテーブルを使うことを提案する。この手法は、追加のメモリという犠牲を払って、(除算又は右シフトと比較して)性能を高めることになる。したがって、この例は、メモリと性能との間のトレードオフであり、線形マッピング例(すなわち、除算又は右シフト)よりも、より優れた性能を優先する。
【0155】
したがって、RangeLPSテーブル中のエントリへの、確率状態の線形マッピングが使われ得るが、非線形マッピングを提供することが望ましい場合がある。例えば、確率状態は、対数マッピングに従ってマッピングされてもよい。対数マッピングは、いくつかの例では、区分的線形マッピング技法を使用して達成され得る。概して、そのようなマッピングは、あらかじめ計算されたマッピングテーブルなどのテーブルを使用して定義され得る。
【0156】
概して、本開示に記載される技法は、いくつかの例では、ビデオデータをエントロピーコーディングするプロセス又はデバイスによって実行され得る。本プロセスは、バイナリ算術コーディングプロセスにおいて、シンボルの確率状態であって、確率状態は、複数の確率状態のうちの1つであり得る、シンボルの確率状態を決定することと、決定された確率状態を示すインデックスを、複数のグループ化インデックスのうちの1つにマッピングすることであって、グループ化インデックスのうちの少なくとも1つは、複数の確率状態のうちの少なくとも2つを表し、グループ化インデックスの各々は、テーブル中の最も低い確率シンボルの範囲をポイントする、マッピングすることとを含み得る。
【0157】
いくつかの例では、確率状態の数は64より大きくてもよい。例えば、確率状態の数は128であってもよい。いくつかの例では、RangeLPSテーブルへの入力として使われるグループ化インデックスの数は64である。具体的には、確率状態の数は128であってもよく、RangeLPSテーブルへの入力として使われるグループ化インデックスの数は64であってもよい。シンボルは、グループ化インデックスに基づいて、例えば、確率状態インデックスに基づくテーブルに従って、又はインデックスに基づく数学的演算に従ってコーディングされ得る。決定された確率状態は、テーブルに従って、又は数学的演算に従って、複数のインデックスのうちの1つにマッピングする。マッピングは、線形又は非線形であってもよい。例えば、マッピングは、2で除算する演算に従って実行され得る。いくつかの例では、マッピングは対数マッピングであってもよい。いくつかの例では、区分的線形マッピングが、対数マッピングを定義するために使用されてもよい。いくつかの例では、LPSについての最大確率の値pは0.5未満であってもよい。
【0158】
本開示に記載される技法は、例えば、ビデオエンコーダ、ビデオデコーダ、又は複合ビデオエンコーダデコーダ(コーデック)内で実行され得る。具体的には、そのような技法は、ビデオエンコーダのエントロピー符号化ユニット及び/又はビデオデコーダのエントロピー復号ユニットにおいて実行され得る。本技法は、例えば、HEVC規格の態様によるビデオコーディングなどのビデオコーディングをサポートするように構成され得るCABACプロセス内で実行され得る。エントロピー符号化及び復号ユニットは、例えば、残差ビデオデータに関連付けられた量子化された変換係数、動きベクトル情報、シンタックス要素、並びにビデオ符号化及び/又はビデオ復号プロセスにおいて有用であり得る他のタイプの情報など、様々なビデオデータのいずれかを符号化又は復号するために、相反する又は逆の様式でコーディングプロセスを適用し得る。
【0159】
図10は、図4のエントロピー符号化ユニット220の例示的な実装形態のブロック図である。エントロピー符号化ユニット220は、本開示の技法に従ってCABACを実行するように構成され得る。シンタックス要素418が、エントロピー符号化ユニット220へと入力される。シンタックス要素が、すでにバイナリ値のシンタックス要素(すなわち、0及び1の値のみを有するシンタックス要素)である場合、バイナリ化のステップはスキップされてもよい。シンタックス要素が非バイナリ値のシンタックス要素(例えば、変換係数レベルなどの、複数のビットによって表されるシンタックス要素)である場合、非バイナリ値のシンタックス要素はバイナライザ420によってバイナリ化される。バイナライザ420は、非バイナリ値のシンタックス要素の、バイナリ決定のシーケンスへのマッピングを実行する。これらのバイナリ決定はしばしば、「ビン」と呼ばれる。例えば、変換係数レベルに対して、レベルの値を連続するビンに分解することができ、各ビンは、係数レベルの絶対値が何らかの値より大きいか否かを示す。例えば、ビン0(有意性フラグと呼ばれることがある)は、変換係数レベルの絶対値が0より大きいか否かを示す。ビン1は、変換係数レベルの絶対値が1より大きいか否かを示し、以下同様である。各非バイナリ値のシンタックス要素のために、固有のマッピングが開発されてもよい。
【0160】
バイナライザ420によって生成された各ビンは、エントロピー符号化ユニット56のバイナリ算術コーディング側に供給される。すなわち、非バイナリ値のシンタックス要素の所定のセットに対して、各ビンタイプ(例えば、ビン0)は、次のビンタイプ(例えば、ビン1)の前にコーディングされる。コーディングは、普通モード又はバイパスモードのいずれかで実行され得る。バイパスモードでは、バイパスコーディングエンジン426は、固定確率モデルを使用して、例えば、ゴロムライスコーディング又は指数ゴロムコーディングを使用して、算術コーディングを実行する。バイパスモードは一般に、より予測可能なシンタックス要素のために使用される。
【0161】
普通モードでのコーディングは、CABACを実行することを伴う。普通モードCABACは、前にコーディングされたビンの値を与えられるとビンの値の確率が予測可能である場合のビン値をコーディングするためである。ビンがLPSである確率は、コンテキストモデラ422によって決定される。コンテキストモデラ422は、ビン値及びコンテキストモデル(例えば、確率状態σ)を出力する。コンテキストモデルは、一連のビンのための初期コンテキストモデルであってもよく、又は、前にコーディングされたビンのコーディングされた値に基づいて決定されてもよい。上記で説明されたように、コンテキストモデラは、前にコーディングされたビンがMPSであったかLPSであったかに基づいて、状態を更新することができる。
【0162】
コンテキストモデル及び確率状態σがコンテキストモデラ422によって決定された後、普通コーディングエンジン424は、ビン値に対してBACを実行する。本開示の技法によれば、普通コーディングエンジン424は、64個より多い確率状態σを含むTransIdxLPSテーブル430を使用してBACを実行する。一例では、確率状態の数は428である。TransIdxLPSは、前のビン(ビンn)がLPSであるとき、どの確率状態が次のビン(ビンn+1)に使用されるかを決定するために使用される。普通コーディングエンジン424はまた、特定の確率状態σを与えられると、LPSに対する範囲値を決定するために、RangeLPSテーブル428を使用し得る。しかしながら、本開示の技法によれば、TransIdxLPSテーブル430の全ての可能な確率状態σを使用するのではなく、確率状態インデックスσは、RangeLPSテーブルにおける使用のためにグループ化インデックスにマッピングされる。すなわち、RangeLPSテーブル428への各インデックスは、確率状態の総数のうちの2つ以上を表し得る。確率状態インデックスσの、グループ化インデックスへのマッピングは、線形(例えば、2で除算することによる)であってもよく、又は非線形(例えば、対数関数若しくはマッピングテーブル)であってもよい。
【0163】
本開示の他の例では、連続する確率状態の間の差は、パラメータαを、0.9493より大きくなるように設定することによって、より小さくすることができる。一例では、α=0.9689である。本開示の別の例では、LPSが起こる最も高い確率(p)は、0.5より低くなるように設定され得る。一例では、pは0.493に等しくなり得る。
【0164】
本開示の1つ又は複数の技法によれば、バイナリ算術コーディングプロセスにおいて確率状態を更新するのに使用される変数(例えば、ウィンドウサイズ、スケーリング因子(α)、及び確率更新速度のうちの1つ又は複数)の同じ値を使用するのとは反対に、エントロピー符号化ユニット56は、異なるコンテキストモデル及び/又は異なるシンタックス要素に対して、変数の異なる値を使用し得る。例えば、エントロピー符号化ユニット56は、複数のコンテキストモデルのうちの1つのコンテキストモデルについて、バイナリ算術コーディングプロセスにおいて確率状態を更新するのに使われる変数の値を決定し、決定された値に基づいて確率状態を更新することができる。
【0165】
図11は、本開示の技法による、CABACを実行するように構成され得る例示的なエントロピー復号ユニット302のブロック図である。図11のエントロピー復号ユニット302は、図4で説明されたエントロピー符号化ユニット220の方式とは逆の方式で、CABACを実行する。ビットストリーム518からのコーディングされたビットが、エントロピー復号ユニット302へと入力される。コーディングされたビットは、コーディングされたビットが、バイパスモードを使用してエントロピーコーディングされたか、又は普通モードを使用してエントロピーコーディングされたかに基づいて、コンテキストモデラ520又はバイパス復号エンジン522のいずれかに供給される。コーディングされたビットがバイパスモードでコーディングされた場合、バイパス復号エンジン522は、例えば、バイナリ値のシンタックス要素又は非バイナリシンタックス要素のビンを取り出すために、ゴロムライス復号又は指数ゴロム復号を使用し得る。
【0166】
コーディングされたビットが普通モードでコーディングされた場合、コンテキストモデラ520は、コーディングされたビットに対する確率モデルを決定してもよく、普通復号エンジン524は、非バイナリ値のシンタックス要素のビン(又は、バイナリ値である場合はシンタックス要素自体)を生成するように、コーディングされたビットを復号してもよい。コンテキストモデル及び確率状態σがコンテキストモデラ520によって決定された後、普通復号エンジン524は、ビン値に対してBACを実行する。本開示の技法によれば、普通復号エンジン524は、64個より多い確率状態σを含むTransIdxLPSテーブル528を使用してBACを実行する。一例では、確率状態の数は128であるが、本開示の技法と整合する他の数の確率状態が定義されてもよい。TransIdxLPSテーブル528は、前のビン(ビンn)がLPSであるとき、どの確率状態が次のビン(ビンn+1)に使用されるかを決定するために使用される。普通復号エンジン524はまた、特定の確率状態σを与えられると、LPSに対する範囲値を決定するために、RangeLPSテーブル526を使用し得る。しかしながら、本開示の技法によれば、TransIdxLPSテーブル528の全ての可能な確率状態σを使用するのではなく、確率状態インデックスσは、RangeLPSテーブル526における使用のためにグループ化インデックスにマッピングされる。すなわち、RangeLPSテーブル526への各インデックスは、確率状態の総数のうちの2つ以上を表し得る。確率状態インデックスσの、グループ化インデックスへのマッピングは、線形(例えば、2で除算することによる)であってもよく、又は非線形(例えば、対数関数若しくはマッピングテーブル)であってもよい。
【0167】
本開示の他の例では、連続する確率状態の間の差は、パラメータαを、0.9493より大きくなるように設定することによって、より小さくすることができる。一例では、α=0.9689である。本開示の別の例では、LPSが起こる最も高い確率(p)は、0.5より低くなるように設定され得る。一例では、pは0.493に等しくなり得る。
【0168】
ビンが普通復号エンジン524によって復号された後、逆バイナライザ530が、ビンを非バイナリ値のシンタックス要素の値へ戻すように変換するために、逆方向マッピングを実行し得る。
【0169】
図12は、ビデオデータのビットストリームを復号する例示的なプロセスを示すフローチャートである。ビデオデコーダ300(図1及び図5)に関して説明されるが、他のデバイスが図12のプロセスと類似のプロセスを実行するように構成され得ることを理解されたい。
【0170】
ビデオデコーダ300は、コンテキストモデルに従ってビン値を受信するように構成され得る(600)。コンテキストモデルは、1つ又は複数の確率状態を含み、ビン値は、ビデオデータの1つ又は複数のシンタックス要素に対応する。
【0171】
ビデオデコーダ300は、受信されたビン値に基づいて第1のシフト値を決定する(602)。ビデオデコーダ300は、受信されたビン値に基づいて第2のシフト値を決定する(604)。受信されたビン値に基づいて第1のシフト値を決定するために、ビデオデコーダ300は、コンテキストモデルの識別子及び受信された最後のM個のビン値に基づいてルックアップテーブル中のエントリを識別するように構成されてもよく、Mは、1より大きい整数値であり、ビデオデコーダ300は、エントリに基づいて第1のシフト値を決定し得る。ビデオデコーダ300はまた、エントリに基づいて第2のシフト値を決定し得る。エントリは、例えば、8ビット値であってもよく、8ビット値の最初の4ビットは第1のシフト値を識別し、8ビット値の最後の4ビットは第2のシフト値を識別する。第1のシフト値は、第2のシフト値より高いレートで更新され得る。すなわち、第1のシフト値は、第2のシフト値より速く更新し得る。
【0172】
ビデオデコーダ300は、第1のシフト値に基づいて第1の状態変数を更新する(606)。ビデオデコーダ300は、第2のシフト値に基づいて第2の状態変数を更新する(608)。第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定するために、ビデオデコーダ300は、第1の状態変数及び第2の状態変数の加重平均に基づいて確率状態を決定するように構成され得る。ビデオデコーダ300は、コンテキストモデルに基づいて、第1の状態変数及び第2の状態変数の加重平均を計算するための重みを決定し得る。上記で説明されたように、重みは、第1の重み及び第2の重みを含むことができ、第1の重みと第2の重みとの和は、1に等しい。ビデオデコーダ300は、コンテキストモデルの識別子に基づいて重みの値を決定するように構成され得る。
【0173】
ビデオデコーダ300は、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定する(610)。ビデオデコーダ300は、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号する(612)。
【0174】
ビデオデコーダ300は、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定する(614)。ビデオデコーダ300は、ビデオデータのブロックを復号するためにシンタックス要素を使用してもよく、ビデオデータのブロックは、復号ピクチャの一部として出力されてもよい。本開示の技法は、いかなる特定のタイプのシンタックス要素にも限定されないが、変換係数をコーディングするために使用されるシンタックス要素など、頻繁に発生するシンタックス要素にとって特に有益であり得る。
【0175】
以下の番号付き条項は、本開示で説明されるデバイス及び技法の1つ又は複数の態様を例示する。
【0176】
条項1A:データをコーディングする方法であって、本方法は、本開示で説明される任意の技法に従ってシンボルが特定の値を有する確率を計算することと、シンボルが特定の値を有する確率に従ってシンボルをバイナリ算術コーディングすることとを含む、方法。
【0177】
条項2A:コーディングすることが復号することを含む、条項1Aの方法。
【0178】
条項3A:コーディングすることが符号化することを含む、条項1Aの方法。
【0179】
条項4A:ビデオデータをコーディングするデバイスであって、デバイスが、条項1A~3Aのいずれかの方法を実行する1つ又は複数の手段を備える、デバイス。
【0180】
条項5A:1つ又は複数の手段が、回路に実装された1つ又は複数のプロセッサを備える、条項4Aのデバイス。
【0181】
条項6A:ビデオデータを記憶するメモリを更に備える、条項4A及び5Aのいずれかのデバイス。
【0182】
条項7A:復号されたビデオデータを表示するように構成されたディスプレイを更に備える、条項4A~6Aのいずれかのデバイス。
【0183】
条項8A:デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ又は複数を備える、条項4A~7Aのいずれかのデバイス。
【0184】
条項9A:デバイスがビデオデコーダを備える、条項4A~8Aのいずれかのデバイス。
【0185】
条項10A:デバイスがビデオエンコーダを備える、条項4A~9Aのいずれかのデバイス。
【0186】
条項11A:実行されたとき、条項1A~3Aのいずれかの方法を1つ又は複数のプロセッサに実行させる命令をその上に記憶した、コンピュータ可読記憶媒体。
【0187】
条項12A:ビデオデータを符号化するデバイスであって、デバイスは、本開示で説明される任意の技法に従ってシンボルが特定の値を有する確率を計算する手段と、シンボルが特定の値を有する確率に従ってシンボルをバイナリ算術コーディングする手段とを備える、デバイス。
【0188】
条項1B:ビデオデータを復号する方法であって、本方法は、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信することと、受信されたビン値に基づいて第1のシフト値を決定することと、受信されたビン値に基づいて第2のシフト値を決定することと、第1のシフト値に基づいて第1の状態変数を更新することと、第2のシフト値に基づいて第2の状態変数を更新することと、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定することと、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号することと、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定することと、を含む、方法。
【0189】
条項2B:第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定することが、第1の状態変数及び第2の状態変数の加重平均に基づいて確率状態を決定することを含む、条項1Bの方法。
【0190】
条項3B:コンテキストモデルに基づいて、第1の状態変数及び第2の状態変数の加重平均を計算するための重みを決定すること、を更に含む、条項2Bの方法。
【0191】
条項4B:重みが、第1の重み及び第2の重みを含み、第1の重みと第2の重みとの和が、1に等しい、条項3Bの方法。
【0192】
条項5B:コンテキストモデルの識別子に基づいて重みの値を決定すること、を更に含む、条項3B又は4Bの方法。
【0193】
条項6B:受信されたビン値に基づいて第1のシフト値を決定することは、コンテキストモデルの識別子及び受信された最後のM個のビン値に基づいてルックアップテーブル中のエントリを識別することであって、Mが、1より大きい整数値である、識別することと、エントリに基づいて第1のシフト値を決定することと、を含む、条項1B~5Bのいずれかの方法。
【0194】
条項7B:エントリに基づいて第2のシフト値を決定すること、を更に含む、条項6Bの方法。
【0195】
条項8B:エントリが8Bビット値を含み、8Bビット値の最初の4ビットが第1のシフト値を識別し、8Bビット値の最後の4ビットが第2のシフト値を識別する、条項7Bの方法。
【0196】
条項9B:第1のシフト値が、第2のシフト値より高いレートで更新される、条項1B~8Bのいずれかの方法。
【0197】
条項10B:受信されたビン値が、コンテキストモデルによって復号された最後のM個のビンに対応し、Mが、0より大きい整数値である、条項1B~9Bのいずれかの方法。
【0198】
条項11B:Mが1に等しい、条項10Bの方法。
【0199】
条項12B:ビデオデータを復号するデバイスであって、デバイスが、ビデオデータを記憶するように構成されたメモリと、回路に実装された1つ又は複数のプロセッサと、を備え、1つ又は複数のプロセッサは、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信し、受信されたビン値に基づいて第1のシフト値を決定し、受信されたビン値に基づいて第2のシフト値を決定し、第1のシフト値に基づいて第1の状態変数を更新し、第2のシフト値に基づいて第2の状態変数を更新し、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定し、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号し、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定する、ように構成されている、デバイス。
【0200】
条項13B:第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定するために、1つ又は複数のプロセッサが、第1の状態変数及び第2の状態変数の加重平均に基づいて確率状態を決定するように更に構成されている、条項12Bのデバイス。
【0201】
条項14B:1つ又は複数のプロセッサが、コンテキストモデルに基づいて、第1の状態変数及び第2の状態変数の加重平均を計算するための重みを決定するように更に構成されている、条項13Bのデバイス。
【0202】
条項15B:重みが、第1の重み及び第2の重みを含み、第1の重みと第2の重みとの和が、1に等しい、条項14Bのデバイス。
【0203】
条項16B:1つ又は複数のプロセッサが、コンテキストモデルの識別子に基づいて重みの値を決定するように更に構成されている、条項14B又は15Bのデバイス。
【0204】
条項17B:受信されたビン値に基づいて第1のシフト値を決定するために、1つ又は複数のプロセッサは、コンテキストモデルの識別子及び受信された最後のM個のビン値に基づいてルックアップテーブル中のエントリを識別し、Mが、1より大きい整数値であり、エントリに基づいて第1のシフト値を決定する、ように更に構成されている、条項12B~16Bのいずれかのデバイス。
【0205】
条項18B:1つ又は複数のプロセッサが、エントリに基づいて第2のシフト値を決定するように更に構成されている、条項17Bのデバイス。
【0206】
条項19B:エントリが8Bビット値を含み、8Bビット値の最初の4ビットが第1のシフト値を識別し、8Bビット値の最後の4ビットが第2のシフト値を識別する、条項18Bのデバイス。
【0207】
条項20B:第1のシフト値が、第2のシフト値より高いレートで更新される、条項12B~19Bのいずれかのデバイス。
【0208】
条項21B:受信されたビン値が、コンテキストモデルによって復号された最後のM個のビンに対応し、Mが、0より大きい整数値である、条項12B~20Bのいずれかのデバイス。
【0209】
条項22B:Mが1に等しい、条項21Bのデバイス。
【0210】
条項23B:デバイスは符号化ビデオデータを受信するように構成された受信機を更に備えるワイヤレス通信デバイスを備える、条項12B~22Bのいずれかのデバイス。
【0211】
条項24B:ワイヤレス通信デバイスが電話ハンドセットを備え、受信機が、ワイヤレス通信規格に従って、符号化ビデオデータを含む信号を復調するように構成されている、条項23Bのデバイス。
【0212】
条項25B:復号されたビデオデータを表示するように構成されたディスプレイ、を更に備える、条項12B~24Bのいずれかのデバイス。
【0213】
条項26B:デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、又はセットトップボックスのうちの1つ又は複数を備える、条項12B~25Bのいずれかのデバイス。
【0214】
条項27B:ビデオデータを復号する装置であって、装置は、コンテキストモデルであって、コンテキストモデルが、1つ又は複数の確率状態を含み、ビン値が、ビデオデータの1つ又は複数のシンタックス要素に対応する、コンテキストモデルに従ってビン値を受信する手段と、受信されたビン値に基づいて第1のシフト値を決定する手段と、受信されたビン値に基づいて第2のシフト値を決定する手段と、第1のシフト値に基づいて第1の状態変数を更新する手段と、第2のシフト値に基づいて第2の状態変数を更新する手段と、復号されるべき次のビンについて、第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定する手段と、確率状態に基づいて、復号されるべき次のビンをコンテキスト復号する手段と、受信されたビン値及びコンテキスト復号された次のビン値に基づいて1つ又は複数のシンタックス要素の値を決定する手段と、を備える、装置。
【0215】
条項28B:第1の状態変数及び第2の状態変数に基づいてコンテキストモデルの確率状態を決定することが、第1の状態変数及び第2の状態変数の加重平均に基づいて確率状態を決定することを含む、条項27Bの装置。
【0216】
条項29B:コンテキストモデルに基づいて、第1の状態変数及び第2の状態変数の加重平均を計算するための重みを決定する手段、を更に備える、条項28Bの装置。
【0217】
条項30B:重みが、第1の重み及び第2の重みを含み、第1の重みと第2の重みとの和が、1に等しい、条項29Bの装置。
【0218】
例によっては、本明細書で説明された技法のうちのいずれかのいくつかの行為又はイベントは、異なる順序で実行されることが可能であり、追加、統合、又は完全に除外されてもよい(例えば、説明された全ての行為又はイベントが技法の実践に必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為又はイベントは、連続的にではなく、例えば、マルチスレッド処理、割込み処理、又は複数のプロセッサを通じて並行して実行されてもよい。
【0219】
1つ又は複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装されてもよい。ソフトウェアで実装される場合、機能は、1つ又は複数の命令又はコードとして、コンピュータ可読媒体上に記憶されてもよく、又はコンピュータ可読媒体を介して送信されてもよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、又は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、又は(2)信号若しくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法を実装するための命令、コード、及び/又はデータ構造を取り出すために、1つ又は複数のコンピュータ又は1つ又は複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であってもよい。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0220】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ、若しくは他の磁気ストレージデバイス、フラッシュメモリ、又は、命令若しくはデータ構造の形態の所望のプログラムコードを記憶するために使用でき、コンピュータによってアクセスできる任意の他の媒体を備えることができる。また、任意の接続がコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義の中に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的な媒体を含まず、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)及びディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)及びブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方で、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【0221】
命令は、1つ又は複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、又は他の等価な集積論理回路若しくはディスクリート論理回路など、1つ又は複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」及び「処理回路」という用語は、上記の構造、又は本明細書で説明された技法の実装に適した任意の他の構造のうちのいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明された機能は、符号化及び復号のために構成された専用ハードウェアモジュール及び/若しくはソフトウェアモジュール内で提供されてもよく、又は複合コーデックの中に組み込まれてもよい。また、技法は、1つ又は複数の回路又は論理要素において完全に実装されてもよい。
【0222】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、多種多様なデバイス又は装置に実装されてもよい。開示された技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、又はユニットについて本開示で説明したが、それらは必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられてもよく、又は好適なソフトウェア及び/若しくはファームウェアと連携して、上記で説明された1つ又は複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてもよい。
【0223】
様々な例について説明した。これら及び他の例は以下の特許請求の範囲内に入る。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10
図11
図12
【国際調査報告】