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

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

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

特表2024-532697ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出
<>
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図1
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図2
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図3
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図4
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図5
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図6
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図7
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図8
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図9
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図10
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図11
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図12
  • 特表-ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-10
(54)【発明の名称】ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出
(51)【国際特許分類】
   H04N 19/13 20140101AFI20240903BHJP
   H04N 19/186 20140101ALI20240903BHJP
   H04N 19/70 20140101ALI20240903BHJP
   H04N 19/436 20140101ALI20240903BHJP
   H04N 19/174 20140101ALI20240903BHJP
【FI】
H04N19/13
H04N19/186
H04N19/70
H04N19/436
H04N19/174
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024506578
(86)(22)【出願日】2022-08-26
(85)【翻訳文提出日】2024-02-01
(86)【国際出願番号】 US2022075502
(87)【国際公開番号】W WO2023028578
(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ターム(参考)】
5C159KK13
5C159LC09
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159PP16
5C159TA57
5C159TB06
5C159TC28
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
いくつかの実施例において、ビデオデコーダは、履歴ベースのライスパラメータ導出および波面並列処理(WPP)を使用して、ビデオのビットストリームからビデオを復号する。ビデオデコーダは、ビデオのパーティションを表すバイナリ文字列にアクセスし、パーティション内の各符号化ツリーユニット(CTU)を処理して、CTU内の復号化された係数値を生成する。当該プロセスは、CTUを復号化する前に、WPPが有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであるか否かを決定し、そうであれば履歴カウンタを初期値に設定することを含む。当該プロセスはさらに、履歴カウンタの値に基づいて、CTU内の変換ユニット(TU)のライスパラメータを計算して、CTUを復号化することと、算出されたライスパラメータに基づいて、CTU内のTUに対応するバイナリ文字列をTUの係数値に復号化することと、を含む。
【特許請求の範囲】
【請求項1】
ビデオの復号化方法であって、
前記ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションは、複数の符号化ツリーユニット(CTU)を含み、前記複数のCTUによって1つまたは複数のCTU行が構成される、ことと、
前記パーティション内の前記複数のCTUの各CTUに対して、
前記CTUを復号化する前に、並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、
前記並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記現在のCTU行の前記1番目のCTUであると決定したことに応答して、ライスパラメータ(Rice parameter)の色成分を計算するための履歴カウンタを初期値に設定することと、
前記CTUを復号化することと、を実行することと、
前記ビデオの復号化パーティションを出力することであって、前記復号化パーティションは、前記パーティション内の復号化済みの複数のCTUを含むことと、を含み、
前記CTUを復号化することは、
前記履歴カウンタに基づいて、前記CTU内の変換ユニット(TU)の前記ライスパラメータを計算することと、
算出されたライスパラメータに基づいて、前記CTU内の前記TUに対応するバイナリ文字列を前記TUの係数値に復号化することと、
前記係数値に基づいて、前記CTU内の前記TUの画素値を決定することと、を含む、
ビデオの復号化方法。
【請求項2】
前記パーティションは、フレーム、またはスライス、またはタイルである、
請求項1に記載のビデオの復号化方法。
【請求項3】
前記ライスパラメータの色成分cIdxを計算するための履歴カウンタを初期値に設定することは、
履歴ベースのライスパラメータ導出が有効であると決定したことに応答して、
StatCoeff[cIdx]=2*Floor(Log2(BitDepth-10))という演算によって前記初期値を計算することであって、StatCoeffは、前記履歴カウンタを表し、BitDepthは、前記ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数であること、または
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-lという演算によって前記初期値を計算することであって、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、
と定義される演算であること、
のうちの1つ又は複数を含む、
請求項1に記載のビデオの復号化方法。
【請求項4】
前記履歴カウンタに基づいて、前記CTU内のTUのライスパラメータを計算することは、
前記履歴カウンタに基づいて、置換変数HistValueを決定することと、
前記係数の所定領域における隣接係数の値と前記置換変数HistValueを用いて、前記CTUのTU内の係数の局所加算変数locSumAbsを計算することと、
前記局所加算変数locSumAbsに基づいて、前記TUの前記ライスパラメータを導出することと、を含む、
請求項1に記載のビデオの復号化方法。
【請求項5】
前記履歴カウンタに基づいて、置換変数HistValueを決定することは、HistValue[cIdx]=1<<StatCoeff[cIdx]という演算によって、色成分cIdxの置換変数HistValueを決定することを含み、
StatCoeffは、前記履歴カウンタを表す、
請求項4に記載のビデオの復号化方法。
【請求項6】
前記CTUのTU内の係数の局所加算変数locSumAbsを計算することは、
前記係数の前記所定領域における複数の隣接係数内の隣接係数が前記TUの外側に位置することを決定することと、
前記置換変数HistValueを前記TUの外側に位置する前記隣接係数の値として使用して、前記局所加算変数locSumAbsを計算することと、を含む、
請求項4に記載のビデオの復号化方法。
【請求項7】
前記CTUを復号化することは、さらに、
TUにおける1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1のように色成分cIdxの履歴カウンタを更新することと、
前記TUにおける1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1のように前記色成分cIdxの前記履歴カウンタを更新することと、を含み、
StatCoeffは、前記履歴カウンタを表し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である、
請求項1に記載のビデオの復号化方法。
【請求項8】
プログラムコードを記憶した非一時的なコンピュータ可読媒体であって、前記プログラムコードは、1つまたは複数の処理機器に、複数の動作を実行させ、前記複数の動作は、
ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションは、複数の符号化ツリーユニット(CTU)を含み、前記複数のCTUによって1つまたは複数のCTU行が構成される、ことと、
前記パーティション内の前記複数のCTUの各CTUに対して、
前記CTUを復号化する前に、並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、
前記並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記現在のCTU行の前記1番目のCTUであると決定したことに応答して、ライスパラメータ(Rice parameter)の色成分を計算するための履歴カウンタを初期値に設定することと、
前記CTUを復号化することと、を実行することと、
前記ビデオの復号化パーティションを出力することであって、前記復号化パーティションは、前記パーティション内の復号化済みの複数のCTUを含むことと、を含み、
前記CTUを復号化することは、
前記履歴カウンタに基づいて、前記CTU内の変換ユニット(TU)の前記ライスパラメータを計算することと、
算出されたライスパラメータに基づいて、前記CTU内の前記TUに対応するバイナリ文字列を前記TUの係数値に復号化することと、
前記係数値に基づいて、前記CTU内の前記TUの画素値を決定することと、を含む、
非一時的なコンピュータ可読媒体。
【請求項9】
前記パーティションは、フレーム、またはスライス、またはタイルである、
請求項8に記載の非一時的なコンピュータ可読媒体。
【請求項10】
前記ライスパラメータの色成分cIdxを計算するための履歴カウンタを初期値に設定することは、
履歴ベースのライスパラメータ導出が有効であると決定したことに応答して、
StatCoeff[cIdx]=2*Floor(Log2(BitDepth-10))という演算によって前記初期値を計算することであって、StatCoeffは、前記履歴カウンタを表し、BitDepthは、前記ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数であること、または
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-lという演算によって前記初期値を計算することであって、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、
と定義される演算であること、
のうちの1つ又は複数を含む、
請求項8に記載の非一時的なコンピュータ可読媒体。
【請求項11】
前記履歴カウンタに基づいて、前記CTU内のTUのライスパラメータを計算することは、
前記履歴カウンタに基づいて、置換変数HistValueを決定することと、
前記係数の所定領域における隣接係数の値と前記置換変数HistValueを用いて、前記CTUのTU内の係数の局所加算変数locSumAbsを計算することと、
前記局所加算変数locSumAbsに基づいて、前記TUの前記ライスパラメータを導出することと、を含む、
請求項8に記載の非一時的なコンピュータ可読媒体。
【請求項12】
前記履歴カウンタに基づいて、置換変数HistValueを決定することは、HistValue[cIdx]=1<<StatCoeff[cIdx]という演算によって、色成分cIdxの置換変数HistValueを決定することを含み、
StatCoeffは、前記履歴カウンタを表す、
請求項11に記載の非一時的なコンピュータ可読媒体。
【請求項13】
前記CTUのTU内の係数の局所加算変数locSumAbsを計算することは、
前記係数の前記所定領域における複数の隣接係数内の隣接係数が前記TUの外側に位置することを決定することと、
前記置換変数HistValueを前記TUの外側に位置する前記隣接係数の値として使用して、前記局所加算変数locSumAbsを計算することと、を含む、
請求項11に記載の非一時的なコンピュータ可読媒体。
【請求項14】
前記CTUを復号化することは、さらに、
TUにおける1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1のように色成分cIdxの履歴カウンタを更新することと、
前記TUにおける1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1のように前記色成分cIdxの前記履歴カウンタを更新することと、を含み、
StatCoeffは、前記履歴カウンタを表し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である、
請求項8に記載の非一時的なコンピュータ可読媒体。
【請求項15】
システムであって、
処理機器と、
前記処理機器に通信可能に接続された非一時的なコンピュータ可読媒体と、を備え、前記処理機器は、前記非一時的なコンピュータ可読媒体に記憶されたプログラムコードを実行することにより、複数の動作を実行するように構成され、前記複数の動作は、
ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、前記パーティションは、複数の符号化ツリーユニット(CTU)を含み、前記複数のCTUによって1つまたは複数のCTU行が構成される、ことと、
前記パーティション内の前記複数のCTUの各CTUに対して、
前記CTUを復号化する前に、並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、
前記並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記現在のCTU行の前記1番目のCTUであると決定したことに応答して、ライスパラメータ(Rice parameter)の色成分を計算するための履歴カウンタを初期値に設定することと、
前記CTUを復号化することと、を実行することと、
前記ビデオの復号化パーティションを出力することであって、前記復号化パーティションは、前記パーティション内の復号化済みの複数のCTUを含むことと、を含み、
前記CTUを復号化することは、
前記履歴カウンタに基づいて、前記CTU内の変換ユニット(TU)の前記ライスパラメータを計算することと、
算出されたライスパラメータに基づいて、前記CTU内の前記TUに対応するバイナリ文字列を前記TUの係数値に復号化することと、
前記係数値に基づいて、前記CTU内の前記TUの画素値を決定することと、を含む、
システム。
【請求項16】
前記パーティションは、フレーム、またはスライス、またはタイルである、
請求項15に記載のシステム。
【請求項17】
前記ライスパラメータの色成分cIdxを計算するための履歴カウンタを初期値に設定することは、
履歴ベースのライスパラメータ導出が有効であると決定したことに応答して、
StatCoeff[cIdx]=2*Floor(Log2(BitDepth-10))という演算によって前記初期値を計算することであって、StatCoeffは、前記履歴カウンタを表し、BitDepthは、前記ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数であること、または
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-lという演算によって前記初期値を計算することであって、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、
と定義される演算であること、
のうちの1つ又は複数を含む、
請求項15に記載のシステム。
【請求項18】
前記履歴カウンタに基づいて、前記CTU内のTUのライスパラメータを計算することは、
前記履歴カウンタに基づいて、置換変数HistValueを決定することと、
前記係数の所定領域における隣接係数の値と前記置換変数HistValueを用いて、前記CTUのTU内の係数の局所加算変数locSumAbsを計算することと、
前記局所加算変数locSumAbsに基づいて、前記TUの前記ライスパラメータを導出することと、を含む、
請求項15に記載のシステム。
【請求項19】
前記履歴カウンタに基づいて、置換変数HistValueを決定することは、HistValue[cIdx]=1<<StatCoeff[cIdx]という演算によって、色成分cIdxの置換変数HistValueを決定することを含み、
StatCoeffは、前記履歴カウンタを表す、
請求項18に記載のシステム。
【請求項20】
前記CTUを復号化することは、さらに、
TUにおける1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1のように色成分cIdxの履歴カウンタを更新することと、
前記TUにおける1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1のように前記色成分cIdxの前記履歴カウンタを更新することと、を含み、
StatCoeffは、前記履歴カウンタを表し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である、
請求項15に記載のシステム。
【請求項21】
ビデオの符号化方法であって、
前記ビデオのパーティションにアクセスすることであって、前記パーティションは、複数の符号化ツリーユニット(CTU)を含み、前記複数のCTUによって1つまたは複数のCTU行が構成される、ことと、
前記ビデオの前記パーティションを処理して、前記パーティションのバイナリ表現を生成することと、を含み、
前記処理は、
前記パーティション内の前記複数のCTUの各CTUに対して、
前記CTUを符号化する前に、並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、
前記並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記現在のCTU行の前記1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、
前記CTUを符号化することと、を実行することと、
前記パーティションの前記バイナリ表現を前記ビデオのビットストリームに符号化することと、を含み、
前記CTUを符号化することは、
前記履歴カウンタに基づいて、前記CTU内の変換ユニット(TU)のライスパラメータを計算することと、
算出されたライスパラメータに基づいて、前記TUの係数値を前記CTU内の前記TUに対応するバイナリ表現に符号化することと、を含む、
ビデオの符号化方法。
【請求項22】
前記パーティションは、フレーム、またはスライス、またはタイルである、
請求項21に記載のビデオの符号化方法。
【請求項23】
前記ライスパラメータの色成分cIdxを計算するための履歴カウンタを初期値に設定することは、
履歴ベースのライスパラメータ導出が有効であると決定したことに応答して、
StatCoeff[cIdx]=2*Floor(Log2(BitDepth-10))という演算によって前記初期値を計算することであって、StatCoeffは、前記履歴カウンタを表し、BitDepthは、前記ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数であること、または
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-lという演算によって前記初期値を計算することであって、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、
と定義される演算であること、
のうちの1つ又は複数を含む、
請求項21に記載のビデオの符号化方法。
【請求項24】
前記履歴カウンタに基づいて、前記CTU内のTUのライスパラメータを計算することは、
前記履歴カウンタに基づいて、置換変数HistValueを決定することと、
前記係数の所定領域における隣接係数の値と前記置換変数HistValueを用いて、前記CTUのTU内の係数の局所加算変数locSumAbsを計算することと、
前記局所加算変数locSumAbsに基づいて、前記TUの前記ライスパラメータを導出することと、を含む、
請求項21に記載のビデオの符号化方法。
【請求項25】
前記履歴カウンタに基づいて、置換変数HistValueを決定することは、HistValue[cIdx]=1<<StatCoeff[cIdx]という演算によって、色成分cIdxの置換変数HistValueを決定することを含み、
StatCoeffは、前記履歴カウンタを表す、
請求項24に記載のビデオの符号化方法。
【請求項26】
前記CTUのTU内の係数の局所加算変数locSumAbsを計算することは、
前記係数の前記所定領域における複数の隣接係数内の隣接係数が前記TUの外側に位置することを決定することと、
前記置換変数HistValueを前記TUの外側に位置する前記隣接係数の値として使用して、前記局所加算変数locSumAbsを計算することと、を含む、
請求項24に記載のビデオの符号化方法。
【請求項27】
前記CTUを符号化することは、さらに、
TUにおける1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1のように色成分cIdxの履歴カウンタを更新することと、
前記TUにおける1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1のように前記色成分cIdxの前記履歴カウンタを更新することと、を含み、
StatCoeffは、前記履歴カウンタを表し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である、
請求項21に記載のビデオの符号化方法。
【請求項28】
プログラムコードを記憶した非一時的なコンピュータ可読媒体であって、前記プログラムコードは、1つまたは複数の処理機器に複数の動作を実行させ、前記複数の動作は、
ビデオのパーティションにアクセスすることであって、前記パーティションは、複数の符号化ツリーユニット(CTU)を含み、前記複数のCTUによって1つまたは複数のCTU行が構成される、ことと、
前記ビデオの前記パーティションを処理して、前記パーティションのバイナリ表現を生成することと、を含み、
前記処理は、
前記パーティション内の前記複数のCTUの各CTUに対して、
前記CTUを符号化する前に、並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、
前記並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記現在のCTU行の前記1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、
前記CTUを符号化することと、を実行することと、
前記パーティションの前記バイナリ表現を前記ビデオのビットストリームに符号化することと、を含み、
前記CTUを符号化することは、
前記履歴カウンタに基づいて、前記CTU内の変換ユニット(TU)のライスパラメータを計算することと、
算出されたライスパラメータに基づいて、前記TUの係数値を前記CTU内の前記TUに対応するバイナリ表現に符号化することと、を含む、
非一時的なコンピュータ可読媒体。
【請求項29】
前記パーティションは、フレーム、またはスライス、またはタイルである、
請求項28に記載の非一時的なコンピュータ可読媒体。
【請求項30】
前記ライスパラメータの色成分cIdxを計算するための履歴カウンタを初期値に設定することは、
履歴ベースのライスパラメータ導出が有効であると決定したことに応答して、
StatCoeff[cIdx]=2*Floor(Log2(BitDepth-10))という演算によって前記初期値を計算することであって、StatCoeffは、前記履歴カウンタを表し、BitDepthは、前記ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数であること、または
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-lという演算によって前記初期値を計算することであって、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、
と定義される演算であること、
のうちの1つ又は複数を含む、
請求項28に記載の非一時的なコンピュータ可読媒体。
【請求項31】
前記履歴カウンタに基づいて、前記CTU内のTUのライスパラメータを計算することは、
前記履歴カウンタに基づいて、置換変数HistValueを決定することと、
前記係数の所定領域における隣接係数の値と前記置換変数HistValueを用いて、前記CTUのTU内の係数の局所加算変数locSumAbsを計算することと、
前記局所加算変数locSumAbsに基づいて、前記TUのライスパラメータを導出することと、を含む、
請求項28に記載の非一時的なコンピュータ可読媒体。
【請求項32】
前記履歴カウンタに基づいて、置換変数HistValueを決定することは、HistValue[cIdx]=1<<StatCoeff[cIdx]という演算によって、色成分cIdxの置換変数HistValueを決定することを含み、
StatCoeffは、前記履歴カウンタを表す、
請求項31に記載の非一時的なコンピュータ可読媒体。
【請求項33】
前記CTUのTU内の係数の局所加算変数locSumAbsを計算することは、
前記係数の前記所定領域における複数の隣接係数内の隣接係数が前記TUの外側に位置することを決定することと、
前記置換変数HistValueを前記TUの外側に位置する前記隣接係数の値として使用して、前記局所加算変数locSumAbsを計算することと、を含む、
請求項31に記載の非一時的なコンピュータ可読媒体。
【請求項34】
前記CTUを符号化することは、さらに、
TUにおける1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1のように色成分cIdxの履歴カウンタを更新することと、
前記TUにおける1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1のように前記色成分cIdxの前記履歴カウンタを更新することと、を含み、
StatCoeffは、前記履歴カウンタを表し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である、
請求項28に記載の非一時的なコンピュータ可読媒体。
【請求項35】
システムであって、
処理機器と、
前記処理機器に通信可能に接続された非一時的なコンピュータ可読媒体とを備え、前記処理機器は、前記非一時的なコンピュータ可読媒体に記憶されたプログラムコードを実行することにより、複数の動作を実行するように構成され、前記複数の動作は、
ビデオのパーティションにアクセスすることであって、前記パーティションは、複数の符号化ツリーユニット(CTU)を含み、前記複数のCTUによって1つまたは複数のCTU行が構成される、ことと、
前記ビデオの前記パーティションを処理して、前記パーティションのバイナリ表現を生成することと、を含み、
前記処理は、
前記パーティション内の前記複数のCTUの各CTUに対して、
前記CTUを符号化する前に、並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、
前記並列符号化が有効であり、且つ前記CTUが前記パーティション内の前記現在のCTU行の前記1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、
前記CTUを符号化することと、を実行することと、
前記パーティションの前記バイナリ表現を前記ビデオのビットストリームに符号化することと、を含み、
前記CTUを符号化することは、
前記履歴カウンタに基づいて、前記CTU内の変換ユニット(TU)のライスパラメータを計算することと、
算出されたライスパラメータに基づいて、前記TUの係数値を前記CTU内の前記TUに対応するバイナリ表現に符号化することと、を含む、
システム。
【請求項36】
前記パーティションは、フレーム、またはスライス、またはタイルである、
請求項35に記載のシステム。
【請求項37】
前記ライスパラメータの色成分cIdxを計算するための履歴カウンタを初期値に設定することは、
履歴ベースのライスパラメータ導出が有効であると決定したことに応答して、
StatCoeff[cIdx]=2*Floor(Log2(BitDepth-10))という演算によって前記初期値を計算することであって、StatCoeffは、前記履歴カウンタを表し、BitDepthは、前記ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数であること、または
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-lという演算によって前記初期値を計算することであって、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、
と定義される演算であること、
のうちの1つ又は複数を含む、
請求項35に記載のシステム。
【請求項38】
前記履歴カウンタに基づいて、前記CTU内のTUのライスパラメータを計算することは、
前記履歴カウンタに基づいて、置換変数HistValueを決定することと、
前記係数の所定領域における隣接係数の値と前記置換変数HistValueを用いて、前記CTUのTU内の係数の局所加算変数locSumAbsを計算することと、
前記局所加算変数locSumAbsに基づいて、前記TUのライスパラメータを導出することと、を含む、
請求項35に記載のシステム。
【請求項39】
前記履歴カウンタに基づいて、置換変数HistValueを決定することは、HistValue[cIdx]=1<<StatCoeff[cIdx]という演算によって、色成分cIdxの置換変数HistValueを決定することを含み、
StatCoeffは、前記履歴カウンタを表す、
請求項38に記載のシステム。
【請求項40】
前記CTUを符号化することは、さらに、
TUにおける1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1のように色成分cIdxの履歴カウンタを更新することと、
前記TUにおける1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化されると決定したことに応答して、StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1のように前記色成分cIdxの前記履歴カウンタを更新することと、を含み、
StatCoeffは、前記履歴カウンタを表し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である、
請求項35に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本願は、2021年8月26日に提出された、発明の名称が「History-Based Rice Parameter Derivations for Wavefront Parallel Processing in Video Coding」である米国仮出願第63/260,600号、2021年10月4日に提出された、発明の名称が「History-Based Rice Parameter Derivations for Wavefront Parallel Processing in Video Coding」である米国仮出願第63/262,078号、および2021年10月1日に提出された、発明の名称が「Representation of Bit Depth Range for VVC Operation Range Extension」である米国仮出願第63/251,385号の優先権を主張し、以上出願のすべての内容が参照により本願に援用される。
【0002】
本開示は、一般に、ビデオ処理のためのコンピュータ実現方法およびシステムに関する。具体的に、本開示は、ビデオ符号化における波面並列処理(Wavefront Parallel Processing)のための履歴ベースのライスパラメータ(Rice Parameter)導出に関する。
【背景技術】
【0003】
スマートフォン、タブレットコンピュータとコンピュータなどの至る所にあるカメラ付き機器は、ビデオまたは画像の撮影がかつてないほど簡単になっている。しかし、ショートビデオであっても、そのデータ量はかなり大きい可能性がある。ビデオ符号化技術(ビデオ符号化とビデオ復号化を含む)は、ビデオデータをより小さなサイズに圧縮することができ、それにより、様々なビデオを記憶、伝送する。ビデオ符号化は、幅広いアプリケーション(例えば、デジタルテレビ放送、インターネットおよびモバイルネットワーク上のビデオ伝送、リアルタイムアプリケーション(例えばビデオチャット、ビデオ会議)、DVD、ブルーレイディスクなど)に使用されている。ビデオを記憶するための記憶容量および/またはビデオを伝送するためのネットワーク帯域幅の消費を削減するために、ビデオ符号化スキームの効率を向上させることが期待されている。
【発明の概要】
【0004】
いくつかの実施例は、ビデオ符号化における波面並列処理のための履歴ベースのライスパラメータ導出に関する。1つの例において、ビデオの復号化方法を提供し、前記方法は、ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、パーティションは、複数の符号化ツリーユニット(CTU:coding tree unit)を含み、複数のCTUによって1つまたは複数のCTU行が構成されることと、パーティション内の複数のCTUの各CTUに対して、CTUを復号化する前に、並列符号化が有効であり、且つCTUがパーティション内の1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、並列符号化が有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、CTUを復号化することとを実行することと、係数値に基づいて、CTU内のTUの画素値を決定することとを含む、ことと、ビデオの復号化パーティションを出力することであって、復号化パーティションは、パーティション内の復号化済みの複数のCTUを含むことと、を含み、前記CTUを復号化することは、履歴カウンタに基づいて、CTU内の変換ユニット(TU:transform unit)のライスパラメータを計算することと、算出されたライスパラメータに基づいて、CTU内のTUに対応するバイナリ文字列をTUの係数値に復号化することと、を含む。
【0005】
別の例において、プログラムコードを記憶した、非一時的なコンピュータ可読媒体を提供し、プログラムコードは、1つまたは複数の処理機器によって実行されて、前記処理機器に複数の動作を実行させ、複数の動作は、ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、パーティションは、複数の符号化ツリーユニット(CTU:coding tree unit)を含み、複数のCTUによって1つまたは複数のCTU行が構成されることと、パーティション内の複数のCTUの各CTUに対して、CTUを復号化する前に、並列符号化が有効であり、且つCTUがパーティション内の1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、並列符号化が有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、CTUを復号化することとを実行することと、係数値に基づいて、CTU内のTUの画素値を決定することとを含む、ことと、ビデオの復号化パーティションを出力することであって、復号化パーティションは、パーティション内の復号化済みの複数のCTUを含むことと、を含み、前記CTUを復号化することは、履歴カウンタに基づいて、CTU内の変換ユニット(TU:transform unit)のライスパラメータを計算することと、算出されたライスパラメータに基づいて、CTU内のTUに対応するバイナリ文字列をTUの係数値に復号化することと、を含む。
【0006】
別の例において、システムを提供し、前記システムは、処理機器および処理機器に通信可能に接続された非一時的なコンピュータ可読媒体を備える。処理機器は、非一時的なコンピュータ可読媒体に記憶されたプログラムコードを実行することにより、複数の動作を実行するように構成され、複数の動作は、ビデオのパーティションを表すバイナリ文字列にアクセスすることであって、パーティションは、複数の符号化ツリーユニット(CTU:coding tree unit)を含み、複数のCTUによって1つまたは複数のCTU行が構成されることと、パーティション内の複数のCTUの各CTUに対して、CTUを復号化する前に、並列符号化が有効であり、且つCTUがパーティション内の1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、並列符号化が有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、CTUを復号化することとを実行することと、係数値に基づいて、CTU内のTUの画素値を決定することとを含む、ことと、ビデオの復号化パーティションを出力することであって、復号化パーティションは、パーティション内の復号化済みの複数のCTUを含むことと、を含み、前記CTUを復号化することは、履歴カウンタに基づいて、CTU内の変換ユニット(TU:transform unit)のライスパラメータを計算することと、算出されたライスパラメータに基づいて、CTU内のTUに対応するバイナリ文字列をTUの係数値に復号化することと、を含む。
【0007】
別の例において、ビデオの符号化方法を提供し、前記方法は、ビデオのパーティションにアクセスすることであって、パーティションは、複数の符号化ツリーユニット(CTU)を含み、複数のCTUによって1つまたは複数のCTU行が構成されることと、ビデオのパーティションを処理して、パーティションのバイナリ表現を生成することと、を含み、当該処理は、パーティション内の複数のCTUの各CTUに対して、CTUを符号化する前に、並列符号化が有効であり、且つCTUがパーティション内の1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、並列符号化が有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、CTUを符号化することと、パーティションのバイナリ表現をビデオのビットストリームに符号化することと、を含み、前記CTUを符号化することは、履歴カウンタに基づいて、CTU内の変換ユニット(TU)のライスパラメータを計算することと、算出されたライスパラメータに基づいて、TUの係数値をCTU内のTUに対応するバイナリ表現に符号化することと、を含むことと、を含む。
【0008】
別の例において、プログラムコードを記憶した、非一時的なコンピュータ可読媒体を提供し、プログラムコードは、1つまたは複数の処理機器によって実行されて、前記処理機器に複数の動作を実行させ、複数の動作は、ビデオのパーティションにアクセスすることであって、パーティションは、複数の符号化ツリーユニット(CTU)を含み、複数のCTUによって1つまたは複数のCTU行が構成されることと、ビデオのパーティションを処理して、パーティションのバイナリ表現を生成することと、を含み、当該処理は、パーティション内の複数のCTUの各CTUに対して、CTUを符号化する前に、並列符号化が有効であり、且つCTUがパーティション内の1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、並列符号化が有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、CTUを符号化することと、パーティションのバイナリ表現をビデオのビットストリームに符号化することと、を含み、前記CTUを符号化することは、履歴カウンタに基づいて、CTU内の変換ユニット(TU)のライスパラメータを計算することと、算出されたライスパラメータに基づいて、TUの係数値をCTU内のTUに対応するバイナリ表現に符号化することと、を含むことと、を含む。
【0009】
別の例において、システムを提供し、前記システムは、処理機器および処理機器に通信可能に接続された非一時的なコンピュータ可読媒体を備える。処理機器は、非一時的なコンピュータ可読媒体に記憶されたプログラムコードを実行することにより、複数の動作を実行するように構成され、複数の動作は、ビデオのパーティションにアクセスすることであって、パーティションは、複数の符号化ツリーユニット(CTU)を含み、複数のCTUによって1つまたは複数のCTU行が構成されることと、ビデオのパーティションを処理して、パーティションのバイナリ表現を生成することと、を含み、当該処理は、パーティション内の複数のCTUの各CTUに対して、CTUを符号化する前に、並列符号化が有効であり、且つCTUがパーティション内の1つまたは複数のCTU行のうちの現在のCTU行の1番目のCTUであることを決定することと、並列符号化が有効であり、且つCTUがパーティション内の現在のCTU行の1番目のCTUであると決定したことに応答して、ライスパラメータの色成分を計算するための履歴カウンタを初期値に設定することと、CTUを符号化することと、パーティションのバイナリ表現をビデオのビットストリームに符号化することと、を含み、前記CTUを符号化することは、履歴カウンタに基づいて、CTU内の変換ユニット(TU)のライスパラメータを計算することと、算出されたライスパラメータに基づいて、TUの係数値をCTU内のTUに対応するバイナリ表現に符号化することと、を含むことと、を含む。
【0010】
これらの例示的な実施例は、本開示を制限したり限定したりするためではなく、本開示の理解を助けるための例を提供することを意図するものである。具体的な実施形態では、他の実施例を議論し、且つ具体的な実施形態でさらなる説明が提供される。
【図面の簡単な説明】
【0011】
図1】本明細書で提出される実施例を実現するように構成されたビデオエンコーダの例示的なブロック図を示す。
図2】本明細書で提出される実施例を実現するように構成されたビデオデコーダの例示的なブロック図を示す。
図3】本開示のいくつかの実施例による、ビデオ内のピクチャの符号化ツリーユニット分割の一例を示す。
図4】本開示のいくつかの実施例による符号化ツリーユニットの符号化ユニット分割の一例を示す。
図5】符号化ブロックの要素の処理順序が予め決定された符号化ブロックの一例を示す。
図6】変換ユニットの境界付近に位置する係数の局所加算変数を計算するためのテンプレートパターンの一例を示す。
図7】波面並列処理が有効であるタイルの一例を示す。
図8】本開示のいくつかの実施例による履歴カウンタが計算されるフレーム、当該フレームに含まれるタイルと符号化ツリーユニットの一例を示す。
図9】本開示のいくつかの実施例による、ビデオのパーティションの符号化プロセスの一例を示す。
図10】本開示のいくつかの実施例による、ビデオのパーティションの復号化プロセスの一例を示す。
図11】本開示のいくつかの実施例による、ビデオのパーティションの符号化プロセスの別の一例を示す。
図12】本開示のいくつかの実施例による、ビデオのパーティションの復号化プロセスの別の一例を示す。
図13】本開示のいくつかの実施例を実現するためのコンピューティングシステムの一例を示す。
【発明を実施するための形態】
【0012】
図面を参照して以下の具体的な実施形態を読んだら、本開示の特徴、実施例および利点をよりよく理解することができるようになる。
【0013】
各実施例は、ビデオ符号化における波面並列処理のための履歴ベースのライス(Rice)パラメータ導出を提供する。上述したように、ますます多くのビデオデータが生成、記憶、伝送されている。ビデオ符号化技術の効率を高め、それにより、復号化されたビデオの視覚的品質を損なうことなく、より少ないデータを使用してビデオを表現することが有益である。符号化効率を向上させる1つの方法として、エントロピ符号化によって、できるだけ少ないビットを使用して、処理されたビデオサンプルをバイナリビットストリームに圧縮する。さらに、ビデオには通常、大量のデータが含まれるため、符号化(符号化および復号化)時の処理時間を短縮することが有益である。そのために、ビデオの符号化と復号化に並列処理(Parallel Processing)を採用することができる。
【0014】
エントロピ符号化(entropy coding)では、ビデオサンプルはバイナリbinに二値化され、コンテキスト自己適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)などの符号化アルゴリズムによってbinをビットにさらに圧縮できる。二値化には、二値化パラメータを計算する必要があり、バーサタイルビデオ符号化(VVC:Versatile Video Coding)仕様で規定されているトランケーテッドライス(TR:truncated Rice)と、制限付きk次指数ゴロム(EGk:k-th order Exp-Golomb)二値化プロセスとの組み合わせで使用されるライスパラメータなどが挙げられる。符号化効率を向上させるために、履歴ベースのライスパラメータ導出が使用される。この履歴ベースのライスパラメータ導出では、履歴カウンタ(StatCoeffと表記する)に基づいて、パーティション(例えばピクチャ、スライス(slice)またはタイル(tile))の現在の符号化ツリーユニット(CTU)内の変換ユニット(TU)のライスパラメータを導出し、当該履歴カウンタは、パーティション内の現在のCTUと以前のCTUとの中の以前のTUの係数に基づいて計算される。その後、ライスパラメータを導出するために、履歴カウンタを使用して置換変数(HistValueと表記する)を導出する。履歴カウンタは、TUの処理時に更新されてもよい。いくつかの例において、履歴カウンタが更新されても、TUの置換変数は変更されない。
【0015】
履歴カウンタを計算するためのパーティション内の以前のCTUと現在のCTUとの間の依存性は、並列処理の使用と衝突する可能性があり、並列処理の使用が制限されたり、妨げられたりすることによって、ビデオ符号化が不安定または非効率になる可能性がある。本明細書で説明される様々な実施例は、パーティション内のいくつかのCTU間の依存性を低減または排除することにより、並列処理を実現してビデオ処理プロセスを高速化するか、衝突が発生する前に衝突を検出して回避することによって、これらの問題に対処する。以下の非限定的な例を提供して、いくつかの実施例を紹介する。
【0016】
1つの実施例において、履歴カウンタを計算する際の異なるCTU行のCTU間の依存性を除去することにより、並列処理との依存性の衝突を排除する。例えば、パーティションの各CTU行に対して履歴カウンタを改めて初期化することができる。CTU行のうちの1番目のCTUのライスパラメータを計算する前に、履歴カウンタを初期値に設定することができる。後続の履歴カウンタは、同じCTU行内の以前のTUにおける履歴カウンタ値に基づいて計算されることができる。このようにして、履歴ベースのライスパラメータ導出において、CTUの依存性は同じCTU行内に限定され、異なるCTU行における並列処理に干渉せず、同時に、履歴ベースのライスパラメータ導出に基づいて実現される符号化ゲインのメリットを受けることができる。さらに、履歴ベースのライスパラメータ導出プロセスが簡略化され、計算の複雑さが軽減される。
【0017】
別の実施例において、履歴カウンタを計算する際のCTU間の依存性は、並列処理におけるCTU間の依存性と一致する。例えば、パーティションのCTU行において並列符号化を実施することができ、且つ連続する2つのCTU行の間にN-CTU遅延が存在し得る。つまり、直前のCTU行のN個のCTUを処理した後、CTU行の処理を開始する。この場合、直前のCTU行内の最初のN個又はそれより少ないCTUにおけるサンプルに基づいて、CTU行の履歴カウンタを計算することができる。これは、ストレージ同期プロセスによって実現することができる。CTU行の1番目のCTU内の最後のTUを処理した後、履歴カウンタを記憶変数に記憶することができる。その後、後続のCTU行の1番目のCTU内の1番目のTUを処理する前に、履歴カウンタを記憶変数における記憶値と同期させることができる。
【0018】
いくつかの例において、代替の履歴ベースのライスパラメータ導出が使用される。この代替の履歴ベースのライスパラメータ導出では、TUを処理する際に履歴カウンタStatCoeffが更新されると、置換変数HistValueを更新する。並列符号化との依存性の衝突を回避するために、同様に、履歴カウンタを計算するときのCTU間の依存性をN個以下のCTUに制限することができる。同様に、ストレージ同期プロセスを実現できる。CTU行の1番目のCTU内の最後のTUを処理した後、履歴カウンタと置換変数をそれぞれ記憶変数に記憶することができる。その後、後続のCTU行の1番目のCTU内の1番目のTUを処理する前に、履歴カウンタと置換変数を対応する記憶変数における記憶値と同期させることができる。
【0019】
このようにして、履歴カウンタを計算する際の連続する2つのCTU行のCTU間の依存性は、並列符号化を実行する際のCTU間の依存性より小さい(即ち、並列符号化を実行する際のCTU間の依存性と一致する)ように制限される。よって、履歴カウンタ計算は、並列処理に干渉せず、同時に、履歴ベースのライスパラメータ導出に基づいて実現される符号化ゲイン(coding gain)のメリットを受けることができる。
【0020】
代替可能なこととして、並列処理と履歴ベースのライスパラメータ導出がビットストリームにおいて共存することを防止する。例えば、ビデオエンコーダは、並列処理が有効であるか否かを決定することができる。並列処理が有効である場合、履歴ベースのライスパラメータ導出は無効になり、そうでない場合、履歴ベースのライスパラメータ導出が有効になる。同様に、ビデオエンコーダが履歴ベースのライスパラメータ導出が有効であると決定した場合、並列処理が無効になり、その逆も同様である。
【0021】
上記のように決定されたライスパラメータを使用して、ビデオエンコーダは、予測残差データ(prediction residual data)(例えば、残差の量子化変換係数(quantized transform coefficients of residuals))をバイナリbinに二値化し、エントロピ符号化アルゴリズムを使用してbinをビデオビットストリームに含まれるビットにさらに圧縮することができる。デコーダ側では、デコーダは、ビットストリームを復号化してバイナリbinに戻し、上記の任意の方法または方法の組み合わせを使用してライスパラメータを決定し、その後バイナリbinに基づいて係数を決定することができる。さらに、係数に対して逆量子化および逆変換を行って、表示用のビデオブロックを再構築することができる。
【0022】
いくつかの実施例において、ビデオのサンプルのビット深度(bit depth)(例えば、履歴カウンタStatCoeffの初期値を決定するためのビット深度)は、シーケンスパラメータセット(SPS:Sequence Parameter Set)シンタックス要素sps_bitdepth_minus8に基づいて決定されることができる。SPSシンタックス要素sps_bitdepth_minus8の値は、0から8の範囲である。同様に、復号化されたピクチャを記憶するための復号ピクチャバッファ(DPB:decoded picture buffer )のサイズは、ビデオパラメータセット(VPS)シンタックス要素vps_ols_dpb_bitdepth_minus8に基づいて決定されることができる。VPSシンタックス要素vps_ols_dpb_bitdepth_minus8の値は、0から8の範囲である。決定されたDPBサイズに基づいて、記憶容量をDPBに割り当てることができる。決定されたビット深度とDPBは、ビデオビットストリームをピクチャに復号する全プロセスで使用できる。
【0023】
本明細書で説明するように、いくつかの実施例は、履歴ベースのライスパラメータ導出と並列符号化を調整することにより、ビデオ符号化効率および計算効率の改善を提供する。このようにして、履歴ベースのライスパラメータ導出と並列符号化の間の衝突を回避することで、符号化プロセスの安定性を向上させることができる。さらに、履歴ベースのライスパラメータ導出におけるCTU間の依存性を並列符号化における依存性以下に制限することにより、符号化プロセスの計算効率を犠牲することなく、履歴ベースのライスパラメータ導出によって符号化ゲインを達成することができる。この技術は、将来のビデオ符号化標準において効果的な符号化ツールとなる可能性がある。
【0024】
次に図面を参照し、図1は、本明細書で提出される実施例を実現するように構成されたビデオエンコーダの例示的なブロック図を示す。図1に示す例において、ビデオエンコーダ100は、パーティション(partition)モジュール112、変換(transform)モジュール114、量子化(quantization)モジュール115、逆量子化(inverse quantization)モジュール118、逆変換(inverse transform)モジュール119、ループフィルタ(in-loop filter)モジュール120、イントラ予測(intra prediction)モジュール126、インター予測(inter prediction)モジュール124、動き推定(motion estimation)モジュール122、復号ピクチャバッファ(decoded picture buffer)130およびエントロピ符号化(entropy coding)モジュール116を備える。
【0025】
ビデオエンコーダ100の入力は、ピクチャ(フレームまたは画像とも呼ばれる)シーケンスを含む入力ビデオ102である。ブロックベースのビデオエンコーダでは、各ピクチャに対して、ビデオエンコーダ100は、パーティションモジュール112を採用してピクチャをブロック104に分割し、各ブロックは、複数の画素(pixel)を含む。ブロックは、マクロブロック(macroblock)、符号化ツリ(coding tree)ユニット、符号化ユニット、予測ユニットおよび/または予測ブロックであってもよい。1枚のピクチャは、異なるサイズのブロックを含んでもよく、且つビデオの異なるピクチャのブロックパーティションは、異なってもよい。各ブロックは、異なる予測(例えば、イントラ予測またはインター予測またはイントラとインターのハイブリット予測)を使用して符号化されてもよい。
【0026】
通常、ビデオ信号の1枚目のピクチャは、イントラ予測ピクチャであり、当該ピクチャは、イントラ予測のみを用いて符号化される。イントラ予測モードにおいて、同一ピクチャからのデータのみを用いてピクチャのブロックを予測する。イントラ予測のピクチャは、他のピクチャからの情報が存在しない状況で復号化できる。イントラ予測を実行するために、図1に示すビデオエンコーダ100は、イントラ予測モジュール126を採用することができる。イントラ予測モジュール126は、同一ピクチャの隣接ブロックの再構築ブロック136内の再構築サンプルを使用して、イントラ予測ブロック(予測ブロック134)を生成するように構成される。ブロックに対して選択されたイントラ予測モードに従ってイントラ予測を実行する。その後、ビデオエンコーダ100は、ブロック104とイントラ予測ブロック134との間の差を計算する。当該差は、残差ブロック106と呼ばれる。
【0027】
ブロックから冗長(redundancy)をさらに除去するために、変換モジュール114は、ブロック内のサンプルに変換を適用することによって、残差ブロック106を変換ドメインに変換する。変換の例は、離散コサイン変換(DCT:discrete cosine transform)または離散サイン変換(DST:discrete sine transform)を含むが、これらに限定されない。変換後の値は、変換係数と呼ばれ、変換係数は、変換ドメインにおける残差ブロックを表す。いくつかの例において、残差ブロックは、変換モジュール114によって変換されずに直接量子化されることができる。これは、変換スキップモードと呼ばれる。
【0028】
ビデオエンコーダ100はさらに、量子化モジュール115を使用して変換係数を量子化し、量子化係数を得ることができる。量子化は、サンプルを量子化ステップサイズで除算し、その後、四捨五入を行うことを含み、逆量子化は、量子化された値に量子化ステップサイズを乗算することを含む。このような量子化プロセスは、スカラ量子化(scalar quantization)と呼ばれる。量子化は、ビデオサンプル(変換済みまたは未変換)のダイナミックレンジを縮小ために使用され、それによってより少ないビットを使用してビデオサンプルを表現する。
【0029】
ブロック内の係数/サンプルの量子化は、独立して行うことができ、この量子化方法は、いくつかの既存のビデオ圧縮標準(例えば、H.264およびHEVC)で使用される。N×Mブロックの場合、係数の量子化と符号化のために、特定のスキャン順序でブロックの2D係数を1-Dアレイに変換することができる。ブロック内の係数の量子化は、スキャン順序情報を使用することができる。例えば、ブロック内の所定係数の量子化は、スキャン順序に沿った前の量子化値の状態によって決定されることができる。符号化効率をさらに向上させるために、複数の量子化器を使用することができる。現在の係数を量子化するためにどの量子化器を使用するかは、符号化/復号化スキャン順序において現在の係数の前に位置する情報に依存する。この量子化方法は、依存量子化(dependent quantization)と呼ばれる。
【0030】
量子化ステップサイズを使用して量子化の程度を調節することができる。例えば、スカラ量子化の場合、異なる量子化ステップサイズを適用して、より細かいまたはより粗い量子化を実現することができる。量子化ステップサイズの小さい方は、より細かい量子化に対応し、量子化ステップサイズが大きい方は、より粗い量子化に対応する。量子化ステップサイズは、量子化パラメータ(QP:quantization parameter)で示すことができる。ビデオの符号化ビットストリームで量子化パラメータを提供することにより、ビデオデコーダに同じ量子化パラメータを適用して復号化させることができる。
【0031】
その後、エントロピ符号化モジュール116を用いて量子化サンプルを符号化して、ビデオ信号のサイズをさらに縮小する。エントロピ符号化モジュール116は、エントロピ符号化アルゴリズムを量子化サンプルに適用するように構成される。いくつかの例において、量子化サンプルは、バイナリbinに二値化され、符号化アルゴリズムによってさらに、バイナリbinをビットに圧縮する。二値化方法の例は、トランケーテッドライス(TR:truncated Rice)および制限付きk次指数ゴロム(EGk:k-th order Exp-Golomb)二値化などを含むが、これらに限定されない。符号化効率を向上させるために、履歴ベースのライスパラメータ導出方法を使用し、ここで、変換ユニット(TU)を対象に導出されたライスパラメータは、前のTUから取得または更新された変数に基づいている。エントロピ符号化アルゴリズムの例は、可変長符号化(VLC:variable length coding)スキーム、コンテキスト自己適応型VLCスキーム(CAVLC:context adaptive VLC)、算術コーディングスキーム、二値化、コンテキスト自己適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースのコンテキスト自己適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔分割エントロピ(PIPE:probability interval partitioning entropy)符号化または他のエントロピ符号化技術を含むが、これらに限定されない。エントロピ符号化されたデータは、符号化ビデオ132を出力するビットストリーム(bitstream)に追加される。
【0032】
上記に記載されたように、ピクチャのブロックのイントラ予測に、隣接ブロックからの再構築ブロック136を使用する。ブロックの再構築ブロック136の生成に、当該ブロックの再構築残差の計算が関わる。ブロックの量子化残差に逆量子化および逆変換を適用することによって、再構築残差を決定することができる。逆量子化モジュール118は、量子化サンプルに逆量子化を適用して量子化解除係数を取得するように構成される。逆量子化モジュール118は、量子化モジュール115と同じ量子化ステップサイズを使用することによって、量子化モジュール115に適用された量子化スキームの逆スキームを適用する。逆変換モジュール119は、変換モジュール114に適用された変換の逆変換(逆DCTまたは逆DSTなど)を量子化解除のサンプルに適用するように構成される。逆変換モジュール119の出力は、画素ドメインにおけるブロックの再構築残差である。再構築残差をブロックの予測ブロック134に追加することによって、画素ドメインにおける再構築ブロック136を取得することができる。変換がスキップされたブロックの場合、逆変換モジュール119は、それらのブロックに適用されない。量子化解除のサンプルは、ブロックの再構築残差である。
【0033】
インター予測またはイントラ予測を使用して、第1イントラ予測ピクチャに続く後続のピクチャのブロックを符号化することができる。インター予測では、ピクチャ内のブロックの予測は、1つまたは複数の以前に符号化されたビデオピクチャに基づいて行われる。インター予測を実行するために、ビデオエンコーダ100は、インター予測モジュール124を用いる。インター予測モジュール124は、動き推定モジュール122によって提供される動き推定に基づいて、ブロックに対して動き補償を行うように構成される。
【0034】
動き推定モジュール122は、現在のピクチャの現在ブロック104を復号化参照ピクチャ108と比較して動き推定を行う。復号化参照ピクチャ108は、復号ピクチャバッファ130に記憶される。動き推定モジュール122は、復号化参照ピクチャ108から、現在ブロックに最も合致する参照ブロックを選択する。動き推定モジュール122はさらに、参照ブロックの位置(例えば、x、y座標)と現在ブロックの位置との間のオフセットを識別する。当該オフセットは、動きベクトル(MV:motion vector)と呼ばれ、インター予測モジュール124に提供される。場合によっては、複数の復号化参照ピクチャ108内のブロックに対して複数の参照ブロックが識別される。したがって、複数の動きベクトルを生成し、動きベクトルをインター予測モジュール124に提供する。
【0035】
インター予測モジュール124は、動きベクトルおよび他のインター予測パラメータを使用して動き補償を実行し、現在ブロック(即ち、インター予測ブロック134)の予測を生成する。例えば、動きベクトルに基づいて、インター予測モジュール124は、対応する参照ピクチャ内において動きベクトルに指し示される予測ブロックを特定することができる。複数の予測ブロックが存在する場合、これらの予測ブロックをいくつかの重みと組み合わせて、現在ブロックの予測ブロック134を生成する。
【0036】
インター予測ブロックの場合、ビデオエンコーダ100は、ブロック104からインター予測ブロック134を減算して残差ブロック106を生成することができる。上述したイントラ予測ブロックの残差と同じ方式で残差ブロック106に対して変換、量子化およびエントロピ符号化を行うことができる。同様に、インター予測ブロックの再構築ブロック136は、残差に対して逆量子化、逆変換を行い、そして、対応する予測ブロック134と組み合わせることにより得られる。
【0037】
動き推定のための復号化ピクチャ108を得るために、再構築ブロック136をループフィルタモジュール120によって処理する。ループフィルタモジュール120は、画素変換を平滑化して、ビデオ品質を向上させるように構成される。ループフィルタモジュール120は、1つまたは複数のループフィルタとして実装するように構成され、例えば、ディブロッキングフィルタ(de-blocking filter)、またはサンプル自己適応オフセット(SAO:sample-adaptive offset)フィルタ、または自己適応ループフィルタ(ALF:adaptive loop filter)などが挙げられる。
【0038】
図2は、本明細書で提出される実施例を実現するように構成されたビデオデコーダ200の一例を示す。ビデオデコーダ200は、ビットストリームにおける符号化ビデオ202を処理し、復号化ピクチャ208を生成する。図2に示す例において、ビデオデコーダ200は、エントロピ復号化モジュール216、逆量子化モジュール218、逆変換モジュール219、ループフィルタモジュール220、イントラ予測モジュール226、インター予測モジュール224および復号ピクチャバッファ230を備える。
【0039】
エントロピ復号化モジュール216は、符号化ビデオ202のエントロピ復号化を実行するように構成される。エントロピ復号化モジュール216は、量子化係数、イントラ予測パラメータとインター予測パラメータを含む符号化パラメータおよび他の情報を復号化する。いくつかの例において、エントロピ復号化モジュール216は、符号化ビデオ202のビットストリームをバイナリ表現に復号化し、その後、バイナリ表現を係数の量子化レベルに変換する。その後、エントロピ復号化の係数を逆量子化モジュール218によって逆量子化し、続いて、逆変換モジュール219によって画素ドメインに逆変換される。逆量子化モジュール218と逆変換モジュール219の機能はそれぞれ、上記の図1を参照して説明された逆量子化モジュール118と逆変換モジュール119に類似している。逆変換された残差ブロックは、対応する予測ブロック234に追加され、再構築ブロック236を生成することができる。変換がスキップされたブロックの場合、逆変換モジュール219は、それらのブロックに適用されない。逆量子化モジュール118によって生成された量子化解除のサンプルは、再構築ブロック236を生成するために使用される。
【0040】
特定のブロックの予測ブロック234は、ブロックの予測モードに基づいて生成される。ブロックの符号化パラメータが、ブロックに対してイントラ予測を行うことを指示する場合、同じピクチャ内の参照ブロックの再構築ブロック236をイントラ予測モジュール226に供給し、ブロックの予測ブロック234を生成する。ブロックの符号化パラメータが、ブロックに対してインター予測を行うことを指示する場合、予測ブロック234は、インター予測モジュール224によって生成される。イントラ予測モジュール226とインター予測モジュール224の機能はそれぞれ、図1のイントラ予測モジュール126とインター予測モジュール124に類似している。
【0041】
上記の図1に関する記載のように、インター予測に、1つまたは複数の参照ピクチャが関わる。ビデオデコーダ200は、ループフィルタモジュール220を参照ピクチャの再構築ブロックに適用することにより、参照ピクチャの復号化ピクチャ208を生成する。復号化ピクチャ208は、インター予測モジュール224によって使用されるために復号ピクチャバッファ230に記憶され、出力のためにも使用される。
【0042】
次に図3を参照すると、図3は、本開示のいくつかの実施例によるビデオ内のピクチャの符号化ツリーユニットの分割の一例を示す。上記の図1および図2に関する記載のように、ビデオのピクチャを符号化するために、ピクチャは、図3に示すように、VVCにおける符号化ツリーユニット(CTU)302のようなブロックに分割される。例えば、CTU302は、128×128画素のブロックであってもよい。特定の順序(例えば、図3に示す順序)に従ってCTUを処理する。いくつかの例において、図4に示すように、ピクチャ内の各CTU302は、1つまたは複数の符号化ユニット(CU)402に分割されることができ、CU402はさらに、予測および変換のために、予測ユニットまたは変換ユニット(TU)に分割されることができる。符号化スキームに応じて、CTU302は、異なる方式でCU402に分割されることができる。例えば、VVCにおいて、CU402は、長方形または正方形であってもよく、且つ予測ユニットまたは変換ユニットに分割することなく符号化することができる。各CU402は、そのルートCTU302と同じサイズであってもよいし、ルートCTU302の4×4ブロックほど小さい細分であってもよい。図4に示すように、VVCにおけるCTU302のCU402への分割は、四分木分割または二分木分割または三分木分割であってもよい。図4において、実線は四分木分割を示し、破線は二分木または三分木分割を示す。
【0043】
上記の図1および図2に関する記載のように、量子化は、ビデオ信号内のブロックの要素のダイナミックレンジを縮小ために使用され、より少ないビットを使用してビデオ信号を表現する。いくつかの例において、量子化の前に、ブロックの特定の位置にある要素は係数と呼ばれる。量子化の後、係数の量子化値は、量子化レベルまたはレベルと呼ばれる。量子化は通常、量子化ステップサイズ(quantization step size)での除算と、その後の四捨五入を含み、それに対して逆量子化は、量子化ステップサイズでの乗算を含む。この量子化プロセスは、スカラ量子化とも呼ばれる。ブロック内の係数の量子化は、独立して行うことができ、この独立した量子化方法は、いくつかの既存のビデオ圧縮標準(例えば、H.264、HEVCなど)で使用される。他の例において、例えば、VVCでは、依存量子化を採用する。
【0044】
N×Mブロックの場合、係数の量子化と符号化のために、特定のスキャン順序でブロックの2-D係数を1-Dアレイに変換することができ、符号化と復号化に同じスキャン順序が使用される。図5は、符号化ブロック(例えば、変換ユニット(TU))の一例を示し、ここで、所定のスキャン順序で符号化ブロックの係数を処理する。この例において、符号化ブロック500のサイズは8×8であり、当該処理は、位置Lの右下隅から始まり、左上隅のL63で終了する。ブロック500が変換ブロックである場合、図5に示す所定の順序は、最も高い周波数から最も低い周波数への順序である。いくつかの例において、ブロックの処理(例えば、量子化と二値化)は、所定のスキャン順序に従ってブロックの1番目の非0要素から始まる。例えば、位置L~L17の係数がすべて0で、且つL18の係数が0でない場合、当該処理は、L18の係数から始まり、スキャン順序に従って、L18の後の各係数に対して当該処理を行う。
【0045】
残差符号化(residual Coding)について
ビデオ符号化において、残差符号化は、量子化レベルをビットストリームに変換するために使用される。量子化の後、N×M変換ユニット(TU)符号化ブロックの場合、N×M個の量子化レベルが存在する。これらのN×M個のレベルは、0値または非0値であってもよい。レベルがバイナリの形ではない場合、非0レベルは、バイナリbinにさらに二値化される。コンテキスト自己適応型バイナリ算術コーディング(CABAC)は、binをビットにさらに圧縮することができる。さらに、コンテキストモデリングに基づく2つの符号化方法が存在する。具体的に、1つの方法は、隣接する符号化情報に基づいてコンテキストモデルを自己適応的に更新することである。このような方法は、コンテキスト符号化方法と呼ばれ、この方式で符号化されたbinは、コンテキスト符号化binと呼ばれる。それに対して、もう1つの方法は、1または0の確率が常に50%であると仮定し、そのため、自己適応せずに常に固定のコンテキストモデリングを用いる。このような方法は、バイパス(bypass)方法と呼ばれ、この方法で符号化されたbinは、バイパスbinと呼ばれる。
【0046】
VVCにおけるレギュラ残差コーディング(RRC:regular residual coding)ブロックの場合、最後の非0レベルの位置は、符号化スキャン順序に沿った最後の非0レベルの位置として定義される。最後の非0レベルの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が存在する場合、バイパス方法を用いてlast_sig_coeff_x_suffixおよびlast_sig_coeff_y_suffixを符号化する。RRCブロックは、複数の予め定義されたサブブロックによって構成されることができる。シンタックス要素sb_coded_flagは、現在のサブブロックのすべてのレベルが0に等しいか否かを示すために使用される。sb_coded_flagが1に等しい場合、現在のサブブロックには、少なくとも1つの非0係数が存在する。sb_coded_flagが0に等しい場合、現在のサブブロックの係数はすべて0である。しかし、最後の非0レベルを有する最後の非0サブブロックのsb_coded_flagは、ビットストリームに符号化せずに、符号化スキャン順序に従って、last_sig_coeff_xおよびlast_sig_coeff_yから1として導出される。さらに、DC位置を含む左上のサブブロックのsb_coded_flagも、ビットストリームに符号化せずに1として導出される。ビットストリームにおけるsb_coded_flagのシンタックス要素は、コンテキスト符号化方法によって符号化される。RRCは、図5に関して論じたように、逆の符号化スキャン順序で最後の非0サブブロックから始めてサブブロックごとに符号化する。
【0047】
最悪の場合のスループットを保証するために、予め定義された値remBinsPasslを使用して、コンテキスト符号化binの最大数を制限する。1つのサブブロック内では、RRCは、逆の符号化スキャン順序で各位置のレベルを符号化する。remBinsPasslが4より大きい場合、現在のレベルを符号化する際に、まず、sig_coeff_flagと名付けられたフラグをビットストリームに符号化して、レベルが0であるか否かを示す。レベルが0ではない場合、abs_level_gtx_flag[n][0]を符号化して、絶対レベルが1であるか1より大きいかを示し、ここでnは、スキャン順序に沿ったサブブロック内の現在の位置のインデックスである。絶対レベルが1より大きい場合、par_level_flagを符号化して、レベルがVVCにおいて奇数であるか偶数であるかを示し、そして、abs_level_gtx_flag[n][l]が存在する。フラグpar_level_flagとabs_level_gtx_flag[n][l]は一緒に使用され、レベルが2、または3、または3より大きいことを示す。上記の各シンタックス要素をコンテキスト符号化されたbinに符号化した後、remBinsPasslの値は、1つ減少する。
【0048】
絶対レベルが3より大きいか、又はremBinsPasslの値が4以下である場合、コンテキスト符号化方法によって上記のbinを符号化した後、他の2つのシンタックス要素abs_remainderとdec_abs_levelを残りのレベルのためにバイパス符号化binに符号化することができる。さらに、ブロックの各レベルの符号も量子化レベルを表すために符号化され、ブロックの各レベルの符号は、バイパス符号化binに符号化される。
【0049】
もう1つの残差符号化方法では、残差ブロックのレベル符号化のために、abs_level_gtxX_flagと残りのレベルを使用して、シンタックス要素を条件付きで解析することができ、レベルの絶対値の対応する二値化は、表1に示すとおりである。ここで、abs_level_gtxX_flagは、レベルの絶対値がXより大きいか否かを示し、ここでXは、0、1、2またはNなどの整数である。abs_level_gtxY_flagが0である場合、フラグabs_level_gtx(Y+1)が存在しなく、ここで、Yは、0からN-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を符号化し、バイパス方法を用いて残りのレベルを符号化する。
【表1】
【0050】
変換スキップ残差符号化モード(TSRC:transform skip residual coding mode)で符号化されるブロックに対して、TSRCは左上のサブブロックから始め、符号化スキャン順序に沿ってサブブロックごとに符号化する。同様に、シンタックス要素sb_coded_flagは、現在のサブブロックのすべての残差が0に等しいか否かを示すために使用される。特定の条件が発生した場合、最後のサブブロック以外のすべてのサブブロックのsb_coded_flagのすべてのシンタックス要素がビットストリームに符号化される。最後のサブブロックの前のすべてのサブブロックのすべてのsb_coded_flagが1に等しくない場合、最後のサブブロックのsb_coded_flagがビットストリームに符号化せずに1として導出される。最悪の場合のスループットを保証するために、予め定義された値RemCcbsを使用して、最大のコンテキスト符号化binを制限する。現在のサブブロックに非0レベルがある場合、TSRCは、符号化スキャン順序で各位置のレベルを符号化する。RemCcbsが4より大きい場合、コンテキスト符号化方法を用いて次のシンタックス要素を符号化する。各レベルについて、まず、sig_coeff_flagをビットストリームに符号化して、レベルが0であるか否かを指示する。レベルが0でない場合、coeff_sign_flagを符号化して、レベルが正であるかそれとも負であるかを指示する。そして、abs_level_gtx_flag[n][0]を符号化して、現在の位置の現在の絶対レベルが1より大きいか否かを示し、ここで、nは、スキャン順序に沿ったサブブロック内の現在の位置のインデックスである。abs_level_gtx_flag[n][0]が0でない場合、par_level_flagを符号化する。コンテキスト符号化方法を用いて上記の各シンタックス要素を符号化した後、RemCcbsの値は1つ減少する。
【0051】
現在のサブブロック内のすべての位置に対して上記のシンタックス要素を符号化した後、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_flagを符号化する。まとめると、コンテキスト符号化binの総数を制限し、最悪の場合のスループットを保証するために、RRCに予め定義されたカウンタremBinsPasslが存在するか、又はTSRCにRemCcbsが存在する。
【0052】
ライスパラメータ導出について
VVCの現在のRRC設計において、バイパス(bypass)binに符号化された2つのシンタックス要素abs_remainderとdec_abs_levelは、残りのレベルのビットストリームに存在する可能性がある。VVC仕様で規定されたトランケーテッドライス(TR:truncated Rice)と制限付きk次指数ゴロム(EGk)二値化プロセスの組み合わせによって、abs_remainderとdec_abs_levelを二値化し、これはライスパラメータで所定のレベルを二値化する必要がある。最適なライスパラメータを得るために、如何に説明するように局所加算方法を採用する。
【0053】
アレイAbsLevel[xC][yC]は、色成分インデックスcIdxの現在の変換ブロックの変換係数レベルの絶対値のアレイを表す。色成分インデックスcIdxと左上隅の輝度位置(x0,y0)の変換ブロックを有するアレイAbsLevel[x][y]が与えられると、以下のダミーコードで規定された方式によって局所加算変数locSumAbsを導出する。
【0054】
locSumAbs = 0
( xC < ( 1 << log2TbWidth ) - 1 )である場合、{
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
( xC < ( 1 << log2TbWidth ) - 2 ) である場合、
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
( yC < ( 1 << log2TbHeight ) - 1 ) である場合、
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ]
}
( yC < ( 1 << log2TbHeight ) - 1 ) である場合、{
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
( yC < ( 1 << log2TbHeight ) - 2 ) である場合、
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
}
locSumAbs = Clip3( 0, 31, locSumAbs - baseLevel * 5 )
【0055】
ここで、log2TbWidthとlog2TbHeightはそれぞれ、変換ブロックの幅と高さの底2の対数である。abs_remainderとdec_abs_levelの場合、変数baseLevelはそれぞれ、4と0である。局所加算変数locSumAbsが与えられると、表2に規定された方式によってライスパラメータcRiceParamを導出する。
【表2】
【0056】
履歴ベースのライスパラメータ導出について
係数がTUの境界に位置するか、またはライス方法をまず使用して復号化する場合、ライスパラメータ導出のために使用されるテンプレート計算(template computation)は、係数の推定が不正確であることが生じる可能性がある。これらの係数について、幾つかのテンプレートがTUの外側に位置し、しかも値として0と解釈され、又は初期化される可能性があるため、テンプレート計算が0に偏る。図6は、TUの境界付近に位置する係数のlocSumAbsを計算するためのテンプレートパターンの一例を示す。図6は、複数のCUに分割されたCTU602を示し、各CUは、複数のTUを含む。TU604について、現在の係数の位置は、黒のブロックで示され、テンプレートパターンにおける隣接サンプルの位置は、パターン化されたブロックで示される。パターン化されたブロックは、局所加算変数locSumAbsを計算するための現在の係数の所定領域を示す。
【0057】
図6において、現在の係数606がTU604の境界(boundary)に近いため、テンプレートパターン内の現在の係数606の一部の隣接サンプル(例えば、隣接サンプル608Bと608E)は、TU境界の外側に位置する。上記のライスパラメータ導出では、局所加算変数locSumAbsを計算するとき、境界の外側に位置するこれらの隣接サンプルは0に設定されるため、ライスパラメータ導出が不正確になる。高ビット深度のサンプル(例えば、10ビットを超える)の場合、TU境界の外側に位置する隣接サンプルは、大きな数であってもよい。これらの大きな数を0に設定すると、ライスパラメータ導出にさらに多くの誤差が生じる。
【0058】
計算テンプレートに基づくライス推定の精度を向上させるために、現在のTUの外側に位置するテンプレート位置に対して、0で初期化せずに、履歴導出値を使用して局所加算変数locSumAbsを更新することを提案する。以下では、第9.3.3.2条項のVVC仕様テキスト抜粋によって当該方法の実現形態について説明し、ここで、提案されたテキストには、下線が付けられている。
【0059】
隣接する係数/サンプル値の履歴を維持するために、各色成分の履歴カウンタStatCoeff[cIdx]が利用され、ここで、cIdx=0、1、2であり、それぞれ、3つの色成分Y、U、Vを表す。CTUがパーティション(例えば、ピクチャ、スライスまたはタイル)内の1番目のCTUである場合、StatCoeff[cIdx]は、以下のように初期化される。
StatCoeff[idx]=2*Floor(Log2(BitDepth-10) (1)
【0060】
ここで、BitDepthは、ビデオの輝度とクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表し、Log2(x)は、xの底2の対数である。TU復号化と履歴カウンタ更新の前に、置換変数HistValueは、次のように初期化される。
HistValue[cIdx]=1<<StatCoeff[cIdx] (2)
【0061】
置換変数HistValueは、TU境界の外側に位置する隣接サンプル(例えば、隣接サンプルは、TUの外側に位置する水平座標または垂直座標を有する)の推定として使用される。次のダミーコードによって規定された方式に従って、局所加算変数locSumAbsを再度導出し、ここで、変更点には、下線が付けられている。
locSumAbs = 0
( xC < ( 1 << log2TbWidth ) - 1 )である場合、{
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
( xC < ( 1 << log2TbWidth ) - 2 )である場合、
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
そうでない場合
locSumAbs += HistValue
( yC < ( 1 << log2TbHeight ) - 1 )である場合、
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ]
そうでない場合
locSumAbs += HistValue
}
そうでない場合
locSumAbs += 2 * HistValue
( yC < ( 1 << log2TbHeight ) - 1 )である場合、{
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
( yC < ( 1 << log2TbHeight ) - 2 )である場合、
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
そうでない場合
locSumAbs += HistValue
}
そうでない場合
locSumAbs += HistValue
【0062】
履歴カウンタStatCoeffは、指数移動平均プロセスによって、1番目の非0のゴロム-ライス符号化の変換係数(abs_remainder[cIdx]またはdec_abs_level[cIdx])からTUごとに1回更新される。TU内の1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化される時に、色成分cIdxの履歴カウンタStatCoeffを次のように更新する。
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1 (3)
【0063】
TU内の1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化される時に、色成分cIdxの履歴カウンタStatCoeffを次のように更新する。
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1 (4)
【0064】
更新されたStatCoeffは、次のTUを復号化する前に、式(2)に従って次のTUの置換変数HistValueを計算するために使用することができる。
【0065】
波面並列処理(WPP)について
WPPは、並列符号化アルゴリズムを提供するように設計されている。VVCでWPPが有効である場合、フレームまたはタイルまたはスライスの各CTU行が単独パーティションを構成する。WPPは、SPS要素sps_entropy_coding_sync_enabled_flagによって有効/無効にされる。図7は、WPPが有効であるタイルの一例を示す。図7において、タイルの各CTU行は、その直前のCTU行に対して1つのCTUの遅延で処理される。このようにして、各CTU行の末尾でパレット符号化が有効になっている場合、CABACコンテキスト変数とパレット予測器を除いて、パーティションの境界で連続するCTU行間の依存性を破壊しない。符号化効率の潜在的な損失を軽減するために、自己適応されたCABACコンテキスト変数とパレット予測器の内容は、直前のCTU行の一番目の符号化CTUから現在のCTU行の1番目のCTUに伝播される。WPPは、CTUの通常のラスタスキャン順序を変更しない。
【0066】
WPPが有効である場合、複数のスレッド(数がパーティション(例えば、タイル、スライスまたはフレーム)内のCTU行の数まで至る)が並列して動作して各CTU行を処理する。デコーダでWPPを使用することにより、各復号化スレッドは、パーティションの1つのCTU行を処理する。各CTUに対して、直前のCTU行内の上部に隣接するCTUの復号化が完了していなければならないようにスレッド処理をスケジューリングする必要がある。最後のCTU行以外の各CTU行内の1番目のCTUの符号化を完了した後、すべてのCABACコンテキスト変数とパレット予測器の内容を記憶できるように、WPPの追加の小さなオーバーヘッドが追加される。
【0067】
高ビット深度および高ビットレートのビデオ符号化に対して上で論じた履歴ベースのライスパラメータ導出が有効である場合、直前のCTU行内の最後のStatCoeffは、現在のCTU行内の1番目のTUに渡される。よって、WPPが同時に有効である場合、当該プロセスは、WPPに干渉し、WPPの並列性を破壊する。本開示において、並列符号化(例えば、WPP)が有効な場合に当該問題を解決するために、いくつかの解決策が提案される。
【0068】
1つの実施例において、履歴カウンタStatCoeffを計算する際の異なるCTU行のCTU間の依存性を除去することにより、並列符号化に対する履歴ベースのライスパラメータ導出の干渉を排除する。当該実施例において、直前のCTU行から得られた履歴カウンタStatCoeff値を使用することではなく、StatCoeff[cIdx]の初期値を使用して、パーティション(例えば、フレームまたはタイルまたはスライス)の各CTU行内の1番目のabs_remainder[cIdx]またはdec_abs_level[cIdx]を符号化し、ここで、cIdxは、色成分のインデックスである。
【0069】
一例として、StatCoeff[cIdx]の初期値を次のように決定することができる。
StatCoeff[idx]=2*Floor(Log2(BitDepth-10)) (5)
【0070】
ここで、BitDepthは、輝度またはクロマアレイのサンプルのビット深度を規定し、Floor(x)は、x以下の最大の整数を表す。別の例として、StatCoeff[cIdx]の初期値を次のように決定することができる。
StatCoeff[idx]=Clip(MIN_Stat,MAX_Stat,(int)((19-QP)/6))-l (6)
【0071】
ここで、MIN_Stat、MAX_Statは、予め定義された2つの整数であり、QPは、各スライスの初期QPであり、Clip()は、以下のように定義された演算である。
【0072】
パーティション(例えば、フレーム、タイルまたはスライス)の各CTU行の1番目のTUを符号化する前に、置換変数HistValueは以下のように計算される。
HistValue[cIdx]=1<<StatCoeff[cIdx] (8)
【0073】
HistValueは、上記の局所加算変数locSumAbsを計算するために使用されることができる。HistValueは、指数移動平均プロセスによって、1番目の非0のゴロム-ライス符号化の変換係数(abs_remainder[cIdx]またはdec_abs_level[cIdx])からTUごとに1回更新されることができる。TU内の1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化される時に、色成分cIdxの履歴カウンタStatCoeff[cIdx]を次のように更新する。
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1 (9)
【0074】
TU内の1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化される時に、色成分cIdxの履歴カウンタStatCoeff[cIdx]を次のように更新する。
StatCoeff[cIdx] = (StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1 (10)
【0075】
更新されたStatCoeff[cIdx]は、現在のCTUの次のTUまたは現在のCTU行内の次のCTUの1番目のTUに対して、式(8)に示すように置換変数HistValueを計算するために使用される。
【0076】
図8は、フレーム802と当該フレームに含まれるCTUの一例を示す。当該例において、フレーム802は、タイル804Aとタイル804Bという2つのタイルを含む。タイル804Aは、CTU行1~CTU行4という4つのCTU行を含む。1番目のCTU行は、CTU0~CTU9を含み、2番目のCTU行は、CTU10~CTU19を含む。同様に、タイル804BもCTU行1’~CTU行4’という4つのCTU行を含む。1番目のCTU行は、CTU0’~CTU9’という10個のCTUを含み、2番目のCTU行は、CTU10’~CTU19’を含み、以下同様である。
【0077】
当該実施例によれば、式(5)または(6)に従ってタイル804AのStatCoeff[cIdx]の初期値を決定することができる。CTU行1~CTU行4内の各CTU行の1番目のTUを符号化する前に、式(8)を使用し、StatCoeff[cIdx]の初期値を利用して置換変数HistValue[cIdx]を計算する。例えば、CTU0の1番目のTUを符号化する前に、式(8)を使用して変数HistValueを計算する。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の場合、式(8)に従って、CTU0内のTUからの最新のStatCoeffを利用してHistValueを計算する。当該プロセスは、現在のCTU行1内の最後のCTU(即ち、CTU9)が処理されるまで繰り返すことができる。
【0078】
タイル804Aの2番目のCTU行の場合、CTU10の1番目のTU(即ち、2番目のCTU行の1番目のCTU)を符号化する前に、式(5)または(6)に従って履歴カウンタStatCoeffを初期化する。2番目のCTU行のCTU内のTUに対して、上記のCTU行1に関して説明したプロセスと類似するプロセスを実行する。同様に、CTU20とCTU30内の各々の1番目のTUを符号化する前に、変数StatCoeffは、式(5)または(6)に従って再度初期化される。
【0079】
タイル804Bも類似する方式で処理できる。CTU行l’~CTU行4’(即ち、CTU0’、CTU10’、CTU20’およびCTU30’)内の各々の1番目のTUを符号化する前に、式(5)または(6)に従ってStatCoeff[cIdx]の値を初期化し、式(8)を使用して履歴カウンタHistValueを計算する。算出された履歴カウンタHistValueは、各CTU行の1番目のCTUと残りのCTU内のTUのlocSumAbsとライスパラメータを計算するために使用される。さらに、履歴カウンタStatCoeffは、式(9)または(10)に従ってTUごとに最大1回だけ更新されてもよく、StatCoeffの更新値は、同じCTU行内の次のTUのHistValueを決定するために使用される。
【0080】
図8は、804Aと804Bの2つのタイルを含むフレーム802として説明されているが、同じプロセスは、複数のタイルを含むスライス、複数のスライスを含むフレームなどの他のシナリオにも適用される。これらのシナリオのうちの任意のシナリオにおいて、パーティション(例えばフレーム、タイルまたはスライス)の各CTU行内の1番目のTUを符号化する前に、ライスパラメータ導出におけるCTU行の依存性を排除するために、履歴カウンタStatCoeff[cIdx]の値は、初期値にリセットされる。
【0081】
下線で示されるVVCの可能な仕様変更は、以下の規定の通りである。
【表3】
【0082】
9.3.2.1に対して、VVCの別の可能な仕様変更は、以下の規定の通りである。
【表4】
【0083】
ビデオサンプルのビット深度
VVCバージョン2でサポートされる入力ビデオのビット深度は10ビットを超えることができる。ビデオビット深度が高いほど、圧縮歪みが低くなり、復号化されたビデオにより高い視覚的品質を提供することができる。入力ビデオの高ビット深度をサポートするために、対応するシーケンスパラメータセット(SPS:Sequence Parameter Set)シンタックス要素sps_bitdepth_minus8とビデオパラメータセット(VPS:Video Parameter Set)シンタックス要素vps_ols_dpb_bitdepth_minus8[i]のセマンティックを次のように変更することができる。
【0084】
sps_bitdepth_minus8は、輝度とクロマアレイのサンプルのビット深度BitDepth、および輝度とクロマ量子化パラメータ範囲オフセットの値QpBdOffsetを次のように指定する。
BitDepth = 8 + sps_bitdepth_minus8 (x1)
QpBdOffset = 6 * sps_bitdepth_minus8 (x2)
【0085】
sps_bitdepth_minus8は、0~8の範囲内(エンドポイントを含む)でなければならない。
【0086】
sps_video_parameter_set_idが0より大きく、且つSPSが、VPSによって指定されたi番目(iは、0からNumMultiLayerOlss - 1(エンドポイントを含む)の範囲内である)の多層OLSに含まれる層によって参照される場合、ビットストリーム整合性の要件は、sps_bitdepth_minus8の値がvps_ols_dpb_bitdepth_minus8[i]の値以下でなければならないことである。
【0087】
vps_ols_dpb_bitdepth_minus8[i]は、i番目の多層OLSのCVS内のCLVSによって参照されるすべてのSPSのsps_bitdepth_minus8の最大許容値を指定する。vps_ols_dpb_bitdepth_minus8[i]の値は、0~8の範囲内(エンドポイントを含む)でなければならない。
【0088】
注2-i番目の多層OLSを復号化するために、デコーダは、シンタックス要素vps_ols_dpb_pic_width[i]、vps_ols_dpb_pic_height[i]、vps_ols_dpb_chroma_format[i]およびvps_ols_dpb_bitdepth_minus8[i]の値に基づいて、安全にDPBにメモリを割り当てることができる。
【0089】
上記から分かるように、輝度とクロマアレイのサンプルのビット深度BitDepthは、式(x1)に従って、SPSシンタックス要素sps_bitdepth_minus8に基づいて導出されることができる。決定されたBitDepth値を利用して、上記に記載されたように履歴カウンタStatCoeff、置換変数HistValueおよびライスパラメータを導出することができる。
【0090】
VPSシンタックス要素vps_ols_dpb_bitdepth_minus8[i]は、復号ピクチャバッファ(DPB:decoded picture buffer)のサイズを導出するために使用されることができる。符号化ビットストリームには、複数のビデオ層が存在することができる。ビデオパラメータセットは、対応するシンタックス要素を指定するために使用される。ビデオの復号化の場合、DPBは、参照ピクチャを記憶するために使用されることができ、以前に符号化されたピクチャが他のピクチャを符号化するときに使用する予測信号を生成するために使用されるようにする。DPBはさらに、復号化ピクチャを並べ替えて、復号化ピクチャが正しい順序で出力および/または表示できるようにすることができる。DPBは、仮想参照デコーダによって指定された出力遅延にも使用できる。復号化ピクチャは、DPBにおいて仮想参照デコーダに指定された所定の期間だけ持続的に保存され、所定の期間が経過した後に出力される。
【0091】
安全に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(ビット単位)= vps_ols_dpb_pic_width[i] * vps_ols_dpb_pic_height[i] * (vps_ols_dpb_bitdepth_minus8[i]+8)
(vps_ols_dpb_chroma_format[ i ]== 0) //モノクロームである場合、
picture_size = picture_size1;
そうでない場合、(vps_ols_dpb_chroma_format[ i ]== 1) // 4:2:0である場合、
picture_size = 1.5 * picture_size1;
そうでない場合、(vps_ols_dpb_chroma_format[ i ]== 2 // 4:2:2である場合、
picture_size = 2 * picture_size1;
そうでない場合、(vps_ols_dpb_chroma_format[ i ]== 3 // 4:4:4である場合、
picture_size = 3 * picture_size1;
【0092】
よって、DPBのサイズは、picture_sizeによって決定される。言い換えれば、DPBのサイズは、サンプルのクロマフォーマットに従って決定することができる。ビデオフレームがモノクロームフレームである場合、バッファリング待ちのフレームのサイズが基本ピクチャサイズpicture_size1であると決定する。カラービデオフレームのカラーサブサンプリングが4:2:0である場合、フレームのサイズが基本ピクチャサイズpicture_sizelの1.5倍であると決定し、カラービデオフレームのカラーサブサンプリングが4:2:2である場合、フレームのサイズが基本ピクチャサイズpicture_sizelの2倍であると決定し、カラービデオフレームのカラーサブサンプリングが4:4:4である場合、フレームのサイズが基本ピクチャサイズpicture_sizelの3倍であると決定する。カラーサブサンプリングに従って、DPBのサイズが、DPBに記憶されるフレームの数にフレームのサイズを乗算したものであると決定することができる。
【0093】
図9は、本開示のいくつかの実施例による、ビデオのパーティションの符号化プロセス900の一例を示す。1つまたは複数のコンピューティング機器(例えば、ビデオエンコーダ100を実装するコンピューティング機器)は、適切なプログラムコード(例えば、エントロピ符号化モジュール116を実装するプログラムコード)を実行することにより図9に示す動作を実現する。例示の目的で、図に示されるいくつかの例を参照してプロセス900を説明する。しかし、他の実現形態も可能である。
【0094】
ブロック902において、プロセス900は、ビデオ信号のパーティションにアクセスすることを含む。パーティションは、ビデオフレーム、スライス、またはタイルであってもよいし、符号化を実行する際に、ビデオエンコーダをユニットとして処理される任意の種類のパーティションであってもよい。パーティションは、図8に示すCTU行に配列されたCTUセットを含む。図6に示すように、各CTUは、1つまたは複数のCTUを含み、且つ各CTUは、符号化のための複数のTUを含む。
【0095】
ブロック904において、プロセス900は、パーティションをビットに符号化するために、パーティション内のCTUセットの各CTUを処理することを含み、ブロック904は、906~914を含む。ブロック906において、プロセス900は、並列符号化アルゴリズムが有効であるか否か、現在のCTUがCTU行の1番目のCTUであるか否かを決定することを含む。いくつかの例において、並列符号化は、フラグによって指示され、当該フラグの値が0である場合、並列符号化が無効であることを示し、当該フラグの値が1である場合、並列符号化が有効であることを示す。並列符号化アルゴリズムが有効であり、現在のCTUがCTU行の1番目のCTUであると決定した場合、プロセス900は、ブロック908において、履歴カウンタStatCoeffを初期値に設定することを含む。上記に記載されたように、履歴ベースのライスパラメータ導出が有効である場合、式(5)または(6)に従って履歴カウンタの初期値を設定することができ、そうでない場合、履歴カウンタの初期値を0に設定される。
【0096】
並列符号化アルゴリズムが有効ではない、または現在のCTUがCTU行の1番目のCTUではないと決定した場合、またはブロック908において履歴カウンタを設定した後、プロセス900は、ブロック910において、履歴カウンタに基づいてCTU内のTUのライスパラメータを計算することを含む。図6図8に関して上で詳細に説明したように、ブロック908において履歴カウンタがリセットされた場合、リセットされた履歴カウンタまたはその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。ブロック908において履歴カウンタがリセットされていない場合、直前のCTUで更新された履歴カウンタまたは現在のCTUでその後に更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。
【0097】
ブロック912において、プロセス900は、算出されたライスパラメータに基づいて、CTU内のTUをバイナリ表現に符号化することを含み、例えば、VVC仕様で規定されたトランケーテッドライス(TR:truncated Rice)と制限付きk次EGkの組み合わせによって符号化する。ブロック914において、プロセス900は、CTUのバイナリ表現を、ビデオのビットストリームに含めるようにビットに符号化する。例えば、上で論じたコンテキスト自己適応型バイナリ算術コーディング(CABAC)を使用して符号化することができる。ブロック916において、プロセス900は、符号化済みのビデオビットストリームを出力することを含む。
【0098】
図10は、本開示のいくつかの実施例による、ビデオのパーティションの復号化プロセス1000の一例を示す。1つまたは複数のコンピューティング機器は、適切なプログラムコードを実行することにより図10に示す動作を実現する。例えば、ビデオデコーダ200を実装するコンピューティング機器は、エントロピ復号化モジュール216、逆量子化モジュール218および逆変換モジュール219のプログラムコードを実行することにより、図10に示す動作を実現することができる。例示の目的で、図に示されるいくつかの例を参照してプロセス1000を説明する。しかし、他の実現形態も可能である。
【0099】
ブロック1002において、プロセス1000は、ビデオ信号のパーティションを表すバイナリ文字列またはバイナリ表現にアクセスすることを含む。パーティションは、ビデオフレーム、スライス、またはタイルであってもよいし、符号化を実行する際に、ビデオエンコーダをユニットとして処理される任意の種類のパーティションであってもよい。パーティションは、図8に示すCTU行に配列されたCTUセットを含む。図6に示すように、各CTUは、1つまたは複数のCTUを含み、且つ各CTUは、符号化のための複数のTUを含む。
【0100】
ブロック1004において、プロセス1000は、パーティション内のCTUセットの各CTUのバイナリ文字列を処理して、パーティションの復号化サンプルを生成することを含み、ブロック1004は、1006~1014を含む。ブロック1006において、プロセス1000は、並列符号化アルゴリズムが有効か否か、及び現在のCTUがCTU行の1番目のCTUであるか否かを決定することを含む。並列符号化は、フラグによって指示され、当該フラグの値が0である場合、並列符号化が無効であることを示し、当該フラグの値が1である場合、並列符号化が有効であることを示す。並列符号化アルゴリズムが有効であり、現在のCTUがCTU行の1番目のCTUであると決定した場合、プロセス1000は、ブロック1008において、履歴カウンタStatCoeffを初期値に設定することを含む。上記に記載されたように、履歴ベースのライスパラメータ導出が有効である場合、式(5)または(6)に従って履歴カウンタの初期値を設定することができ、そうでない場合、履歴カウンタの初期値を0に設定される。
【0101】
並列符号化アルゴリズムが有効ではない、または現在のCTUがCTU行の1番目のCTUではないと決定した場合、またはブロック1008において履歴カウンタを設定した後、プロセス1000は、ブロック1010において、履歴カウンタに基づいてCTU内のTUのライスパラメータを計算することを含む。図6図8に関して上で詳細に説明したように、ブロック1008において履歴カウンタがリセットされた場合、リセットされた履歴カウンタまたはその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。ブロック1008において履歴カウンタがリセットされていない場合、直前のCTUで更新された履歴カウンタまたは現在のCTUでその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。
【0102】
ブロック1012において、プロセス1000は、算出されたライスパラメータに基づいて、CTU内のTUのバイナリ文字列またはバイナリ表現を係数値に復号化することを含み、例えば、VVC仕様で規定されたトランケーテッドライス(TR)と制限付きk次EGKの組み合わせによって復号化する。ブロック1014において、プロセス1000は、CTU内のTUの画素値を再構築することを含み、例えば、図2に関して上で論じた逆量子化と逆変換によって再構築する。ブロック1016において、プロセス1000は、ビデオの復号化パーティションを出力することを含み。
【0103】
別の実施例において、履歴カウンタStatCoeffを計算する際のCTU間の依存性は、並列符号化アルゴリズム(例えば、WPP)におけるCTU間の依存性と一致する。例えば、直前のCTU行内の最初のN個またはより少ないCTUの係数値に基づいて、パーティション(例えば、フレーム、タイルまたはスライス)のCTU行の履歴カウンタStatCoeffを計算することができ、ここで、Nは、並列符号化アルゴリズムにおいて許容される連続する2つのCTU行間の最大遅延である。このようにして、履歴カウンタStatCoeffを計算する際の連続する2つのCTU行のCTU間の依存性は、並列処理を実行する際のCTU間の依存性より小さい(よって、並列処理を実行する際のCTU間の依存性と一致する)ように制限される。
【0104】
当該実施例は、ストレージ同期プロセスを使用して実現できる。例えば、上記のWPPにおいて、連続する2つのCTU行間の遅延は、1CTUであるため、N=1である。記憶プロセスでは、各CTU行(最後のCTU行を除いて)の1番目のCTUの最後のTUを符号化した後、StatCoeff[cIdx]を記憶変数StatCoeffWpp[cIdx]に保存することができ、1番目のCTU行以外の各CTU行の場合、1番目のTUを符号化する前に、ライスパラメータ導出の同期プロセスを適用する。同期プロセスでは、StatCoeff[cIdx]は、直前のCTU行から保存されたStatCoeffWpp[cIdx]と同期される。
【0105】
上記に記載されたように、各CTU行内の1番目のTUを符号化する前に、変数HistValueを次のように計算する。
HistValue[cIdx] = 1 << StatCoeff[cIdx] (11)
【0106】
現在のCTU行がパーティションの1番目のCTU行である場合、式(5)または(6)に従ってStatCoeff[cIdx]を初期化することができる。算出されたHistValueは、局所加算変数 locSumAbsを決定するために使用され、locSumAbsはさらに、現在のCTU内のTUのライスパラメータを決定するために使用される。StatCoeffは、式(9)と(10)に関して上で説明したように、指数移動平均プロセスによって、1番目の非0のゴロム-ライス符号化の変換係数(abs_remainder[cIdx]またはdec_abs_level[cIdx])からTUごとに1回更新される。
【0107】
1番目のCTU行の1番目のCTUの最後のTUを符号化した後、記憶ステップにおいて、次のようにStatCoeff[cIdx]をStatCoeffWpp[cIdx]として保存することができる。
StatCoeffWpp[cIdx] = StatCoeff[cIdx] (12)
【0108】
1番目のCTU行の残りのCTUの符号化は、第1実施例に関して説明した方式と類似する方式で実行することができる。
【0109】
2番目のCTU行と任意の後続のCTU行内の1番目のTUを符号化する前に、同期ステップによってStatCoeff[cIdx]を得ることができる。
StatCoeff[cIdx] = StatCoeffWpp[cIdx] (13)
【0110】
得られたStatCoeff[cIdx]値を使用して、式(11)に従ってHistValueを計算する。CTU行の残りのプロセスは、1番目のCTU行のプロセスと同じである。
【0111】
VVC仕様の可能な変更は、以下に指定された通りである(変更点は、下線で示す)。
【表5】
【0112】
代替の履歴ベースのライスパラメータ導出
履歴ベースのライスパラメータ導出は、代替的な方式で実現することができる。当該代替の実現形態において、CTUがパーティション(例えば、ピクチャ、スライスまたはタイル)内の1番目のCTUであると、StatCoeff[cIdx]の初期値を使用してHistValueを次のように初期化する。
HistValue=sps_persistent_Rice_adaptation_enabled_flag?1<<StatCoeff[cIdx]:0
(14)
【0113】
当該初期HistValueは、以下の規則に従ってHistValueが更新されるまで、1番目のabs_remainder[cIdx]またはdec_abs_level[cIdx]を符号化するために使用される。TU内の1番目の非0のゴロム-ライス符号化の変換係数がabs_remainderとして符号化される時に、色成分cIdxの履歴カウンタを次のように更新する。
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(abs_remainder[cIdx]))+2)>>1
(15)
【0114】
TU内の1番目の非0のゴロム-ライス符号化の変換係数がdec_abs_levelとして符号化される時に、色成分cIdxの履歴カウンタを次のように更新する。
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[cIdx])))>>1(16)
【0115】
履歴カウンタStatCoeff[cIdx]が更新された場合、式(17)に示すようにHistValueを更新し、更新されたHistValueは、新しいStatCoeff[cIdx]とHistValue[cIdx]が再度更新されるまで、残りのシンタックス要素abs_remainderとdec_abs_levelのライスパラメータを導出するために使用される。
HistValue[cIdx] = 1 << StatCoeff[cIdx] (17)
【0116】
現在のVVC仕様に基づいて、可能な仕様変更は、以下の指定の通りである。
【0117】
第7.3.11.11条項(残差符号化シンタックス)は、次のように変更される(追加される内容は下線が付けられている)。
【表6】
【0118】
並列符号化と代替の履歴ベースのライスパラメータ導出との間の依存性の衝突を解決するために、各CTU行の1番目のCTUの最後のTUを符号化した後、各色成分のStatCoeff[cIdx]とHistValue[cIdx]を保存する。保存されたStatCoeff[cIdx]とHistValue[cIdx]の値は、後続のCTU行の1番目のCTUの1番目のTUを処理する前にStatCoeff[cIdx]とHistValue[cIdx]を初期化するために使用される。
【0119】
当該実施例はさらに、ストレージ同期プロセスを使用して実現できる。例えば、記憶プロセスにおいて、各CTU行の1番目のCTUの最後のTUを処理した後、StatCoeff[cIdx]とHistValue[cIdx]を記憶変数に保存することができ、例えば、それぞれ式(18)と(19)に示すStatCoeffWpp[cIdx]とHistValueWpp[cIdx]の通りである。
StatCoeffWpp[cIdx] = StatCoeff[cIdx] (18)
HistValueWpp[cIdx] = HistValue[cIdx] (19)
【0120】
1番目のCTU行以外の各CTU行において、1番目のTUを符号化する前に、ライスパラメータ導出の同期プロセスが適用される。例えば、式(20)と(21)に示すように、StatCoeff[cIdx]とHistValue[cIdx]はそれぞれ、直前のCTU行から保存されたStatCoeffWpp[cIdx]とHistValueWpp[cIdx]と同期される。
StatCoeff[cIdx] = StatCoeffWpp[cIdx] (20)
HistValue[cIdx] = HistValueWpp[cIdx] (21)
【0121】
同期変数HistValueは、HistValueが更新されるまで、1番目のabs_remainder[cIdx]またはdec_abs_level[cIdx]を符号化するために使用される。
【0122】
上記に記載されたように、StatCoeff[cIdx]は、式(15)または(16)に示すように、1番目の非0のゴロム-ライス符号化の変換係数(abs_remainder[cIdx]またはdec_abs_level[cIdx])からTUごとに1回更新されることができる。履歴カウンタStatCoeff[cIdx]が更新された場合、式(17)に従ってHistValueを更新し、更新されたHistValueは、新しいStatCoeff[cIdx]とHistValueが再度更新されるまで、残りのシンタックス要素abs_remainderとdec_abs_levelのライスパラメータを導出するために使用される。
【0123】
現在のVVC仕様に基づいて、下線で示す可能な仕様変更は、以下の規定の通りである。
【表7】
【0124】
図11は、本開示のいくつかの実施例による、ビデオのパーティションの符号化プロセス1100の一例を示す。1つまたは複数のコンピューティング機器(例えば、ビデオエンコーダ100を実装するコンピューティング機器)は、適切なプログラムコード(例えば、エントロピ符号化モジュール116を実装するプログラムコード)を実行することにより図11に示す動作を実現する。例示の目的で、図に示されるいくつかの例を参照してプロセス1100を説明する。しかし、他の実現形態も可能である。
【0125】
ブロック1102において、プロセス1100は、ビデオ信号のパーティションにアクセスすることを含む。パーティションは、ビデオフレーム、スライス、またはタイルであってもよいし、符号化を実行する際に、ビデオエンコーダをユニットとして処理される任意の種類のパーティションであってもよい。パーティションは、図8に示すCTU行に配列されたCTUセットを含む。図6に示すように、各CTUは、1つまたは複数のCTUを含み、且つ各CTUは、符号化のための複数のTUを含む。
【0126】
ブロック1104において、プロセス1100は、パーティションをビットに符号化するために、パーティション内のCTUセットの各CTUを処理することを含み、ブロック1104は、1106~1118を含む。ブロック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において、履歴カウンタStatCoeffを、式(13)または(20)に示すように履歴カウンタ記憶変数に記憶された値に設定する。いくつかの例において、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値は、式(21)に示すように、記憶された値にリセットされ得る。
【0127】
並列符号化アルゴリズムが有効ではない、または現在のCTUがCTU行の1番目のCTUではないと決定した場合、またはブロック1108または1109において履歴カウンタの値を設定した後、プロセス1100は、ブロック1110において、履歴カウンタ(HistValueがリセットされた場合には置換変数HistValueと)に基づいてCTU内のTUのライスパラメータを計算することを含む。上記したように(例えば、図8、又は代替のライスパラメータ導出を参照する)、ブロック1108または1109において履歴カウンタの値がリセットされた場合、リセットされた履歴カウンタまたはその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。ブロック1108または1109において履歴カウンタがリセットされていない場合、直前のCTUで更新された履歴カウンタまたは現在のCTUでその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。
【0128】
ブロック1112において、プロセス1100は、算出されたライスパラメータに基づいて、CTU内のTUをバイナリ表現に符号化することを含み、例えば、VVC仕様で規定されたトランケーテッドライス(TR:truncated Rice)と制限付きk次EGKの組み合わせによって符号化する。ブロック1114において、プロセス1100は、CTUのバイナリ表現を、ビデオビットストリームに含めるようにビットに符号化する。例えば、上で論じたコンテキスト自己適応型バイナリ算術コーディング(CABAC)を使用して符号化することができる。
【0129】
ブロック1116において、プロセス1100は、並列符号化が有効であり、CTUが現在のCTU行の1番目のCTUであるか否かを決定することを含む。そうであれば、プロセス1100は、ブロック1118において、履歴カウンタの値を式(12)または(18)に示すように履歴カウンタ記憶変数に記憶することを含む。いくつかの例において、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値も式(19)に示すように記憶変数に記憶することができる。ブロック1120において、プロセス1100は、符号化済みのビデオビットストリームを出力することを含む。
【0130】
いくつかのシナリオにおいて、1番目でないCTU行のCTUは、パーティションの境界に位置し得る。例えば、2番目のCTU行の1番目のCTUは、当該CTUの上部に位置するパーティション内にCTUがない。これらのシナリオにおいて、当該CTUの履歴カウンタは、記憶された値ではなく、初期値に設定されることができる。この場合、図11においてブロック1107とブロック1109との間に新しいブロック1107’を追加して、CTUがパーティションの境界に位置するか否かを決定することができる(例えば、CTUがパーティション内に上部隣接のCTUがない)。そうであれば、プロセス1100はブロック1108に進んで履歴カウンタを初期値に設定し、そうでない場合、プロセス1100はブロック1109に進んで履歴カウンタを記憶された値に設定する。図11の残りのブロックは変わらない。
【0131】
図12は、本開示のいくつかの実施例による、ビデオのパーティションの復号化プロセス1200の一例を示す。1つまたは複数のコンピューティング機器は、適切なプログラムコードを実行することにより図12に示す動作を実現する。例えば、ビデオデコーダ200を実装するコンピューティング機器は、エントロピ復号化モジュール216、逆量子化モジュール218および逆変換モジュール219のプログラムコードを実行することにより、図12に示す動作を実現することができる。例示の目的で、図に示されるいくつかの例を参照してプロセス1200を説明する。しかし、他の実現形態も可能である。
【0132】
ブロック1202において、プロセス1200は、ビデオ信号のパーティションを表すバイナリ文字列またはバイナリ表現にアクセスすることを含む。パーティションは、ビデオフレーム、スライス、またはタイルであってもよいし、符号化を実行する際に、ビデオエンコーダをユニットとして処理される任意の種類のパーティションであってもよい。パーティションは、図8に示すCTU行に配列されたCTUセットを含む。図6に示すように、各CTUは、1つまたは複数のCTUを含み、且つ各CTUは、符号化のための複数のTUを含む。
【0133】
ブロック1204において、プロセス1200は、パーティション内のCTUセットの各CTUのバイナリ文字列を処理して、パーティションの復号化サンプルを生成することを含み、ブロック1204は、1206~1218を含む。ブロック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において、履歴カウンタStatCoeffを、式(13)または(20)に示すように履歴カウンタ記憶変数に記憶された値に設定する。いくつかの例において、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値は、式(21)に示すように、記憶された値にリセットされ得る。
【0134】
並列符号化アルゴリズムが有効ではない、または現在のCTUがCTU行の1番目のCTUではないと決定した場合、またはブロック1208または1209において履歴カウンタを設定した後、プロセス1200は、ブロック1210において、履歴カウンタ(HistValueも設定された場合には置換変数HistValueと)に基づいてCTU内のTUのライスパラメータを計算することを含む。上記したように(例えば、図8に関して、代替のライスパラメータ導出において)、ブロック1208または1209において履歴カウンタの値がリセットされた場合、リセットされた履歴カウンタまたはその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。ブロック1208または1209において履歴カウンタがリセットされていない場合、直前のCTUで更新された履歴カウンタまたは現在のCTUでその後更新された履歴カウンタに基づいて、CTU内のTUのライスパラメータを計算する。
【0135】
ブロック1212において、プロセス1200は、算出されたライスパラメータに基づいて、CTU内のTUのバイナリ文字列またはバイナリ表現を係数値に復号化することを含み、例えば、VVC仕様で規定されたトランケーテッドライス(TR)と制限付きk次EGKの組み合わせによって復号化する。ブロック1214において、プロセス1200は、CTU内のTUの画素値を再構築することを含み、例えば、図2に関して上で論じた逆量子化と逆変換によって再構築する。
【0136】
ブロック1216において、プロセス1200は、並列符号化が有効であり、CTUが現在のCTU行の1番目のCTUであるか否かを決定することを含む。そうであれば、プロセス1200は、ブロック1218において、履歴カウンタの値を式(12)または(18)に示すように履歴カウンタ記憶変数に記憶することを含む。いくつかの例において、例えば、代替のライスパラメータ導出が利用される場合、置換変数HistValueの値も式(19)に示すように記憶変数に記憶することができる。ブロック1220において、プロセス1200は、ビデオの復号化パーティションを出力することを含み。
【0137】
別の実施例において、WPPまたは他の並列符号化アルゴリズムは、履歴ベースのライスパラメータ導出とビットストリーム内に共存することを防止する。例えば、WPPが有効である場合、履歴ベースのライスパラメータ導出が有効にしないことができる。WPPを有効にしない場合、履歴ベースのライスパラメータ導出が有効にすることができる。同様に、履歴ベースのライスパラメータ導出が有効である、WPPを有効にしないことができる。一例として、シンタックス変更を次のように行うことができる。
【0138】
7.3.2.22 シーケンスパラメータセット範囲拡張シンタックス(追加される内容は下線が付けられている)
【表8】
【0139】
別の例として、対応するセマンティックを次のように変更する(変更点は、下線が付けられている)。
【表9】
【0140】
上記の説明において、TUを図(例えば図6)に示し説明したが、同じ技術は、変換ブロック(TB)に適用することができる。言い換えれば、上に提示された実施例(図を含む)において、TUはTBを表すこともできる。
【0141】
ビデオ符号化の依存量子化を実装するためのコンピューティングシステムの一例
本明細書で説明される動作を実行するために、任意の適切なコンピューティングシステムを使用することができる。例えば、図13は、図1のビデオエンコーダ100または図2のビデオデコーダ200を実装することができるコンピューティング機器1300の一例を示す。いくつかの実施例において、コンピューティング機器1300は、プロセッサ1312を備えることができ、プロセッサ1312は、メモリ1314に通信可能に結合され、メモリ1314に記憶されたコンピュータ実行可能なプログラムコードおよび/またはアクセス情報を実行する。プロセッサ1312は、マイクロプロセッサ、特定用途向け集積回路(ASIC)、ステートマシン、または他の処理機器を含むことができる。プロセッサ1312は、複数の処理機器(1つの処理機器を含む)のうちの任意の1つを含み得る。このようなプロセッサは、命令を記憶するコンピュータ可読媒体を含んでもよいし、命令を記憶するコンピュータ可読媒体と通信してもよく、命令がプロセッサ1312によって実行されるとき、命令は、プロセッサに本明細書で説明された動作を実行させる。
【0142】
メモリ1314は、任意の適切な非一時的なコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、コンピュータ可読命令または他のプログラムコードをプロセッサに提供することができる任意の電子、光学、磁気または他のメモリ機器を含むことができる。コンピュータ可読媒体の非限定的な例には、磁気ディスク、記憶チップ、ROM、RAM、ASIC、構成されたプロセッサ、光学メモリ、磁気テープまたは他の磁気メモリ、またはコンピュータプロセッサが命令を読み取ることができる任意の他の媒体を含む。命令は、コンパイラおよび/またはインタプリタが任意の適切なコンピュータプログラミング言語で記述されたコードに基づいて生成されたプロセッサ特定命令を含み、任意の適切なコンピュータプログラミング言語は、例えば、C、C++、C#、Visual Basic、Java、Python、Perl、JavaScriptおよびActionScriptを含む。
【0143】
コンピューティング機器1300はさらに、バス1316を備える。バス1316は、コンピューティング機器1300の1つまたは複数のコンポーネントを通信可能に結合する。コンピューティング機器1300はさらに、入力または出力機器などの複数の外部または内部機器を備え、例えば、コンピューティング機器1300は、入力/出力(I/O)インターフェース1318を備えるように示され、I/Oインターフェース1318は、1つまたは複数の入力機器1320から入力を受信するか、または1つまたは複数の出力機器1322に出力を提供することができる。1つまたは複数の入力機器1320と1つまたは複数の出力機器1322は、I/Oインターフェース1318に通信可能に結合される。通信結合は、任意の適切な方式(例えば、プリント回路基板を介した接続、ケーブルを介した接続、無線伝送を介した通信など)によって実現されることができる。入力機器1320の非限定的な例には、タッチスクリーン(例えば、タッチ領域を撮影するための1つまたは複数のカメラ、またはタッチによって引き起こされる圧力変化を検出するための圧力センサ)、マウス、キーボード、またはコンピューティング機器のユーザの物理的な動きに応答して入力イベントを生成するための任意の他の機器を含む。出力機器1322の非限定的な例には、LCDスクリーン、外部モニタ、スピーカ、またはコンピューティング機器によって生成される出力を表示または他の方式で提示するための任意の他の機器を含む。
【0144】
コンピューティング機器1300は、プログラムコードを実行することができ、プログラムコードは、プロセッサ1312に、上記の図1図12で説明された動作における1つまたは複数の動作を実行するように構成させる。プログラムコードは、ビデオエンコーダ100またはビデオデコーダ200を含むことができる。プログラムコードは、メモリ1314または任意の適切なコンピュータ可読媒体に常駐することができ、プロセッサ1312または任意の他の適切なプロセッサによって実行されることができる。
【0145】
コンピューティング機器1300はさらに、少なくとも1つのネットワークインターフェース機器1324を備えることができる。ネットワークインターフェース機器1324は、1つまたは複数のデータネットワーク1328への有線または無線データ接続を確立するのに適切な任意の機器または機器グループを含むことができる。ネットワークインターフェース機器1324の非限定的な例には、イーサネットワークアダプタ、無線モデムなどを含む。コンピューティング機器1300は、ネットワークインターフェース機器1324を介して電子信号または光学信号としてメッセージを伝送することができる。
【0146】
一般的な考慮事項
本明細書では、特許請求の範囲に記載された主題の完全な理解を提供するために、多くの具体的な詳細が記載されている。しかし、当業者であれば理解できるように、これらの具体的な詳細がなくても、特許請求の範囲に記載された主題を実施することができる。他の例では、当業者に既知の方法、装置またはシステムは、特許請求の範囲に記載された主題を曖昧にしないように、詳細に説明されていない。
【0147】
特に明記しない限り、本明細書全体では、「処理」、「コンピューティング」、「計算」、「決定」、「識別」などの用語を使用して、コンピューティング機器(例えば、1つまたは複数のコンピュータまたは類似する1つまたは複数の電子コンピューティング機器)の動作またはプロセスを表し、このような動作またはプロセスは、コンピューティングプラットフォームのメモリ、レジスタまたは他の情報記憶機器、伝送機器または表示機器内の物理的な電子または磁気量として表されるデータを操作または変換する。
【0148】
本明細書で論じる1つまたは複数のシステムは、任意の特定のハードウェアアーキテクチャまたは構成に限定されない。コンピューティング機器は、1つまたは複数の入力を条件とする結果を定常するコンポーネントの任意の適切な配置を含んでもよい。適切なコンピューティング機器は、記憶されたソフトウェアにアクセスする多用途マイクロプロセッサに基づくコンピュータシステムを含み、記憶されたソフトウェアは、コンピューティングシステムをプログラミングまたは構成し、コンピューティングシステムを汎用コンピューティング装置から専用コンピューティング装置に変更させ、それにより、本明細書の主題の1つまたは複数の実施例を実現する。任意の適切なプログラミング、スクリプト、または他の種類のまたは言語の組み合わせは、コンピューティング機器をプログラミングまたは構成するように構成されるソフトウェアで本明細書に含まれる教示を実現するために使用されることができる。
【0149】
本明細書で開示された方法の実施例は、このようなコンピューティング機器の動作において実行されることができる。上記の例で示したブロックの順序は、変更でき、例えば、ブロックの順序を変更したり、結合したりサブブロックに分割したりすることができる。いくつかのブロックまたはプロセスは、並列して実行できる。
【0150】
本明細書における「に適用される」または「に構成される」の使用は、開放的かつ包括的な言語を意味し、追加のタスクまたはステップを実行するように適用または構成された機器を排除しない。さらに、「に基づいて」の使用は、1つまたは複数の列挙された条件または値「に基づく」プロセス、ステップ、計算または他の動きが実際には追加の条件に基づくか列挙された値を超える可能性があるという点で、開放的かつ包括的であることを意味する。本明細書に含まれる見出し、リストおよび番号付けは、説明を容易にするためだけのものであり、限定することを意図しない。
【0151】
本明細書の主題は、その具体的な実施例に関して詳細に説明されているが、当業者であれば、前述の内容を理解すれば、このような実施例を容易に変更、変形および等価物を生み出すことができることが理解されるであろう。したがって、理解すべきこととして、本開示は、限定ではなく例示の目的で提示され、当業者にとって容易になし得る、本明細書の主題に対するこのような変更、変形および/または追加を含むことを排除しない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】