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

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

▶ グァンドン オッポ モバイル テレコミュニケーションズ コーポレーション リミテッドの特許一覧

特表2024-534816多用途ビデオコーディングのための操作範囲拡張
<>
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図1
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図2
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図3
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図4
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図5
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図6
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図7
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図8
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図9
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図10
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図11
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図12
  • 特表-多用途ビデオコーディングのための操作範囲拡張 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-26
(54)【発明の名称】多用途ビデオコーディングのための操作範囲拡張
(51)【国際特許分類】
   H04N 19/70 20140101AFI20240918BHJP
【FI】
H04N19/70
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024510524
(86)(22)【出願日】2022-08-26
(85)【翻訳文提出日】2024-02-20
(86)【国際出願番号】 US2022075507
(87)【国際公開番号】W WO2023028580
(87)【国際公開日】2023-03-02
(31)【優先権主張番号】63/260,600
(32)【優先日】2021-08-26
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/251,385
(32)【優先日】2021-10-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/262,078
(32)【優先日】2021-10-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VISUAL BASIC
2.JAVA
3.PYTHON
4.JAVASCRIPT
(71)【出願人】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【弁理士】
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【弁理士】
【氏名又は名称】出口 智也
(72)【発明者】
【氏名】ユイ、ユエ
(72)【発明者】
【氏名】ユイ、ハオピン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159KK14
5C159LC09
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
いくつかの実施形態において、ビデオデコーダーは、多用途ビデオコーディング(VVC)を利用してエンコードされたビデオビットストリームからビデオをデコードする。当該ビデオデコーダーは、値が0から8の範囲内にあるシーケンスパラメータセット(SPS)シンタックス要素sps_bitdepth_minus8に基づいて、当該ビデオのサンプルのビット深度を確定する。当該ビデオデコーダーはさらに、値が0から8の範囲内にあるビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、デコードピクチャバッファ(DPB)のサイズを確定する。当該ビデオデコーダーは、確定されたDPBのサイズを有する記憶スペースを割り当て、確定されたビット深度に基づいて、ビデオビットストリームを複数のピクチャにデコードし、デコードされた複数のピクチャをDPBに記憶する。当該ビデオデコーダーはさらに、デコードされた複数のピクチャを表示のために出力する。
【特許請求の範囲】
【請求項1】
多用途ビデオコーディング(VVC)を利用してエンコードされたビデオビットストリームからビデオをデコードするための方法であって、前記方法は、
シーケンスパラメータセット(SPS)シンタックス要素sps_bitdepth_minus8に基づいて、前記ビデオのサンプルのビット深度を確定することであって、前記SPSシンタックス要素sps_bitdepth_minus8の値が0から8の範囲内にある、確定することと、
ビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、デコードピクチャバッファ(DPB)のサイズを確定することであって、前記VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値が0から8の範囲内にある、確定することと、
確定された前記DPBの前記サイズを有する記憶スペースを割り当てることと、
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることと、
デコードされた前記複数のピクチャの1つ又は複数を前記DPBに記憶することと、
デコードされた前記複数のピクチャの前記1つ又は複数を表示のために出力することと、を含む、
ことを特徴とするVVCを利用してエンコードされたビデオビットストリームからビデオをデコードするための方法。
【請求項2】
前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオビットストリームの第1の部分を第1のピクチャセットにデコードすることと、
前記第1のピクチャセットを前記DPBに記憶することと、
前記DPBにおける前記第1のピクチャセットを参照ピクチャとして利用することにより、前記ビデオビットストリームの第2の部分を第2のピクチャセットにデコードすることと、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記方法は、
出力順序に従って、前記DPBにおけるデコードされた前記複数のピクチャの前記1つ又は複数を改めて並べることと、
前記出力順序に従って、デコードされた前記複数のピクチャの前記1つ又は複数を出力することと、をさらに含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記方法は、
デコードされた前記複数のピクチャの前記1つ又は複数を前記DPBに一定期間とどめておくことと、
前記一定期間経過後、デコードされた前記複数のピクチャの前記1つ又は複数を出力することと、をさらに含む、
ことを特徴とする請求項1に記載の方法。
【請求項5】
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションが、1つ又は複数のコーディングツリーユニット(CTU)行を形成する複数のCTUを含む、アクセスすることと、
前記パーティションにおける前記複数のCTUの各々に対して、
前記CTUをデコードする前に、並列コーディングが有効にされたこと、及び前記CTUが前記パーティションにおける前記1つ又は複数のCTU行のうちの現在のCTU行の1番目のCTUであることを確定することと、
前記並列コーディングが有効にされたこと、及び前記CTUが前記パーティションにおける前記現在のCTU行の前記1番目のCTUであることを確定することに応じて、
確定された前記ビット深度に基づいて、ライスパラメータを計算するための色成分の履歴カウンタを初期値に設定することと、
前記CTUをデコードすることであって、
前記履歴カウンタに基づいて、前記CTUにおける変換ユニット(TU)の前記ライスパラメータを計算することと、
計算された前記ライスパラメータに基づいて、前記CTUにおける前記TUに対応する前記バイナリ文字列を、前記TUの係数値にデコードすることと、
前記係数値から前記CTUにおける前記TUのピクセル値を確定することと、を含む、前記CTUをデコードすることと、
前記ビデオのデコードされたパーティションを出力することであって、デコードされた前記パーティションが、前記パーティションにおけるデコードされた前記複数のCTUを含む、出力することと、
を含む、
ことを特徴とする請求項1に記載の方法。
【請求項6】
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションが、1つ又は複数のCTU行を形成する複数のCTUを含む、アクセスすることと、
前記パーティションにおける前記複数のCTUの各々に対して、
前記CTUをデコードする前に、且つ、並列コーディングが有効にされたこと、及び前記CTUが現在のCTU行の1番目のCTUであることを確定することに応じて、前記現在のCTU行が前記パーティションにおける1番目のCTU行であるか否かを確定することと、
前記現在のCTU行が前記パーティションにおける前記1番目のCTU行であると確定することに応じて、確定された前記ビット深度に基づいて、ライスパラメータを計算するための色成分の履歴カウンタを初期値に設定することと、
前記現在のCTU行が前記パーティションにおける前記1番目のCTU行ではないと確定することに応じて、前記色成分の履歴カウンタを、履歴カウンタストレージ変数に記憶された値に設定することと、
前記CTUをデコードすることであって、
前記履歴カウンタの前記値に基づいて、前記CTUにおけるTUの前記ライスパラメータを計算することと、
計算された前記ライスパラメータに基づいて、前記CTUにおける前記TUに対応する前記バイナリ文字列を、前記TUの係数値にデコードすることと、
前記係数値から前記CTUにおける前記TUのピクセル値を確定することと、を含む、前記CTUをデコードすることと、
前記CTUをデコードした後、並列コーディングが有効にされたこと、及び前記CTUが前記現在のCTU行の前記1番目のCTUであることを確定することに応じて、前記履歴カウンタの現在の値を前記履歴カウンタストレージ変数に記憶することと、
を含む、
ことを特徴とする請求項1に記載の方法。
【請求項7】
非一時的なコンピュータ可読媒体であって、前記非一時的なコンピュータ可読媒体にプログラムコードが記憶されおり、
以下の操作を実行するように、前記プログラムコードは、1つ又は複数の処理デバイスによって実行可能であり、前記操作は、
ビデオのビデオビットストリームに含まれるビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、前記ビデオのデコードピクチャバッファ(DPB)のサイズを確定することであって、多用途ビデオコーディング(VVC)を利用して前記ビデオビットストリームがエンコードされ、前記VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値が0から8の範囲内にある、確定することと、
確定された前記DPBの前記サイズを有する記憶スペースを割り当てることと、
前記ビデオビットストリームを複数のピクチャにデコードすることと、
デコードされた前記複数のピクチャの1つ又は複数を前記DPBに記憶することと、
デコードされた前記複数のピクチャの前記1つ又は複数を表示のために出力することと、
を含む、
ことを特徴とする非一時的なコンピュータ可読媒体。
【請求項8】
前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオビットストリームの第1の部分を第1のピクチャセットにデコードすることと、
前記第1のピクチャセットを前記DPBに記憶することと、
前記DPBにおける前記第1のピクチャセットを参照ピクチャとして利用することにより、前記ビデオビットストリームの第2の部分を第2のピクチャセットにデコードすることと、を含む、
ことを特徴とする請求項7に記載の非一時的なコンピュータ可読媒体。
【請求項9】
前記操作は、
出力順序に従って、前記DPBにおけるデコードされた前記複数のピクチャの前記1つ又は複数を改めて並べることと、
前記出力順序に従って、デコードされた前記複数のピクチャの前記1つ又は複数を出力することと、をさらに含む、
ことを特徴とする請求項7に記載の非一時的なコンピュータ可読媒体。
【請求項10】
前記操作は、
デコードされた前記複数のピクチャの前記1つ又は複数を前記DPBに一定期間とどめておくことと、
前記一定期間経過後、デコードされた前記複数のピクチャの前記1つ又は複数を出力することと、をさらに含む、
ことを特徴とする請求項7に記載の非一時的なコンピュータ可読媒体。
【請求項11】
前記操作は、
シーケンスパラメータセット(SPS)シンタックス要素sps_bitdepth_minus8に基づいて、前記ビデオのサンプルのビット深度を確定することをさらに含み、前記SPSシンタックス要素sps_bitdepth_minus8の値が0から8の範囲内にあり、前記ビデオビットストリームを前記複数のピクチャにデコードすることは、確定された前記ビット深度に基づいて実行される、
ことを特徴とする請求項7に記載の非一時的なコンピュータ可読媒体。
【請求項12】
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションが、1つ又は複数のコーディングツリーユニット(CTU)行を形成する複数のCTUを含む、アクセスすることと、
前記パーティションにおける前記複数のCTUの各々に対して、
前記CTUをデコードする前に、並列コーディングが有効にされたこと、及び前記CTUが前記パーティションにおける前記1つ又は複数のCTU行のうちの現在のCTU行の1番目のCTUであることを確定することと、
前記並列コーディングが有効にされたこと、及び前記CTUが前記パーティションにおける前記現在のCTU行の前記1番目のCTUであることを確定することに応じて、
確定された前記ビット深度に基づいて、ライスパラメータを計算するための色成分の履歴カウンタを初期値に設定することと、
前記CTUをデコードすることであって、
前記履歴カウンタに基づいて、前記CTUにおける変換ユニット(TU)の前記ライスパラメータを計算することと、
計算された前記ライスパラメータに基づいて、前記CTUにおける前記TUに対応する前記バイナリ文字列を、前記TUの係数値にデコードすることと、
前記係数値から前記CTUにおける前記TUのピクセル値を確定することと、を含む、前記CTUをデコードすることと、
前記ビデオのデコードされたパーティションを出力することであって、デコードされた前記パーティションが、前記パーティションにおけるデコードされた前記複数のCTUを含む、出力することと、
を含む、
ことを特徴とする請求項11に記載の非一時的なコンピュータ可読媒体。
【請求項13】
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションが、1つ又は複数のCTU行を形成する複数のCTUを含む、アクセスすることと、
前記パーティションにおける前記複数のCTUの各々に対して、
前記CTUをデコードする前に、且つ、並列コーディングが有効にされたこと、及び前記CTUが現在のCTU行の1番目のCTUであることを確定することに応じて、前記現在のCTU行が前記パーティションにおける1番目のCTU行であるか否かを確定することと、
前記現在のCTU行が前記パーティションにおける前記1番目のCTU行であると確定することに応じて、確定された前記ビット深度に基づいて、ライスパラメータを計算するための色成分の履歴カウンタを初期値に設定することと、
前記現在のCTU行が前記パーティションにおける前記1番目のCTU行ではないと確定することに応じて、前記色成分の履歴カウンタを、履歴カウンタストレージ変数に記憶された値に設定することと、
前記CTUをデコードすることであって、
前記履歴カウンタの前記値に基づいて、前記CTUにおけるTUの前記ライスパラメータを計算することと、
計算された前記ライスパラメータに基づいて、前記CTUにおける前記TUに対応する前記バイナリ文字列を、前記TUの係数値にデコードすることと、
前記係数値から前記CTUにおける前記TUのピクセル値を確定することと、を含む、前記CTUをデコードすることと、
前記CTUをデコードした後、並列コーディングが有効にされたこと、及び前記CTUが前記現在のCTU行の前記1番目のCTUであることを確定することに応じて、前記履歴カウンタの現在の値を前記履歴カウンタストレージ変数に記憶することと、
を含む、
ことを特徴とする請求項11に記載の非一時的なコンピュータ可読媒体。
【請求項14】
システムであって、
処理デバイス及び非一時的なコンピュータ可読媒体を備え、
前記非一時的なコンピュータ可読媒体は前記処理デバイスに通信的に結合されており、前記処理デバイスは、前記非一時的なコンピュータ可読媒体に記憶されたプログラムコードを実行するように構成されており、それによって、以下の操作を実行し、前記操作は、
ビデオのビデオビットストリームに含まれるビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、前記ビデオのデコードピクチャバッファ(DPB)のサイズを確定することであって、多用途ビデオコーディング(VVC)を利用して前記ビデオビットストリームがエンコードされ、前記VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値が0から8の範囲内にある、確定することと、
確定された前記DPBの前記サイズを有する記憶スペースを割り当てることと、
前記ビデオビットストリームを複数のピクチャにデコードすることと、
デコードされた前記複数のピクチャの1つ又は複数を前記DPBに記憶することと、
デコードされた前記複数のピクチャの前記1つ又は複数を表示のために出力することと、
を含む、
ことを特徴とするシステム。
【請求項15】
前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオビットストリームの第1の部分を第1のピクチャセットにデコードすることと、
前記第1のピクチャセットを前記DPBに記憶することと、
前記DPBにおける前記第1のピクチャセットを参照ピクチャとして利用することにより、前記ビデオビットストリームの第2の部分を第2のピクチャセットにデコードすることと、を含む、
ことを特徴とする請求項14に記載のシステム。
【請求項16】
前記操作は、
出力順序に従って、前記DPBにおけるデコードされた前記複数のピクチャの前記1つ又は複数を改めて並べることと、
前記出力順序に従って、デコードされた前記複数のピクチャの前記1つ又は複数を出力することと、をさらに含む、
ことを特徴とする請求項14に記載のシステム。
【請求項17】
前記操作は、
デコードされた前記複数のピクチャの前記1つ又は複数を前記DPBに一定期間とどめておくことと、
前記一定期間経過後、デコードされた前記複数のピクチャの前記1つ又は複数を出力することと、をさらに含む、
ことを特徴とする請求項14に記載のシステム。
【請求項18】
前記操作は、
シーケンスパラメータセット(SPS)シンタックス要素sps_bitdepth_minus8に基づいて、前記ビデオのサンプルのビット深度を確定することをさらに含み、前記SPSシンタックス要素sps_bitdepth_minus8の値が0から8の範囲内にあり、前記ビデオビットストリームを前記複数のピクチャにデコードすることは、確定された前記ビット深度に基づいて実行される、
ことを特徴とする請求項14に記載のシステム。
【請求項19】
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションが、1つ又は複数のコーディングツリーユニット(CTU)行を形成する複数のCTUを含む、アクセスすることと、
前記パーティションにおける前記複数のCTUの各々に対して、
前記CTUをデコードする前に、並列コーディングが有効にされたこと、及び前記CTUが前記パーティションにおける前記1つ又は複数のCTU行のうちの現在のCTU行の1番目のCTUであることを確定することと、
前記並列コーディングが有効にされたこと、及び前記CTUが前記パーティションにおける前記現在のCTU行の前記1番目のCTUであることを確定することに応じて、
確定された前記ビット深度に基づいて、ライスパラメータを計算するための色成分の履歴カウンタを初期値に設定することと、
前記CTUをデコードすることであって、
前記履歴カウンタに基づいて、前記CTUにおける変換ユニット(TU)の前記ライスパラメータを計算することと、
計算された前記ライスパラメータに基づいて、前記CTUにおける前記TUに対応する前記バイナリ文字列を、前記TUの係数値にデコードすることと、
前記係数値から前記CTUにおける前記TUのピクセル値を確定することと、を含む、前記CTUをデコードすることと、
前記ビデオのデコードされたパーティションを出力することであって、デコードされた前記パーティションが、前記パーティションにおけるデコードされた前記複数のCTUを含む、出力することと、
を含む、
ことを特徴とする請求項18に記載のシステム。
【請求項20】
確定された前記ビット深度に基づいて、前記ビデオビットストリームを複数のピクチャにデコードすることは、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションが、1つ又は複数のCTU行を形成する複数のCTUを含む、アクセスすることと、
前記パーティションにおける前記複数のCTUの各々に対して、
前記CTUをデコードする前に、且つ、並列コーディングが有効にされたこと、及び前記CTUが現在のCTU行の1番目のCTUであることを確定することに応じて、前記現在のCTU行が前記パーティションにおける1番目のCTU行であるか否かを確定することと、
前記現在のCTU行が前記パーティションにおける前記1番目のCTU行であると確定することに応じて、確定された前記ビット深度に基づいて、ライスパラメータを計算するための色成分の履歴カウンタを初期値に設定することと、
前記現在のCTU行が前記パーティションにおける前記1番目のCTU行ではないと確定することに応じて、前記色成分の履歴カウンタを、履歴カウンタストレージ変数に記憶された値に設定することと、
前記CTUをデコードすることであって、
前記履歴カウンタの前記値に基づいて、前記CTUにおけるTUの前記ライスパラメータを計算することと、
計算された前記ライスパラメータに基づいて、前記CTUにおける前記TUに対応する前記バイナリ文字列を、前記TUの係数値にデコードすることと、
前記係数値から前記CTUにおける前記TUのピクセル値を確定することと、を含む、前記CTUをデコードすることと、
前記CTUをデコードした後、並列コーディングが有効にされたこと、及び前記CTUが前記現在のCTU行の前記1番目のCTUであることを確定することに応じて、前記履歴カウンタの現在の値を前記履歴カウンタストレージ変数に記憶することと、
を含む、
ことを特徴とする請求項18に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、発明の名称が「ビデオコーディングにおけるウェーブフロント並列処理のための履歴ベースのライスパラメータ導出」である、2021年8月26日に出願された米国仮特許出願第63/260,600号の優先権と、発明の名称が「ビデオコーディングにおけるウェーブフロント並列処理のための履歴ベースのライスパラメータ導出」である、2021年10月04日に出願された米国仮特許出願第63/262,078号の優先権と、発明の名称が「VVC操作範囲拡張のためのビット深度範囲の表現」である、2021年10月01日に出願された米国仮特許出願第63/251,385号の優先権と、を主張し、それらのすべての内容が引用として本出願に組み込まれる。
【0002】
本開示は一般に、ビデオ処理のためのコンピュータ実装方法及びシステムに関する。具体的に、本開示は、多用途ビデオコーディングのための操作範囲拡張(operation range extension)に関する。
【背景技術】
【0003】
スマートフォン、タブレット端末、コンピュータなどのカメラ付きのデバイスの遍在により、ビデオやイメージのキャプチャーがかつてないほど簡単になった。しかし、短いビデオでもそのデータ量は相当なものになることができる。ビデオコーディング技術(ビデオのエンコーディング及びデコーディングを含む)によりビデオデータがより小さなサイズに圧縮され、それによって、様々なビデオが記憶され且つ伝送されることができるようになった。ビデオコーディングは、デジタルテレビ放送、インターネットやモバイルネットワークでのビデオ伝送、リアルタイムアプリケーション(例えば、ビデオチャット、ビデオ会議など)、デジタル多用途ディスク(digital versatile disc、DVD)やブルーレイ・ディスクなど、幅広い用途に使用されている。ビデオを記憶するための記憶スペース及び/又はビデオを伝送するためのネットワーク帯域幅の消費を低減するために、ビデオコーディング方案の効率を向上させることが望まれている。
【発明の概要】
【0004】
いくつかの実施形態は、ビデオコーディングにおけるウェーブフロント並列処理(wavefront parallel processing)のための履歴ベースのライスパラメータ導出(history-based Rice parameter derivation)に関する。一例では、多用途ビデオコーディング(VVC)を利用してエンコードされたビデオビットストリームからビデオをデコードするための方法は、以下の内容を含む。
シーケンスパラメータセット(SPS)シンタックス要素sps_bitdepth_minus8に基づいて、ビデオのサンプルのビット深度を確定する。SPSシンタックス要素sps_bitdepth_minus8の値が0から8の範囲内にある。
ビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、デコードピクチャバッファ(DPB)のサイズを確定する。VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値が0から8の範囲内にある。
確定されたDPBのサイズを有する記憶スペースを割り当てる。
確定されたビット深度に基づいて、ビデオビットストリームを複数のピクチャにデコードする。
デコードされた複数のピクチャの1つ又は複数をDPBに記憶する。
デコードされた複数のピクチャの1つ又は複数を表示のために出力する。
【0005】
別の例では、非一時的なコンピュータ可読媒体は、非一時的なコンピュータ可読媒体にプログラムコードが記憶されている。以下の操作を実行するように、プログラムコードは、1つ又は複数の処理デバイスによって実行可能である。上記操作は、
ビデオのビデオビットストリームに含まれるビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、ビデオのデコードピクチャバッファ(DPB)のサイズを確定することであって、多用途ビデオコーディング(VVC)を利用してビデオビットストリームがエンコードされ、VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値が0から8の範囲内にある、確定することと、
確定されたDPBのサイズを有する記憶スペースを割り当てることと、
ビデオビットストリームを複数のピクチャにデコードすることと、
デコードされた複数のピクチャの1つ又は複数をDPBに記憶することと、
デコードされた複数のピクチャの1つ又は複数を表示のために出力することと、を含む。
【0006】
別の例では、システムは、処理デバイス及び非一時的なコンピュータ可読媒体を備える。非一時的なコンピュータ可読媒体は処理デバイスに通信的に結合されている。処理デバイスは、非一時的なコンピュータ可読媒体に記憶されたプログラムコードを実行するように構成されており、それによって、以下の操作を実行する。上記操作は、
ビデオのビデオビットストリームに含まれるビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて、ビデオのデコードピクチャバッファ(DPB)のサイズを確定することであって、多用途ビデオコーディング(VVC)を利用してビデオビットストリームがエンコードされ、VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値が0から8の範囲内にある、確定することと、
確定されたDPBのサイズを有する記憶スペースを割り当てることと、
ビデオビットストリームを複数のピクチャにデコードすることと、
デコードされた複数のピクチャの1つ又は複数をDPBに記憶することと、
デコードされた複数のピクチャの1つ又は複数を表示のために出力することと、を含む。
【0007】
これらの例示的な実施形態は、本開示を限定又は定義するために記載されているのではなく、本開示の理解を助けるための例を提供するために記載されている。追加の実施形態は、明細書の詳細に記述され、さらなる説明が明細書に提供される。
【図面の簡単な説明】
【0008】
添付図面を参照しながら以下の詳細な説明を読むと、本開示の特徴、実施形態及び利点がよりよく理解される。
図1図1は、本明細書で説明される実施形態を実施するように構成されたビデオエンコーダーの一例を示すブロック図である。
図2図2は、本明細書で説明される実施形態を実施するように構成されたビデオデコーダーの一例を示すブロック図である。
図3図3は、本開示のいくつかの実施形態に係る、ビデオにおけるピクチャのコーディングツリーユニットの分割の一例を示す図である。
図4図4は、本開示のいくつかの実施形態に係る、コーディングツリーユニットのコーディングユニットの分割の一例を示す図である。
図5図5は、コーディングブロック、及びコーディングブロックの要素を処理するための予め確定された順序の例を示す図である。
図6図6は、変換ユニットの境界付近に位置する係数のローカルサム変数を算出するためのテンプレートパターンの一例を示す図である。
図7図7は、ウェーブフロント並列処理が有効にされたタイル(tile)の一例を示す図である。
図8図8は、本開示のいくつかの実施形態に係る、フレームと、当該フレームに含まれる、タイルと、履歴カウンタが計算されるコーディングツリーユニットとの一例を示す図である。
図9図9は、本開示のいくつかの実施形態に係る、ビデオのパーティションをエンコードするプロセスの一例を示す図である。
図10図10は、本開示のいくつかの実施形態に係る、ビデオのパーティションをデコードするプロセスの一例を示す図である。
図11図11は、本開示のいくつかの実施形態に係る、ビデオのパーティションをエンコードするプロセスの別の例を示す図である。
図12図12は、本開示のいくつかの実施形態に係る、ビデオのパーティションをデコードするプロセスの別の例を示す図である。
図13図13は、本開示のいくつかの実施形態を実施するために用いられることができるコンピューティングシステムの一例を示す図である。
【発明を実施するための形態】
【0009】
様々な実施形態は、ビデオコーディングにおけるウェーブフロント並列処理のための履歴ベースのライスパラメータ導出を提供する。上述したように、生成され、記憶され、伝送されるビデオデータがより多くなっている。ビデオコーディング技術の効率を向上させることが有益であり、それによって、デコードされたビデオの視覚的品質を損なうことなく、より少ないデータを利用してビデオを表現する。コーディング効率を向上させる1つの方法は、エントロピーコーディングによって、できるだけ少ないビットを利用して、処理されたビデオサンプルをバイナリビットストリームに圧縮することである。一方、ビデオには一般的に大量のデータが含まれるため、コーディング(エンコーディング及びデコーディング)中の処理時間を短縮することが有益である。そのために、並列処理がビデオのエンコーディング及びデコーディングに用いられることができる。
【0010】
エントロピーコーディングでは、ビデオサンプルがバイナリビン(binary bin)にバイナリ(2値化)され、コンテキスト適応型バイナリ算術コーディング(context-adaptive binary arithmetic coding、CABAC)などのコーディングアルゴリズムにより、ビンがさらにビットに圧縮されることができる。2値化には、多用途ビデオコーディング(Versatile Video Coding、VVC)規格で規定された、トランケートライス(truncated Rice、TR)と限定されたk次指数ゴロム(k-th order Exp-Golomb、EGk)2値化プロセスとの組み合わせに用いられるライスパラメータなどの、2値化パラメータの計算が必要である。コーディング効率を向上させるために、履歴ベースのライスパラメータ導出が利用される。当該履歴ベースのライスパラメータ導出では、パーティション(例えば、ピクチャ、スライス(slice)、タイル)の現在のコーディングツリーユニット(coding tree unit、CTU)における変換ユニット(transform unit、TU)のライスパラメータは、当該パーティションにおける現在のCTU及び前のCTUにおける前のTU内の係数に従って計算された履歴カウンタ(StatCoeffと表記され)に基づいて導出される。その後、履歴カウンタは、ライスパラメータを導出するために用いられる置換変数(HistValueと表記され)を導出するために用いられる。履歴カウンタは、TUを処理する際に更新されることができる。いくつかの例では、履歴カウンタが更新されても、TUの置換変数は同じままである。
【0011】
履歴カウンタを計算するためのパーティションにおける現在のCTUと前のCTUとの間の依存性は並列処理の利用と衝突し、並列処理の利用を制限し、又は、さらに妨げ、それは不安定又は非効率的なビデオコーディングにつながる。並列処理が有効にされてビデオ処理プロセスを速めることができるように、パーティションにおけるいくつかのCTU間の依存性を低減し又は除去することによって、又は、衝突が発生する前に衝突を検出して回避することによって、本明細書で説明される様々な実施形態は上記問題を解決する。いくつかの実施形態を紹介するために、以下の非限定的な例が提供される。
【0012】
一実施形態では、履歴カウンタを計算する際の、異なるCTU行のCTU間の依存性が除去されることにより、並列処理との依存性の衝突が解消される。例えば、パーティションの各CTU行に対して、履歴カウンタが再初期化されることができる。CTU行における1番目のCTUのライスパラメータが計算される前に、履歴カウンタが初期値に設定されることができる。後続の履歴カウンタは、同じCTU行における前のTUにおける履歴カウンタ値に基づいて計算されることができる。このようにして、履歴ベースのライスパラメータ導出におけるCTUの依存性は、同じCTU行内に限定され、異なるCTU行間の並列処理を妨げないと同時に、履歴ベースのライスパラメータ導出によって得られるコーディングゲインの恩恵を受ける。さらに、履歴ベースのライスパラメータ導出のプロセスが簡略化され、計算の複雑性が軽減される。
【0013】
別の実施形態では、履歴カウンタを計算する際のCTU間の依存性は、並列処理におけるCTU間の依存性にアライメントする。例えば、並列コーディングは、パーティションのCTU行の間で実施され得、2つの連続するCTU行の間にN-CTU遅延が存在し得る。即ち、本CTU行の処理は、前のCTU行におけるN個のCTUが処理された後に開始される。このシナリオでは、本CTU行の履歴カウンタは、前のCTU行における前のN個以下のCTUにおけるサンプルに基づいて計算されることができる。それは、記憶同期プロセスによって実現されることができる。CTU行の1番目のCTUにおける最後のTUが処理された後、履歴カウンタがストレージ変数に記憶されることができる。その後、後続のCTU行の1番目のCTUにおける1番目のTUを処理する前に、履歴カウンタとストレージ変数における記憶された値とを同期させることができる。
【0014】
いくつかの例では、代替の履歴ベースのライスパラメータ導出が利用される。このような代替の履歴ベースのライスパラメータ導出では、TUを処理する際に履歴カウンタStatCoeffが更新されると、置換変数HistValueが更新される。並列処理との依存性の衝突を回避するために、履歴カウンタを計算する際のCTU間の依存性も同様に、N個のCTU以下に制限されることができる。同様に、記憶同期プロセスが実現されることができる。CTU行の1番目のCTUにおける最後のTUが処理された後、履歴カウンタ及び置換変数はそれぞれストレージ変数に記憶されることができる。そして、後続のCTU行の1番目のCTUにおける1番目のTUを処理する前に、履歴カウンタと置換変数とを、対応するストレージ変数における記憶された値と同期させることができる。
【0015】
このようにして、履歴カウンタを計算する際の2つの連続するCTU行におけるCTU間の依存性は、並列コーディングを実行する際のCTU間の依存性以下に制限される(即ち、アライメントする)。その結果、履歴カウンタ計算は、並列処理を妨げないと同時に、履歴ベースのライスパラメータ導出によって得られるコーディングゲインの恩恵を受ける。
【0016】
又は、並列処理及び履歴ベースのライスパラメータ導出がビットストリームに共存することを防止する。例えば、ビデオコーダーは、並列処理が有効にされるか否かを確定することができる。並列処理が有効にされる場合、履歴ベースのライスパラメータ導出が無効にされ、そうではない場合、履歴ベースのライスパラメータ導出が有効にされる。同様に、ビデオコーダーは履歴ベースのライスパラメータ導出が有効にされると確定した場合、並列処理が無効にされ、その逆も同様である。
【0017】
上述のように確定されたライスパラメータを利用して、ビデオエンコーダーは、予測残差データ(例えば、残差の量子化された変換係数)をバイナリビンに2値化し、エントロピーコーディングアルゴリズムを利用して、ビデオビットストリームに含まれるように、さらにビンをビットに圧縮することができる。デコーダー側では、デコーダーは、ビットストリームをバイナリビンにデコードし、上述の任意の方法又は任意の方法の組み合わせを利用してライスパラメータを確定し、その後、バイナリビンから係数を確定することができる。係数がさらに逆量子化され(de-quantized)逆変換されて、表示のためにビデオブロックを再構成することができる。
【0018】
いくつかの実施形態では、ビデオのサンプルのビット深度(例えば、履歴カウンタStatCoeffの初期値を確定するために用いられるビット深度)は、シーケンスパラメータセット(Sequence Parameter Set、SPS)シンタックス要素sps_bitdepth_minus8に基づいて確定されることができる。SPSシンタックス要素sps_bitdepth_minus8の値は、0から8の範囲内にある。同様に、デコードされたピクチャを記憶するために用いられるデコードピクチャバッファ(decoded picture buffer、DPB)のサイズは、ビデオパラメータセット(Video Parameter Set、VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて確定されることができる。VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値は、0から8の範囲内にある。確定されたDPBのサイズに応じて、記憶スペースがDPBに割り当てられることができる。確定されたビット深度及びDPBは、ビデオビットストリームをピクチャにデコードするプロセスの全体に用いられる。
【0019】
本明細書で説明されるように、いくつかの実施形態は、履歴ベースのライスパラメータ導出と並列コーディングとを協調する(coordinate)ことによって、ビデオコーディングの効率及び計算効率を改善する。そうすることにより、履歴ベースのライスパラメータ導出と並列コーディングとの間の衝突を回避することができ、それによって、コーディングプロセスの安定性を向上させることができる。さらに、履歴ベースのライスパラメータ導出におけるCTU間の依存性を並列コーディングにおける依存性以下に制限することにより、コーディングプロセスの計算効率を犠牲にすることなく、履歴ベースのライスパラメータ導出によってコーディングゲインが得られることができる。本技術は、将来のビデオコーディング規格における効果的なコーディングツールとなり得る。
【0020】
ここで図面を参照すると、図1は、本明細書で説明される実施形態を実施するように構成されたビデオエンコーダー100の一例を示すブロック図である。図1に示される例では、ビデオエンコーダー100は、パーティションモジュール112と、変換モジュール114と、量子化モジュール115と、逆量子化モジュール118と、逆変換モジュール119と、インループフィルタモジュール120と、イントラ予測モジュール126と、インター予測モジュール124と、動き推定モジュール122と、デコードピクチャバッファ130と、エントロピーコーディングモジュール116とを含む。
【0021】
ビデオエンコーダー100への入力は、ピクチャ(フレーム又はイメージとも呼ばれる)のシーケンスを含む入力ビデオ102である。ブロックベースのビデオエンコーダーでは、各ピクチャに対して、ビデオエンコーダー100は、パーティションモジュール112を利用して、ピクチャをブロック104に分割し、各ブロックは複数のピクセルを含む。ブロックは、マクロブロック、コーディングツリーユニット、コーディングユニット、予測ユニット、及び/又は予測ブロックであってもよい。1つのピクチャは異なるサイズを有するブロックを含むことができ、ビデオの異なるピクチャのブロック分割も異なることができる。各ブロックは、イントラ予測、インター予測、又は、イントラとインターのハイブリッド予測(intra and inter hybrid prediction)など、異なる予測を利用してエンコードされることができる。
【0022】
通常、ビデオ信号の一番目のピクチャは、イントラ予測のみを利用してエンコードされるイントラ予測ピクチャである。イントラ予測モードでは、同じピクチャからのデータのみを利用して当該ピクチャのブロックが予測される。イントラ予測されたピクチャは、他のピクチャからの情報なしでデコードされることができる。イントラ予測を実行するために、図1に示されたビデオエンコーダー100は、イントラ予測モジュール126を利用することができる。イントラ予測モジュール126は、同じピクチャの隣接ブロックの再構成されたブロック136における再構成サンプルを利用して、イントラ予測ブロック(予測ブロック134)を生成するように構成されている。イントラ予測は、当該ブロックのために選択されたイントラ予測モードに基づいて実行される。次に、ビデオエンコーダー100は、ブロック104とイントラ予測ブロック134との間の差分を計算する。この差分は残差ブロック106と呼ばれる。
【0023】
ブロックから冗長性をさらに除去するために、変換モジュール114は、ブロックにおけるサンプルに変換を適用することで、残差ブロック106を変換ドメインに変換する。変換の例としては、離散コサイン変換(discrete cosine transform、DCT)又は離散サイン変換(discrete sine transform、DST)が含まれるが、それらに限定されない。変換された値は、変換ドメインにおける残差ブロックを表す変換係数と呼ばれることができる。いくつかの例では、残差ブロックは、変換モジュール114によって変換されることなく、直接に量子化されることができる。それは変換スキップモードと呼ばれる。
【0024】
ビデオエンコーダー100はさらに、量子化モジュール115を利用して変換係数を量子化し、それによって、量子化された係数を得ることができる。量子化は、サンプルを量子化ステップサイズで割り、それに続いて四捨五入する(rounding)ことを含み、一方、逆量子化は、量子化された値に量子化ステップサイズを乗算することを含む。このような量子化プロセスはスカラー量子化(scalar quantization)と呼ばれる。量子化は、(変換された又は変換されていない)ビデオサンプルのダイナミックレンジを減少させるために用いられ、それによって、より少ないビットを利用してビデオサンプルを表現する。
【0025】
ブロック内の係数/サンプルの量子化は独立して行われることができ、このような量子化方法は、H.264、高効率ビデオ符号化(high efficiency video coding、HEVC)などのいくつかの既存のビデオ圧縮規格に用いられる。N×Mのブロックに対して、係数量子化及びコーディングに用いられるために、特定のスキャン順序で、ブロックの2D(two-dimensional)係数を1D(one-dimensional)配列に変換することができる。ブロック内の係数の量子化は、スキャン順序情報を利用することができる。例えば、ブロックにおける所与の係数の量子化は、スキャン順序に沿った前の量子化された値の状態に依存することができる。コーディング効率をさらに向上させるために、複数の量子化器を利用することができる。どの量子化器が現在の係数の量子化に用いられるかは、エンコーディング/デコーディングスキャン順序における現在の係数の前の情報に依存する。このような量子化方式は、依存量子化(dependent quantization)と呼ばれる。
【0026】
量子化の度合いは、量子化ステップサイズを利用して調整されることができる。例えば、スカラー量子化に対して、より細かい量子化又はより粗い量子化を得るために、異なる量子化ステップサイズを適用することができる。比較的小さい量子化ステップサイズは比較的細かい量子化に対応し、比較的大きい量子化ステップサイズは比較的粗い量子化に対応する。量子化ステップサイズは、量子化パラメータ(quantization parameter、QP)によって指示されることができる。ビデオデコーダーが同じ量子化パラメータを用いてデコーディングできるように、ビデオのエンコードされたビットストリームに量子化パラメータが提供される。
【0027】
次に、量子化されたサンプルは、エントロピーコーディングモジュール116によってコードされて、ビデオ信号のサイズをさらに縮小する。エントロピーエンコーディングモジュール116は、エントロピーエンコーディングアルゴリズムを量子化されたサンプルに適用するように構成されている。いくつかの例では、量子化されたサンプルはバイナリビンに2値化され、バイナリビンはコーディングアルゴリズムによりさらにビットに圧縮される。2値化方法の例としては、トランケートライス(TR)及び限定されたk次指数ゴロム(EGk)2値化が含まれるが、それらに限定されない。コーディング効率を向上させるために、履歴ベースのライスパラメータ導出の方法が利用され、ここで、変換ユニット(TU)のために導出されたライスパラメータは、前のTUから得られ又は更新された変数に基づいている。エントロピーエンコーディングアルゴリズムの例としては、可変長コーディング(variable length coding、VLC)スキーム、コンテキスト適応型可変長コーディング(context adaptive VLC、CAVLC)スキーム、算術コーディングスキーム、2値化、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding、SBAC)、確率間隔区分エントロピー(probability interval partitioning entropy、PIPE)コーディング、又は他のエントロピーエンコーディング技術が含まれるが、それらに限定されない。エントロピーコードされたデータは、出力エンコードビデオ132のビットストリームに追加される。
【0028】
上述したように、隣接ブロックからの再構成されたブロック136は、ピクチャのブロックのイントラ予測に用いられる。ブロックの再構成されたブロック136を生成することは、当該ブロックの再構成された残差を計算することに係る。再構成された残差は、逆量子化及び逆変換をブロックの量子化された残差に適用することによって確定されることができる。逆量子化モジュール118は、逆量子化を量子化されたサンプルに適用して、逆量子化された係数を得るように構成されている。逆量子化モジュール118は、量子化モジュール115と同じ量子化ステップサイズを利用することにより、量子化モジュール115によって適用された量子化スキームの逆を適用する。逆変換モジュール119は、変換モジュール114によって適用された変換の逆変換(例えば、逆DCT又は逆DST)を、逆量子化されたサンプルに適用するように構成されている。逆変換モジュール119の出力は、ピクセルドメインにおけるブロックの再構成された残差である。再構成された残差がブロックの予測ブロック134に加算されて、ピクセルドメインにおける再構成されたブロック136を得ることができる。変換がスキップされたブロックに対して、逆変換モジュール119はそれらのブロックに適用されない。逆量子化されたサンプルは、それらのブロックの再構成された残差である。
【0029】
1番目のイントラ予測ピクチャに続く後続のピクチャにおけるブロックは、インター予測又はイントラ予測のいずれかを利用してコードされることができる。インター予測では、ピクチャにおけるブロックの予測は、1つ又は複数の前にエンコードされたビデオピクチャからの予測である。インター予測を実行するために、ビデオエンコーダー100はインター予測モジュール124を利用する。インター予測モジュール124は、動き推定モジュール122によって提供される動き推定に基づいて、ブロックの動き補償を実行するように構成されている。
【0030】
動き推定モジュール122は、現在のピクチャの現在のブロック104と動き推定に用いられるデコードされた参照ピクチャ108とを比較する。デコードされた参照ピクチャ108は、デコードピクチャバッファ130に記憶されている。動き推定モジュール122は、デコードされた参照ピクチャ108から、現在のブロックに最もマッチングする参照ブロックを選択する。動き推定モジュール122はさらに、参照ブロックの位置(例えば、x、y座標)と現在のブロックの位置との間のオフセットを特定する。当該オフセットは動きベクトル(motion vector、MV)と呼ばれ、インター予測モジュール124に提供される。いくつかの場合では、複数のデコードされた参照ピクチャ108において、複数の参照ブロックがブロックのために特定される。それによって、複数の動きベクトルが生成されて、インター予測モジュール124に提供される。
【0031】
インター予測モジュール124は、動きベクトル及び他のインター予測パラメータを利用して動き補償を実行して、現在のブロック(即ちインター予測ブロック134)の予測を生成する。例えば、動きベクトルに基づいて、インター予測モジュール124は、対応する参照ピクチャにおける動きベクトルによって指向される予測ブロックを位置付けることができる。複数の予測ブロックが存在する場合、現在のブロックの予測ブロック134を生成するために、これらの予測ブロックはいくつかのウェイト(weight)と組み合わせられる。
【0032】
インター予測されたブロックに対して、ビデオエンコーダー100は、ブロック104からインター予測ブロック134を減算して、残差ブロック106を生成することができる。残差ブロック106は、上述したイントラ予測ブロックの残差と同様の方法で、変換され、量子化され、且つエントロピーコードされることができる。同様に、インター予測されたブロックの再構成されたブロック136は、残差を逆量子化し、逆変換し、続いて対応する予測ブロック134と組み合わせることによって得られることができる。
【0033】
動き推定に用いられるデコードされたピクチャ108を得るために、再構成されたブロック136は、インループフィルタモジュール120によって処理される。インループフィルタモジュール120は、ピクセル遷移(pixel transition)を平滑化するように構成されており、それによって、ビデオ品質を向上させる。インループフィルタモジュール120は、デブロッキングフィルタ(de-blocking filter)、サンプル適応オフセット(sample adaptive offset、SAO)フィルタ、又は適応ループフィルタ(adaptive loop filter、ALF)などの1つ又は複数のインループフィルタを実現するように構成されることができる。
【0034】
図2は、本明細書で説明される実施形態を実施するように構成されたビデオデコーダー200の一例を示すブロック図である。ビデオデコーダー200は、ビットストリームにおけるエンコードされたビデオ202を処理し、デコードされたピクチャ208を生成する。図2に示された例では、ビデオデコーダー200は、エントロピーデコーディングモジュール216、逆量子化モジュール218、逆変換モジュール219、インループフィルタモジュール220、イントラ予測モジュール226、インター予測モジュール224、及びデコードピクチャバッファ230を含む。
【0035】
エントロピーデコーディングモジュール216は、エンコードされたビデオ202のエントロピーデコーディングを実行するように構成されている。エントロピーデコーディングモジュール216は、量子化された係数と、イントラ予測パラメータ及びインター予測パラメータを含むコーディングパラメータと、他の情報とをデコードする。いくつかの例では、エントロピーデコーディングモジュール216は、エンコードされたビデオ202のビットストリームをバイナリ表現にデコードし、そして、このバイナリ表現を係数の量子化レベルに変換する。次に、エントロピーデコードされた係数は、逆量子化モジュール218によって逆量子化され、続いて、逆変換モジュール219によってピクセルドメインに逆変換される。逆量子化モジュール218及び逆変換モジュール219はそれぞれ、先に図1について述べたように、逆量子化モジュール118及び逆変換モジュール119と同様に機能する。逆変換された残差ブロックが対応する予測ブロック234に加算されて、再構成されたブロック236を生成することができる。変換がスキップされたブロックに対して、逆変換モジュール219がこれらのブロックに適用されない。逆量子化モジュール118によって生成された、逆量子化されたサンプルは、再構成されたブロック236を生成するために用いられる。
【0036】
特定のブロックの予測ブロック234は、当該ブロックの予測モードに基づいて生成される。ブロックのコーディングパラメータは当該ブロックがイントラ予測されることを指示する場合、同じピクチャにおける参照ブロックの再構成されたブロック236がイントラ予測モジュール226にフィードされ、それによって、当該ブロックの予測ブロック234を生成することができる。ブロックのコーディングパラメータは当該ブロックがインター予測されることを指示する場合、予測ブロック234はインター予測モジュール224によって生成される。イントラ予測モジュール226及びインター予測モジュール224は、それぞれ図1のイントラ予測モジュール126及びインター予測モジュール124と同様に機能する。
【0037】
先に図1について述べたように、インター予測は1つ又は複数の参照ピクチャに係る。ビデオデコーダー200は、インループフィルタモジュール220を参照ピクチャの再構成されたブロックに適用することによって、参照ピクチャのデコードされたピクチャ208を生成する。デコードされたピクチャ208は、インター予測モジュール224によって利用されるために、且つ出力のために、デコードピクチャバッファ230に記憶される。
【0038】
ここで図3を参照すると、図3は、本開示のいくつかの実施形態に係る、ビデオにおけるピクチャのコーディングツリーユニットの分割の一例を示す図である。先に図1及び図2について述べたように、ビデオのピクチャをエンコードするために、ピクチャは、例えば、図3に示されたようなVVCにおけるCTU302のようなブロックに分割される。例えば、CTU302は、128×128ピクセルのブロックであることができる。CTUは、図3に示されたような順序などの順序に従って処理される。いくつかの例では、ピクチャにおける各CTU302は、図4に示されるような1つ又は複数のCU402に分割されることができ、CU402は、予測及び変換のための予測ユニット又は変換ユニット(TU)にさらに分割されることができる。コーディングスキームに応じて、CTU302のCU402への分割は異なり得る。例えば、VVCでは、CU402は長方形又は正方形であり得、予測ユニット又は変換ユニットにさらに分割されることなくコードされ得る。各CU402は、そのルートCTU302と同様に大きいか、又は4×4ブロックと同様に小さい、ルートCTU302の細分であることができる。図4に示されるように、VVCにおけるCTU302のCU402への分割は、4分木分割、2分木分割又は3分木分割であり得る。図4において、実線は4分木分割を示し、破線は2分木分割又は3分木分割を示す。
【0039】
先に図1及び図2について述べたように、量子化は、ビデオ信号におけるブロックの要素のダイナミックレンジを減少させるために用いられ、それによって、より少ないビットを利用してビデオ信号を表現する。いくつかの例では、量子化の前に、ブロックの特定の位置における要素は係数と呼ばれる。量子化後、係数の量子化された値は、量子化レベル又はレベルと呼ばれる。量子化は通常、量子化ステップサイズで割り、それに続いて四捨五入する(rounding)ことを含み、逆量子化は量子化ステップサイズを乗算することを含む。このような量子化プロセスはスカラー量子化とも呼ばれる。ブロック内の係数の量子化は独立して行われることができ、このような独立した量子化方法は、H.264、HEVCなどのいくつかの既存のビデオ圧縮規格に用いられる。他の例では、依存量子化がVVCなどに用いられる。
【0040】
N×Mのブロックに対して、係数量子化及びコーディングに用いられるために、特定のスキャン順序でブロックの2D係数を1D配列に変換することができる。同じスキャン順序はエンコーディング及びデコーディングの両方に用いられる。図5は、コーディングブロック(例えばTU)、及びコーディングブロックの係数を処理するための予め確定された順序の例を示す図である。この例では、コーディングブロック500は8×8のサイズを有し、処理は、右下隅の位置Lから始まり、左上隅の位置L63で終了する。ブロック500が変換されたブロックである場合、図5に示された予め確定された順序は、最も高い周波数から最も低い周波数までである。いくつかの例では、量子化及び2値化などのブロックの処理は、予め確定されたスキャン順序に従って、ブロックの1番目の非ゼロ要素から始まる。例えば、位置L-L17にある係数がすべてゼロであり且つL18にある係数が非ゼロである場合、処理はL18にある係数から始まり、スキャン順序に従ってL18の後にある各係数に対して処理が実行される。
【0041】
残差コーディング
【0042】
残差コーディングは、ビデオコーディングにおいて量子化レベルをビットストリームに変換するために用いられる。量子化後、N×M変換ユニット(TU)コーディングブロックはN×M個の量子化レベルを有する。これらのN×M個のレベルはゼロ又は非ゼロ値である。レベルがバイナリではない場合、非ゼロレベルはさらにバイナリビンに2値化される。CABACにより、ビンをビットにさらに圧縮することができる。また、コンテキストモデリングベースのコーディング方法が2種類ある。特に、1つの方法では、隣接コード情報(neighboring coded information)に基づいてコンテクストモデルを適応的に更新する。このような方法はコンテキストコード法(context coded method)と呼ばれ、この方法でコードされたビンはコンテキストコードビン(context coded bin)と呼ばれる。これに対して、もう1つの方法では、1か0の確率が常に50%であると仮定し、そのため、適応なしの固定のコンテキストモデリングを常に利用する。このような方法はバイパス法(bypass method)と呼ばれ、この方法でコードされたビンはバイパスビンと呼ばれる。
【0043】
VVCにおけるレギュラー残差コーディング(regular residual coding、RRC)ブロックでは、最後の非ゼロレベルの位置は、コーディングスキャン順序に沿った最後の非ゼロレベルの位置として定義される。最後の非ゼロレベルの2D座標(last_sig_coeff_x及びlast_sig_coeff_y)の表現は、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffixという4つのプレフィックス及びサフィックスのシンタックス要素を含む。シンタックス要素last_sig_coeff_x_prefix及びlast_sig_coeff_y_prefixは、まずコンテキストコード法でコードされる。last_sig_coeff_x_suffix及びlast_sig_coeff_y_suffixが存在する場合、それらはバイパス法でコードされる。RRCブロックは複数の予め定義されたサブブロックからなることができる。シンタックス要素sb_coded_flagは、現在のサブブロックのレベルがすべて0に等しいか否かを指示するために用いられる。sb_coded_flagが1に等しい場合、現在のサブブロックに少なくとも1つの非ゼロ係数がある。sb_coded_flagが0に等しい場合、現在のサブブロックにおけるすべての係数は0となる。しかしながら、最後の非ゼロレベルを有する最後の非ゼロサブブロックのsb_coded_flagは、ビットストリームにコードされることなく、コーディングスキャン順序に従って、last_sig_coeff_x及びlast_sig_coeff_yから1として導出される。また、DC位置を含む左上のサブブロックのsb_coded_flagも、ビットストリームにコードされることなく1として導出される。ビットストリームにおけるシンタックス要素sb_coded_flagは、コンテキストコード法によりコードされる。RRCは、先に図5について述べたような逆コーディングスキャン順序で、最後の非ゼロサブブロックからサブブロックごとにコードする。
【0044】
最悪の場合のスループットを確保するために、予め定義された値remBinsPass1はコンテキストコードビンの最大数を制限するために用いられる。サブブロック内では、RRCは逆コーディングスキャン順序で各位置のレベルをコードする。remBinsPass1が4より大きい場合、現在のレベルをコードする際、sig_coeff_flagと呼ばれるフラグがまずビットストリームにコードされて、当該レベルがゼロであるか又は非ゼロであるかを指示する。当該レベルが非ゼロである場合、abs_level_gtx_flag[n][0](nは、サブブロック内の現在位置のスキャン順序に沿ったインデックスである)は、絶対レベルが1であるか又は1より大きいかを指示する。絶対レベルが1より大きい場合、par_level_flagがコードされて、当該レベルがVVCにおいて奇数であるか又は偶数であるかを指示し、次にabs_level_gtx_flag[n][1]が存在する。par_level_flag及びabs_level_gtx_flag[n][1]のフラグは共に、レベルが2、又は3以上であるかを指示するために用いられる。上記各シンタックス要素をコンテキストコードビンとしてコードした後、remBinsPass1の値は1を引く。
【0045】
絶対レベルが3より大きいか、又はremBinsPass1の値が4以下である場合、コンテキストコード法によって前述のビンをコードした後、さらなる2つのシンタックス要素、abs_remainder及びdec_abs_levelは、残りのレベルのバイパスコードビンとしてコードされることができる。さらに、ブロック内の各レベルのサインも、量子化レベルを表すようにコードされて、バイパスコードビンとしてコードされる。
【0046】
別の残差コーディング方法では、abs_level_gtxX_flag及び残りのレベルを利用して、残差ブロックのレベルコーディングのシンタックス要素に対する条件付きの解析を可能にし、レベルの絶対値の対応する2値化を表1に示す。ここで、abs_level_gtxX_flagは、レベルの絶対値がXより大きいか否かを記述し、Xは、例えば、0、1、2、又はNなどの整数である。abs_level_gtxY_flagが0であり、Yが0からN-1の間の整数である場合、abs_level_gtx(Y+1)フラグが存在しない。abs_level_gtxY_flagが1である場合、abs_level_gtx(Y+1)フラグが存在する。さらに、abs_level_gtxN_flagが0である場合、残りのレベルが存在しない。abs_level_gtxN_flagが1である場合、残りのレベルが存在し、且つレベルから(N+1)を除去した後の値を表す。通常、abs_level_gtxX_flagはコンテキストコード法で、残りのレベルはバイパス法でそれぞれコードされる。
【0047】
【表1】
【0048】
変換スキップ残差コーディングモード(transform skip residual coding mode、TSRC)でコードされたブロックに対して、TSRCは、コーディングスキャン順序に沿って、左上のサブブロックからサブブロックごとにコードする。同様に、シンタックス要素sb_coded_flagは、現在のサブブロックの残差がすべて0に等しいか否かを指示するために用いられる。特定の条件が発生した場合、最後のサブブロック以外の、すべてのサブブロックのすべてのシンタックス要素sb_coded_flagは、ビットストリームにコードされる。最後のサブブロックの前のすべてのサブブロックのすべてのsb_coded_flagが1に等しくない場合、最後のサブブロックに対して、sb_coded_flagは1として導出され、且つこのフラグはビットストリームにコードされない。最悪の場合のスループットを確保するために、予め定義された値RemCcbsはコンテキストコードビンの最大数を制限するために用いられる。現在のサブブロックが非ゼロレベルを有する場合、TSRCはコーディングスキャン順序で各位置のレベルをコードする。RemCcbsが4より大きい場合、以下のシンタックス要素がコンテキストコード法でコードされる。各レベルに対して、まずsig_coeff_flagがビットストリームにコードされて、レベルがゼロであるか又は非ゼロであるかを指示する。レベルが非ゼロである場合、coeff_sign_flagはコードされて、レベルが正であるか又は負であるかを指示する。次に、abs_level_gtx_flag[n][0](nは、サブブロック内の現在位置のスキャン順序に沿ったインデックスである)がコードされて、現在位置の現在の絶対レベルが1より大きいか否かを指示する。abs_level_gtx_flag[n][0]が0ではない場合、par_level_flagがコードされる。上記各シンタックス要素をコンテキストコード法でコードした後、RemCcbsの値は1を引く。
【0049】
現在のサブブロック内のすべての位置の上記シンタックス要素をコードした後、RemCcbsが依然として4より大きい場合、最多として別の4つのabs_level_gtx_flag[n][j](nは、サブブロック内の現在位置のスキャン順序に沿ったインデックスであり、jは1から4までであり)がコンテキストコード法でコードされる。各abs_level_gtx_flag[n][j]がコードされた後、RemCcbsの値は1を引く。RemCcbsが4以下である場合、サブブロック内の現在位置に対して、シンタックス要素abs_remainderは、必要に応じてバイパス法でコードされる。絶対レベルが完全にabs_remainderシンタックス要素でバイパス法によってコードされる位置に対して、coeff_sign_flagsもバイパス法によってコードされる。要約すると、コンテキストコードビンの総数を制限し、且つ最悪の場合のスループットを確保するために、RRCに予め定義されたカウンタremBinsPass1が存在し、又はTSRCにRemCcbsが存在する。
【0050】
ライスパラメータ導出
【0051】
VVCにおける現在のRRC設計では、バイパスビンとしてコードされたabs_remainder及びdec_abs_levelという2つのシンタックス要素は、残りのレベルに用いられるように、ビットストリームに存在する可能性がある。abs_remainderとdec_abs_levelの両方は、VVC規格で規定されたトランケートライス(TR)と限定されたk次指数ゴロム(EGk)2値化プロセスとの組み合わせによって2値化される。当該プロセスには、所与のレベルを2値化するために、ライスパラメータが必要となる。最適なライスパラメータを得るために、以下に説明されるようなローカルサム法(local sum method)が採用される。
【0052】
配列AbsLevel[xC][yC]は、色成分インデックスcIdxの現在の変換ブロックの変換係数レベルの絶対値の配列を表す。色成分インデックスcIdxを有する変換ブロックの配列AbsLevel[x][y]と左上のルーマ位置(x0,y0)とが与えられると、ローカルサム変数locSumAbsは、以下の擬似コードプロセス(pseudo-code process)で規定されるように導出される。
ここで、log2TbWidthは、変換ブロックの幅の2を底とする対数であり、log2TbHeightは、変換ブロックの高さの2を底とする対数である。abs_remainderに対して、変数baseLevelは4であり、dec_abs_levelに対して、変数baseLevelは0である。ローカルサム変数locSumAbsが与えられると、ライスパラメータcRiceParamは表2に規定されたように導出される。
【0053】
【表2】
【0054】
履歴ベースのライスパラメータ導出
【0055】
係数がTUの境界に位置する場合、又は、まずRice法でデコードされる場合、ライスパラメータ導出に対して採用されたテンプレート計算は、不正確な係数の推定を生成する可能性がある。これらの係数に対して、一部のテンプレート位置がTUの外側に位置し、且つ値0に解釈され又は初期化されることができるため、テンプレート計算が0に偏る。図6は、TUの境界付近に位置する係数のlocSumAbsを算出するためのテンプレートパターンの一例を示す図である。図6は、複数のCUに分割されたCTU602を示し、各CUは複数のTUを含む。TU604に対して、現在の係数の位置が実線のブロックで示され、テンプレートパターンにおける隣接サンプルの位置がパターン化されたブロック(patterned block)で示されている。パターン化されたブロックは、ローカルサム変数locSumAbsを計算するための、現在の係数の予め確定された近傍を示す。
【0056】
図6では、現在係数606がTU604の境界に近いため、テンプレートパターンにおける隣接サンプルの一部は、TUの境界外にあり、例えば、隣接サンプル608B及び608Eが挙げられる。上述したライスパラメータ導出では、ローカルサム変数locSumAbsを計算する際に、これらの境界外の隣接サンプルが0に設定され、その結果として、ライスパラメータ導出が不正確となる。ビット深度が高い(例えば10ビットより大きい)サンプルに対して、TUの境界外にある隣接サンプルが多くあることができる。このような多くの隣接サンプルを0に設定すると、ライスパラメータ導出にさらなる誤差が生じる。
【0057】
計算されたテンプレートからのライス推定の精度を向上させるために、現在のTUの外側にあるテンプレート位置に対して、ローカルサム変数locSumAbsが0に初期化されるのではなく、履歴導出値(history derived value)で更新されることが提案された。この方法の実施は、以下のVVC規格テキスト抜粋の9.3.3.2節に示されており、提案されたテキストには下線が引かれている。
【0058】
隣接係数/サンプル値の履歴を維持するために、色成分ごとの履歴カウンタStatCoeff[cIdx](cIdx=0、1、2であり、それぞれ3つの色成分Y、U、Vを表す)が利用される。当該CTUがパーティション(例えば、ピクチャ、スライス、又はタイル)における1番目のCTUである場合、StatCoeff[cIdx]は以下のように初期化される。
【数1】
ここで、BitDepthはビデオのルーマ及びクロマ配列のサンプルのビット深度を指定し、Floor(x)はx以下の最大の整数を表し、Log2(x)はxの2を底とする対数である。TUのデコーディング及び履歴カウンタの更新の前に、置換変数HistValueが次のように初期化される。
【数2】
置換変数HistValueは、TUの境界外にある隣接サンプル(例えば、隣接サンプルはTUの外側に水平座標又は垂直座標を有する)の推定として利用される。ローカルサム変数locSumAbsは、以下の擬似コードプロセスで規定されたように再導出され、変更は下線で示されている。
【0059】
履歴カウンタStatCoeffは、指数移動平均(exponential moving average)のプロセスを通じて、1番目の非ゼロのゴロム・ライスコード変換係数(abs_remainder[cIdx]又はdec_abs_level[cIdx])から、TUごとに1回更新される。TUにおける1番目の非ゼロのゴロム・ライスコード変換係数がabs_remainderとしてコードされる場合、色成分cIdxの履歴カウンタStatCoeffは、以下のように更新される。
【数3】
TUにおける1番目の非ゼロのゴロム・ライスコード変換係数がdec_abs_levelとしてコードされる場合、色成分cIdxの履歴カウンタStatCoeffは、以下のように更新される。
【数4】
次のTUをデコードする前に、更新されたStatCoeffは、式2に従って次のTUの置換変数HistValueを計算するために用いられることができる。
【0060】
ウェーブフロント並列処理(Wavefront Parallel Processing、WPP)
【0061】
WPPは、並列コーディングメカニズムを提供するように設計されている。VVCにおいてWPPが有効にされる場合、フレーム、タイル、又はスライスの各CTU行が分離パーティション(separation partition)を構成する。WPPは、SPS要素sps_entropy_coding_sync_enabled_flagによって有効/無効にされる。図7は、WPPが有効にされたタイルの一例を示す図である。図7では、タイルの各CTU行は、その前のCTU行に対して1つのCTUの遅延で処理される。このようにして、各CTU行の末にパレットコーディング(palette coding)が有効にされた場合、連続するCTU行間の依存性は、CABACコンテキスト変数及びパレット予測子(palette predictor)を除いて、パーティション境界で破壊されない。コーディング効率の潜在的な損失を軽減するために、適応されたCABACコンテキスト変数及びパレット予測子の内容は、前のCTU行の1番目のコードされたCTUから現在のCTU行の1番目のCTUに伝播される。WPPは、CTUの通常のラスタスキャン順序を変更しない。
【0062】
WPPが有効にされる場合、パーティション(例えば、タイル、スライス、又はフレームなど)におけるCTU行の数までの数を有するスレッドが並列に動作し、個々のCTU行を処理することができる。WPPをデコーダーに利用することにより、各デコーディングスレッドはパーティションの単一のCTU行を処理する。スレッド処理のスケジューリングは整えられる必要があり、それによって、各CTUに対して、前のCTU行における上部に隣接するCTUのデコーディングが完成されるようにする。WPPの追加の小さなオーバーヘッドが加えられ、それによって、最後のCTU行を除く各CTU行における1番目のCTUのコーディングが終了した後、すべてのCABACコンテキスト変数及びパレット予測子の内容を記憶することができる。
【0063】
高ビット深度及び高ビットレートのビデオコーディングで上述した履歴ベースのライスパラメータ導出が有効にされる場合、前のCTU行における最後のStatCoeffが、現在のCTU行における1番目のTUに伝えられる。その結果、WPPが同時に有効にされる場合、このプロセスはWPPを妨げ、WPPの並列性を壊す。本開示では、並列コーディング(例えば、WPP)が有効にされる場合の上記問題を解決するためのいくつかの解決策が提案される。
【0064】
一実施形態では、履歴カウンタStatCoeffを計算する際、異なるCTU行におけるCTU間の依存性が除去され、それによって、並列コーディングに対する履歴ベースのライスパラメータ導出の妨害が除去される。この実施形態では、前のCTU行から得られた履歴カウンタStatCoeff値を利用するのではなく、StatCoeff[cIdx]の初期値を利用して、パーティション(例えば、フレーム、タイル、又はスライス)の各CTU行における1番目のabs_remainder[cIdx]又はdec_abs_level[cIdx]をコードする。ここで、cIdxは色成分のインデックスである。
【0065】
一例として、StatCoeff[cIdx]の初期値は以下のように確定されることができる。
【数5】
ここで、BitDepthはルーマ又はクロマ配列のサンプルのビット深度を指定し、Floor(x)はx以下の最大の整数を表す。別の例として、StatCoeff[cIdx]の初期値は以下のように確定されることができる。
【数6】
ここで、MIN_Stat及びMAX_Statは2つの予め定義された整数であり、QPは各スライスの初期QPであり、Clip()は以下のように定義された演算である。
【数7】
【0066】
パーティション(例えば、フレーム、タイル、又はスライス)の各CTU行の1番目のTUをコードする前に、置換変数HistValueが以下のように計算される。
【数8】
HistValueは、上述したローカルサム変数locSumAbsを計算するために用いられることができる。HistValueは、指数移動平均のプロセスを通じて、1番目の非ゼロのゴロム・ライスコード変換係数(abs_remainder[cIdx]又はdec_abs_level[cIdx])から、TUごとに1回更新される。TUにおける1番目の非ゼロのゴロム・ライスコード変換係数がabs_remainderとしてコードされる場合、色成分cIdxの履歴カウンタStatCoeffは、以下のように更新される。
【数9】
TUにおける1番目の非ゼロのゴロム・ライスコード変換係数がdec_abs_levelとしてコードされる場合、色成分cIdxの履歴カウンタStatCoeffは、以下のように更新される。
【数10】
【0067】
更新されたStatCoeff[cIdx]は、現在のCTUの次のTU又は現在のCTU行における次のCTUの1番目のTUに用いられるように、式8に示されたように置換変数HistValueを計算するために用いられる。
【0068】
図8は、フレーム802及び当該フレームに含まれるCTUの例を示す図である。この例では、フレーム802は、タイル804A及びタイル804Bという2つのタイルを含む。タイル804Aは、4つのCTU行(CTU行1~CTU行4)を含む。1番目のCTU行はCTU0~CTU9を含み、2番目のCTU行はCTU10~CTU19を含み、以下はこのように類推する。同様に、タイル804Bも4つのCTU行(CTU行1’~CTU行4’)を含む。1番目のCTU行は、10のCTU(CTU0’~CTU9’)を含み、2番目のCTU行はCTU10’~CTU19’を含み、以下はこのように類推する。
【0069】
本実施形態によれば、タイル804AのStatCoeff[cIdx]の初期値は、式5又は式6に従って確定されることができる。CTU行1~CTU行4のうちの各CTU行の1番目のTUをコードする前に、置換変数HistValue[cIdx]は、StatCoeff[cIdx]の初期値を利用して式8を利用して計算される。例えば、CTU0の1番目のTUをコードする前に、変数HistValueは式8を利用して計算される。HistValueのこの値は、1番目のTUにおける係数のローカルサム変数locSumAbsを確定するために用いられ、さらに、このlocSumAbsは、1番目のTUの対応する係数のライスパラメータを確定するために用いられる。現在のCTU0の1番目のTUを処理する際、履歴カウンタStatCoeffは、式9又は式10に従って更新されることができる。CTU0における2番目のTUを処理する前に、StatCoeffの現在値は、式8に従って2番目のTUのHistValueを確定するために用いられる。その後、同様の処理が2番目のTUに用いられ、それによって、HistValueを利用してライスパラメータを確定し、StatCoeffを更新する。CTU1における1番目のTUに対して、HistValueは、CTU0におけるTUからの最後のStatCoeffを利用して式8に従って計算される。このプロセスは、現在のCTU行1における最後のCTU(CTU9)の処理が完了されるまで繰り返されることができる。
【0070】
タイル804Aの2番目のCTU行に対して、CTU10(2番目のCTU行の1番目のCTU)の1番目のTUをコードする前に、履歴カウンタStatCoeffが式5又は式6に従って初期化される。2番目のCTU行のCTUにおけるTUに対して、CTU行1について上述した処理と同様の処理が実行される。同様に、CTU20及びCTU30の各々の1番目のTUをコードする前に、変数StatCoeffが式5又は式6に従って再び初期化される。
【0071】
タイル804Bも同様の方法で処理されることができる。CTU行1’~CTU行4’(即ち、CTU0’、CTU10’、CTU20’、及びCTU30’)の各々の1番目のTUをコードする前に、StatCoeff[cIdx]の値が式5又は式6に従って初期化され、履歴カウンタHistValueが式8を利用して計算される。計算された履歴カウンタHistValueは、対応するCTU行の1番目のCTU及び残りのCTUにおけるTUのLocSumAbs及びライスパラメータを計算するために用いられる。さらに、履歴カウンタStatCoeffは、式9又は式10に従って、各TUにおいて最多で1回更新されることができ、StatCoeffの更新値は、同じCTU行における次のTUのHistValueを確定するために用いられる。
【0072】
図8は、タイル804A及びタイル804Bという2つのタイルを含むフレーム802として説明されているが、同じプロセスが、複数のタイルを含むスライス、複数のスライスを含むフレームなどの他のシナリオにも適用される。これらのシナリオのいずれにおいても、パーティション(例えば、フレーム、タイル、又はスライス)の各CTU行における1番目のTUのコーディングの前に、履歴カウンタStatCoeff[cIdx]の値が初期値にリセットされて、ライスパラメータ導出におけるCTU行の依存性を除去する。
【0073】
下線で示されたVVCの可能な規格変更は、以下のように規定されている。
【0074】
VVCの9.3.2.1に関する別の可能な規格変更は、以下のように規定されている。
【0075】
ビデオサンプルのビット深度
【0076】
VVCバージョン2によってサポートされる入力ビデオのビット深度は10ビット以上であることができる。ビデオの比較的高いビット深度は、デコードされたビデオに比較的高いビジュアル品質及び比較的少ない圧縮歪みを提供することができる。入力ビデオの高いビット深度をサポートするために、対応するSPS(シーケンスパラメータセット)シンタックス要素sps_bitdepth_minus8及びVPS(ビデオパラメータセット)シンタックス要素vps_ols_dpb_bitdepth_minus8[i]のセマンティクスは、以下のように変更されることができる。

sps_bitdepth_minus8は、ルーマ及びクロマ配列のサンプルの
ビット深度BitDepthと、ルーマ及びクロマの量子化パラメータ範囲オフセ
ットの値QpBdOffsetとを以下のように指定する。
【数11】
sps_bitdepth_minus8は、0から8の範囲内にある(0及び8
を含む)。

sps_video_parameter_set_idが0より大きく、且つS
PSが、VPSによって指定されたi番目(iが0からNumMultiLaye
rOlss-1までの範囲内にあり、0及びNumMultiLayerOlss
-1を含む)の多層OLSに含まれる層によって参照される場合、sps_bit
depth_minus8の値がvps_ols_dpb_bitdepth_m
inus8[i]の値以下であることは、ビットストリーム一致性(bitstr
eam conformance)の要件である。

vps_ols_dpb_bitdepth_minus8[i]は、i番目の多
層OLSのCVSにおけるCLVSによって言及されたすべてのSPSのsps_
bitdepth_minus8の最大許容値を指定する。vps_ols_dp
b_bitdepth_minus8[i]の値は、0から8の範囲内にある(0
及び8を含む)。
注2-i番目の多層OLSをデコードすることについて、デコーダーは、シンタ
ックス要素vps_ols_dpb_pic_width[i]、vps_ol
s_dpb_pic_height[i]、vps_ols_dpb_chro
ma_format[i]、及びvps_ols_dpb_bitdepth_
minus8[i]の値に基づいて、DPBにメモリを安全に割り当てることが
できる。
【0077】
以上から分かるように、ルーマ及びクロマ配列のサンプルのビット深度BitDepthは、SPSシンタックス要素sps_bitdepth_minus8に基づいて、式x1に従って導出されることができる。確定されたBitDepth値により、履歴カウンタStatCoeff、置換変数HistValue、及びライスパラメータは、上述のように導出されることができる。
【0078】
VPSシンタックス要素vps_ols_dpb_bitdepth_minus8[i]は、デコードピクチャバッファ(DPB)のサイズを導出するために用いられることができる。コードビットストリームには複数のビデオレイヤが存在することができる。ビデオパラメータセットは、対応するシンタックス要素を指定するために用いられる。ビデオデコーディングでは、DPBは参照ピクチャを記憶するために用いられ、それによって、前にコードされたピクチャは、他のピクチャをコードする際に用いられる予測信号を生成するために用いられることができる。また、デコードされたピクチャを正しい順序で出力及び/又は表示できるように、DPBはデコードされたピクチャを改めて並べるために用いられることもできる。さらに、DPBは仮想参照デコーダー(hypothetical reference decoder)のために指定された出力遅延に用いられることもできる。デコードされたピクチャはDPBに、仮想参照デコーダーのために指定された予め確定された時間とどめられることができ、デコードされたピクチャは、予め確定された時間が経過した後に出力される。
【0079】
DPBにメモリを安全に割り当てるために、DPBのサイズは、シンタックス要素vps_ols_dpb_pic_width[i]、vps_ols_dpb_pic_height[i]、vps_ols_dpb_chroma_format[i]、vps_ols_dpb_bitdepth_minus8[i]によって以下のように決定される。
picture_size1 (in bits) = vps_ols_dpb_pic_width[ i ] * vps_ols_dpb_pic_height[ i ] * (vps_ols_dpb_bitdepth_minus8[ i ] + 8)
if (vps_ols_dpb_chroma_format[ i ]== 0) // Monochrome
picture_size = picture_size1;
else if (vps_ols_dpb_chroma_format[ i ]== 1) // 4:2:0
picture_size = 1.5 * picture_size1;
else if (vps_ols_dpb_chroma_format[ i ]== 2 // 4:2:2
picture_size = 2 * picture_size1;
else if (vps_ols_dpb_chroma_format[ i ]== 3 // 4:4:4
picture_size = 3 * picture_size1
DPBのサイズはpicture_sizeによって確定される。言い換えれば、DPBのサイズは、サンプルのクロマフォーマットに基づいて確定されることができる。ビデオフレームがモノクロフレーム(monochrome frame)である場合、バッファリングされようとするフレームのサイズは基本ピクチャサイズpicture_size1に確定される。カラービデオフレームのカラーサブサンプリング(color subsampling)が4:2:0である場合、フレームのサイズは基本ピクチャサイズpicture_size1の1.5倍に確定され、カラービデオフレームのカラーサブサンプリングが4:2:2である場合、フレームのサイズは基本ピクチャサイズpicture_size1の2倍に確定され、カラービデオフレームのカラーサブサンプリングが4:4:4である場合、フレームのサイズは基本ピクチャサイズpicture_size1の3倍に確定される。また、DPBのサイズは、DPBに記憶されようとするフレームの数にカラーサブサンプリングに応じたフレームのサイズを乗算することで得た値に確定されることができる。
【0080】
図9は、本開示のいくつかの実施形態に係る、ビデオのパーティションをエンコードするプロセス900の一例を示す図である。1つ又は複数のコンピューティングデバイス(例えば、ビデオエンコーダー100を実現するコンピューティングデバイス)は、適切なプログラムコード(例えば、エントロピーコーディングモジュール116を実現するプログラムコード)を実行することによって、図9に示された操作を実現する。説明の目的として、プロセス900は、図面に示されたいくつかの例を参照しながら説明される。しかしながら、他の実施例も可能である。
【0081】
ブロック902において、プロセス900は、ビデオ信号のパーティションにアクセスすることを含む。パーティションは、ビデオフレーム、スライス、タイル、又は、エンコーディングを実行する際にビデオエンコーダーによってユニットとして処理される任意のタイプのパーティションであり得る。パーティションは、図8に示されたような、CTU行に配列されたCTUセットを含む。図6の例に示されたように、各CTUは1つ又は複数のCTUを含み、且つ各CTUはエンコーディング用の複数のTUを含む。
【0082】
ブロック906~914を含むブロック904において、プロセス900は、パーティションにおけるCTUセットの各CTUを処理することを含み、それによって、パーティションをビットにエンコードする。ブロック906において、プロセス900は、並列コーディングメカニズムが有効にされたか否か、且つ、現在のCTUがCTU行の1番目のCTUであるか否かを確定することを含む。いくつかの例では、並列コーディングは、並列コーディングが無効にされたことを指示する値0と、並列コーディングが有効にされたことを指示する値1とを有するフラグによって指示されることができる。並列コーディングメカニズムが有効にされたこと、及び現在のCTUがCTU行の1番目のCTUであると確定された場合、プロセス900は、ブロック908において、履歴カウンタStatCoeffを初期値に設定することを含む。上述したように、履歴ベースのライスパラメータ導出が有効にされた場合、履歴カウンタの初期値は、式5又は式6に従って設定されることができ、そうではない場合、履歴カウンタの初期値はゼロに設定される。
【0083】
並列コーディングメカニズムが有効にされていない、もしくは現在のCTUがCTU行の1番目のCTUではないと確定された場合、又は、ブロック908において履歴カウンタを設定した後、プロセス900は、ブロック910において、履歴カウンタに基づいてCTUにおけるTUのライスパラメータを計算することを含む。図6図8について上記に詳述したように、ブロック908において履歴カウンタがリセットされる場合、CTUにおけるTUのライスパラメータは、リセットされた履歴カウンタ又は後続に更新される履歴カウンタに基づいて計算される。ブロック908において履歴カウンタがリセットされない場合、CTUにおけるTUのライスパラメータは、前のCTUにおいて更新された履歴カウンタ又は現在のCTUにおいて後続に更新される履歴カウンタに基づいて計算される。
【0084】
ブロック912において、プロセス900は、(例えば、VVC規格に規定された、TRと限定されたk次指数ゴロム(EGk)との組み合わせを介して、)計算されたライスパラメータに基づいて、CTUにおけるTUをバイナリ表現にエンコードすることを含む。ブロック914において、プロセス900は、ビデオのビットストリームに含まれるために、CTUのバイナリ表現をビットにエンコードすることを含む。エンコーディングは、例えば、上述したCABACを利用して実行されることができる。ブロック916において、プロセス900は、エンコードされたビデオビットストリームを出力することを含む。
【0085】
図10は、本開示のいくつかの実施形態に係る、ビデオのパーティションをデコードするプロセス1000の一例を示す図である。1つ又は複数のコンピューティングデバイスは、適切なプログラムコードを実行することによって、図10に示された操作を実現する。例えば、ビデオデコーダー200を実現するコンピューティングデバイスは、エントロピーデコーディングモジュール216、逆量子化モジュール218、及び逆変換モジュール219のために用いられるプログラムコードを実行することによって、図10に示された操作を実現することができる。説明の目的として、プロセス1000は、図面に示されたいくつかの例を参照しながら説明される。しかしながら、他の実施例も可能である。
【0086】
ブロック1002において、プロセス1000は、ビデオ信号のパーティションを表すバイナリ文字列又はバイナリ表現にアクセスすることを含む。パーティションは、ビデオフレーム、スライス、タイル、又は、エンコーディングを実行する際にビデオエンコーダーによってユニットとして処理される任意のタイプのパーティションであり得る。パーティションは、図8に示されたような、CTU行に配列されたCTUセットを含む。図6の例に示されたように、各CTUは1つ又は複数のCTUを含み、且つ各CTUはエンコーディング用の複数のTUを含む。
【0087】
ブロック1006~1014を含むブロック1004において、プロセス1000は、パーティションのデコードされたサンプルを生成するために、パーティションにおけるCTUセットの各CTUのバイナリ文字列を処理することを含む。ブロック1006において、プロセス1000は、並列コーディングメカニズムが有効にされたか否か、且つ、現在のCTUがCTU行の1番目のCTUであるか否かを確定することを含む。並列コーディングは、並列コーディングが無効にされたことを指示する値0と、並列コーディングが有効にされたことを指示する値1とを有するフラグによって指示されることができる。並列コーディングメカニズムが有効にされたこと、及び現在のCTUがCTU行の1番目のCTUであると確定された場合、プロセス1000は、ブロック1008において、履歴カウンタStatCoeffを初期値に設定することを含む。上述したように、履歴ベースのライスパラメータ導出が有効にされた場合、履歴カウンタの初期値は、式5又は式6に従って設定されることができ、そうではない場合、履歴カウンタの初期値はゼロに設定される。
【0088】
並列コーディングメカニズムが有効にされていない、もしくは現在のCTUがCTU行の1番目のCTUではないと確定された場合、又は、ブロック1008において履歴カウンタを設定した後、プロセス1000は、ブロック1010において、履歴カウンタに基づいてCTUにおけるTUのライスパラメータを計算することを含む。図6図8について上記に詳述したように、ブロック1008において履歴カウンタがリセットされる場合、CTUにおけるTUのライスパラメータは、リセットされた履歴カウンタ又は後続に更新される履歴カウンタに基づいて計算される。ブロック1008において履歴カウンタがリセットされない場合、CTUにおけるTUのライスパラメータは、前のCTUにおいて更新された履歴カウンタ又は現在のCTUにおいて後続に更新される履歴カウンタに基づいて計算される。
【0089】
ブロック1012において、プロセス1000は、(例えば、VVC規格に規定された、TRと限定されたk次指数ゴロム(EGk)との組み合わせを介して、)計算されたライスパラメータに基づいて、CTUにおけるTUのバイナリ文字列又はバイナリ表現を係数値にデコードすることを含む。ブロック1014において、プロセス1000は、例えば、図2について上述したような逆量子化及び逆変換を介して、CTUにおけるTUのピクセル値を再構成することを含む。ブロック1016において、プロセス1000は、ビデオのデコードされたパーティションを出力することを含む。
【0090】
別の実施形態では、履歴カウンタStatCoeffを計算する際のCTU間の依存性は、WPPのような並列コーディングメカニズムにおけるCTU間の依存性にアライメントする。例えば、パーティション(例えば、フレーム、タイル又はスライス)のCTU行の履歴カウンタStatCoeffは、前のCTU行の最初のN個以下のCTUにおける係数値に基づいて計算され、ここで、Nは、並列コーディングメカニズムにおいて許容される2つの連続するCTU行の間の最大遅延である。このようにして、履歴カウンタStatCoeffを計算する際の2つの連続するCTU行におけるCTU間の依存性は、並列処理を実行する際のCTU間の依存性以下に制限される(それによって、アライメントする)。
【0091】
この実施形態は、記憶同期プロセスを利用して実現されることができる。例えば、上述のWPPでは、2つの連続するCTU行の間の遅延は1つのCTUであり、従って、N=1である。記憶のプロセスでは、各CTU行(最後のCTU行を除く)における1番目のCTUの最後のTUがコードされた後、StatCoeff[cIdx]はストレージ変数StatCoeffWpp[cIdx]に保存されることができる。1番目のCTU行以外の各CTU行に対して、1番目のTUのコーディングの前に、ライスパラメータ導出の同期プロセスが適用される。同期プロセスにおいて、StatCoeff[cIdx]は、前のCTU行からの保存されたStatCoeffWpp[cIdx]と同期される。
【0092】
上述したように、各CTU行における1番目のTUのコーディングの前に、変数HistValueは以下のように計算される。
【数12】
現在のCTU行がパーティションの1番目のCTU行である場合、StatCoeff[cIdx]は式5又は式6に従って初期化されることができる。計算されたHistValueは、ローカルサム変数locSumAbsを確定するために用いられることができ、このローカルサム変数locSumAbsは、現在のCTUにおけるTUのライスパラメータを確定するために用いられる。StatCoeffは、式9及び式10について上述したような指数移動平均のプロセスを通じて、1番目の非ゼロのゴロム・ライスコード変換係数(abs_remainder[cIdx]又はdec_abs_level[cIdx])から、TUごとに1回更新されることができる。
【0093】
1番目のCTU行における一番目のCTUの最後のTUがコードされた後、StatCoeff[cIdx]は、以下のような記憶ステップにおいてStatCoeffWpp[cIdx]として保存されることができる。
【数13】
1番目のCTU行における残りのCTUのコーディングは、第1の実施形態について上述したものと同様の方法で行われることができる。
【0094】
2番目のCTU行及び後続の任意のCTU行における1番目のTUのコーディングの前に、StatCoeff[cIdx]は同期ステップによって得られることができる。
【数14】
得られたStatCoeff[cIdx]値を利用して、式11に従ってHistValueが計算される。CTU行の残りのプロセスは、1番目のCTU行と同じである。
【0095】
可能なVVC規格変更は以下のように規定されている(変更は下線で示されている)。
【0096】
代替の履歴ベースのライスパラメータ導出
【0097】
履歴ベースのライスパラメータ導出は、代替的な方法で実現されることができる。この代替的な実施態様では、CTUがパーティション(例えば、ピクチャ、スライス、又はタイル)における1番目のCTUである場合、HistValueは以下のように、StatCoeff[cIdx]の初期値で初期化される。
【数15】
【0098】
この初期のHistValueは、HistValueが以下のルールに従って更新されるまで、1番目のabs_remainder[cIdx]又はdec_abs_level[cIdx]をコードするために用いられる。TUにおける1番目の非ゼロのゴロム・ライスコード変換係数がabs_remainderとしてコードされるとき、色成分cIdxの履歴カウンタは、以下のように更新される。
【数16】
TUにおける1番目の非ゼロのゴロム・ライスコード変換係数がdec_abs_levelとしてコードされるとき、色成分cIdxの履歴カウンタは、以下のように更新される。
【数17】
【0099】
履歴カウンタStatCoeff[cIdx]が更新されると、式17に示されるようにHistValueが更新され、更新されたHistValueは、新しいStatCoeff[cIdx]及びHistValue[cIdx]が再び更新されるまで、残りのabs_remainder及びdec_abs_levelシンタックス要素のライスパラメータの導出のために用いられる。
【数18】
【0100】
現在のVVC規格に基づいて、可能な規格変更は以下のように規定されている。
7.3.11.11節(残差コーディングシンタックス)を以下のように変更する(追加部分には下線が引かれている)。
【0101】
並列コーディングと代替の履歴ベースのライスパラメータ導出との間の依存性の衝突を解決するために、各CTU行における1番目のCTUの最後のTUがコードされた後、各色成分のStatCoeff[cIdx]とHistValue[cIdx]の両方が保存される。保存されたStatCoeff[cIdx]及びHistValue[cIdx]の値は、後続のCTU行の1番目のCTUの1番目のTUが処理される前に、StatCoeff[cIdx]及びHistValue[cIdx]を初期化するために用いられることができる。
【0102】
この実施形態は、記憶同期プロセスを利用して実現されることもできる。例えば、記憶プロセスでは、各CTU行における1番目のCTUの最後のTUが処理された後、StatCoeff[cIdx]及びHistValue[cIdx]は、それぞれ記憶変数(例えば、式18に示されるStatCoeffWpp[cIdx]及び式19に示されるHistValueWpp[cIdx])に保存されることができる。
【数19】
【0103】
1番目のCTU行以外の各CTU行に対して、1番目のTUのコーディングの前に、ライスパラメータ導出の同期プロセスが適用される。例えば、式20に示されるように、StatCoeff[cIdx]は前のCTU行からの保存されたStatCoeffWpp[cIdx]と同期され、式21に示されるように、HistValue[cIdx]は前のCTU行からの保存されたHistValueWpp[cIdx]と同期される。
【数20】
同期変数HistValueは、HistValueが更新されるまで、1番目のabs_remainder[cIdx]又はdec_abs_level[cIdx]をコードするために用いられる。
【0104】
上述したように、式15又は式16に示されたように、StatCoeff[cIdx]は、1番目の非ゼロのゴロム・ライスコード変換係数(abs_remainder[cIdx]又はdec_abs_level[cIdx])から、TUごとに1回更新されることができる。履歴カウンタStatCoeff[cIdx]が更新されると、HistValueが式17に従って更新され、更新されたHistValueは、新しいStatCoeff[cIdx]及びHistValueが再び更新されるまで、残りのabs_remainder及びdec_abs_levelシンタックス要素のライスパラメータの導出のために用いられる。
【0105】
現行のVVC規格に基づいて、下線で示された可能な規格変更は以下のように規定されている。
【0106】
図11は、本開示のいくつかの実施形態に係る、ビデオのパーティションをエンコードするプロセス1100の例を示す図である。1つ又は複数のコンピューティングデバイス(例えば、ビデオエンコーダー100を実現するコンピューティングデバイス)は、適切なプログラムコード(例えば、エントロピーコーディングモジュール116を実現するプログラムコード)を実行することによって、図11に示された操作を実現する。説明の目的として、プロセス1100は、図面に示されたいくつかの例を参照しながら説明される。しかしながら、他の実施例も可能である。
【0107】
ブロック1102において、プロセス1100は、ビデオ信号のパーティションにアクセスすることを含む。パーティションは、ビデオフレーム、スライス、タイル、又は、エンコーディングを実行する際にビデオエンコーダーによってユニットとして処理される任意のタイプのパーティションであり得る。パーティションは、図8に示されたような、CTU行に配列されたCTUセットを含む。図6の例に示されたように、各CTUは1つ又は複数のCTUを含み、且つ各CTUはエンコーディング用の複数のTUを含む。
【0108】
ブロック1106~1118を含むブロック1104において、プロセス1100は、パーティションにおけるCTUセットの各CTUを処理することを含み、それによって、パーティションをビットにエンコードする。ブロック1106において、プロセス1100は、並列コーディングメカニズムが有効にされたか否か、且つ、現在のCTUがCTU行の1番目のCTUであるか否かを確定することを含む。いくつかの例では、並列コーディングは、並列コーディングが無効にされたことを指示する値0と、並列コーディングが有効にされたことを指示する値1とを有するフラグによって指示されることができる。並列コーディングメカニズムが有効にされたこと、及び現在のCTUがCTU行の1番目のCTUであると確定された場合、プロセス1100は、ブロック1107において、現在のCTU行がパーティションにおける1番目のCTU行であるか否かを確定することを含む。そうである場合、プロセス1100は、ブロック1108において、履歴カウンタStatCoeffを初期値に設定することを含む。上述したように、履歴カウンタの初期値は、式5又は式6に従って設定されることができる。現在のCTU行がパーティションにおける1番目のCTU行ではない場合、プロセス1100は、ブロック1109において、式13又は式20に示されたように、履歴カウンタStatCoeffを、履歴カウンタストレージ変数に記憶された値に設定することを含む。いくつかの例では、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値は、式21に示されるように、記憶された値にリセットされることができる。
【0109】
並列コーディングメカニズムが有効にされていない、もしくは現在のCTUがCTU行の1番目のCTUではないと確定された場合、又は、ブロック1108もしくは1109において履歴カウンタの値を設定した後、プロセス1100は、ブロック1110において、履歴カウンタに基づいて(置換変数HistValueもリセットされた場合、さらに置換変数HistValueに基づいて)、CTUにおけるTUのライスパラメータを計算することを含む。上述したように(例えば、図8が参照として、又は代替のライスパラメータ導出において)、ブロック1108又はブロック1109において履歴カウンタの値がリセットされる場合、CTUにおけるTUのライスパラメータは、リセットされた履歴カウンタ又は後続に更新される履歴カウンタに基づいて計算される。ブロック1108又は1109において履歴カウンタがリセットされない場合、CTUにおけるTUのライスパラメータは、前のCTUにおいて更新された履歴カウンタ又は現在のCTUにおいて後続に更新される履歴カウンタに基づいて計算される。
【0110】
ブロック1112において、プロセス1100は、(例えば、VVC規格に規定された、TRと限定されたk次指数ゴロム(EGk)との組み合わせを介して、)計算されたライスパラメータに基づいて、CTUにおけるTUをバイナリ表現にエンコードすることを含む。ブロック1114において、プロセス1100は、ビデオのビットストリームに含まれるために、CTUのバイナリ表現をビットにエンコードすることを含む。エンコーディングは、例えば、上述したCABACを利用して実行されることができる。
【0111】
ブロック1116において、プロセス1100は、並列コーディングが有効にされたか否か、且つ、CTUが現在のCTU行の1番目のCTUであるか否かを確定することを含む。そうである場合、プロセス1100は、ブロック1118において、式12又は式18に示されるように、履歴カウンタの値を履歴カウンタストレージ変数に記憶することを含む。いくつかの例では、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値は、式19に示されるように、ストレージ変数に記憶されることができる。ブロック1120において、プロセス1100は、エンコードされたビデオビットストリームを出力することを含む。
【0112】
いくつかのシナリオでは、1番目のCTU行以外のCTU行におけるCTUはパーティションの境界に位置することができる。例えば、2番目のCTU行における1番目のCTUの上部に、パーティション内のCTUがない。これらのシナリオでは、このCTUの履歴カウンタは、記憶された値ではなく初期値に設定されることができる。この場合、図11においてブロック1107とブロック1109との間に新たなブロック1107’を追加して、CTUがパーティションの境界にあるか否か(例えば、CTUがパーティション内の上隣接CTUを有しない)を確定することができる。そうである場合、プロセス1100はブロック1108に進んで履歴カウンタを初期値に設定し、そうではない場合、プロセス1100はブロック1109に進んで履歴カウンタを記憶された値に設定する。図11の残りのブロックは同じままであることができる。
【0113】
図12は、本開示のいくつかの実施形態に係る、ビデオのパーティションをデコードするプロセス1200の例を示す図である。1つ又は複数のコンピューティングデバイスは、適切なプログラムコードを実行することによって、図12に示された操作を実現する。例えば、ビデオデコーダー200を実現するコンピューティングデバイスは、エントロピーデコーディングモジュール216、逆量子化モジュール218、及び逆変換モジュール219のために用いられるプログラムコードを実行することによって、図12に示された操作を実現することができる。説明の目的として、プロセス1200は、図面に示されたいくつかの例を参照しながら説明される。しかしながら、他の実施例も可能である。
【0114】
ブロック1202において、プロセス1000は、ビデオ信号のパーティションを表すバイナリ文字列又はバイナリ表現にアクセスすることを含む。パーティションは、ビデオフレーム、スライス、タイル、又は、エンコーディングを実行する際にビデオエンコーダーによってユニットとして処理される任意のタイプのパーティションであり得る。パーティションは、図8に示されたような、CTU行に配列されたCTUセットを含む。図6の例に示されたように、各CTUは1つ又は複数のCTUを含み、且つ各CTUはエンコーディング用の複数のTUを含む。
【0115】
ブロック1206~1218を含むブロック1204において、プロセス1200は、パーティションのデコードされたサンプルを生成するために、パーティションにおけるCTUセットの各CTUのバイナリ文字列を処理することを含む。ブロック1206において、プロセス1200は、並列コーディングメカニズムが有効にされたか否か、且つ、現在のCTUがCTU行の1番目のCTUであるか否かを確定することを含む。並列コーディングは、並列コーディングが無効にされたことを指示する値0と、並列コーディングが有効にされたことを指示する値1とを有するフラグによって指示されることができる。並列コーディングメカニズムが有効にされたこと、及び現在のCTUがCTU行の1番目のCTUであると確定された場合、プロセス1200は、ブロック1207において、現在のCTU行がパーティションにおける1番目のCTU行であるか否かを確定することを含む。そうである場合、プロセス1200は、ブロック1208において、履歴カウンタStatCoeffを初期値に設定することを含む。上述したように、履歴カウンタの初期値は、式5又は式6に従って設定されることができる。現在のCTU行がパーティションにおける1番目のCTU行ではない場合、プロセス1200は、ブロック1209において、式13又は式20に示されたように、履歴カウンタStatCoeffを、履歴カウンタストレージ変数に記憶された値に設定することを含む。いくつかの例では、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値は、式21に示されるように、記憶された値にリセットされることができる。
【0116】
並列コーディングメカニズムが有効にされていない、もしくは現在のCTUがCTU行の1番目のCTUではないと確定された場合、又は、ブロック1208もしくは1209において履歴カウンタを設定した後、プロセス1200は、ブロック1210において、履歴カウンタに基づいて(置換変数HistValueの値もリセットされた場合、さらに置換変数HistValueに基づいて)、CTUにおけるTUのライスパラメータを計算することを含む。上述したように(例えば、図8が参照として、又は代替のライスパラメータ導出において)、ブロック1208又はブロック1209において履歴カウンタの値がリセットされる場合、CTUにおけるTUのライスパラメータは、リセットされた履歴カウンタ又は後続に更新される履歴カウンタに基づいて計算される。ブロック1208又は1209において履歴カウンタがリセットされない場合、CTUにおけるTUのライスパラメータは、前のCTUにおいて更新された履歴カウンタ又は現在のCTUにおいて後続に更新される履歴カウンタに基づいて計算される。
【0117】
ブロック1212において、プロセス1200は、(例えば、VVC規格に規定された、TRと限定されたk次指数ゴロム(EGk)との組み合わせを介して、)計算されたライスパラメータに基づいて、CTUにおけるTUのバイナリ文字列又はバイナリ表現を係数値にデコードすることを含む。ブロック1214において、プロセス1200は、例えば、図2について上述したような逆量子化及び逆変換を介して、CTUにおけるTUのピクセル値を再構成することを含む。
【0118】
ブロック1216において、プロセス1200は、並列コーディングが有効にされたか否か、且つ、CTUが現在のCTU行の1番目のCTUであるか否かを確定することを含む。そうである場合、プロセス1200は、ブロック1218において、式12又は式18に示されるように、履歴カウンタの値を履歴カウンタストレージ変数に記憶することを含む。いくつかの例では、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値は、式19に示されるように、ストレージ変数に記憶されることができる。ブロック1216において、プロセス1200は、ビデオのデコードされたパーティションを出力することを含む。
【0119】
別の実施形態では、WPP又は他の並列コーディングメカニズム及び履歴ベースのライスパラメータ導出は、ビットストリームに共存することが防止される。例えば、WPPが有効にされた場合、履歴ベースのライスパラメータ導出が有効にされないことができる。WPPが有効にされない場合、履歴ベースのライスパラメータ導出が有効にされることができる。同様に、履歴ベースのライスパラメータ導出が有効にされた場合、WPPが有効にされないことができる。一例として、シンタックスが以下のように変更されることができる。
7.3.2.22 シーケンスパラメータセット範囲拡張シンタックス(追加部分に下線が引かれている)
【0120】
別の例として、対応するセマンティクスが以下のように変更される(変更は下線で示されている)。
【0121】
上記説明では、TUは図面(例えば、図6)に説明され図示されたが、同じ技術は変換ブロック(transform block、TB)に適用されることができる。言い換えれば、上記に示された実施形態(図面を含む)では、TUはTBを表すこともできる。
【0122】
ビデオコーディングの依存量子化を実現するためのコンピューティングシステムの例
【0123】
任意の適切なコンピューティングシステムは、本明細書で説明される操作を実行するために用いられることができる。例えば、図13は、図1のビデオエンコーダー100又は図2のビデオデコーダー200を実現することができるコンピューティングデバイス1300の一例を示す。いくつかの実施形態では、コンピューティングデバイス1300は、メモリ1314に通信可能に結合され、且つ、コンピュータ実行可能なプログラムコードを実行し及び/又はメモリ1314に記憶された情報にアクセスするプロセッサ1312を含むことができる。プロセッサ1312は、マイクロプロセッサ、特定用途向け集積回路(application specific integrated circuit、ASIC)、ステートマシン(state machine)、又は他の処理デバイスを含むことができる。プロセッサ1312は、1つを含む任意の数の処理デバイスを含むことができる。このようなプロセッサは、命令を記憶するコンピュータ可読媒体を含み得るか、又は命令を記憶するコンピュータ可読媒体と通信し得る。当該命令は、プロセッサ1312によって実行されると、プロセッサに本明細書で説明される操作を実行させる。
【0124】
メモリ1314は、任意の適切な非一時的なコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、コンピュータ可読命令又は他のプログラムコードをプロセッサに提供することができる任意の電子、光学、磁気、又は他の記憶装置を含むことができる。コンピュータ可読媒体の非限定的な例としては、磁気ディスク、メモリチップ、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、ASIC、構成されたプロセッサ、光学記憶装置、磁気テープ又は他の磁気記憶装置、又はコンピュータプロセッサがそこから命令を読み取ることができる他の媒体が挙げられる。命令は、例えば、C、C++、C#、Visual Basic、Java、Python、Perl、JavaScript、及びActionScriptを含む任意の適切なコンピュータプログラミング言語で記述されたコードから、コンパイル及び/又はインタプリタによって生成されたプロセッサ特定の命令を含むことができる。
【0125】
コンピューティングデバイス1300は、バス1316を含むこともできる。バス1316は、コンピューティングデバイス1300の1つ又は複数のコンポーネントに通信可能に結合されることができる。コンピューティングデバイス1300は、入力デバイス又は出力デバイスなどの複数の外部デバイス又は内部デバイスを含むこともできる。例えば、示されるコンピューティングデバイス1300は、1つ又は複数の入力デバイス1320から入力を受信し、又は1つ又は複数の出力デバイス1322に出力を提供することができる入力/出力(input/output、I/O)インターフェース1318を有する。1つ又は複数の入力デバイス1320及び1つ又は複数の出力デバイス1322は、I/Oインターフェース1318に通信可能に結合され得る。通信結合は、任意の適切な方法(例えば、プリント回路基板を介した接続、ケーブルを介した接続、無線伝送を介した通信など)で実現され得る。入力デバイス1320の非限定的な例には、タッチスクリーン(例えば、タッチ領域をイメージングするための1つ又は複数のカメラ、又は、タッチによって引き起こされる圧力変化を検出するための圧力センサ)、マウス、キーボード、又は、コンピューティングデバイスのユーザの物理的動作に応答して入力イベントを生成するために用いられることができる任意の他のデバイスが含まれる。出力デバイス1322の非限定的な例には、LCDスクリーン、外部モニタ、スピーカ、又は、コンピューティングデバイスによって生成された出力を表示するか、もしくは他の方法で提示するために用いられることができる任意の他のデバイスが含まれる。
【0126】
コンピューティングデバイス1300は、プログラムコードを実行することができ、当該プログラムコードは、図1図12を参照して叙述した上記の操作の1つ又は複数を実行するようにプロセッサ1312を構成する。当該プログラムコードは、ビデオエンコーダー100又はビデオデコーダー200を含み得る。プログラムコードは、メモリ1314又は任意の適切なコンピュータ可読媒体に留まることができ、プロセッサ1312又は任意の他の適切なプロセッサによって実行されることができる。
【0127】
コンピューティングデバイス1300はまた、少なくとも1つのネットワークインターフェースデバイス1324を含み得る。ネットワークインターフェースデバイス1324は、1つ又は複数のデータネットワーク1328と有線又は無線データ接続を確立することに適した任意のデバイス又はデバイスグループを含み得る。ネットワークインターフェースデバイス1324の非限定的な例としては、イーサネットネットワークアダプタ、モデムなどが含まれる。コンピューティングデバイス1300は、ネットワークインターフェースデバイス1324を介して、電子信号又は光信号としてメッセージを伝送することができる。
【0128】
一般的な考慮
【0129】
特許請求の主題を十分に理解するために、本明細書には多数の具体的なディテールが記載されている。しかしながら、当業者であれば、これらの具体的なディテールがなくても、特許請求の主題を実施し得ることを理解するであろう。他の例では、当業者に知られることができる方法、装置、又はシステムは、特許請求の主題を不明瞭にしないように詳細には記載されていない。
【0130】
特に説明されない限り、本明細書を通じて、「処理」、「コンピューティング」、「計算」、「確定」、及び「識別」などの用語を利用する議論は、コンピューティングデバイス(例えば、1つ又は複数のコンピュータ又は類似の1つ又は複数の電子コンピューティングデバイス)の動作又は処理を指すことが理解される。当該コンピューティングデバイスは、メモリ、レジスタ、又は他の情報記憶デバイス、伝送デバイス、又はコンピューティングプラットフォームのディスプレイデバイス内の物理的な電子又は磁気量として表されるデータを操作し又は変換する。
【0131】
本明細書で論じる1つ又は複数のシステムは、任意の特定のハードウェアアーキテクチャ又は構成に限定されない。コンピューティングデバイスは、1つ又は複数の入力を条件として結果を提供する任意の適切なコンポーネントの配置を含むことができる。適切なコンピューティングデバイスは、記憶されたソフトウェアにアクセスする多目的マイクロプロセッサベースのコンピュータシステムを含み、当該ソフトウェアは、コンピューティングシステムを、汎用コンピューティング装置から本主題の1つ又は複数の実施形態を実現する特定のコンピューティング装置となるようにプログラムし又は構成する。任意の適切なプログラミング、スクリプト、又は他のタイプの言語又は言語の組み合わせは、本明細書におけるコンピューティングデバイスをプログラムし又は構成するために用いられるソフトウェアに含まれる教示を実現するために用いられることができる。
【0132】
本明細書に開示される方法の実施形態は、そのようなコンピューティングデバイスの操作において実行され得る。以上の例におけるブロックの順序は変化することができ、例えば、ブロックは、再順序付けされ、組み合わされ、及び/又はサブブロックに分割され得る。いくつかのブロック又はプロセスは、並行して実行されることができる。
【0133】
本明細書における「に適合した」又は「ように構成された」の使用は、付加的なタスク又はステップを実行するように適合又は構成されたデバイスを排除せず、開放的且つ包括的な文言として意図されている。さらに、「に基づく」の使用は、開放的且つ包括的であることを意図しており、1つ又は複数の挙げられた条件又は値「に基づく」処理、ステップ、計算、又は他の動作は実際に、挙げられた条件又は値以外の追加の条件又は値に基づくことができる。本明細書に含まれる見出し、リスト、及び番号付けは、説明を容易にするためだけのものであり、限定を意味するものではない。
【0134】
本主題は、その特定の実施形態を参照して詳細に説明されたが、当業者は、前述を理解した後、そのような実施形態に対する変更、変形、及び等価物を容易に提供することができることが理解される。従って、本開示は、限定ではなく例示の目的で提示されたものであり、当業者にとって明らかである変更、変形、及び/又は追加を含むことを排除しないことを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】