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

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

▶ バイトダンス インコーポレイテッドの特許一覧

特許7444997ビデオコーディングのためのクロスコンポーネント適応ループフィルタリング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】ビデオコーディングのためのクロスコンポーネント適応ループフィルタリング
(51)【国際特許分類】
   H04N 19/117 20140101AFI20240228BHJP
   H04N 19/157 20140101ALI20240228BHJP
   H04N 19/176 20140101ALI20240228BHJP
   H04N 19/186 20140101ALI20240228BHJP
   H04N 19/70 20140101ALI20240228BHJP
【FI】
H04N19/117
H04N19/157
H04N19/176
H04N19/186
H04N19/70
【請求項の数】 10
(21)【出願番号】P 2022540684
(86)(22)【出願日】2020-12-31
(65)【公表番号】
(43)【公表日】2023-03-16
(86)【国際出願番号】 US2020067651
(87)【国際公開番号】W WO2021138550
(87)【国際公開日】2021-07-08
【審査請求日】2022-07-14
(31)【優先権主張番号】PCT/CN2020/070001
(32)【優先日】2020-01-01
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520477474
【氏名又は名称】バイトダンス インコーポレイテッド
【氏名又は名称原語表記】BYTEDANCE INC.
【住所又は居所原語表記】12655 West Jefferson Boulevard, Sixth Floor, Suite No. 137 Los Angeles, California 90066 United States of America
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ズゥー,ウェイジア
(72)【発明者】
【氏名】ザン,リー
(72)【発明者】
【氏名】シュイ,ジィジォン
(72)【発明者】
【氏名】ザン,カイ
(72)【発明者】
【氏名】ワン,イェ-クイ
【審査官】田部井 和彦
(56)【参考文献】
【文献】特表2019-525679(JP,A)
【文献】国際公開第2019/069950(WO,A1)
【文献】Anand Meher Kotra et al.,CE5-related: High level syntax modifications for CCALF [online],JVET-Q0253-v1,インターネット <URL: https://jvet-experts.org/doc_end_user/documents/17_Brussels/wg11/JVET-Q0253-v1.zip>,2019年12月30日
【文献】Olena Chubach et al.,CE5-related: On CC-ALF modifications related to coefficients and signalling [online],JVET-Q0190-v1,インターネット <URL: https://jvet-experts.org/doc_end_user/documents/17_Brussels/wg11/JVET-Q0190-v1.zip>,2019年12月30日
【文献】Benjamin Bross et al.,Versatile Video Coding (Draft 7) [online],JVET-P2001-vE(JVET-P2001-v1.docx),インターネット <URL: https://jvet-experts.org/doc_end_user/documents/16_Geneva/wg11/JVET-P2001-v1.zip>,2019年10月12日,pp.19-21,37-40,87-97
【文献】Kiran Misra et al.,On Cross Component Adaptive Loop Filter for Video Compression [online],Published in: 2019 Picture Coding Symposium (PCS),2020年01月09日,インターネット <URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8954547>,DOI: 10.1109/PCS48520.2019.8954547
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/117
H04N 19/157
H04N 19/176
H04N 19/186
H04N 19/70
(57)【特許請求の範囲】
【請求項1】
ビデオデータを処理する方法であって、
規則に従ってビデオのビデオユニットと前記ビデオのビットストリームとの間の変換を実行するステップを含み、
前記規則は、クロスコンポーネント適応ループフィルタ(CC-ALF)モードが前記ビデオユニットに有効であるか否か、及び適応ループフィルタ(ALF)モードが前記ビデオユニットに有効であるか否かが、前記ビットストリームのシーケンスパラメータセット(SPS)内の異なるシンタックスエレメントによって制御されることを指定し、
第1のシンタックスエレメントは、前記CC-ALFモードが有効であるか否かを示し、第2のシンタックスエレメントは前記ALFモードが有効であるか否かを示し、前記第1のシンタックスエレメントが前記SPSに存在するか否かは、前記第2のシンタックスエレメントの値及び前記ビデオのカラーフォーマットのタイプに依存し、
前記規則は、前記ALFモードが有効であることを示す、前記第2のシンタックスエレメントの前記値が真であり、前記カラーフォーマットのタイプが4:0:0ではないことを示す、第3のシンタックスエレメントchroma_format_idcの値が0に等しくないという条件で、前記第1のシンタックスエレメントが前記SPSに存在することを指定する、方法。
【請求項2】
前記CC-ALFモードに関連する1つ以上のシンタックスエレメントは、ピクチャヘッダ又はスライスヘッダに条件付きで存在し、
前記1つ以上のシンタックスエレメントは、
Cb色成分についての前記CC-ALFモードがスライス又はピクチャに有効であることを示す第4のシンタックスエレメント、
前記スライス又は前記ピクチャ内のスライスの前記Cb色成分によって参照されるALF適合パラメータセット(APS)のAPS IDを示す第5のシンタックスエレメント、
Cr色成分についての前記CC-ALFモードが前記スライス又は前記ピクチャに有効であることを示す第6のシンタックスエレメント、及び
前記スライス又は前記ピクチャ内の前記スライスのCr色成分によって参照されるALF APSのAPS IDを示す第7のシンタックスエレメント、
のうち少なくとも1つを含む、請求項に記載の方法。
【請求項3】
前記規則は、前記ビデオの前記カラーフォーマットのタイプが4:0:0ではないという条件と、前記SPSに存在する前記第1のシンタックスエレメントが、前記CC-ALFモードが有効であることを示すという条件との少なくとも双方が満たされるという条件で、前記1つ以上のシンタックスエレメントが前記ピクチャヘッダ又は前記スライスヘッダに存在することを指定する、請求項に記載の方法。
【請求項4】
前記規則は、前記ビデオの前記カラーフォーマットのタイプが4:0:0であることに応じて、前記1つ以上のシンタックスエレメントが前記ピクチャヘッダ又は前記スライスヘッダから除外されることを指定する、請求項に記載の方法。
【請求項5】
前記規則は、前記SPSに存在する前記第1のシンタックスエレメントが、前記CC-ALFモードが無効であることを示すことに応じて、前記1つ以上のシンタックスエレメントが前記ピクチャヘッダ又は前記スライスヘッダから除外されることを指定する、請求項に記載の方法。
【請求項6】
前記変換は、前記ビデオを前記ビットストリームに符号化することを含む、請求項1乃至のうちいずれか1項に記載の方法。
【請求項7】
前記変換は、前記ビットストリームから前記ビデオを復号することを含む、請求項1乃至のうちいずれか1項に記載の方法。
【請求項8】
プロセッサと、命令を有する非一時的なメモリとを含む、ビデオデータを処理するための装置であって、
前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
規則に従ってビデオのビデオユニットと前記ビデオのビットストリームとの間の変換を実行させ、
前記規則は、クロスコンポーネント適応ループフィルタ(CC-ALF)モードが前記ビデオユニットに有効であるか否か、及び適応ループフィルタ(ALF)モードが前記ビデオユニットに有効であるか否かが、前記ビットストリームのシーケンスパラメータセット(SPS)内の異なるシンタックスエレメントによって制御されることを指定し、
第1のシンタックスエレメントは、前記CC-ALFモードが有効であるか否かを示し、第2のシンタックスエレメントは前記ALFモードが有効であるか否かを示し、前記第1のシンタックスエレメントが前記SPSに存在するか否かは、前記第2のシンタックスエレメントの値及び前記ビデオのカラーフォーマットのタイプに依存し、
前記規則は、前記ALFモードが有効であることを示す、前記第2のシンタックスエレメントの前記値が真であり、前記カラーフォーマットのタイプが4:0:0ではないことを示す、第3のシンタックスエレメントchroma_format_idcの値が0に等しくないという条件で、前記第1のシンタックスエレメントが前記SPSに存在することを指定する、装置。
【請求項9】
命令を記憶した非一時的なコンピュータ読み取り可能記憶媒体であって、
前記命令は、プロセッサに、
規則に従ってビデオのビデオユニットと前記ビデオのビットストリームとの間の変換を実行させ、
前記規則は、クロスコンポーネント適応ループフィルタ(CC-ALF)モードが前記ビデオユニットに有効であるか否か、及び適応ループフィルタ(ALF)モードが前記ビデオユニットに有効であるか否かが、前記ビットストリームのシーケンスパラメータセット(SPS)内の異なるシンタックスエレメントによって制御されることを指定し、
第1のシンタックスエレメントは、前記CC-ALFモードが有効であるか否かを示し、第2のシンタックスエレメントは前記ALFモードが有効であるか否かを示し、前記第1のシンタックスエレメントが前記SPSに存在するか否かは、前記第2のシンタックスエレメントの値及び前記ビデオのカラーフォーマットのタイプに依存し、
前記規則は、前記ALFモードが有効であることを示す、前記第2のシンタックスエレメントの前記値が真であり、前記カラーフォーマットのタイプが4:0:0ではないことを示す、第3のシンタックスエレメントchroma_format_idcの値が0に等しくないという条件で、前記第1のシンタックスエレメントが前記SPSに存在することを指定する、非一時的なコンピュータ読み取り可能記憶媒体。
【請求項10】
デオのビットストリームを記憶するための方法であって、
規則に従ってビデオのビデオユニットについてのビットストリームを生成するステップと、
前記ビットストリームを非一時的なコンピュータ読み取り可能記録媒体に記憶するステップと
を含み、
前記規則は、クロスコンポーネント適応ループフィルタ(CC-ALF)モードが前記ビデオユニットに有効であるか否か、及び適応ループフィルタ(ALF)モードが前記ビデオユニットに有効であるか否かが、前記ビットストリームのシーケンスパラメータセット(SPS)内の異なるシンタックスエレメントによって制御されることを指定し、
第1のシンタックスエレメントは、前記CC-ALFモードが有効であるか否かを示し、第2のシンタックスエレメントは前記ALFモードが有効であるか否かを示し、前記第1のシンタックスエレメントが前記SPSに存在するか否かは、前記第2のシンタックスエレメントの値及び前記ビデオのカラーフォーマットのタイプに依存し、
前記規則は、前記ALFモードが有効であることを示す、前記第2のシンタックスエレメントの前記値が真であり、前記カラーフォーマットのタイプが4:0:0ではないことを示す、第3のシンタックスエレメントchroma_format_idcの値が0に等しくないという条件で、前記第1のシンタックスエレメントが前記SPSに存在することを指定する、方法
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
本願は、2020年12月31日に出願された国際特許出願第PCT/US2020/067651号に基づいており、国際特許出願第PCT/US2020/067651号は、2020年1月1日に出願された国際特許出願第PCT/CN2020/070001号の優先権及び利益を主張する。上記の全ての特許出願の全内容が参照により援用される。
【0002】
[技術分野]
本特許文献は、ビデオコーディング技術、デバイス及びシステムに関する。
【背景技術】
【0003】
現在、より良い圧縮比率を提供するために、或いは、より複雑でないか或いは並列化された実装を可能にするビデオ符号化及び復号方式を提供するために、現在のビデオコーデック技術の性能を改善するための努力が続けられている。業界専門家は、近年、いくつかの新たなビデオコーディングツールを提案しており、これらの効果を決定するために、テストが現在進められている。
【発明の概要】
【0004】
デジタルビデオコーディングに、具体的には、動きベクトルの管理に関連するデバイス、システム及び方法が記載される。記載される方法は、既存のビデオコーディング標準(例えば、High Efficiency Video Coding(HEVC)又はVersatile Video Coding)及び将来のビデオコーディング標準規格又はビデオコーデックに適用されてもよい。
【0005】
1つの代表的な態様では、開示の技術は、ビデオ処理のための方法を提供するために使用されてもよい。この方法は、規則に従ってビデオのビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、規則は、クロスコンポーネント適応ループフィルタ(cross-component adaptive loop filter,CC-ALF)モード及び適応ループフィルタ(adaptive loop filter,ALF)モードがビデオユニットをコーディングするために有効であるか否かが、ビットストリームにおいて相互に独立した方式で示されることを指定する。
【0006】
他の代表的な態様では、開示の技術は、ビデオ処理のための方法を提供するために使用されてもよい。この方法は、ビデオのクロマ成分のビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、ビットストリームはフォーマット規則に準拠し、フォーマット規則は、クロマアレイタイプの値がゼロに等しくない場合又はビデオのカラーフォーマットが4:0:0でない場合にのみ、ビットストリームが、クロマ成分についてのクロスコンポーネントフィルタがピクチャヘッダに関連する全てのスライスに有効であるか否かを示すシンタックスエレメントを含むことを指定する。
【0007】
他の代表的な態様では、開示の技術は、ビデオ処理のための方法を提供するために使用されてもよい。この方法は、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマ量子化パラメータ(quantization parameter,QP)テーブルがデブロッキングフィルタのパラメータを導出するために使用される場合、クロマQPテーブルによる処理が個々のクロマQP値に対して実行されるように、デブロッキングフィルタがビデオユニットの境界で使用される。
【0008】
他の代表的な態様では、開示の技術は、ビデオ処理のための他の方法を提供するために使用されてもよい。この方法は、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、クロマQPオフセットは、ピクチャ/スライス/タイル/ブリック/サブピクチャレベルにある。
【0009】
他の代表的な態様では、開示の技術は、ビデオ処理のための他の方法を提供するために使用されてもよい。この方法は、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、同じルマコーディングユニットに関する情報は、デブロッキングフィルタでクロマQPオフセットを導出するために使用される。
【0010】
他の代表的な態様では、開示の技術は、ビデオ処理のための他の方法を提供するために使用されてもよい。この方法は、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、クロマQPオフセットの使用を有効にする指示は、コーディング表現で通知される。
【0011】
他の代表的な態様では、開示の技術は、ビデオ処理のための他の方法を提供するために使用されてもよい。この方法は、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、デブロッキングフィルタで使用されるクロマQPオフセットは、JCCRコーディング方法がビデオユニットの境界で適用されるか、JCCRコーディング方法とは異なる方法がビデオユニットの境界で適用されるかにかかわらず、同じである。
【0012】
他の代表的な態様では、開示の技術は、ビデオ処理のための他の方法を提供するために使用されてもよい。この方法は、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、デブロッキングフィルタの境界強度(boundary strength,BS)は、Qサイド境界におけるビデオユニットの参照ピクチャとPサイド境界におけるビデオユニットに関連する参照ピクチャ及び/又は動きベクトル(motion vector,MV)の数を比較することなく計算される。
【0013】
他の例示的な態様では、ビデオ処理の他の方法が開示される。この方法は、ビデオの成分のビデオユニットとビデオのコーディング表現との間の変換のために、サイズがKよりも大きくなければならないことを指定する制約規則に基づいて、ビデオユニットについての量子化グループのサイズを決定するステップであり、Kは正の数である、ステップと、決定に基づいて変換を実行するステップとを含む。
【0014】
他の例示的な態様では、ビデオ処理の他の方法が開示される。この方法は、規則に従ってビデオのビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、規則は、ビットストリームがクロマブロックベースのデルタパルスコード変調(block-based delta pulse code modulation,BDPCM)モード、パレットモード又は適応色変換(adaptive color transform,ACT)モードの制御フラグのうち少なくとも1つを含むか否かがビデオのクロマアレイタイプの値に基づくことを指定する。
【0015】
さらに、代表的な態様では、プロセッサと、命令を有する非一時的なメモリとを含むビデオシステム内の装置が開示される。命令は、プロセッサによって実行されると、プロセッサに開示の方法のいずれか1つ以上を実施させる。
【0016】
さらに、代表的な態様では、ビデオ復号装置は、開示の方法のいずれか1つ以上を実施するように構成されたプロセッサを含む。
【0017】
他の代表的な態様では、ビデオ符号化装置は、開示の方法のいずれか1つ以上を実施するように構成されたプロセッサを含む。
【0018】
また、非一時的なコンピュータ可読可能媒体に記憶されたコンピュータプログラム製品であり、開示の方法のいずれか1つ以上を実行するためのプログラムコードを含むコンピュータプログラム製品が開示される。
【0019】
開示の技術の上記及び他の態様及び特徴は、図面、明細書及び特許請求の範囲においてより詳細に記載される。
【図面の簡単な説明】
【0020】
図1】デブロッキングフィルタプロセスの全体的な処理フローの例を示す。
図2】Bs計算のフロー図の例を示す。
図3】CTU境界でのBs計算のための参照情報の例を示す。
図4】フィルタオン/オフ決定及び強/弱フィルタ選択に関与するピクセルの例を示す。
図5】VVCにおけるデブロッキングフィルタプロセスの全体的な処理フローの例を示す。
図6】VVCにおけるルマデブロッキングフィルタプロセスの例を示す。
図7】VVCにおけるクロマデブロッキングフィルタプロセスの例を示す。
図8】サブPU境界のためのフィルタ長の決定の例を示す。
図9A】クロマブロックの中心位置の例を示す。
図9B】クロマブロックの中心位置の例を示す。
図10】Pサイド及びQサイドのブロックの例を示す。
図11】ルマブロックの復号情報の使用の例を示す。
図12】本明細書で記載される視覚メディア復号又は視覚メディア符号化技術を実装するハードウェアプラットフォームの例のブロック図である。
図13】ビデオコーディングの方法の例示的なフローチャートを示す。
図14A】他のループフィルタに関するCC-ALFの配置の例を示す。
図14B】ダイヤモンド形状フィルタに関するCC-ALFの配置の例を示す。
図15】適応色変換(adaptive color transform,ACT)プロセスのための例示的なフローチャートを示す。
図16】ハイレベルのデブロッキング制御メカニズムのための例示的なフローチャートを示す。
図17】ハイレベルのデブロッキング制御メカニズムのための例示的なフローチャートを示す。
図18】本開示のいくつかの実施形態によるビデオコーディングシステムを示すブロック図である。
図19】本開示のいくつかの実施形態によるエンコーダを示すブロック図である。
図20】本開示のいくつかの実施形態によるデコーダを示すブロック図である。
図21】開示の技術が実装され得る例示的なビデオ処理システムのブロック図である。
図22】ビデオ処理の例示的な方法のフローチャートである。
図23】ビデオ処理の例示的な方法のフローチャートである。
図24】ビデオ処理の例示的な方法のフローチャートである。
【発明を実施するための形態】
【0021】
[1.HEVC/H.265におけるビデオコーディング]
ビデオコーディング標準は、周知のITU-T及びISO/IEC標準の開発を通じて主に発展してきた。ITU-TはH.261及びH.263を作り出し、ISO/IECはMPEG-1及びMPEG-4 Visualを作り出し、2つの組織は共同でH.262/MPEG-2 Video及びH264/MPEG-4 Advanced Video Coding(AVC)及びH.265/HEVC標準を作り出した。H.262以降、ビデオコーディング標準は、時間予測に変換コーディングをプラスしたものが利用されるハイブリッド型ビデオコーディング構造に基づいている。HEVCを超える将来のビデオコーディング技術を探求するために、Joint Video Exploration Team(JVET)が2015年にVCEG及びMPEGによって共同で設立された。それ以降、多くの新たな方法がJVETによって採用され、Joint Exploration Model(JEM)と呼ばれる参照ソフトウェアに置かれてきた。2018年4月に、VCEG(Q6/16)とISO/IEC JTC1 SC29/WG11(MPEG)との間で、JVETが、HEVCと比較して50%のビットレート低減を目標とするVVC標準を検討するために作られた。
【0022】
[2.1 HEVCにおけるデブロッキング方式]
デブロッキングフィルタプロセスは、復号プロセスと同じ順序でCU毎に実行される。最初に、垂直エッジがフィルタリング(水平フィルタリング)され、次いで、水平エッジがフィルタリング(垂直フィルタリング)される。フィルタリングは、ルマ成分及びクロマ成分の双方について、フィルタリングされるべきと決定された8×8ブロック境界に適用される。4×4ブロック境界は、複雑さを低減するために、処理されない。
【0023】
図1は、デブロッキングフィルタプロセスの全体的な処理フローを示す。境界は、3つのフィルタリング状態、すなわち、フィルタリングなし、弱フィルタリング及び強フィルタリングを有することができる。各フィルタリング決定は、境界強度Bsと、閾値β及びtCとに基づく。
【0024】
3種類の境界、すなわち、CU境界、TU境界及びPU境界が、フィルタリングプロセスに関与してもよい。CU境界は、CUの外側エッジであり、フィルタリングに常に関与する。これは、CU境界が常にTU境界又はPU境界でもあるからである。PU形状が2N×N(N>4)であり、RQTデプスが1に等しいとき、8×8ブロックグリッドでのTU境界、及びCU内の各PUの間のPU境界がフィルタリングに関与する。1つの例外は、PU境界がTU内にあるときに、その境界はフィルタリングされないことである。
【0025】
[2.2.1 境界強度の計算]
一般的に言えば、境界強度(Bs)は、どれくらい強いフィルタリングが境界に必要とされるかを反映する。Bsが大きい場合、強フィルタリングが考えられるべきである。
【0026】
P及びQが、フィルタリングに関与するブロックとして定義されるとする。Pは、境界の左側(垂直エッジの場合)又は上(水平エッジの場合)側に位置するブロックを表し、Qは、境界の右(垂直エッジの場合)又は上(水平エッジの場合)側に位置するブロックを表す。図2は、イントラコーディングモード、非ゼロ変換係数及び動き情報の存在、参照ピクチャ、動きベクトルの数、並びに動きベクトル差分に基づいてBsがどのように計算されるかを示す。
【0027】
Bsは4×4ブロック単位で計算されるが、8×8グリッドに再マッピングされる。4×4グリッド内のラインから成る8つのピクセルに対応するBsの2つの値の最大値が、8×8グリッド内の境界のためのBsとして選択される。
【0028】
ラインバッファメモリ要件を低減するために、CTU境界についてのみ、左又は上側にある2つおきのブロック(4×4グリッド)内の情報が、図3に表されるように再利用される。
【0029】
[2.1.2 β及びtCの決定]
フィルタオン/オフ決定、強及び弱フィルタ選択及び弱フィルタリングプロセスに関与する閾値β及びtCは、P及びQブロックのルマ量子化パラメータであるQPP及びQPQにそれぞれ基づいて導出される。β及びtCを導出するために使用されるQは以下の通り計算される。
Q=((QPP+QPQ+1)>>1)
【0030】
変数βは、Qに基づいて表1に示されるように導出される。Bsが1よりも大きい場合、変数tCは、Clip3(0,55,Q+2)を入力として用いて、表1のように指定される。そうでない(Bsが1以下である)場合、変数tCは、Qを入力として用いて、表1のように指定される。
【表1】
【0031】
[2.1.3. 4ラインのためのフィルタオン/オフ決定]
フィルタオン/オフ決定は、1つの単位として4ラインについて行われる。図4は、フィルタオン/オフ決定に関与するピクセルを示す。最初の4つのラインの2つの赤色ボックス内の6つのピクセルが、4つのラインについてフィルタオン/オフを決定するために使用される。二番目の4つのラインの2つの赤色ボックス内の6つのピクセルが、二番目の4つのラインについてフィルタオン/オフを決定するために使用される。
【0032】
dp0+dq0+dp3+dq3<βである場合、最初の4つのラインに対するフィルタリングはオンにされ、強/弱フィルタ選択プロセスが適用される。各変数は、以下のように導出される。
dp0=|p2,0-2×p1,0+p0,0|
dp3=|p2,3-2×p1,3+p0,3|
dp4=|p2,4-2×p1,4+p0,4|
dp7=|p2,7-2×p1,7+p0,7|
dq0=|q2,0-2×q1,0+q0,0|
dq3=|q2,3-2×q1,3+q0,3|
dq4=|q2,4-2×q1,4+q0,4|
dq7=|q2,7-2×q1,7+q0,7|
【0033】
条件が満たされない場合、最初の4つのラインに対してフィルタリングは行われない。さらに、条件が満たされる場合、dEp1、及びdEp2が弱フィルタリングプロセスのために導出される。変数dEは、1に等しく設定される。dp0+dp3<(β+(β>>1))>>3である場合、変数dEp1は1に等しく設定される。dq0+dq3<(β+(β>>1))>>3である場合、dEq1は1に等しく設定される。
【0034】
二番目の4つのラインについては、上記と同じようにして決定が行われる。
【0035】
[2.1.4. 4ラインのための強/弱フィルタ選択]
最初の4つのラインがフィルタオン/オフ決定においてフィルタリングオンであると決定された後に、以下の2つの条件が満たされる場合、最初の4つのラインのフィルタリングのために強フィルタが使用される。そうでない場合、弱フィルタがフィルタリングのために使用される。関与するピクセルは、図4に表されるようにフィルタオン/オフ決定に使用されたものと同じである。
1)2×(dp0+dq0)<(β>>2),|p30-p00|+|q00-q30|<(β>>3)及び|p00-q00|<(5×tC+1)>>1
2)2×(dp3+dq3)<(β>>2),|p33-p03|+|q03-q33|<(β>>3)及び|p03-q03|<(5×tC+1)>>1
【0036】
同様に、以下の2つの条件が満たされる場合、二番目の4つのラインのフィルタリングのために強フィルタが使用される。そうでない場合、弱フィルタがフィルタリングのために使用される。
1)2×(dp4+dq4)<(β>>2),|p30-p04|+|q04-q34|<(β>>3)及び|p04-q04|<(5×tC+1)>>1
2)2×(dp7+dq7)<(β>>2),|p37-p07|+|q07-q37|<(β>>3)及び|p07-q07|<(5×tC+1)>>1
【0037】
[2.1.4.1. 強フィルタリング]
強フィルタリングのために、フィルタリングされたピクセル値が、以下の式によって取得される。Pブロック及びQブロックのそれぞれについて4つのピクセルを入力として使用して3つのピクセルが変更される点に留意されたい。
p0’=(p2+2×p1+2×p0+2×q0+q1+4)>>3
q0’=(p1+2×p0+2×q0+2×q1+q2+4)>>3
p1’=(p2+p1+p0+q0+2)>>2
q1’=(p0+q0+q1+q2+2)>>2
p2’=(2×p3+3×p2+p1+p0+q0+4)>>3
q2’=(p0+q0+q1+3×q2+2×q3+4)>>3
【0038】
[2.1.4.2. 弱フィルタリング]
Δを以下のように定義するとする。
Δ=(9×(q0-p0)-3×(q1-p1)+8)>>4
abs(Δ)がtC×10よりも小さいとき、
Δ=Clip3(-tC,tC,Δ)
p0’=Clip1Y(p0+Δ)
q0’=Clip1Y(q0-Δ)
dEp1が1に等しい場合、
Δp=Clip3(-(tC>>1),tC>>1,(((p2+p0+1)>>1)-p1+Δ)>>1)
p1’=Clip1Y(p1+Δp)
dEp1が1に等しい場合、
Δq=Clip3(-(tC>>1),tC>>1,(((q2+q0+1)>>1)-q1-Δ)>>1)
q1’=Clip1Y(q1+Δq)
【0039】
Pブロック及びQブロックのそれぞれについて3つのピクセルを入力として使用して最大2つのピクセルが変更される点に留意されたい。
【0040】
[2.1.4.3. クロマフィルタリング]
クロマフィルタリングのBsは、ルマから引き継がれる。Bs>1である場合、或いは、コーディングされたクロマ係数が存在する場合、クロマフィルタリングが実行される。他のフィルタリング決定は存在しない。また、1つのフィルタのみがクロマについて適用される。クロマのためのフィルタ選択プロセスは使用されない。フィルタリングされたサンプル値p0’及びq0’は、以下のように導出される。
Δ=Clip3(-tC,tC,((((q0-p0)<<2)+p1-q1+4)>>3))
p0’=Clip1C(p0+Δ)
q0’=Clip1C(q0-Δ)
【0041】
[2.2 VVCにおけるデブロッキング方式]
VTM6では、デブロッキングフィルタプロセスは、HEVCにおけるものとほとんど同じである。しかし、以下の変更が加えられている。
a)再構成されたサンプルの平均化されたルマレベルに依存するデブロッキングフィルタのフィルタ強度
b)10ビットビデオへのデブロッキングtCテーブルの拡張及び適応
c)ルマのための4×4グリッドでブロッキング
d)ルマのためのより強いデブロッキングフィルタ
e)クロマのためのより強いデブロッキングフィルタ
f)サブブロック境界のためのデブロッキングフィルタ
g)動きのより小さい差に適応されたデブロッキング決定
【0042】
図5は、コーディングユニットに対するVVCでのデブロッキングフィルタプロセスのフローチャートを表す。
【0043】
[2.2.1. 再構成された平均ルマに依存するフィルタ強度]
HEVCでは、デブロッキングフィルタのフィルタ強度は、平均化された量子化パラメータqPLから導出される変数β及びtCによって制御される。VTM6では、デブロッキングフィルタは、この方法のSPSフラグが真である場合、再構成されたサンプルのルマレベルに従ってqPLにオフセットを加えることによって、デブロッキングフィルタの強度を制御する。再構成されたルマレベルLLは、以下のように導出される。
LL=((p0,0+p0,3+q0,0+q0,3)>>2)/(1<<bitDepth) (3-1)
ここで、サンプル値pi,k及びqi,k(i=0・・・3、k=0及び3)は・・・に示すように導出される。次いで、LLが、SPSにおいて通知された閾値に基づいてオフセットqpOffsetを決定するために使用される。その後に、以下のように導出されるqPLが、β及びtCを導出するために用いられる。
qPL=((QpQ+QpP+1)>>1)+qpOffset (3-2)
ここで、QpQ及びQpPは、それぞれ、サンプルq0,0及びp0,0を含むコーディングユニットの量子化パラメータを示す。現在のVVCでは、この方法は、ルマデブロッキングプロセスに対してのみ適用される。
【0044】
[2.2.2. ルマのための4×4デブロッキンググリッド]
HEVCは、ルマ及びクロマの双方のために8×8デブロッキンググリッドを使用する。VTM6では、ルマ境界についての4×4グリッドでのデブロッキングは、矩形変換形状からのブロッキングアーチファクトを扱うために導入された。4×4グリッドでの並列フレンドリなルマデブロッキングは、デブロッキングされるサンプルの数を、一辺が4以下の幅である垂直ルマ境界の各辺での1サンプル、又は一辺が4以下の高さである水平ルマ境界の各辺での1サンプルに制限することによって、達成される。
【0045】
[2.2.3. ルマのための境界強度の導出]
詳細な境界強度の導出は、表2にあるものとしてもよい。表2内の条件は順にチェックされる。
【表2】
【0046】
[2.2.4. ルマのためのより強いデブロッキングフィルタ]
提案は、境界のどちらか一方の側にあるサンプルが大きいブロックに属するときにバイリニアフィルタを使用する。大きいブロックに属するサンプルは、垂直エッジについては幅>=32である場合として定義され、水平エッジについては高さ>=32である場合として定義される。
【0047】
バイリニアフィルタは、以下に記載される。
【0048】
i=0~Sp-1のブロック境界サンプルpi及びj=0~Sq-1のブロック境界サンプルqj(pi及びqjは、上記のHEVCデブロッキングでの定義に従う)は、その場合、以下のように線形補間によって置換される。
- pi’=(fi×Middles,t+(64-fi)×Ps+32)>>6),
pi±tCPDiにクリップされる
- qj’=(gj×Middles,t+(64-gj)×Qs+32)>>6),
qj±tCPDjにクリップされる
ここで、tCPDi及びtCPDjの項は、第2.2.5節で記載される位置依存のクリッピングであり、gj、fi、Middles,t、Ps及びQsは、以下で与えられる。
【表3】
【0049】
[2.2.5. ルマのためのデブロッキング制御]
デブロッキング決定プロセスは、このサブセクションで記載される。
【0050】
より幅広くより強いルマフィルタは、条件1、条件2及び条件3の全てが真である場合にのみ使用されるフィルタである。
【0051】
条件1は、「大きいブロックの条件」(“large block condition”)である。この条件は、Pサイド及びQサイドのサンプルが大きいブロックに属するか否かを検出する。これは、変数bSidePisLargeBlk及びbSideQisLargeBlkによってそれぞれ表される。bSidePisLargeBlk及びbSideQisLargeBlkは、以下のように定義される。
bSidePisLargeBlk=((エッジタイプが垂直であり、p0が幅>=32を有するCUに属する)||(エッジタイプが水平であり、p0が高さ>=32を有するCUに属する))?TRUE:FALSE
bSideQisLargeBlk=((エッジタイプが垂直であり、q0が幅>=32を有するCUに属する)||(エッジタイプが水平であり、q0が高さ>=32を有するCUに属する))?TRUE:FALSE
【0052】
bSidePisLargeBlk及びbSideQisLargeBlkに基づいて、条件1は、以下のように定義される。
条件1=(bSidePisLargeBlk||bSideQisLargeBlk)?TRUE:FALSE
【0053】
次に、条件1が真である場合、条件2が更にチェックされる。最初に、以下の変数が導出される。
- dp0、dp3、dq0、dq3が、HEVCで見られるように、最初に導出される
- if(pサイドが32以上である)
dp0=(dp0+Abs(p5,0-2×p4,0+p3,0)+1)>>1
dp3=(dp3+Abs(p5,3-2×p4,3+p3,3)+1)>>1
- if(qサイドが32以上である)
dq0=(dq0+Abs(q5,0-2×q4,0+q3,0)+1)>>1
dq3=(dq3+Abs(q5,3-2×q4,3+q3,3)+1)>>1
- dpq0、dpq3、dp、dq、dが、次いで、HEVCで見られるように、導出される。
【0054】
次いで、条件2は、以下のように定義される。
条件2=(d<β)?TRUE:FALSE
ここで、第2.1.4節で示されるように、d=dp0+dq0+dp3+dq3である。
【0055】
条件1及び条件2が妥当である場合、ブロックのいずれかがサブブロックを使用するか否かがチェックされる。
- If(bSidePisLargeBlk)
If(mode block P==SUBBLOCKMODE)
Sp=5
else
Sp=7
else
Sp=3
- If(bSideQisLargeBlk)
If(mode block Q==SUBBLOCKMODE)
Sq=5
else
Sq=7
else
Sq=3
【0056】
最後に、条件1及び条件2の双方が妥当である場合、提案されているデブロッキング方法は、以下のように定義される条件3(大きいブロックの強いフィルタ条件)をチェックする。条件3の強フィルタ条件(StrongFolterCondition)では、次の変数が導出される。
- dpqが、HEVCで見られるように、導出される
- HEVCで見られるように導出されたsp3=Abs(p3-p0)
- if(pサイドが32以上である)
if(Sp==5)
sp3=(sp3+Abs(p5-p3)+1)>>1
else
sp3=(sp3+Abs(p77-p3)+1)>>1
- HEVCで見られるように導出されたsq33=Abs(q0-q3)
- if(qサイドが32以上である)
if(Sp==5)
sq3=(sq3+Abs(q5-q3)+1)>>1
else
sq3=(sq3+Abs(q7-q3)+1)>>1
【0057】
HEVCで見られるように、StrongFilterCondition=(dpqが(β>>2)よりも小さい,sp3+sq3が(3×β>>5)よりも小さい,且つ,Abs(p0-q0)が(5×tC+1)>>1よりも小さい)?TRUE:FALSEである。
【0058】
図6は、ルマデブロッキングフィルタプロセスのフローチャートを表す。
【0059】
[クロマのための強デブロッキングフィルタ]
クロマのための以下の強デブロッキングフィルタが定義される。
p2’=(3×p3+2×p2+p1+p0+q0+4)>>3
p1’=(2×p3+p2+2×p1+p0+q0+q1+4)>>3
p0’=(p3+p2+p1+2×p0+q0+q1+q2+4)>>3
【0060】
提案されているクロマフィルタは、4×4クロマサンプルグリッドに対してデブロッキングを実行する。
【0061】
[2.2.7. クロマのためのデブロッキング制御]
上記のクロマフィルタは、8×8クロマサンプルグリッドに対してデブロッキングを実行する。クロマ強フィルタは、ブロック境界の両側で使用される。ここで、クロマフィルタは、クロマエッジの両側が8(クロマサンプルの単位)以上であり、3つの条件を有する以下の決定が満たされるときに、選択される。第1の条件は、大きいブロック及び境界強度の決定に関する。第2及び第3の条件は、基本的に、HEVCルマ決定の場合と同じであり、それぞれ、オン/オフ決定及び強フィルタ決定である。
【0062】
図7は、クロマデブロッキングフィルタプロセスのフローチャートを表す。
【0063】
[2.2.8. 位置依存のクリッピング]
提案はまた、境界で7、5及び3つのサンプルを変更するものである強く且つ長いフィルタを含むルマフィルタリングプロセスの出力サンプルに適用される位置依存のクリッピングtcPDも導入する。量子化誤差分布を仮定して、サンプルのクリッピング値を増加させることが提案される。これは、より高い量子化ノイズを有することが予想されるので、真のサンプル値からの再構成されたサンプル値のより高い偏差を有することが予想される。
【0064】
提案される非対称フィルタによりフィルタリングされた各P又はQ境界のそれぞれについて、第2.2節で記載された意志決定プロセスの結果に依存して、位置依存の閾値テーブルは、サイド情報としてデコーダに提供されるTc7及びTc3テーブルから選択される。
Tc7={6,5,4,3,2,1,1};
Tc3={6,4,2};
tcPD=(SP==3)?Tc3:Tc7;
tcQD=(SQ==3)?Tc3:Tc7;
【0065】
短い対称フィルタを用いてP又はQ境界がフィルタリングされる場合、より桁が低い位置依存の閾値が適用される。
Tc3={3,2,1};
【0066】
閾値を定義することに続いて、フィルタリングされたp’i及びq’jのサンプル値は、tcP及びtcQのクリッピング値に従ってクリッピングされる。
p”i=Clip3(p’i+tcPi,p’i-tcPi,p’i);
q”j=Clip3(q’j+tcQj,q’j-tcQj,q’j);
ここで、p’i及びq’jは、フィルタリングされたサンプル値であり、p”i及びq”jは、クリッピング後の出力サンプル値であり、tcPi及びtcQjは、VVCのtcパラメータ並びにtcPD及びtcQDから導出されるクリッピング閾値である。Clip3の項は、VVCで指定されているクリッピング関数である。
【0067】
[2.2.9. サブブロックデブロッキング調整]
長いフィルタ及びサブブロックデブロッキングの双方を使用して並列フレンドリなデブロッキングを可能にするために、長いフィルタは、長いフィルタについてルマ制御で示されるように、サブブロックデブロッキング(AFFINE又はATMVP)を使用する側でせいぜい5つのサンプルを変更するよう制限される。更に、サブブロックデブロッキングは、CU又は暗黙的なTU境界に近い8×8グリッド上のサブブロック境界がそれぞれの側でせいぜい2つのサンプルを変更するよう制限されるように、調整される。
【0068】
以下は、CU境界と整列していないサブブロック境界に適用される。
- If(mode block Q==SUBBLOCKMODE && edge!=0){
if(!(implicitTU && (edge==(64/4))))
if(edge==2 || edge==(orthogonalLength-2) || edge==(56/4) || edge==(72/4))
Sp=Sq=2;
else
Sp=Sq=3;
else
Sp=Sq=bSideQisLargeBlk?5:3
}
【0069】
0に等しいエッジがCU境界に対応する場合、2に等しいか或いはorthogonalLength-2に等しいエッジは、CU境界等からの8サンプルのサブブロック境界に対応する。TUの暗黙的な分割が使用される場合、暗黙的なTUは真である。図8は、TU境界及びサブPU境界についての決定プロセスのフローチャートを示す。
【0070】
水平境界のフィルタリングは、水平境界がCTU境界と整列する場合、ルマについてはSp=3、クロマについてはSp=1及びSq=1を制限している。
【0071】
[2.2.10. 動きのより小さい差に適応されたデブロッキング決定]
HEVCは、境界のそれぞれの側にあるブロックの間の少なくとも1つの動きベクトル成分の差が1サンプルの閾値以上であるときに、予測ユニット境界のデブロッキングを有効にする。VTM6では、半ルマサンプルの閾値が、動きベクトルの小さい差を有するインター予測ユニットの間の境界から生じるブロッキングアーチファクトの除去も可能にするために導入される。
【0072】
[2.3. インター及びイントラ複合予測(CIIP)]
VTM6では、CUがマージモードでコーディングされる場合、CUが少なくとも64個のルマサンプルを含む場合(すなわち、CU幅×CU高さは64以上である)、且つ、CU幅及びCU高さの双方が128個のルマサンプル未満である場合、インター/イントラ複合予測(Combined Inter/Intra Prediction,CIIP)モードが現在CUに適用されるか否かを示すために、追加のフラグが通知される。その名が示すとおり、CIIP予測は、インター予測信号をイントラ予測信号と組み合わせる。CIIPモードでのインター予測信号Pinterは、通常のマージモードに適用されるのと同じインター予測プロセスを用いて導出され、イントラ予測信号Pintraは、プレーナーモードによる通常のイントラ予測プロセスに従って導出される。次いで、イントラ予測信号及びインター予測信号は、加重平均を用いて結合される。ここで、重み値は、以下のように、上隣接ブロック及び左隣接ブロックのコーディングモードに依存して計算される。
- 上隣接ブロックが利用可能であり、イントラコーディングされている場合、isIntraTopを1に設定し、そうでない場合、isIntraTopを0に設定する。
- 左隣接ブロックが利用可能であり、イントラコーディングされている場合、isIntraLeftを1に設定し、そうでない場合、isIntraLeftを0に設定する。
- (isIntraLeft+isIntraTop)が2に等しい場合、wtは3に設定される。
- そうではなく、(isIntraLeft+isIntraTop)が1に等しい場合、wtは2に設定される。
- 上記以外の場合、wtを1に設定する。
【0073】
CIIP予測は、以下のように形成される:
PCIIP=((4-wt)×Pinter+wt×Pintra+2)>>2
【0074】
[2.4. VTM6.0におけるクロマQPテーブル設計]
JVET-O0650において提示されているクロマQPテーブルがVICに採用されている。それは、クロマQPテーブルのための通知メカニズムを提案しており、SDR及びHDRコンテンツのためのテーブルを最適化する機会をエンコーダに提供するのが柔軟になることを可能にする。それは、Cb及びCr成分について別々にテーブルを通知することをサポートする。提案されているメカニズムは、区分線形関数(piece-wise linear function)としてクロマQPテーブルを通知する。
【0075】
[2.5. 変換スキップ(Transform Skip,TS)]
HEVCで見られるように、ブロックの残差は、変換スキップモードによりコーディングされ得る。シンタックスコーディングの冗長性を回避するために、変換スキップフラグは、CUレベルのMTS_CU_flagがゼロに等しいない場合には通知されない。変換スキップのブロックサイズ情報は、JEM4におけるMTSのそれと同じである。これは、ブロックの幅及び高さが32以下である場合にCUに対して変換スキップが適用可能であることを示す。暗黙的なMTS変換は、LFNST又はMIPが現在CUに対してアクティブにされる場合、DCT2に設定される点に留意されたい。また、暗黙的なMTSは、MTSがインターコーディングされたブロックに対して有効にされる場合、依然として有効にできる。
【0076】
さらに、変換スキップブロックについて、最大許容量子化パラメータ(Quantization Parameter,QP)は、6×(internalBitDepth-inputBitDepth)+4と定義される。
【0077】
[2.6. クロマ残差の共同コーディング(Joint Coding of Chroma Residuals,JCCR)]
VVCドラフト6は、クロマ残差が共同でコーディングされるモードをサポートする。共同クロマコーディングモードの利用(活性化)は、TUレベルのフラグtu_joint_cbcr_residual_flagによって示され、選択されたモードは、クロマCBFによって暗黙的に示される。フラグtu_joint_cbcr_residual_flagは、TUのための一方又は双方のクロマCBFが1に等しい場合に存在する。PPS及びスライスヘッダにおいて、クロマQPオフセット値は、通常のクロマ残差コーディングモードについて通知された通常のクロマQPオフセットと区別するために、共同クロマ残差コーディングモードについて通知される。これらのクロマQPオフセット値は、共同クロマ残差コーディングモードを使用してコーディングされたブロックについてクロマQP値を導出するために使用される。対応する共同クロマコーディングモード(表3のモード2)がTUでアクティブである場合、このクロマQPオフセットは、そのTUの量子化及び復号中に、適用されたルマ導出クロマQPに加えられる。他のモード(表3のモード1及び3)については、クロマQPは、従来のCb又はCrブロックの場合と同じように導出される。伝送された変換ブロックからのクロマ残差(resCb及びresCr)の再構成プロセスは、表3に表されている。このモードがアクティブにされる場合、1つの単一共同クロマ残差ブロック(表3のresJointC[x][y])が通知され、Cbの残差ブロック(resCb)及びCrの残差ブロック(resCr)は、tu_cbf_cb、tu_cbf_cr及びCsign(スライスヘッダにおいて指定された符号値である)のような情報を考慮して導出される。
【0078】
エンコーダ側で、共同クロマ成分は、以下で説明されるように導出される。モード(上記の表に記載される。)に依存して、resJointC{1,2}は、以下のようにエンコーダによって生成される。
●モードが2に等しい場合(再構成Cb=Cr、Cr=CSign×Cによる単一の残差)、共同残差は、
resJointC[x][y]=(resCb[x][y]+CSign×resCr[x][y])/2
に従って決定される。
●そうではなく、モードが1に等しい場合(再構成Cb=Cr、Cr=(CSign×C)/2による単一の残差)、共同残差は、
resJointC[x][y]=(4×resCb[x][y]+2×CSign×resCr[x][y])/5
に従って決定される。
●上記以外の場合(モードが3に等しい、すなわち、再構成Cb=Cr、Cb=(CSign×C)/2による単一の残差)、共同残差は、
resJointC[x][y]=(4×resCr[x][y]+2×CSign×resCb[x][y])/5
に従って決定される。
【表4】
【0079】
異なるQPが、上記の3つのモードで利用される。モード2については、JCCRコーディングされたブロックについてPPSにおいて通知されたQPオフセットが適用され、一方、残り2つのモードについては、それは適用されず、代わりに、非JCCRコーディングされたブロックについてPPSにおいて通知されたQPオフセットが適用される。
【0080】
対応する仕様は、以下の通りである。
【0081】
[8.7.1 量子化パラメータの導出プロセス]
変数QpYは、以下のように導出される。
QpY=((qPY_PRED+CuQpDeltaVal+64+2×QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY (8-933)
ルマ量子化パラメータQp’Yは、以下のように導出される。
Qp’Y=QpY+QpBdOffsetY (8-934)
ChromaArrayTypeが0に等しくなく、treeTypeがSINGLE_TREE又はDUAL_TREE_CHROMAに等しい場合、以下が適用される。
- treeTypeがDUAL_TREE_CHROMAに等しい場合、変数QpYは、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
- 変数qPCb,、qPCr及びqPCbCrは、以下のように導出される。
qPiChroma=Clip3(-QpBdOffsetC,63,QpY) (8-935)
qPiCb=ChromaQpTable[0][qPiChroma] (8-936)
qPiCr=ChromaQpTable[1][qPiChroma] (8-937)
qPiCbCr=ChromaQpTable[2][qPiChroma] (8-938)
-Cb及びCr成分のクロマ量子化パラメータQp’Cb及びQp’Cr,、並びに共同Cb-Crコーディングの量子化パラメータはQp’CbCrは、以下のように導出される。
Qp’Cb=Clip3(-QpBdOffsetC,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffsetC (8-939)
Qp’Cr=Clip3(-QpBdOffsetC,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffsetC (8-940)
Qp’CbCr=Clip3(-QpBdOffsetC,63,qPCbCr+pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffsetC (8-941)
【0082】
[8.7.3 変換係数のスケーリングプロセス]
このプロセスへの入力は以下の通りである。
- 現在のピクチャの左上ルマサンプルに対する現在のルマ変換ブロックの左上サンプルを指定するルマ位置(xTbY,yTbY)
- 変換ブロック幅を指定する変数nTbW
- 変換ブロック高さを指定する変数nTbH
- 現在のブロックの色成分を指定する変数cIdx
- 現在の色成分のビットデプスを指定する変数bitDepth
このプロセスの出力は、要素d[x][y]を有するスケーリングされた変換係数の(nTbW)×(nTbH)アレイdである。
量子化パラメータqPは、以下のように導出される。
- cIdxが0に等しく、transform_skip_flag[xTbY][yTbY]が0に等しい場合、以下が適用される。
qP=Qp’Y (8-950)
- そうではなく、cIdxが0に等しく(且つ、transform_skip_flag[xTbY][yTbY]が1に等しい)場合、以下が適用される。
qP=Max(QpPrimeTsMin,Qp’Y) (8-951)
- そうではなく、TuCResMode[xTbY][yTbY]が2に等しい場合、以下が適用される。
qP=Qp’CbCr (8-952)
- そうではなく、cIdxが1に等しい場合、以下が適用される。
qP=Qp’Cb (8-953)
- そうでない(cIdxが2に等しい)場合、以下が適用される。
qP=Qp’Cr (8-954)
【0083】
[2.7. クロスコンポーネント適応ループフィルタ(Cross-Component Adaptive Loop Filter,CC-ALF)]
以下の図14Aは、他のループフィルタに対するCC-ALFの配置を示す。CC-ALFは、クロマ成分毎にルマチャネルに対して線形のダイヤモンド形状のフィルタ(図14B)を適用することによって動作し、これは以下のように表される。
【数1】
ここで、(x,y)は、洗練化されているクロマ成分iの位置であり、(xC,yC)は、(x,y)に基づくルマ位置であり、Siは、クロマ成分iについてのルマにおけるフィルタサポートであり、ci(x0,y0)は、フィルタ係数を表す。
CC-ALFプロセスの主な特徴は以下を含む。
●サポート領域が中心にあるルマ位置(xC,yC)は、ルマ面とクロマ面との間の空間スケーリング係数に基づいて計算される。
●全てのフィルタ係数はAPSで伝送され、8ビットのダイナミックレンジを有する。
●APSは、スライスヘッダで参照されてもよい。
●スライスの各クロマ成分に使用されるCC-ALF係数も、時間サブレイヤに対応するバッファに格納される。これらの時間サブレイヤのフィルタ係数のセットの再利用は、スライスレベルのフラグを使用して実現される。
●CC-ALFフィルタの適用は、可変ブロックサイズで制御され、サンプルのブロック毎に受信されるコンテキストコーディングされたフラグによって通知される。ブロックサイズは、CC-ALF有効フラグと共にクロマ成分毎にスライスレベルで受信される。
●水平仮想境界についての境界パディングは繰り返しを利用する。残りの境界では、通常のALFと同じタイプのパディングが使用される。
【0084】
[2.8 量子化パラメータの導出プロセス]
QPは隣接QP及び復号されたデルタQPに基づいて導出される。JVET-P2001-vEにおけるQP導出に関連するテキストは以下の通りである。
このプロセスへの入力は以下の通りである。
- 現在のピクチャの左上ルマサンプルに対する現在のコーディングブロックの左上ルマサンプルを指定するルマ位置(xCb,yCb)
- ルマサンプル内の現在のコーディングブロックの幅を指定する変数cbWidth
- ルマサンプルの現在のコーディングブロックの高さを指定する変数cbHeight
- コーディングツリーノードをパーティション化するために、シングルツリー(SINGLE_TREE)が使用されるかデュアルツリー(DUAL_TREE_CHROMA)が使用されるかを指定し、デュアルツリーが使用される場合にルマ成分(DUAL_TREE_LUMA)が現在処理されているかクロマ成分(DUAL_TREE_CHROMA)が現在処理されているかを指定する変数treeType
このプロセスでは、ルマ量子化パラメータQp’Y並びにクロマ量子化パラメータQp’Cb、Qp’Cr及びQp’CbCrが導出される。
ルマ位置(xQg,yQg)は、現在のピクチャの左上ルマサンプルに対する現在の量子化グループの左上ルマサンプルを指定する。水平位置xQg及び垂直位置yQgは、それぞれCuQgTopLeftX及びCuQgTopLeftYに等しく設定される。
注記:現在の量子化グループは、同じqPY_PREDを共有するコーディングツリーブロック内の矩形領域である。その幅及び高さは、左上ルマサンプル位置が変数CuQgTopLeftX及びCuQgTopLeftYに割り当てられているコーディングツリーノードの幅及び高さに等しい。
treeTypeがSINGLE_TREE又はDUAL_TREE_LUMAに等しい場合、予測ルマ量子化パラメータqPY_PREDは、以下の順序のステップによって導出される。
1. 変数qPY_PREVは以下のように導出される。
- 以下の条件のうち1つ以上が真である場合、qPY_PREVはSliceQpYに等しく設定される。
- 現在の量子化グループは、スライス内の最初の量子化グループである。
- 現在の量子化グループは、タイル内の最初の量子化グループである。
- 現在の量子化グループは、タイルのCTB行内の最初の量子化グループであり、entropy_coding_sync_enabled_flagは1に等しい。
- そうでない場合、qPY_PREVは、復号順で前の量子化グループ内の最後のルマコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
2. 第6.4.4節で指定された隣接ブロック可用性の導出プロセスは、(xCb,yCb)に等しく設定された位置(xCurr,yCurr)、(xQg-1,yQg)に等しく設定された隣接位置(xNbY,yNbY)、FALSEに等しく設定されたcheckPredModeY、及び0に等しく設定されたcIdxを入力として使用し、出力はavailableAに割り当てられる。変数qPY_Aは以下のように導出される。
- 以下の条件のうち1つ以上が真である場合、qPY_AはqPY_PREVに等しく設定される。
- availableAはFALSEに等しい。
- ルマ位置(xQg-1,yQg)をカバーするルマコーディングブロックを含むCTBは、(xCb,yCb)における現在のルマコーディングブロックを含むCTBに等しくなく、すなわち、以下の条件の全てが真である。
- (xQg-1)>>CtbLog2SizeYが(xCb)に等しくない>>CtbLog2SizeY
- (yQg)>>>CtbLog2SizeYが(yCb)に等しくない>>CtbLog2SizeY
- そうでない場合、qPY_Aは、(xQg-1,yQg)をカバーするルマコーディングブロックを含むコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
3. 第6.4.4節で指定された隣接ブロック可用性の導出プロセスは、(xCb,yCb)に等しく設定された位置(xCurr,yCurr)、(xQg,yQg-1)に等しく設定された隣接位置(xNbY,yNbY)、FALSEに等しく設定されたcheckPredModeY、及び0に等しく設定されたcIdxを入力として使用し、出力はavailableBに割り当てられる。変数qPY_Bは以下のように導出される。
- 以下の条件のうち1つ以上が真である場合、qPY_BはqPY_PREVに等しく設定される。
- availableBはFALSEに等しい。
- ルマ位置(xQg,yQg-1)をカバーするルマコーディングブロックを含むCTBは、(xCb,yCb)における現在のルマコーディングブロックを含むCTBに等しくなく、すなわち、以下の条件の全てが真である。
- (xQg)>>CtbLog2SizeYが(xCb)に等しくない>>CtbLog2SizeY
- (yQg-1)>>>CtbLog2SizeYが(yCb)に等しくない>>CtbLog2SizeY
- そうでない場合、qPY_Bは、(xQg,yQg-1)をカバーするルマコーディングブロックを含むコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
4. 予測ルマ量子化パラメータqPY_PREDは以下のように導出される。
- 全ての以下の条件が満たされる場合、qPY_PREDは、(xQg,yQg-1)をカバーするルマコーディングブロックを含むコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
- availableBはTRUEに等しい。
- 現在の量子化グループは、タイル内のCTB行の最初の量子化グループである。
- そうでない場合、qPY_PREDは以下のように導出される。
qPY_PRED=(qPY_A+qPY_B+1)>>1 (1115)
変数QpYは以下のように導出される。
QpY=((qPY_PRED+CuQpDeltaVal+64+2×QpBdOffset)%(64+QpBdOffset))-QpBdOffset (1116)
ルマ量子化パラメータQp’Yは以下のように導出される。
Q’Y=QpY+QpBdOffset (1117)
ChromaArrayTypeが0に等しくなく、treeTypeがSINGLE_TREE又はDUAL_TREE_CHROMAに等しい場合、以下が適用される。
- treeTypeがDUAL_TREE_CHROMAに等しい場合、変数QpYは、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
- 変数qPCb、qPCr及びqPCbCrは、以下のように導出される。
qPChroma=Clip3(-QpBdOffset,63,QpY) (1118)
qPCb=ChromaQpTable[0][qPChroma] (1119)
qPCr=ChromaQpTable[1][qPChroma] (1120)
qPCbCr=ChromaQpTable[2][qPChroma] (1121)
- Cb及びCr成分のクロマ量子化パラメータQp’Cb及びQp’Cr並びに共同Cb-Crコーディングのクロマ量子化パラメータQp’CbCrは以下のように導出される。
Qp’Cb=Clip3(-QpBdOffset,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffset (1122)
Qp’Cr=Clip3(-QpBdOffset,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffset (1123)
Qp’CbCr=Clip3(-QpBdOffset,63,qPCbCr+pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffset (1124)
【0085】
[2.9 適応色変換(Adaptive color transform,ACT)]
図15は、ACTが適用される復号フローチャートを示す。図1に示すように、色空間変換は、残差ドメインで実行される。具体的には、1つの更なる復号モジュール、すなわち、逆ACTが、YCgCoドメインから元のドメインに戻すように残差を変換するために逆変換の後に導入される。
VVCでは、最大変換サイズが1つのコーディングユニット(coding unit,CU)の幅又は高さよりも小さい場合を除き、1つのCUリーフノードも変換処理の単位として使用される。したがって、提案される実装では、その残差をコーディングするための色空間を選択するために、1つのCUについてACTフラグが通知される。さらに、HEVC ACT設計に従って、インター及びIBC CUについて、CU内に少なくとも1つの非ゼロ係数が存在する場合にのみ、ACTが有効になる。イントラCUでは、クロマ成分がルマ成分の同じイントラ予測モード、すなわち、DMモードを選択する場合にのみ、ACTが有効になる。
色空間変換に使用されるコア変換は、HEVCに使用されるものと同じに保持される。具体的には、以下に記載の順方向及び逆方向YCgCo色変換行列が適用される。
【数2】
さらに、色変換前後の残差信号のダイナミックレンジ変化を補償するために、(-5,-5,-3)のQP調整が変換残差に適用される。
一方、図15に示すように、順方向及び逆方向の色変換は、全ての3つの成分の残差にアクセスする必要がある。対応して、提案される実装では、ACTは、3つの成分の全ての残差が利用可能でない以下の2つのシナリオで無効になる。
1. セパレートツリーパーティション(separate tree partition):セパレートツリーが適用される場合、1つのCTU内のルマ及びクロマサンプルは、異なる構造によってパーティション化される。その結果、ルマツリーのCUがルマ成分のみを含み、クロマツリーのCUが2つのクロマ成分のみを含む。
イントラサブパーティション予測(Intra sub-partition prediction,ISP):ISPサブパーティションはルマにのみ適用され、クロマ信号は分割せずにコーディングされる。現在のISP設計では、最後のISPサブパーティションを除いて、他のサブパーティションはルマ成分のみを含む。
【0086】
[2.10 VVCドラフト7のハイレベルのデブロッキング制御]
制御メカニズムが以下の図16に示されている。
【0087】
[2.11 クロスコンポーネント適応ループフィルタ(Cross-Component Adaptive Loop Filter,CC-ALF)]
図14Aは、他のループフィルタに対するCC-ALFの配置を示す。CC-ALFは、クロマ成分毎にルマチャネルに対して線形のダイヤモンド形状のフィルタ(図14B)を適用することによって動作し、これは以下のように表される。
【数3】
ここで、(x,y)は、洗練化されているクロマ成分iの位置であり、(xC,yC)は、(x,y)に基づくルマ位置であり、Siは、クロマ成分iについてのルマにおけるフィルタサポートであり、ci(x0,y0)は、フィルタ係数を表す。 (2-3)
サポート領域が中心にあるルマ位置(xC,yC)は、ルマ面とクロマ面との間の空間スケーリング係数に基づいて計算される。全てのフィルタ係数はAPSで伝送され、8ビットのダイナミックレンジを有する。APSは、スライスヘッダで参照されてもよい。スライスの各クロマ成分に使用されるCC-ALF係数も、時間サブレイヤに対応するバッファに格納される。これらの時間サブレイヤのフィルタ係数のセットの再利用は、スライスレベルのフラグを使用して実現される。CC-ALFフィルタの適用は、可変ブロックサイズ(すなわち、16×16、32×32、64×64、128×128)で制御され、サンプルのブロック毎に受信されるコンテキストコーディングされたフラグによって通知される。ブロックサイズは、CC-ALF有効フラグと共にクロマ成分毎にスライスレベルで受信される。水平仮想境界についての境界パディングは繰り返しを利用する。残りの境界では、通常のALFと同じタイプのパディングが使用される。
【0088】
[2.11.1 JVET-Q0058におけるCC-ALFのシンタックス設計]
[7.3.2.6 ピクチャヘッダのRBSPのシンタックス]
【表5】
【0089】
[7.3.2.16 適応ループフィルタのデータシンタックス]
【表6】
【0090】
[7.3.7 スライスヘッダのシンタックス]
【表7】
1に等しいpic_cross_component_alf_cb_enabled_flagは、クロスコンポーネントCbフィルタがPHに関連する全てのスライスに有効であり、スライス内のCb色成分に適用されてもよいことを指定する。0に等しいpic_cross_component_alf_cb_enabled_flagは、クロスコンポーネントCbフィルタがPHに関連する1つ以上のスライス又は全てのスライスに無効でもよいことを指定する。存在しない場合、pic_cross_component_alf_cb_enabled_flagは0に等しいと推定される。
pic_cross_component_alf_cb_aps_idは、PHに関連するスライスのCb色成分が参照するALF APSのadaptation_parameter_set_idを指定する。
ALF_APSに等しいaps_params_type及びpic_cross_component_alf_cb_aps_idに等しいadaptation_parameter_set_idを有するAPS NALユニットのalf_cross_component_cb_filter_signal_flagは、1に等しいものとする。
pic_cross_component_cb_filters_signalled_minus1に1を加えたものは、クロスコンポーネントCbフィルタの数を指定する。pic_cross_component_cb_filters_signalled_minus1の値は0から3の範囲にあるものとする。
pic_cross_component_alf_cb_enabled_flagが1に等しい場合、pic_cross_component_cb_filters_signalled_minus1がpic_cross_component_alf_cb_aps_idによって参照される参照ALF APS内のalf_cross_component_cb_filters_signalled_minus1の値以下であることがビットストリーム適合の要件である。
1に等しいpic_cross_component_alf_cr_enabled_flagは、クロスコンポーネントCrフィルタがPHに関連する全てのスライスに有効であり、スライス内のCr色成分に適用されてもよいことを指定する。0に等しいpic_cross_component_alf_cr_enabled_flagは、クロスコンポーネントCrフィルタがPHに関連する1つ以上のスライス又は全てのスライスに無効でもよいことを指定する。存在しない場合、pic_cross_component_alf_cr_enabled_flagは0に等しいと推定される。
pic_cross_component_alf_cr_aps_idは、PHに関連するスライスのCr色成分が参照するALF APSのadaptation_parameter_set_idを指定する。
ALF_APSに等しいaps_params_type及びpic_cross_component_alf_cr_aps_idに等しいadaptation_parameter_set_idを有するAPS NALユニットのalf_cross_component_cr_filter_signal_flagは、1に等しいものとする。
pic_cross_component_cr_filters_signalled_minus1に1を加えたものは、クロスコンポーネントCrフィルタの数を指定する。pic_cross_component_cr_filters_signalled_minus1の値は0から3の範囲にあるものとする。
pic_cross_component_alf_cr_enabled_flagが1に等しい場合、pic_cross_component_cr_filters_signalled_minus1がpic_cross_component_alf_cr_aps_idによって参照される参照ALF APS内のalf_cross_component_cr_filters_signalled_minus1の値以下であることがビットストリーム適合の要件である。
1に等しいalf_cross_component_cb_filter_signal_flagは、クロスコンポーネントCbフィルタが通知されることを指定する。0に等しいalf_cross_component_cb_filter_signal_flagは、クロスコンポーネントCbフィルタが通知されないことを指定する。ChromaArrayTypeが0に等しい場合、alf_cross_component_cb_filter_signal_flagは0に等しいものとする。
alf_cross_component_cb_filters_signalled_minus1に1を加えたものは、現在のALF APSで通知されるクロスコンポーネントCbフィルタの数を指定する。alf_cross_component_cb_filters_signalled_minus1の値は0から3の範囲にあるものとする。
alf_cross_component_cb_coeff_plus32[k][j]から32を引いたものは、通知された第kのクロスコンポーネントCbフィルタセットの第jの係数の値を指定する。alf_cross_component_cb_coeff_plus32[k][j]が存在しない場合、32に等しいと推定される。
要素CcAlfApsCoeffCb[adaptation_parameter_set_id][k][j](j=0..7)を有する通知された第kのクロスコンポーネントCbフィルタ係数CcAlfApsCoeffCb[adaptation_parameter_set_id][k]は以下のように導出される。
CcAlfApsCoeffCb[adaptation_parameter_set_id][k][j]=alf_cross_component_cb_coeff_plus32[k][j]-32 (7-51)
1に等しいalf_cross_component_cr_filter_signal_flagは、クロスコンポーネントCrフィルタが通知されることを指定する。0に等しいalf_cross_component_cr_filter_signal_flagは、クロスコンポーネントCrフィルタが通知されないことを指定する。ChromaArrayTypeが0に等しい場合、alf_cross_component_cr_filter_signal_flagは0に等しいものとする。
alf_cross_component_cr_filters_signalled_minus1に1を加えたものは、現在のALF APSで通知されるクロスコンポーネントCrフィルタの数を指定する。alf_cross_component_cr_filters_signalled_minus1の値は0から3の範囲にあるものとする。
alf_cross_component_cr_coeff_plus32[k][j]から32を引いたものは、通知された第kのクロスコンポーネントCrフィルタセットの第jの係数の値を指定する。alf_cross_component_cr_coeff_plus32[k][j]が存在しない場合、32に等しいと推定される。
要素CcAlfApsCoeffCr[adaptation_parameter_set_id][k][j](j=0..7)を有する通知された第kのクロスコンポーネントCrフィルタ係数CcAlfApsCoeffCr[adaptation_parameter_set_id][k]は以下のように導出される。
CcAlfApsCoeffCr[adaptation_parameter_set_id][k][j]=alf_cross_component_cr_coeff_plus32[k][j]-32 (7-52)
【0091】
[3. 既存の実装の欠点]
DMVR及びBIOは、動きベクトルを洗練化する間に元の信号を含まず、その結果、不正確な動き情報を有するコーディングブロックを生じる可能性がある。また、DMVR及びBIOは、場合によっては、動き洗練化後に分数動きベクトルを使用するが、通常では、スクリーンビデオは整数動きベクトルを有し、これは、現在の動き情報をより不正確にし、コーディング性能を悪くする。
1. クロマQPテーブルとクロマデブロッキングとの間の相互作用は問題を有する可能性がある。例えば、クロマQPテーブルは個々のQPに適用されるべきであるが、QPの加重和には適用されないべきである。
2. ルマデブロッキングフィルタリングプロセスのロジックは、ハードウェア設計にとって複雑である。
3. 境界強度導出のロジックは、ソフトウェア設計とハードウェア設計との双方にとって複雑すぎる。
4. BS決定プロセスでは、JCCRはJCCTを適用せずにコーディングされたブロックとは別に扱われる。しかし、JCCRは残差をコーディングするための特別な方法に過ぎない。したがって、このような設計は、明確な利点がなく、更なる複雑性をもたらす可能性がある。
5. クロマエッジ決定ではQpQ及びQpPは、それぞれ、サンプルq0,0及びp0,0を含むコーディングブロックを含むコーディングユニットのQpY値に等しく設定される。しかし、量子化/逆量子化プロセスでは、クロマサンプルのQPは、現在のクロマCUの中心位置の対応するルマサンプルをカバーするルマブロックのQPから導出される。デュアルツリーが有効である場合、ルマブロックの異なる位置は、異なるQPを生じる可能性がある。したがって、クロマデブロッキングプロセスでは、誤ったQPがフィルタ決定に使用される可能性がある。このような不整合は、視覚アーチファクトを生じる可能性がある。図9A及び9Bを含む、図9A~9Bに例が示されている。図9A~9Bにおいて、左側(図9A)は、ルマブロックについての対応するCTBパーティションであり、右側(図9B)は、デュアルツリーでのクロマCTBパーティションである。CUc1で示されるクロマブロックのQPを決定する場合、CUc1の中心位置が最初に導出される。次いで、CUc1の中心位置の対応するルマサンプルが特定され、対応するルマサンプルをカバーするルマCU、すなわち、CUY3に関連するルマQPが、CUc1のQPを導出するために利用される。しかし、示された3つのサンプル(実線の円)についてフィルタ決定を行う場合、対応する3つのサンプルをカバーするCUのQPが選択される。したがって、第1、第2及び第3のクロマサンプル(図9Bに示される)について、それぞれCUY2、CUY3及びCUY4のQPが利用される。すなわち、同じCU内のクロマサンプルがフィルタ決定について異なるQPを使用する可能性があり、誤った決定を生じる可能性がある。
6. 異なるピクチャレベルのQPオフセット(すなわち、pps_joint_cbcr_qp_offset)は、JCCRコーディングされたブロックに適用され、これは、非JCCRコーディングされたブロックに適用されるCb/Crについてのピクチャレベルのオフセット(例えば、pps_cb_qp_offset及びpps_cr_qp_offset)とは異なる。しかし、クロマデブロッキングフィルタ決定プロセスでは、非JCCRコーディングされたブロックについてのこれらのオフセットのみが利用される。コーディングモードの考慮が欠けていると、誤ったフィルタ決定を生じる可能性がある。
7. TSコーディングされたブロック及びTSコーディングされていないブロックは、逆量子化プロセスにおいて異なるQPを使用し、これはデブロッキングプロセスにおいても考慮される可能性がある。
8. 異なるモードを有するJCCRコーディングされたブロックについてのスケーリングプロセス(量子化/逆量子化)では、異なるQPが使用される。このような設計は一貫していない。
9. Cb/Crのクロマデブロッキングは、並列設計のために統一化されてもよい。
10. デブロッキングにおけるクロマQPは、クロマ逆量子化プロセスで使用されるQP(例えば、qP)に基づいて導出されるが、デブロッキングプロセスで使用される場合、TS及びACTブロックについてqPはクリッピングされるべき或いはマイナス5となるべきである。
11. BDPCMとACTとの双方が有効である場合、3つの成分の予測プロセスは同じではない可能性がある。
12. クロマ成分についてのCC-ALFの有効/無効は、ピクチャヘッダで通知される。しかし、カラーフォーマットが4:0:0である場合、このような情報を通知する必要はないが、現在のVVC仕様では通知されている。
13. クロマBDPCM、ACT及びパレットモードでは、chroma_format_idcが3に等しいという条件チェックの下で、SPS制御フラグが通知される。これは、4:4:4のカラーフォーマットではセパレートプレーンコーディング(separate plane coding)(別々の面のコーディング)が使用されても、ピクチャがモノクロピクチャとして扱われる場合であっても、これらのフラグが依然として通知される必要があることを意味する。関連するシンタックスエレメントは以下のように定義される。
[7.3.2.3 シーケンスパラメータセットのRBSPのシンタックス]
【表8】
【0092】
[4. 例示的な技術及び実施形態]
以下に記載される詳細な実施形態は、一般的な概念を説明するための例として考慮されるべきである。これらの実施形態は狭義に解釈されるべきではない。さらに、これらの実施形態は、いずれかの方式で組み合わせることができる。
【0093】
以下に説明する提案の方法は、デブロッキングフィルタに適用されてもよい。或いは、これらは、他の種類のループ内フィルタ、例えば、量子化パラメータに依存するフィルタに適用されてもよい。
【0094】
以下に記載される方法はまた、以下に言及されるDMVR及びBIOに加えて、他のデコーダ動き情報導出技術にも適用可能になり得る。
【0095】
以下の例において、MVM[i].x及びMVM[i].yは、M(MはP又はQである)サイドのブロックの参照ピクチャリストi(iは0又は1である)における動きベクトルの水平成分及び垂直成分を示す。Absは、入力の絶対値を取得する動作を示し、「&&」及び「||」は論理演算AND及びORを示す。図10を参照すると、PはPサイドのサンプルを示してもよく、QはQサイドのサンプルを示してもよい。Pサイド及びQサイドのブロックは、破線で示されたブロックを示してもよい。
【0096】
デブロッキングにおけるクロマQPについて
1. クロマQPテーブルが(例えば、クロマブロックエッジの決定プロセスにおいて)クロマデブロッキングを制御するためのパラメータを導出するために使用される場合、クロマQPオフセットは、クロマQPテーブルを適用した後に適用されてもよい。
a. 一例では、クロマQPオフセットは、クロマQPテーブルによって出力される値に追加されてもよい。
b. 或いは、クロマQPオフセットは、クロマQPテーブルへの入力として考慮されなくてもよい。
c. 一例では、クロマQPオフセットは、ピクチャレベル又は他のビデオユニットレベル(スライス/タイル/ブリック/サブピクチャ)のクロマ量子化パラメータオフセット(例えば、仕様におけるpps_cb_qp_offset、pps_cr_qp_offset)でもよい。
2. QPクリッピングは、クロマQPテーブルの入力に適用されなくてもよい。
3. クロマ成分についてのデブロッキングプロセスは、各サイドのマッピングされたクロマQP(クロマQPテーブルによる)に基づいてもよいことが提案される。
a. 一例では、クロマについてのデブロッキングパラメータ(例えば、β及びtC)は、各サイドのルマQPから導出されたQPに基づいてもよいことが提案される。
b. 一例では、クロマデブロッキングパラメータは、テーブルインデックスとしてQpPを有するクロマQPテーブル値に依存してもよい。ここで、QpPは、PサイドのルマQP値である。
c. 一例では、クロマデブロッキングパラメータは、テーブルインデックスとしてQpQを有するクロマQPテーブル値に依存してもよい。ここで、QpQは、QサイドのルマQP値である。
4. クロマ成分についてのデブロッキングプロセスは、クロマブロックについての量子化/逆量子化に適用されるQPに基づいてもよいことが提案される。
a. 一例では、逆量子化プロセスについてのQPは、逆量子化におけるQPに等しくてもよい。
b. 一例では、デブロッキングプロセスについてのQP選択は、TS及び/又はACTブロックの使用の指示に依存してもよい。
i. 一例では、デブロッキングプロセスについてのQPはMax(QpPrimeTsMin,qP)-(cu_act_enabled_flag[xTbY][yTbY]?N:0)によって導出されてもよい。ここで、QpPrimeTsMinはTSブロックの最小QPであり、cu_act_enabled_flagはACTの使用のフラグである。
1. 一例では、qPは、第2.8節で与えられたQp’Cb又はQp’Crでもよい。
ii. 一例では、デブロッキングプロセスについてのQPはMax(QpPrimeTsMin,qP-(cu_act_enabled_flag[xTbY][yTbY]?N:0])によって導出されてもよい。ここで、QpPrimeTsMinはTSブロックの最小QPであり、cu_act_enabled_flagはACTの使用のフラグである。
1. 一例では、qPは、第2.8節で与えられたQp’Cb又はQp’Crでもよい。
iii. 上記の例では、Nは、各色成分について同じ値又は異なる値に設定されてもよい。
1. 一例では、NはCb/B/G/U/成分について5に設定されてもよく、及び/又は、NはCr/R/B/V成分について3に設定されてもよい。
c. 一例では、デブロッキングプロセスで使用されるブロックのQPは、0に等しいデルタQP(例えば、CuQpDeltaVal)で、第2.8節に記載されるプロセスによって導出されてもよい。
i. 一例では、上記の導出は、ブロックのコーディングブロックフラグ(coded block flag,cbf)が0に等しい場合にのみ適用されてもよい。
d. 一例では、上記の例は、ルマブロック及び/又はクロマブロックに適用されてもよい。
e. 一例では、デブロッキングプロセスで使用される第1のブロックのQPは、記憶されたQPに等しく設定され、第2のブロックを予測するために利用されてもよい。
i. 一例では、全てのゼロの係数を有するブロックについて、デブロッキングプロセスで使用される関連QPは、記憶されたQPに等しく設定され、第2のブロックを予測するために使用されてもよい。
5. デブロッキングフィルタ決定プロセスにおける異なるコーディング方法に使用されるピクチャ/スライス/タイル/ブリック/サブピクチャレベルの量子化パラメータオフセットを考慮することが提案される。
a. 一例では、フィルタ決定(例えば、デブロッキングフィルタプロセスにおけるクロマエッジ決定)のためのピクチャ/スライス/タイル/ブリック/サブピクチャレベルの量子化パラメータオフセットの選択は、各サイドについてコーディングされた方法に依存してもよい。
b. 一例では、クロマブロックについて量子化パラメータを使用することを必要とするフィルタリングプロセス(例えば、クロマエッジ決定プロセス)は、ブロックがJCCRを使用するか否かに依存してもよい。
i. 或いは、さらに、JCCRコーディングされたブロックに適用されるピクチャ/スライスレベルのQPオフセット(例えば、pps_joint_cbcr_qp_offset)は、デブロッキングフィルタリングプロセスにおいて更に考慮されてもよい。
ii. 一例では、Tc及びβの設定を決定するために使用されるcQpPicOffsetは、特定の条件下でpps_cb_qp_offset又はpps_cr_qp_offsetの代わりにpps_joint_cbcr_qp_offsetに設定されてもよい。
1. 一例では、P又はQサイドのいずれかのブロックがJCCRを使用する場合。
2. 一例では、P又はQサイドの双方のブロックがJCCRを使用する場合。
iii. 或いは、さらに、フィルタリングプロセスは、JCCRのモード(例えば、モードが2に等しいか否か)に依存してもよい。
6. ルマブロックの復号情報にアクセスすることを必要とするクロマフィルタリングプロセス(例えば、クロマエッジ決定プロセス)は、逆量子化/量子化プロセスにおいてクロマQPを導出するために使用されるのと同じルマコーディングブロックに関連する情報を利用してもよい。
a. 一例では、ルマブロックについて量子化パラメータを使用することを必要とするクロマフィルタリングプロセス(例えば、クロマエッジ決定プロセス)は、現在のクロマCUの中心位置の対応するルマサンプルをカバーするルマコーディングユニットを利用してもよい。
b. 一例が図9A~9Bに示されており、CUY3の復号情報は、図9Bにおける3つのクロマサンプル(第1、第2及び第3)のフィルタリング決定に使用されてもよい。
7. クロマフィルタリングプロセス(例えば、クロマエッジ決定プロセス)は、クロマブロックのスケーリングプロセス(例えば、量子化/逆量子化)に適用される量子化パラメータに依存してもよい。
a. 一例では、β及びTcを導出するために使用されるQPは、クロマブロックのスケーリングプロセスに適用されるQPに依存してもよい。
b. 或いは、さらに、クロマブロックのスケーリングプロセスに使用されるQPは、クロマCUレベルのQPオフセットを考慮に入れてもよい。
8. 上記の項目を呼び出すか否かは、フィルタリングされるサンプルがP又はQサイドのブロックにあることに依存してもよい。
a. 例えば、現在のクロマサンプルの対応するルマサンプルをカバーするルマコーディングブロックの情報を使用するか、現在のクロマサンプルをカバーするクロマコーディングブロックの中心位置の対応するルマサンプルをカバーするルマコーディングブロックの情報を使用するかは、ブロック位置に依存してもよい。
i. 一例では、現在のクロマサンプルがQサイドのブロックにある場合、現在のクロマサンプルをカバーするクロマコーディングブロックの中心位置の対応するルマサンプルをカバーするルマコーディングブロックのQP情報が使用されてもよい。
ii. 一例では、現在のクロマサンプルがPサイドのブロックにある場合、クロマサンプルの対応するルマサンプルをカバーするルマコーディングブロックのQP情報が使用されてもよい。
9. デブロッキングで使用されるクロマQPは、対応する変換ブロックの情報に依存してもよい。
a. 一例では、PサイドのデブロッキングのためのクロマQPは、Pサイドの変換ブロックのモードに依存してもよい。
i. 一例では、PサイドのデブロッキングのためのクロマQPは、Pサイドの変換ブロックがJCCRを適用してコーディングされるか否かに依存してもよい。
ii. 一例では、PサイドのデブロッキングのためのクロマQPは、Pサイドの変換ブロックがjoint_cb_crモードでコーディングされ、JCCRのモードが2に等しいか否かに依存してもよい。
b. 一例では、QサイドのデブロッキングのためのクロマQPは、Qサイドの変換ブロックのモードに依存してもよい。
i. 一例では、QサイドのデブロッキングのためのクロマQPは、Qサイドの変換ブロックがJCCRを適用してコーディングされるか否かに依存してもよい。
ii. 一例では、QサイドのデブロッキングのためのクロマQPは、Qサイドの変換ブロックがJCCRを適用してコーディングされ、JCCRのモードが2に等しいか否かに依存してもよい。
10. クロマQPの通知は、コーディングユニット単位でもよい。
a. 一例では、コーディングユニットサイズが最大変換ブロックサイズ、すなわち、maxTBよりも大きい場合、クロマQPはCUレベルで通知されてもよい。或いは、TUレベルで通知されてもよい。
b. 一例では、コーディングユニットサイズがVPDUのサイズよりも大きい場合、クロマQPは、CUレベルで通知されてもよい。或いは、TUレベルで通知されてもよい。
11. ブロックがjoint_cb_crモードであるか否かは、コーディングユニットレベルで示されてもよい。
a. 一例では、変換ブロックがjoint_cb_crモードであるか否かは、変換ブロックを含むコーディングユニットの情報を継承してもよい。
12. デブロッキングで使用されるクロマQPは、ビットデプスのため、スケーリングプロセスで使用されるクロマQPからQPオフセットを引いたものに依存してもよい。
a. 一例では、Pサイドのデブロッキングで使用されるクロマQPは、TuCResMode[xTb][yTb]が2に等しい場合、スケーリングプロセスで使用されるJCCRクロマQP、すなわち、Qp’CbCrからQpBdOffsetCを引いたものに設定される。ここで、(xTb,yTb)は、Pサイドの最初のサンプル、すなわち、p0,0を含む変換ブロックを示す。
b. 一例では、Pサイドのデブロッキングで使用されるクロマQPは、TuCResMode[xTb][yTb]が2に等しい場合、スケーリングプロセスで使用されるCbクロマQP、すなわち、Qp’CbからQpBdOffsetCを引いたものに設定される。ここで、(xTb,yTb)は、Pサイドの最初のサンプル、すなわち、p0,0を含む変換ブロックを示す。
c. 一例では、Pサイドのデブロッキングで使用されるクロマQPは、TuCResMode[xTb][yTb]が2に等しい場合、スケーリングプロセスで使用されるCrクロマQP、すなわち、Qp’CrからQpBdOffsetCを引いたものに設定される。ここで、(xTb,yTb)は、Pサイドの最初のサンプル、すなわち、p0,0を含む変換ブロックを示す。
d. 一例では、Qサイドのデブロッキングで使用されるクロマQPは、TuCResMode[xTb][yTb]が2に等しい場合、スケーリングプロセスで使用されるJCCRクロマQP、すなわち、Qp’CbCrからQpBdOffsetCを引いたものに設定される。ここで、(xTb,yTb)は、Qサイドの最後のサンプル、すなわち、q0,0を含む変換ブロックを示す。
e. 一例では、Qサイドのデブロッキングで使用されるクロマQPは、TuCResMode[xTb][yTb]が2に等しい場合、スケーリングプロセスで使用されるCbクロマQP、すなわち、Qp’CbからQpBdOffsetCを引いたものに設定される。ここで、(xTb,yTb)は、Qサイドの最後のサンプル、すなわち、q0,0を含む変換ブロックを示す。
f. 一例では、Qサイドのデブロッキングで使用されるクロマQPは、TuCResMode[xTb][yTb]が2に等しい場合、スケーリングプロセスで使用されるCrクロマQP、すなわち、Qp’CrからQpBdOffsetCを引いたものに設定される。ここで、(xTb,yTb)は、Qサイドの最後のサンプル、すなわち、q0,0を含む変換ブロックを示す。
13. 異なる色成分は、異なるデブロッキング強度制御を有してもよい。
a. 一例では、各成分は、そのpps_beta_offset_div2、pps_tc_offset_div2及び/又はpic_beta_offset_div2、pc_tc_offset_div2及び/又はslice_beta_offset_div2、slice_tc_offset_div2を有してもよい。
b. 一例では、joint_cb_crモードでは、異なるセットのbeta_offset_div2、tc_offset_div2がPPS及び/又はピクチャヘッダ及び/又はスライスヘッダにおいて適用されてもよい。
14. オーバライドメカニズムを使用する代わりに、異なるレベルでのオフセットを考慮して、デブロッキング制御オフセットが累積されてもよい。
a. 一例では、pps_beta_offset_div2及び/又はpic_beta_offset_div2及び/又はslice_beta_offset_div2は、スライスレベルでのデブロッキングオフセットを得るために累積されてもよい。
b. 一例では、pps_tc_offset_div2及び/又はpic_tc_offset_div2及び/又はslice_tc_offset_div2は、スライスレベルでのデブロッキングオフセットを得るために累積されてもよい。
【0097】
QP設定について
15. ブロックレベルのクロマQPオフセットを有効にする指示(例えば、slice_cu_chroma_qp_offset_enabled_flag)を、スライス/タイル/ブリック/サブピクチャレベルで通知することが提案される。
a. 或いは、このような指示の通知は条件付きで通知されてもよい。
i. 一例では、JCCR有効フラグの条件下で通知されてもよい。
ii. 一例では、ピクチャレベルにおけるブロックレベルのクロマQPオフセット有効フラグの条件下で通知されてもよい。
iii. 或いは、このような指示が代わりに導出されてもよい。
b. 一例では、slice_cu_chroma_qp_offset_enabled_flagは、クロマQPオフセットのPPSフラグ(例えば、slice_cu_chroma_qp_offset_enabled_flag)が真である場合にのみ通知されてもよい。
c. 一例では、slice_cu_chroma_qp_offset_enabled_flagは、クロマQPオフセットのPPSフラグ(例えば、slice_cu_chroma_qp_offset_enabled_flag)が偽である場合にのみ推定されてもよい。
d. 一例では、ブロック上でクロマQPオフセットを使用するか否かは、PPSレベル及び/又はスライスレベルにおけるクロマQPオフセットのフラグに基づいてもよい。
16. 異なるモードを有するJCCRコーディングされたブロックのスケーリングプロセス(量子化/逆量子化)で、同じQP導出方法が使用される。
a. 一例では、モード1及び3を有するJCCRについて、QPは、ピクチャ/スライスレベルで通知されたQPオフセット(例えば、pps_cbcr_qp_offset、slice_cbcr_qp_offset)に依存する。
【0098】
フィルタリング手順
17. 第1の色成分を除く全ての色成分についてのデブロッキングは、第1の色成分についてのデブロッキングプロセスに従ってもよい。
a. 一例では、カラーフォーマットが4:4:4である場合、第2及び第3の成分についてのデブロッキングプロセスは、第1の成分についてのデブロッキングプロセスに従ってもよい。
b. 一例では、カラーフォーマットがRGB色空間において4:4:4である場合、第2及び第3の成分についてのデブロッキングプロセスは、第1の成分についてのデブロッキングプロセスに従ってもよい。
c. 一例では、カラーフォーマットが4:2:2である場合、第2及び第3の成分についての垂直デブロッキングプロセスは、第1の成分についての垂直デブロッキングプロセスに従ってもよい。
d. 上記の例では、デブロッキングプロセスは、デブロッキング決定プロセス及び/又はデブロッキングフィルタリングプロセスを示してもよい。
18. デブロッキングフィルタプロセスで使用される勾配を計算する方法は、コーディングモード情報及び/又は量子化パラメータに依存してもよい。
a. 一例では、勾配計算は、そのサイドのサンプルが可逆コーディングされていないサイドの勾配のみを考慮してもよい。
b. 一例では、双方のサイドが可逆コーディング又はほぼ可逆コーディング(例えば、4に等しい量子化パラメータ)されている場合、勾配は直接0に設定されてもよい。
i. 或いは、双方のサイドが可逆コーディング又はほぼ可逆コーディング(例えば、4に等しい量子化パラメータ)されている場合、境界強度(例えば、BS)は、0に設定されてもよい。
c. 一例では、Pサイドのサンプルが可逆コーディングされ、Qサイドのサンプルが非可逆コーディングされている場合、デブロッキングのオン/オフ決定及び/又は強フィルタのオン/オフ決定で使用される勾配は、Qサイドのサンプルの勾配のみを含んでもよく、その逆も同様である。
i. 或いは、さらに、1つのサイドの勾配は、Nによってスケーリングされてもよい。
1. Nは整数(例えば2)であり、以下に依存してもよい。
a. ビデオコンテンツ(例えば、スクリーンコンテンツ、ナチュラルコンテンツ)
b. DPS/SPS/VPS/PPS/PPS/APS/ピクチャヘッダ/スライスヘッダ/タイルグループヘッダ/最大コーディングユニット(Largest coding unit,LCU)/コーディングユニット(Coding unit,CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオコーディングユニットで通知されたメッセージ
c. CU/PU/TU/ブロック/ビデオコーディングユニットの位置
d. エッジに沿ったサンプルを含むブロックのコーディングモード
e. エッジに沿ったサンプルを含むブロックに適用される変換行列
f. 現在のブロック及び/又はその隣接ブロックのブロック寸法/ブロック形状
g. カラーフォーマットの指示(4:2:0、4:4:4、RGB又はYUV等)
h. コーディングツリー構造(デュアルツリー又はシングルツリー等)
i. スライス/タイルグループタイプ及び/又はピクチャタイプ
j. 色成分(例えば、Cb又はCrにのみ適用されてもよい)
k. 時間レイヤID
l. 標準のプロファイル/レベル/層
m. 或いは、Nはデコーダに通知されてもよい。
【0099】
境界強度導出について
19. 境界強度決定プロセスにおいて、JCCRコーディングされたブロックを非JCCRコーディングされたブロックとして扱うことが提案される。
a. 一例では、境界強度(boundary strength,BS)の決定は、P及びQサイドの2つのブロックについてのJCCRの使用のチェックから独立してもよい。
a. 一例では、ブロックの境界強度(boundary strength,BS)は、そのブロックがJCCRでコーディングされるか否かにかかわらず決定されてもよい。
20. Pサイドのブロックに関連する参照ピクチャ及び/又はMV数をQサイドのブロックの参照ピクチャと比較することなく、境界強度(boundary strength,BS)を導出することが提案される。
b. 一例では、デブロッキングフィルタは、2つのブロックが異なる参照ピクチャを有する場合であっても無効になってもよい。
c. 一例では、デブロッキングフィルタは、2つのブロックが異なるMV数を有する(例えば、一方は一方向予測であり、他方は双方向予測である)場合であっても無効になってもよい。
d. 一例では、BSの値は、PサイドのブロックとQサイドのブロックとの間の1つ又は全ての参照ピクチャリストの動きベクトル差が閾値Th以上である場合、1に設定されてもよい。
i. 或いは、さらに、BSの値は、PサイドのブロックとQサイドのブロックとの間の1つ又は全ての参照ピクチャリストの動きベクトル差が閾値Th以下である場合、0に設定されてもよい。
e. 一例では、閾値Thよりも大きい2つのブロックの動きベクトルの差は、(Abs(MVP[0].x-MVQ[0].x)>Th||Abs(MVP[0].y-MVQ[0].y)>Th||Abs(MVP[1].x-MVQ[1].x)>Th)||Abs(MVP[1].y-MVQ[1].y)> Th)として定義されてもよい。
i. 或いは、閾値Thよりも大きい2つのブロックの動きベクトルの差は、(Abs(MVP[0].x-MVQ[0].x)>Th&&Abs(MVP[0].y-MVQ[0].y)>Th&&Abs(MVP[1].x-MVQ[1].x)>Th)&&Abs(MVP[1].y-MVQ[1].y)>Th)として定義されてもよい。
ii. 或いは、一例では、閾値Thよりも大きい2つのブロックの動きベクトルの差は、(Abs(MVP[0].x-MVQ[0].x)>Th||Abs(MVP[0].y-MVQ[0].y)>Th)&&(Abs(MVP[1].x-MVQ[1].x)>Th)||Abs(MVP[1].y-MVQ[1].y)>Th)として定義されてもよい。
iii. 或いは、一例では、閾値Thよりも大きい2つのブロックの動きベクトルの差は、(Abs(MVP[0].x-MVQ[0].x)>Th&&Abs(MVP[0].y-MVQ[0].y)>Th)||(Abs(MVP[1].x-MVQ[1].x)>Th)&&Abs(MVP[1].y-MVQ[1].y)>Th)として定義されてもよい。
f. 一例では、所与のリスト内に動きベクトルを有さないブロックは、そのリスト内でゼロの動きベクトルを有するものとして扱われてもよい。
g. 上記の例では、Thは整数(例えば、4、8又は16)である。
h. 上記の例では、Thは以下に依存してもよい。
i. ビデオコンテンツ(例えば、スクリーンコンテンツ、ナチュラルコンテンツ)
ii. DPS/SPS/VPS/PPS/PPS/APS/ピクチャヘッダ/スライスヘッダ/タイルグループヘッダ/最大コーディングユニット(Largest coding unit,LCU)/コーディングユニット(Coding unit,CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオコーディングユニットで通知されたメッセージ
iii. CU/PU/TU/ブロック/ビデオコーディングユニットの位置
iv. エッジに沿ったサンプルを含むブロックのコーディングモード
v. エッジに沿ったサンプルを含むブロックに適用される変換行列
vi. 現在のブロック及び/又はその隣接ブロックのブロック寸法/ブロック形状
vii. カラーフォーマットの指示(4:2:0、4:4:4、RGB又はYUV等)
viii. コーディングツリー構造(デュアルツリー又はシングルツリー等)
ix. スライス/タイルグループタイプ及び/又はピクチャタイプ
x. 色成分(例えば、Cb又はCrにのみ適用されてもよい)
xi. 時間レイヤID
xii. 標準のプロファイル/レベル/層
xiii. 或いは、Thはデコーダに通知されてもよい。
i. 上記の例は、特定の条件下で適用されてもよい。
i. 一例では、条件は、blkP及びblkQがイントラモードでコーディングされないことである。
ii. 一例では、条件は、blkP及びblkQがルマ成分においてゼロの係数を有することである。
iii. 一例では、条件は、blkP及びblkQがCIIPモードでコーディングされないことである。
iv. 一例では、条件は、blkP及びblkQが同じ予測モード(例えば、IBC又はインター)でコーディングされることである。
【0100】
ルマデブロッキングフィルタリングプロセスについて
21. デブロッキングは、TSコーディングされたブロックとTSコーディングされていないブロックについて異なるQPを使用してもよい。
a. 一例では、TSについてのQPはTSコーディングされたブロックで使用されてもよく、非TSについてのQPはTSコーディングされないブロックで使用されてもよい。
22. ルマフィルタリングプロセス(例えば、ルマエッジ決定プロセス)は、ルマブロックのスケーリングプロセスに適用される量子化パラメータに依存してもよい。
a. 一例では、ベータ及びTcを導出するために使用されるQPは、例えばQpPrimeTsMinによって示されるように、変換スキップのクリッピング範囲に依存してもよい。
23. 大きいブロック境界及びより小さいブロック境界について同じ勾配計算を使用することが提案される。
a. 一例では、第2.1.4節に記載されるデブロッキングフィルタのオン/オフ決定は、大きいブロック境界にも適用されてもよい。
i. 一例では、決定における閾値ベータは、大きいブロック境界について修正されてもよい。
1. 一例において、ベータは、量子化パラメータに依存してもよい。
2. 一例では、大きいブロック境界についてのデブロッキングフィルタのオン/オフ決定に使用されるベータは、より小さいブロック境界についてのものよりも小さくてもよい。
a. 或いは、一例では、大きいブロック境界についてのデブロッキングフィルタのオン/オフ決定に使用されるベータは、より小さいブロック境界についてのものよりも大きくてもよい。
b. 或いは、一例では、大きいブロック境界についてのデブロッキングフィルタのオン/オフ決定に使用されるベータは、より小さいブロック境界についてのものと等しくてもよい。
3. 一例では、ベータは整数であり、以下に基づいてもよい。
a. ビデオコンテンツ(例えば、スクリーンコンテンツ、ナチュラルコンテンツ)
b. DPS/SPS/VPS/PPS/PPS/APS/ピクチャヘッダ/スライスヘッダ/タイルグループヘッダ/最大コーディングユニット(Largest coding unit,LCU)/コーディングユニット(Coding unit,CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオコーディングユニットで通知されたメッセージ
c. CU/PU/TU/ブロック/ビデオコーディングユニットの位置
d. エッジに沿ったサンプルを含むブロックのコーディングモード
e. エッジに沿ったサンプルを含むブロックに適用される変換行列
f. 現在のブロック及び/又はその隣接ブロックのブロック寸法
g. 現在のブロック及び/又はその隣接ブロックのブロック形状
h. カラーフォーマットの指示(4:2:0、4:4:4、RGB又はYUV等)
i. コーディングツリー構造(デュアルツリー又はシングルツリー等)
j. スライス/タイルグループタイプ及び/又はピクチャタイプ
k. 色成分(例えば、Cb又はCrにのみ適用されてもよい)
l. 時間レイヤID
m. 標準のプロファイル/レベル/層
n. 或いは、ベータはデコーダに通知されてもよい。
【0101】
スケーリング行列(逆量子化行列)について
24. 量子化行列の特定の位置の値は、一定に設定されてもよい。
a. 一例では、位置は、(x,y)の位置でもよく、ここで、x及びyは、2つの整数の変数(例えば、x=y=0)であり、(x,y)は、TU/TB/PU/PB/CU/CBに対する座標である。
i. 一例では、位置はDCの位置でもよい。
b. 一例では、定数値は16でもよい。
c. 一例では、これらの位置について、行列値の通知が利用されなくてもよい。
25. 量子化行列のいくつかの位置の平均/加重平均が定数になり得る制約が設定されてもよい。
a. 一例では、デブロッキングプロセスは、定数値に依存してもよい。
b. 一例では、定数値は、DPS/VPS/SPS/PPS/スライス/ピクチャ/タイル/ブリックヘッダで示されてもよい。
26. ピクチャヘッダに関連するピクチャ内で選択されるスケーリング行列を通知するために、1つ又は複数の指示がピクチャヘッダで通知されてもよい。
【0102】
クロスコンポーネント適応ループフィルタ(Cross Component Adaptive Loop Filter,CCALF)について
27. CCALFはデコーダにおいて何らかのループフィルタリングプロセスの前に適用されてもよい
a. 一例では、CCALFは、デコーダにおいてデブロッキングプロセスの前に適用されてもよい。
b. 一例では、CCALFは、デコーダにおいてSAOの前に適用されてもよい。
c. 一例では、CCALFは、デコーダにおいてALFの前に適用されてもよい。
d. 或いは、異なるフィルタ(例えば、CCALF、ALF、SAO、デブロッキングフィルタ)の順序は、固定されなくてもよい。
i. 一例では、CCLAFの呼び出しは、或るビデオユニットについては或るフィルタリングプロセスでもよく、或いは、他のビデオユニットについては他のフィルタリングプロセスの後でもよい。
ii. 一例では、ビデオユニットは、CTU/CTB/スライス/タイル/ブリック/ピクチャ/シーケンスでもよい。
e. 或いは、異なるフィルタ(例えば、CCALF、ALF、SAO、デブロッキングフィルタ)の順序の指示は、通知されてもよく或いは実行中に導出されてもよい。
i. 或いは、CCALFの呼び出しの指示は、通知されてもよく或いは実行中に導出されてもよい。
f. CCALFをどのように制御するかの明示的な指示(例えばエンコーダからデコーダへの通知)又は暗黙的な通知(例えばエンコーダとデコーダとの双方での導出)は、異なる色成分(Cb及びCr等)について切り離されてもよい。
g. CCALFを適用するか否か及び/又はどのように適用するかは、カラーフォーマット(RGB及びYCbCr等)及び/又はカラーサンプリングフォーマット(4:2:0、4:2:2及び4:4:4等)及び/又はカラーダウンサンプリング位置又は位相に依存してもよい。
【0103】
クロマQPオフセットリストについて
28. クロマQPオフセットリストの通知及び/又は選択は、コーディングされた予測モード/ピクチャタイプ/スライス又はタイル若しくはブリックタイプに依存してもよい。
a. クロマQPオフセットリスト、例えば、cb_qp_offset_list[i]、cr_qp_offset_list[i]及びjoint_cbcr_qp_offset_list[i]は、異なるコーディングモードについて異なってもよい。
b. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックがイントラモードでコーディングされるか否かに依存してもよい。
c. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックがインターモードでコーディングされるか否かに依存してもよい。
d. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックがパレットモードでコーディングされるか否かに依存してもよい。
e. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックがIBCモードでコーディングされるか否かに依存してもよい。
f. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックが変換スキップモードでコーディングされるか否かに依存してもよい。
g. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックがBDPCMモードでコーディングされるか否かに依存してもよい。
h. 一例では、クロマQPオフセットリストを適用するか否か及びどのように適用するかは、現在のブロックがtransform_quant_skipモードでコーディングされるか可逆モードでコーディングされるかに依存してもよい。
【0104】
CTU境界でのクロマデブロッキングについて
29. デブロッキングフィルタプロセスで利用されるQPをどのように選択するか(例えば、対応するルマ又はクロマ逆量子化QPを使用する)は、CTU/CTB/VPDU境界に対するサンプルの位置に依存してもよい。
30. デブロッキングフィルタプロセスで利用されるQPをどのように選択するか(例えば、対応するルマ又はクロマ逆量子化QPを使用する)は、カラーフォーマット(RGB及びYCbCr等)及び/又はカラーサンプリングフォーマット(4:2:0、4:2:2及び4:4:4等)及び/又はカラーダウンサンプリング位置又は位相に依存してもよい。
31. CTU境界におけるエッジについて、デブロッキングは対応するブロックのルマQPに基づいてもよい。
a. 一例では、CTU境界における水平エッジについて、デブロッキングは、対応するブロックのルマQPに基づいてもよい。
i. 一例では、デブロッキングは、Pサイドの対応するブロックのルマQPに基づいてもよい。
ii. 一例では、デブロッキングは、Qサイドの対応するブロックのルマQPに基づいてもよい。
b. 一例では、CTU境界における垂直エッジについて、デブロッキングは、対応するブロックのルマQPに基づいてもよい。
i. 一例では、デブロッキングは、Pサイドの対応するブロックのルマQPに基づいてもよい。
ii. 一例では、デブロッキングは、Qサイドの対応するブロックのルマQPに基づいてもよい。
c. 一例では、CTU境界におけるエッジについて、デブロッキングは、PサイドのルマQP及びQサイドのクロマQPに基づいてもよい。
d. 一例では、CTU境界におけるエッジについて、デブロッキングは、QサイドのルマQP及びPサイドのクロマQPに基づいてもよい。
e. この項目では、「CTU境界」は上側CTU境界又は下側CTU境界のような特定のCTU境界を示してもよい。
32. CTU境界における水平エッジについて、デブロッキングは、PサイドのクロマQPの関数に基づいてもよい。
a. 一例では、デブロッキングは、PサイドのクロマQPの平均化関数に基づいてもよい。
i. 一例では、関数は、8個のルマサンプル毎のクロマQPの平均に基づいてもよい。
ii. 一例では、関数は、16個のルマサンプル毎のクロマQPの平均に基づいてもよい。
iii. 一例では、関数は、32個のルマサンプル毎のクロマQPの平均に基づいてもよい。
iv. 一例では、関数は、64個のルマサンプル毎のクロマQPの平均に基づいてもよい。
v. 一例では、関数は、CTU毎のクロマQPの平均に基づいてもよい。
b. 一例では、デブロッキングは、PサイドのクロマQPの最大化関数に基づいてもよい。
i. 一例では、関数は、8個のルマサンプル毎のクロマQPの最大値に基づいてもよい。
ii. 一例では、関数は、16個のルマサンプル毎のクロマQPの最大値に基づいてもよい。
iii. 一例では、関数は、32個のルマサンプル毎のクロマQPの最大値に基づいてもよい。
iv. 一例では、関数は、64個のルマサンプル毎のクロマQPの最大値に基づいてもよい。
v. 一例では、関数は、CTU毎のクロマQPの最大値に基づいてもよい。
c. 一例では、デブロッキングは、PサイドのクロマQPの最小化関数に基づいてもよい。
i. 一例では、関数は、8個のルマサンプル毎のクロマQPの最小値に基づいてもよい。
ii. 一例では、関数は、16個のルマサンプル毎のクロマQPの最小値に基づいてもよい。
iii. 一例では、関数は、32個のルマサンプル毎のクロマQPの最小値に基づいてもよい。
iv. 一例では、関数は、64個のルマサンプル毎のクロマQPの最小値に基づいてもよい。
v. 一例では、関数は、CTU毎のクロマQPの最小値に基づいてもよい。
d. 一例では、デブロッキングは、PサイドのクロマQPのサブサンプリング関数に基づいてもよい。
i. 一例では、関数は、8個のルマサンプル毎にk番目のクロマサンプルのクロマQPに基づいてもよい。
1. 一例では、k番目のサンプルは最初のサンプルでもよい。
2. 一例では、k番目のサンプルは最後のサンプルでもよい。
3. 一例では、k番目のサンプルは3番目のサンプルでもよい。
4. 一例では、k番目のサンプルは4番目のサンプルでもよい。
ii. 一例では、関数は、16個のルマサンプル毎にk番目のクロマサンプルのクロマQPに基づいてもよい。
1. 一例では、k番目のサンプルは最初のサンプルでもよい。
2. 一例では、k番目のサンプルは最後のサンプルでもよい。
3. 一例では、k番目のサンプルは7番目のサンプルでもよい。
4. 一例では、k番目のサンプルは8番目のサンプルでもよい。
iii. 一例では、関数は、32個のルマサンプル毎にk番目のクロマサンプルのクロマQPに基づいてもよい。
1. 一例では、k番目のサンプルは最初のサンプルでもよい。
2. 一例では、k番目のサンプルは最後のサンプルでもよい。
3. 一例では、k番目のサンプルは15番目のサンプルでもよい。
4. 一例では、k番目のサンプルは16番目のサンプルでもよい。
iv. 一例では、関数は、64個のルマサンプル毎にk番目のクロマサンプルのクロマQPに基づいてもよい。
1. 一例では、k番目のサンプルは最初のサンプルでもよい。
2. 一例では、k番目のサンプルは最後のサンプルでもよい。
3. 一例では、k番目のサンプルは31番目のサンプルでもよい。
4. 一例では、k番目のサンプルは32番目のサンプルでもよい。
v. 一例では、関数は、CTU毎にk番目のクロマサンプルのクロマQPに基づいてもよい。
e.或いは、上記の項目は、デブロッキング処理のためにQサイドのクロマQPに適用されてもよい。
33. クロマ成分についての量子化グループは、特定のサイズよりも大きくなければならないことが制約されてもよい。
a. 一例では、クロマ成分についての量子化グループの幅は、特定の値Kよりも大きくなければならないことが制約されてもよい。
i. 一例では、Kは4に等しい。
34. ルマ成分についての量子化グループは、特定のサイズよりも大きくなければならないことが制約されてもよい。
a. 一例では、ルマ成分についての量子化グループの幅は、特定の値Kよりも大きくなければならないことが制約されてもよい。
i. 一例では、Kは8に等しい。
35. クロマ成分についてのQPは、ピクチャの左上に対して(4×m×x,2y)から始まる長さ4×mを有するクロマ行セグメントについて、同じでもよい。ここで、x及びyは負でない整数であり、mは正の整数である。
a. 一例では、mは1に等しくてもよい。
b. 一例では、クロマ成分についての量子化グループの幅は4×mよりも小さくなってはならない。
36. クロマ成分についてのQPは、ピクチャの左上に対して(2×x,4×n×y)から始まる長さ4×nを有するクロマ列セグメントについて、同じでもよい。ここで、x及びyは負でない整数であり、mは正の整数である。
a. 一例では、nは1に等しくてもよい。
b. 一例では、クロマ成分についての量子化グループの幅は4×nよりも小さくなってはならない。
【0105】
クロマデブロッキングフィルタリングプロセスについて
37. コーディングツールXの使用を制御する第1のシンタックスエレメントは、第2のビデオユニット(SPS若しくはPPS又はVPS等)で通知される第2のシンタックスエレメントに依存して、第1のビデオユニット(ピクチャヘッダ等)で通知されてもよい。
a. 一例では、第1のシンタックスエレメントは、コーディングツールXが有効であることを第2のシンタックスエレメントが示す場合にのみ通知される。
b. 一例では、Xは双方向オプティカルフロー(Bi-Direction Optical Flow,BDOF)である。
c. 一例では、Xは予測洗練化オプティカルフロー(Prediction Refinement Optical Flow,PROF)である。
d. 一例では、Xはデコーダ側動きベクトル洗練化(Decoder-side Motion Vector Refinement,DMVR)である。
e. 一例では、コーディングツールXの使用の通知は、スライスタイプ(例えば、P又はBスライス、非Iスライス)の条件チェック下で行われてもよい。
【0106】
クロマデブロッキングフィルタリングプロセスについて
38. 2つのクロマブロックについてのデブロッキングフィルタ決定プロセスは、1回だけ呼び出されるように統一されてもよく、決定は2つのクロマブロックに適用される。
b. 一例では、デブロッキングフィルタを実行するか否かの決定は、Cb及びCr成分について同じでもよい。
c. 一例では、デブロッキングフィルタが適用されると決定された場合、より強いデブロッキングフィルタを実行するか否かの決定は、Cb及びCr成分について同じでもよい。
d. 一例では、第2.2.7節に記載されるように、デブロッキング条件及び強フィルタのオン/オフ条件は、1回だけチェックされてもよい。しかし、双方のクロマ成分の情報をチェックするように修正されてもよい。
i. 一例では、Cb及びCr成分の勾配の平均は、Cb及びCr成分の双方についての上記の決定で使用されてもよい。
ii. 一例では、クロマのより強いフィルタは、強フィルタ条件がCb及びCr成分の双方について満たされる場合にのみ実行されてもよい。
1. 或いは、一例では、クロマ弱フィルタは、強フィルタ条件が少なくとも1つのクロマ成分で満たされない場合にのみ実行されてもよい。
【0107】
ACTについて
39. デブロッキングQPが逆量子化QPに等しいか否かは、ACTが適用されるか否かに依存してもよい。
a. 一例では、ACTがブロックに適用される場合、デブロッキングQP値は、ACT QP調整前のQP値に依存してもよい。
b. 一例では、ACTがブロックに適用されない場合、デブロッキングQP値は、常に逆量子化QP値に等しくてもよい。
c. 一例では、ACTとTSとの双方がブロックに適用されない場合、デブロッキングQP値は、常に逆量子化QP値に等しくてもよい。
40. ACT及びBDPCMは、ブロックレベルでのみ適用されてもよい。
a. 一例では、ACTがブロックに適用される場合、ルマBDPCMはそのブロックに適用されないものとする。
b. 一例では、ACTがブロックに適用される場合、クロマBDPCMはそのブロックに適用されないものとする。
c. 一例では、ACTがブロックに適用される場合、ルマ及びクロマBDPCMの双方はそのブロックに適用されないものとする。
d. 一例では、ルマ及び/又はクロマBDPCMがブロックに適用される場合、ACTはそのブロックに適用されないものとする。
41. BDPCMモードを有効にするか否かは、ACTの使用(例えば、cu_act_enabled_flag)に基づいて推定されてもよい。
a. 一例では、クロマBDPCMモードの推定値は(cu_act_enabled_flag&&intra_bdpcm_luma_flag&&sps_bdpcm_chroma_enabled_flag?true:false)として定義されてもよい。
b. 一例では、sps_bdpcm_croma_enabled_flagが偽である場合、intra_bdpcm_luma_flagは、通知されず且つcu_act_enabled_flagが真であるとき、偽と推定されてもよい。
c. 一例では、cu_act_enabled_flagは、intra_bdpcm_luma_flagが真であり且つsps_bdpcm_chroma_enabled_flagが偽である場合、偽と推定されてもよい。
d. 一例では、intra_bdpcm_luma_flagは、cu_act_enabled_flagが真であり且つsps_bdpcm_chroma_enabled_flagが偽である場合、偽と推定されてもよい。
【0108】
CC-ALF関連
42. 仕様におけるChromaArrayType
a. 一例では、クロスコンポーネントCbフィルタがピクチャヘッダに関連する全てのスライスに有効であり、スライス内のCb色成分に適用されてもよいか否か(例えば、pic_cross_component_alf_cb_enabled_flag)は、「if(ChromaArrayType!=0)」又はカラーフォーマットが4:0:0ではないこと(例えば、chroma_format_idc!=0)を条件とするように条件付きで通知されてもよい。
b. 一例では、クロスコンポーネントCrフィルタがピクチャヘッダに関連する全てのスライスに有効であり、スライス内のCr色成分に適用されてもよいか否か(例えば、pic_cross_component_alf_cr_enabled_flag)は、「if(ChromaArrayType!=0)」又はカラーフォーマットが4:0:0ではないこと(例えば、chroma_format_idc!=0)を条件とするように条件付きで通知されてもよい。
43. ALF及びCC-ALFは別々に制御されてもよい。
a. 一例では、CC-ALFがビデオ処理ユニットに有効であるか否かは、第1のシンタックスエレメントで通知されてもよい。
i. 一例では、これは、ALF有効フラグ(例えば、sps_alf_enabled_flag)から独立したシーケンス/ビデオ/ピクチャレベル(例えば、SPS)で通知されてもよい。
1. 或いは、ALFの条件付きチェックが有効になっている場合に通知されてもよい。
ii. 或いは、さらに、第1のシンタックスエレメントは、カラーフォーマット及び/又はセパレートプレーンコーディング及び/又は仕様におけるChromaArrayTypeの条件チェックの下で通知されてもよい。
b. 或いは、さらに、CC-ALF関連のシンタックスエレメント(例えば、pic_cross_component_alf_cb_enabled_flag、pic_cross_component_alf_cb_aps_id、pic_cross_component_cb_filters_signalled_minus1、pic_cross_component_alf_cr_enabled_flag、pic_cross_component_alf_cr_aps_id及びpic_cross_component_cr_filters_signalled_minus1)がピクチャヘッダに存在するか否かを指定するために、第2のシンタックスエレメント、例えばpic_ccalf_enabled_present_flagがピクチャヘッダ/PPS/スライスヘッダで更に通知されてもよい。
i.或いは、ALF有効フラグ(例えば、sps_alf_enabled_flag)が真である場合、第2のシンタックスエレメントが通知されてもよい。
c. 一例では、CC-ALFに関連するPPS又はPH又はスライスヘッダ内のシンタックスエレメントは、以下の双方の条件が満たされる場合にのみ通知される。
i. ChromaArrayType!=0又はカラーフォーマットが4:0:0ではない。
ii. CC-ALFが有効であることは、高レベルのビデオユニット(例えば、SPS)で通知される。
c. 一例では、CC-ALFに関連するPPS又はPH又はスライスヘッダ内のシンタックスエレメントは、以下の条件の1つが真である場合に通知される。
i. ChromaArrayType!=0又はカラーフォーマットが4:0:0ではない。
ii. CC-ALFが有効であることは、高レベルのビデオユニット(例えば、SPS)で通知される。
【0109】
ハイレベルのシンタックスについて
44. クロマBDPCMモードの制御フラグ(例えば、sps_bdpcm_chroma_enabled_flag)、パレットモードの制御フラグ(例えば、sps_palette_enabled_flag)及び/又はACTモードの制御フラグ(例えば、sps_act_enabled_flag)は、少なくとも、クロマアレイタイプの値(例えば、ChromaArrayType)に基づいて通知されてもよい。
a. 一例では、sps_bdpcm_chroma_enabled_flagは、sps_bdpcm_enabled_flagが真である&&ChromaArrayTypeが3に等しい場合にのみ通知されてもよい。
b. 一例では、sps_palette_enabled_flagは、ChromaArrayTypeが3に等しい場合にのみ通知されてもよい。
c. 一例では、sps_act_enabled_flagは、ChromaArrayTypeが3に等しい場合にのみ通知されてもよい。
d. 一例では、sps_bdpcm_chroma_enabled_flagは、ChromaArrayTypeが3に等しくない場合に通知されなくてもよい。
e. 一例では、sps_palette_enabled_flagは、ChromaArrayTypeが3に等しくない場合に通知されなくてもよい。
f. 一例では、sps_act_enabled_flagは、ChromaArrayTypeが3に等しくない場合に通知されなくてもよい。
g. 一例では、適合ビットストリームは、ChromaArrayTypeが3に等しくない場合、sps_bdpcm_chroma_enabled_flagが0に等しく設定されることを満たすものとする。
h. 一例では、適合ビットストリームは、ChromaArrayTypeが3に等しくない場合、sps_palette_enabled_flagが0に等しく設定されることを満たすものとする。
i. 一例では、適合ビットストリームは、ChromaArrayTypeが3に等しくない場合、sps_act_enabled_flagが0に等しく設定されることを満たすものとする。
【0110】
一般的な実装概念
45. 上記の方法は、特定の条件下で適用されてもよい。
a. 一例では、条件はカラーフォーマットが4:2:0及び/又は4:2:2であることである。
i. 或いは、さらに、4:4:4カラーフォーマットについて、2つのカラークロマ成分にどのようにデブロッキングフィルタを適用するかは、現在の設計に従ってもよい。
b. 一例では、上記の方法の使用の指示は、SPS/PPS/ピクチャヘッダ/スライスヘッダのようなシーケンス/ピクチャ/スライス/タイル/ブリック/ビデオ領域レベルで通知されてもよい。
c. 一例では、上記の方法の使用は、以下に依存してもよい。
ii. ビデオコンテンツ(例えば、スクリーンコンテンツ、ナチュラルコンテンツ)
iii. DPS/SPS/VPS/PPS/PPS/APS/ピクチャヘッダ/スライスヘッダ/タイルグループヘッダ/最大コーディングユニット(Largest coding unit,LCU)/コーディングユニット(Coding unit,CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオコーディングユニットで通知されたメッセージ
iv. CU/PU/TU/ブロック/ビデオコーディングユニットの位置
a. 一例では、CTU/CTB境界に沿ったフィルタリングサンプル(例えば、上/左/右/下境界への最初のK個(例えば、K=4/8))について、既存の設計が適用されてもよい。他のサンプルについては、提案される方法(例えば、項目3/4)が代わりに適用されてもよい。
v. エッジに沿ったサンプルを含むブロックのコーディングモード
vi. エッジに沿ったサンプルを含むブロックに適用される変換行列
vii. 現在のブロック及び/又はその隣接ブロックのブロック寸法
viii. 現在のブロック及び/又はその隣接ブロックのブロック形状
ix. カラーフォーマットの指示(4:2:0、4:4:4、RGB又はYUV等)
x. コーディングツリー構造(デュアルツリー又はシングルツリー等)
xi. スライス/タイルグループタイプ及び/又はピクチャタイプ
xii. 色成分(例えば、Cb又はCrにのみ適用されてもよい)
xiii. 時間レイヤID
xiv. 標準のプロファイル/レベル/層
xv. 或いは、m及び/又はnはデコーダに通知されてもよい。
【0111】
[5.更なる実施形態]
実施形態はJVET-O2001-vEに基づいている。新たに追加されたテキストは、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。削除されたテキストは、下線の付いた太字(又は[[]]と共に下線の付いたテキスト)で記されている。
【0112】
[5.1. デブロッキングにおけるクロマQPに関する実施形態#1]
[8.8.3.6 一方向のエッジフィルタリングプロセス]
...
- そうでない(cIdxが0に等しくない)場合、cIdxによって指定された現在のコーディングユニットのクロマコーディングブロック内のエッジについてのフィルタリングプロセスは、以下の順序のステップで構成される。
1. 変数cQpPicOffsetは、以下のように導出される。
cQpPicOffset=cIdx==1?pps_cb_qp_offset:pps_cr_qp_offset (8-1065)
[8.8.3.6.3 クロマブロックのエッジの決定プロセス]
...
変数QpQ及びQpPは、それぞれサンプルq0,0及びp0,0を含むコーディングブロックを含むコーディングユニットのQpY値に等しく設定される。
変数QpCは、以下のように導出される。
[[qPi=Clip3(0,63,((Qp Q +Qp P +1)>>1)+cQpPicOffset) (8-1132)]]
[[Qp C =ChromaQpTable[cIdx-1][qPi] (8-1133)]]
qPi=(QpQ+QpP+1)>>1 (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi]+cQpPicOffset (8-1133)
注記-変数cQpPicOffsetは、フィルタリングされたクロマ成分がCb成分であるかCr成分であるかに従って、pps_cb_qp_offset又はpps_cr_qp_offsetの値を調整する。しかし、ピクチャ内の調整の量を変更する必要性を回避するために、フィルタリングプロセスは、slice_cb_qp_offset又はslice_cr_qp_offsetの値についても、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffsetCb、CuQpOffsetCr又はCuQpOffsetCbCrの値についても調整を含まない。
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (8-1135)
変数tC’の値は、以下のように導出されたクロマ量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,65,QpC+2×(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_tc_offset_div2の値である。
変数tCは、以下のように導出される。
tC=(BitDepthC<10)?(tC’+2)>>(10-BitDepthC):tC’×(1<<(BitDepthC-8)) (8-1137)
【0113】
[5.2. 境界強度の導出に関する実施形態#2]
[8.8.3.5 境界フィルタリング強度の導出プロセス]
このプロセスへの入力は以下の通りである。
- ピクチャサンプルアレイrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 現在のコーディングブロックの色成分を指定する変数cIdx
- 2次元(nCbW)×(nCbH)アレイedgeFlags
このプロセスの出力は、境界フィルタリング強度を指定する二次元(nCbW)×(nCbH)アレイbSである。
...
xDi(i=0..xN)及びyDj(j=0..yN)について、以下が適用される。
- edgeFlags[xDi][yDj]が0に等しい場合、変数bS[xDi][yDj]は0に等しく設定される。
- そうでない場合、以下が適用される。
...
- 変数bS[xDi][yDj]は以下のように導出される。
- cIdxが0に等しく、サンプルp0及びq0の双方が1に等しいintra_bdpcm_flagを有するコーディングブロック内にある場合、bS[xDi][yDj]は0に等しく設定される。
-そうではなく、サンプルp0又はq0がイントラ予測モードでコーディングされたコーディングユニットのコーディングブロック内にある場合、bS[xDi][yDj]は2に等しく設定される。
- そうではなく、ブロックエッジが変換ブロックエッジでもあり、サンプルp0又はq0が1に等しいciip_flagを有するコーディングブロック内にある場合、bS[xDi][yDj]は2に等しく設定される。
- そうではなく、ブロックエッジが変換ブロックエッジでもあり、サンプルp0又はq0が1つ以上の非ゼロの変換係数レベルを含む変換ブロック内にある場合、bS[xDi][yDj]は1に等しく設定される。
- そうではなく、ブロックエッジが変換ブロックエッジでもあり、cIdxが0よりも大きく、サンプルp0又はq0が1に等しいtu_joint_cbcr_residual_flagを有する変換ユニット内にある場合、bS[xDi][yDj]は1に等しく設定される。
- そうではなく、サンプルp0を含むコーディングサブブロックの予測モードがサンプルq0を含むコーディングサブブロックの予測モードと異なる場合(すなわち、コーディングサブブロックの一方がIBC予測モードでコーディングされ、他方がインター予測モードで符号化される場合)、bS[xDi][yDj]は1に等しく設定される。
- そうではなく、cIdxが0に等しく、以下の条件の1つ以上が真である場合、bS[xDi][yDj]は1に等しく設定される。
- 2つのコーディングサブブロックの予測に使用されるリスト0動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルにおいて8以上であるか、或いは、2つのコーディングサブブロックの予測に使用されるリスト1動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。
- [[サンプルp 0 を含むコーディングサブブロック及びサンプルq 0 を含むコーディングサブブロックは、双方ともIBC予測モードでコーディングされ、2つのコーディングサブブロックの予測で使用されるブロックベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。]]
- [[サンプルp 0 を含むコーディングサブブロックの予測のために、サンプルq 0 を含むコーディングサブブロックの予測とは異なる参照ピクチャ又は異なる動きベクトルの数が使用される。]]
[[注1 - 2つのコーディングサブブロックに使用される参照ピクチャが同じであるか異なるかの決定は、予測が参照ピクチャリスト0へのインデックスを使用して形成されるか参照ピクチャリスト1へのインデックスを使用して形成されるかにかかわらず、また、参照ピクチャリスト内のインデックス位置が異なるか否かにかかわらず、どのピクチャが参照されるかにのみ基づく。]]
[[注2 - (xSb,ySb)をカバーする左上サンプルを有するコーディングサブブロックの予測に使用される動きベクトルの数は、PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]に等しい。]]
- [[1つの動きベクトルが、サンプルp 0 を含むコーディングサブブロックを予測するために使用され、1つの動きベクトルが、サンプルq 0 を含むコーディングサブブロックを予測するために使用され、使用される動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。]]
- [[2つの動きベクトル及び2つの異なる参照ピクチャが、サンプルp 0 を含むコーディングサブブロックを予測するために使用され、同じ2つの参照ピクチャについて2つの動きベクトルが、サンプルq 0 を含むコーディングサブブロックを予測するために使用され、同じ参照ピクチャについての2つのコーディングサブブロックの予測で使用される2つの動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。]]
- [[同じ参照ピクチャについて2つの動きベクトルが、サンプルp 0 を含むコーディングサブブロックを予測するために使用され、同じ参照ピクチャについて2つの動きベクトルが、サンプルq 0 を含むコーディングサブブロックを予測するために使用され、以下の条件の双方が真である。]]
- [[2つのコーディングサブブロックの予測で使用されるリスト0動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルで8以上であるか、或いは、2つのコーディングサブブロックの予測で使用されるリスト1動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。]]
- [[サンプルp 0 を含むコーディングサブブロックの予測で使用されるリスト0動きベクトル及びサンプルq 0 を含むコーディングサブブロックの予測で使用されるリスト1動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上であるか、或いは、サンプルp 0 を含むコーディングサブブロックの予測で使用されるリスト1動きベクトル及びサンプルq 0 を含むコーディングサブブロックの予測で使用されるリスト0動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。]]
- そうでない場合、変数bS[xDi][yDj]は0に等しく設定される。
【0114】
[5.3. 境界強度の導出に関する実施形態#3]
[8.8.3.6 境界フィルタリング強度の導出プロセス]
このプロセスへの入力は以下の通りである。
- ピクチャサンプルアレイrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 現在のコーディングブロックの色成分を指定する変数cIdx
- 2次元(nCbW)×(nCbH)アレイedgeFlags
このプロセスの出力は、境界フィルタリング強度を指定する二次元(nCbW)×(nCbH)アレイbSである。
...
xDi(i=0..xN)及びyDj(j=0..yN)について、以下が適用される。
- edgeFlags[xDi][yDj]が0に等しい場合、変数bS[xDi][yDj]は0に等しく設定される。
- そうでない場合、以下が適用される。
...
- 変数bS[xDi][yDj]は以下のように導出される。
- cIdxが0に等しく、サンプルp0及びq0の双方が1に等しいintra_bdpcm_flagを有するコーディングブロック内にある場合、bS[xDi][yDj]は0に等しく設定される。
-そうではなく、サンプルp0又はq0がイントラ予測モードでコーディングされたコーディングユニットのコーディングブロック内にある場合、bS[xDi][yDj]は2に等しく設定される。
- そうではなく、ブロックエッジが変換ブロックエッジでもあり、サンプルp0又はq0が1に等しいciip_flagを有するコーディングブロック内にある場合、bS[xDi][yDj]は2に等しく設定される。
- そうではなく、ブロックエッジが変換ブロックエッジでもあり、サンプルp0又はq0が1つ以上の非ゼロの変換係数レベルを含む変換ブロック内にある場合、bS[xDi][yDj]は1に等しく設定される。
- [[そうではなく、ブロックエッジが変換ブロックエッジでもあり、cIdxが0よりも大きく、サンプルp 0 又はq 0 が1に等しいtu_joint_cbcr_residual_flagを有する変換ユニット内にある場合、bS[xD i ][yD j ]は1に等しく設定される。]]
- そうではなく、サンプルp0を含むコーディングサブブロックの予測モードがサンプルq0を含むコーディングサブブロックの予測モードと異なる場合(すなわち、コーディングサブブロックの一方がIBC予測モードでコーディングされ、他方がインター予測モードで符号化される場合)、bS[xDi][yDj]は1に等しく設定される。
- そうではなく、cIdxが0に等しく、以下の条件の1つ以上が真である場合、bS[xDi][yDj]は1に等しく設定される。
- サンプルp0を含むコーディングサブブロック及びサンプルq0を含むコーディングサブブロックは、双方ともIBC予測モードでコーディングされ、2つのコーディングサブブロックの予測で使用されるブロックベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。
- サンプルp0を含むコーディングサブブロックの予測のために、サンプルq0を含むコーディングサブブロックの予測とは異なる参照ピクチャ又は異なる動きベクトルの数が使用される。
注1 - 2つのコーディングサブブロックに使用される参照ピクチャが同じであるか異なるかの決定は、予測が参照ピクチャリスト0へのインデックスを使用して形成されるか参照ピクチャリスト1へのインデックスを使用して形成されるかにかかわらず、また、参照ピクチャリスト内のインデックス位置が異なるか否かにかかわらず、どのピクチャが参照されるかにのみ基づく。
注2 - (xSb,ySb)をカバーする左上サンプルを有するコーディングサブブロックの予測に使用される動きベクトルの数は、PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]に等しい。
- 1つの動きベクトルが、サンプルp0を含むコーディングサブブロックを予測するために使用され、1つの動きベクトルが、サンプルq0を含むコーディングサブブロックを予測するために使用され、使用される動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。
- 2つの動きベクトル及び2つの異なる参照ピクチャが、サンプルp0を含むコーディングサブブロックを予測するために使用され、同じ2つの参照ピクチャについて2つの動きベクトルが、サンプルq0を含むコーディングサブブロックを予測するために使用され、同じ参照ピクチャについての2つのコーディングサブブロックの予測で使用される2つの動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。
- 同じ参照ピクチャについて2つの動きベクトルが、サンプルp0を含むコーディングサブブロックを予測するために使用され、同じ参照ピクチャについて2つの動きベクトルが、サンプルq0を含むコーディングサブブロックを予測するために使用され、以下の条件の双方が真である。
- 2つのコーディングサブブロックの予測で使用されるリスト0動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルで8以上であるか、或いは、2つのコーディングサブブロックの予測で使用されるリスト1動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。
- サンプルp0を含むコーディングサブブロックの予測で使用されるリスト0動きベクトル及びサンプルq0を含むコーディングサブブロックの予測で使用されるリスト1動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上であるか、或いは、サンプルp0を含むコーディングサブブロックの予測で使用されるリスト1動きベクトル及びサンプルq0を含むコーディングサブブロックの予測で使用されるリスト0動きベクトルの水平又は垂直成分の間の絶対差は、1/16ルマサンプルの単位で8以上である。
- そうでない場合、変数bS[xDi][yDj]は0に等しく設定される。
【0115】
[5.4. ルマデブロッキングフィルタリングプロセスに関する実施形態#4]
[8.8.3.6.1 ルマブロックエッジの決定プロセス]
このプロセスへの入力は以下の通りである。
- ピクチャサンプルアレイrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のコーディングブロックの左上サンプルに対する現在のブロックの左上サンプルを指定する位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 決定を含む変数dE、dEp及びdEq
- 修正フィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
...
以下の順序のステップが適用される。
...
1. sidePisLargeBlk又はsideQisLargeBlkが0よりも大きい場合、以下が適用される。
a. 変数dp0L、dp3Lが導出され、maxFilterLengthPが以下のように変更される。
- [[sidePisLargeBlkが1に等しい場合、以下が適用される。]]
[[dp0L=(dp0+Abs(p 5,0 -2×p 4,0 +p 3,0 )+1)>>1 (8-1087)]]
[[dp3L=(dp3+Abs(p 5,3 -2×p 4,3 +p 3,3 )+1)>>1 (8-1088)]]
- [[そうでない場合、以下が適用される]]
dp0L=dp0 (8-1089)
dp3L=dp3 (8-1090)
[[maxFilterLengthP=3 (8-1091)]]
[[maxFilterLengthP=sidePisLargeBlk?maxFilterLengthP:3]]
b. 変数dq0L及びdq3Lは以下のように導出される。
- [[sideQisLargeBlkが1に等しい場合、以下が適用される。]]
[[dq0L=(dq0+Abs(q 5,0 -2×q 4,0 +q 3,0 )+1)>>1 (8-1092)]]
[[dq3L=(dq3+Abs(q 5,3 -2×q 4,3 +q 3,3 )+1)>>1 (8-1093)]]
- [[そうでない場合、以下が適用される。]]
dq0L=dq0 (8-1094)
dq3L=dq3 (8-1095)
[[maxFilterLengthQ=sidePisLargeBlk?maxFilterLengthQ:3]]
...
2. 変数dE、dEp及びdEqは、以下のように導出される:
...
【0116】
[5.5. クロマデブロッキングフィルタリングプロセスに関する実施形態#5]
[8.8.3.6.3 ルマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- ピクチャレベルのクロマ量子化パラメータオフセットを指定する変数cQpPicOffset
- 境界フィルタリング強度を指定する変数bS
- 変数maxFilterLengthCbCr
このプロセスの出力は以下の通りである。
- 修正された変数maxFilterLengthCbCr
- 変数tC
変数maxKは、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
maxK=(SubHeightC==1)?3:1 (8-1124)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
maxK=(SubWidthC==1)?3:1 (8-1125)
値pi及びqi(i=0..maxFilterLengthCbCr及びk=0..maxK)は、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
ChromaArrayTypeが0に等しくなく、treeTypeがSINGLE_TREE又はDUAL_TREE_CHROMAに等しい場合、以下が適用される。
- treeTypeがDUAL_TREE_CHROMAに等しい場合、変数Qp Y は、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQp Y に等しく設定される。
- 変数qP Cb 、qP Cr 及びqP CbCr は、以下のように導出される。
qPi Chroma =Clip3(-QpBdOffset C ,63,Qp Y ) (8-935)
qPi Cb =ChromaQpTable[0][qPi Chroma ] (8-936)
qPi Cr =ChromaQpTable[1][qPi Chroma ] (8-937)
qPi CbCr =ChromaQpTable[2][qPi Chroma ] (8-938)
- Cb及びCr成分のクロマ量子化パラメータQp’ Cb 及びQp’ Cr 並びに共同Cb-Crコーディングのクロマ量子化パラメータQp’ CbCr は、以下のように導出される。
Qp’ Cb =Clip3(-QpBdOffset C ,63,qP Cb +pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffset Cb ) (8-939)
Qp’ Cr =Clip3(-QpBdOffset C ,63,qP Cr +pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffset Cr ) (8-940)
Qp’ CbCr =Clip3(-QpBdOffset C ,63,qP CbCr +pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffset CbCr ) (8-941)
変数Qp Q 及びQp P は、それぞれサンプルq 0,0 及びp 0,0 を含むコーディングブロックを含むコーディングユニットの対応するQp’ Cb 又はQp’ Cr 又はQp’ CbCr 値に等しく設定される。
変数Qp C は以下のように導出される:
Qp C =(Qp Q +Qp P +1)>>1 (8-1133)
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (8-1135)
変数tC’の値は、以下のように導出されたクロマ量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,65,QpC+2×(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_tc_offset_div2の値である。
変数tCは、以下のように導出される。
tC=(BitDepthC<10)?(tC’+2)>>(10-BitDepthC):tC’×(1<<(BitDepthC-8)) (8-1137)
maxFilterLengthCbCrが1に等しく、bSが2に等しくない場合、maxFilterLengthCbCrは0に等しく設定される。
【0117】
[5.6. デブロッキングにおけるクロマQPに関する実施形態#6]
[8.8.3.6.3 ルマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- ピクチャレベルのクロマ量子化パラメータオフセットを指定する変数cQpPicOffset
- 境界フィルタリング強度を指定する変数bS
- 変数maxFilterLengthCbCr
このプロセスの出力は以下の通りである。
- 修正された変数maxFilterLengthCbCr
- 変数tC
変数maxKは、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
maxK=(SubHeightC==1)?3:1 (8-1124)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
maxK=( SubWidthC==1)?3:1 (8-1125)
値pi及びqi(i=0..maxFilterLengthCbCr及びk=0..maxK)は、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
変数QpQ及びQpPは、それぞれサンプルq0,0及びp0,0を含むコーディングブロックを含むコーディングユニットのQpY値に等しく設定される。
変数jccr_flag P 及びjccr_flag Q は、それぞれサンプルq 0,0 及びp 0,0 を含むコーディングブロックを含むコーディングユニットのtu_joint_cbcr_residual_flag値に等しく設定される。
変数QpCは、以下のように導出される。
[[qPi=Clip3(0,63,((Qp Q +Qp P +1)>>1)+cQpPicOffset) (8-1132)]]
qPi=Clip3(0,63,((Qp Q +(jccr_flag P ?pps_joint_cbcr_qp_offset:cQpPicOffset)+Qp P +(jccr_flag Q ?pps_joint_cbcr_qp_offset:cQpPicOffset)+1)>>1))
QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
注記-変数cQpPicOffsetは、フィルタリングされたクロマ成分がCb成分であるかCr成分であるかに従って、pps_cb_qp_offset又はpps_cr_qp_offsetの値を調整する。しかし、ピクチャ内の調整の量を変更する必要性を回避するために、フィルタリングプロセスは、slice_cb_qp_offset又はslice_cr_qp_offsetの値についても、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffsetCb、CuQpOffsetCr又はCuQpOffsetCbCrの値についても調整を含まない。
...
【0118】
[5.7. デブロッキングにおけるクロマQPに関する実施形態#7]
[8.8.3.6.3 クロマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
...
このプロセスの出力は以下の通りである。
- 修正された変数maxFilterLengthCbCr
- 変数tC
変数maxKは、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
maxK=(SubHeightC==1)?3:1 (8-1124)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
maxK=( SubWidthC==1)?3:1 (8-1125)
値pi及びqi(i=0..maxFilterLengthCbCr及びk=0..maxK)は、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
[[変数Qp Q 及びQp P は、それぞれサンプルq 0,0 及びp 0,0 を含むコーディングブロックを含むコーディングユニットのQp Y 値に等しく設定される。]]
変数Qp Q は、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQp Y に等しく設定される。ここで、cbWidthは、ルマサンプルでの現在のクロマコーディングブロックの幅を指定し、cbHeightは、ルマサンプルでの現在のクロマコーディングブロックの幅を指定する。
変数Qp P は、ルマ位置(xCb’+cbWidth’/2,yCb’+cbHeight’/2)をカバーするルマコーディングユニットのルマ量子化パラメータQp Y に等しく設定される。ここで、(xCb’,yCb’)は、現在のピクチャの左上クロマサンプルに対して、q 0,0 をカバーするクロマコーディングブロックの左上サンプルを指定し、cbWidth’は、ルマサンプルでの現在のクロマコーディングブロックの幅を指定し、cbHeightは、ルマサンプルでの現在のクロマコーディングブロックの幅を指定する。
変数QpCは、以下のように導出される。
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
注記-変数cQpPicOffsetは、フィルタリングされたクロマ成分がCb成分であるかCr成分であるかに従って、pps_cb_qp_offset又はpps_cr_qp_offsetの値を調整する。しかし、ピクチャ内の調整の量を変更する必要性を回避するために、フィルタリングプロセスは、slice_cb_qp_offset又はslice_cr_qp_offsetの値についても、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffsetCb、CuQpOffsetCr又はCuQpOffsetCbCrの値についても調整を含まない。
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (8-1135)
変数tC’の値は、以下のように導出されたクロマ量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,65,QpC+2×(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_tc_offset_div2の値である。
【0119】
[5.8. デブロッキングにおけるクロマQPに関する実施形態#8]
示される3つのサンプル(実線の円)についてフィルタ決定を行う場合、3つのサンプルを含むクロマCUの中心位置をカバーするルマCUのQPが選択される。したがって、第1、第2及び第3のクロマサンプル(図11に示す)について、それぞれ、CUY3のQPのみが利用される。
このように、クロマ量子化/逆量子化プロセスのためにどのようにルマCUを選択するかは、クロマフィルタ決定プロセスについてのものと整合する。
【0120】
[5.9. JCCRコーディングされたブロックに使用されるQPに関する実施形態#9]
[8.7.3 変換係数のスケーリングプロセス]
このプロセスへの入力は以下の通りである。
- 現在のピクチャの左上ルマサンプルに対する現在のルマ変換ブロックの左上サンプルを指定するルマ位置(xTbY,yTbY)
- 変換ブロック幅を指定する変数nTbW
- 変換ブロック高さを指定する変数nTbH
- 現在のブロックの色成分を指定する変数cIdx
- 現在の色成分のビットデプスを指定する変数bitDepth
このプロセスの出力は、要素d[x][y]を有するスケーリングされた変換係数の(nTbW)×(nTbH)アレイdである。
量子化パラメータqPは、以下のように導出される。
- cIdxが0に等しく、transform_skip_flag[xTbY][yTbY]が0に等しい場合、以下が適用される。
qP=Qp’Y (8-950)
- そうではなく、cIdxが0に等しく(且つ、transform_skip_flag[xTbY][yTbY]が1に等しい)場合、以下が適用される。
qP=Max(QpPrimeTsMin,Qp’Y) (8-951)
- そうではなく、TuCResMode[xTbY][yTbY]が0に等しくない場合[[2に等しい場合]]、以下が適用される。
qP=Qp’CbCr (8-952)
- そうではなく、cIdxが1に等しい場合、以下が適用される。
qP=Qp’Cb (8-953)
- そうでない(cIdxが2に等しい)場合、以下が適用される。
qP=Qp’Cr (8-954)
【0121】
[5.10. JCCRコーディングされたブロックに使用されるQPに関する実施形態#10]
[8.8.3.2 一方向のデブロッキングフィルタプロセス]
このプロセスへの入力は以下の通りである。
- ルマ成分(DUAL_TREE_LUMA)が現在処理されているかクロマ成分(DUAL_TREE_CHROMA)が現在処理されているかを指定する変数treeType
- treeTypeがDUAL_TREE_LUMAに等しい場合、デブロッキングの前の再構成ピクチャ、すなわち、アレイrecPictureL
- ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しい場合、アレイrecPictureCb及びrecPictureCr
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
このプロセスの出力は、デブロッキングの後の修正された再構成ピクチャであり、すなわち、以下の通りである。
- treeTypeがDUAL_TREE_LUMAに等しい場合、アレイrecPictureL
- ChromaArrayTypeが0に等しくなく、treeTypeがDUAL_TREE_CHROMAに等しい場合、アレイrecPictureCb及びrecPictureCr
変数firstCompIdx及びlastCompIdxは、以下のように導出される。
firstCompIdx=(treeType==DUAL_TREE_CHROMA)?1:0 (8-1022)
lastCompIdx=(treeType==DUAL_TREE_LUMA||ChromaArrayType==0)?0:2 (8-1023)
firstCompIdx以上lastCompIdx以下の範囲にあり、色成分インデックスcIdxによって示されるコーディングユニットの色成分毎の各コーディングユニット及び各コーディングブロックについて、コーディングブロック幅nCbW、コーディングブロック高さnCbH及びコーディングブロックの左上サンプルの位置(xCb,yCb)を用いて、cIdxが0に等しい場合、又はcIdxが0に等しくなく、edgeTypeがEDGE_VERに等しく、xCb%8が0に等しい場合、又はcIdxが0に等しくなく、edgeTypeがEDGE_HORに等しく、yCb%8が0に等しい場合、エッジは、次の順序のステップによってフィルタリングされる。
...
[[5. ピクチャサンプルアレイrecPictureは、以下のように導出される。]]
- [[cIdxが0に等しい場合、recPictureは、デブロッキングの前の再構成ルマピクチャサンプルアレイrecPicture L に等しく設定される。]]
- [[そうではなく、cIdxが1に等しい場合、recPictureは、デブロッキングの前の再構成クロマピクチャサンプルアレイrecPicture Cb に等しく設定される。]]
- 上記以外の(cIdxが2に等しい)場合、recPictureは、デブロッキングの前の再構成クロマピクチャサンプルアレイrecPicture Cr に等しく設定される。]]
5. ピクチャサンプルアレイrecPicture[i](i=0,1,2)は、以下のように導出される。
- recPicture[0]は、デブロッキングの前の再構成ピクチャサンプルアレイrecPicture L に等しく設定される。
- recPicture[1]は、デブロッキングの前の再構成ピクチャサンプルアレイrecPicture Cb に等しく設定される。
- recPicture[2]は、デブロッキングの前の再構成ピクチャサンプルアレイrecPicture Cr に等しく設定される。
...
cIdxが1である場合、以下のプロセスが適用される。
一方向のエッジフィルタリングプロセスは、変数edgeType、変数cIdx、デブロッキングの前の再構成ピクチャrecPicture、位置(xCb,yCb )、コーディングブロック幅nCbW、コーディングブロック高さnCbH、並びにアレイbS、maxFilterLengthPs、及びmaxFilterLengthQsを入力として用いて、第8.8.3.6節で示されるようにコーディングブロックについて呼び出され、修正された再構成ピクチャrecPictureを出力する。
[8.8.3.5 境界フィルタリング強度の導出プロセス]
このプロセスへの入力は以下の通りである。
- ピクチャサンプルアレイrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のコーディングブロックの幅を指定する変数nCbW
- 現在のコーディングブロックの高さを指定する変数nCbH
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 現在のコーディングブロックの色成分を指定する変数cIdx
- 2次元(nCbW)×(nCbH)アレイedgeFlags
このプロセスの出力は、境界フィルタリング強度を指定する二次元(nCbW)×(nCbH)アレイbSである。
変数xDi、yDj、xN及びyNは、以下のように導出される。
...
xDi(i=0..xN)及びyDj(j=0..yN)について、以下が適用される。
- edgeFlags[xDi][yDj]が0に等しい場合、変数bS[xDi][yDj]は0に等しく設定される。
- そうでない場合、以下が適用される。
- サンプル値p0及びq0は、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、p0はrecPicture[cIdx][xCb+xDi-1][yCb+yDj]に等しく設定され、q0はrecPicture[cIdx][xCb+xDi][yCb+yDj]に等しく設定される。
- そうでない(edgeTypeがEDGE_HORに等しい)場合、p0はrecPicture[cIdx][xCb+xDi][yCb+yDj-1]に等しく設定され、q0はrecPicture[cIdx][xCb+xDi][yCb+yDj]に等しく設定される。
...
[8.8.3.6 一方向のエッジフィルタリングプロセス]
このプロセスへの入力は以下の通りである。
- 垂直エッジ(EDGE_VER)が現在処理されているか水平エッジ(EDGE_HOR)が現在処理されているかを指定する変数edgeType
- 現在の色成分を指定する変数cIdx
- デブロッキングの前の再構成ピクチャrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)、
- 現在のコーディングブロックの幅を指定する変数nCbW、
- 現在のコーディングブロックの高さを指定する変数nCbH、
- 境界強度を指定するアレイbS、
- アレイmaxFilterLengthPs及びmaxFilterLengthQs
このプロセスの出力は、デブロッキングの後の修正された再構成ピクチャrecPictureiである。
...
- そうでない(cIdxが0に等しくない)場合、cIdxによって指定された現在のコーディングユニットのクロマコーディングブロック内のエッジについてのフィルタリングプロセスは、以下の順序のステップで構成される。
1. 変数cQpPicOffsetは、以下のように導出される。
cQpPicOffset=cIdx==1?pps_cb_qp_offset:pps_cr_qp_offset (8-1065)
cQpPicOffset=(pps_cb_qp_offset+pps_cr_qp_offset+1)>>1 (8-1065)
2. cIdx=1及び2についてのbS[xDk][yDm]は、cIdx=1についてのbS[xDk][yDm]が1に等しいか、或いは、cIdx=2についてのbS[xDk][yDm]が1に等しい場合、1に修正される。
3. 第8.8.3.6.3節で示されるクロマブロックエッジの決定プロセスは、クロマピクチャサンプルアレイrecPicture、クロマコーディングブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたクロマブロックの位置(xBl,yBl)、エッジ方向edgeType、[[変数cIdx]]、変数cQpPicOffset、境界フィルタリング強度bS[xDk][yDm]、及びmaxFilterLengthPs[xDk][yDm]に等しく設定された変数maxFilterLengthCbCrを入力として用いて呼び出され、修正された変数maxFilterLengthCbCr、及び変数tCを出力する。
4. maxFilterLengthCbCrが0よりも大きい場合、第8.8.3.6.4節で示されるクロマブロックエッジのフィルタリングプロセスは、クロマピクチャサンプルアレイrecPicture、クロマコーディングブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたブロックのクロマ位置(xBl,yBl)、エッジ方向Type、変数maxFilterLengthCbCr、及び1に等しいcIdxを入力として、且つ、変数tCを入力として用いて呼び出され、修正されたクロマピクチャサンプルアレイrecPictureを出力する。
maxFilterLengthCbCrが0よりも大きい場合、第8.8.3.6.4節で示されるクロマブロックエッジのフィルタリングプロセスは、クロマピクチャサンプルアレイrecPicture、クロマコーディングブロックの位置(xCb,yCb)、(xDk,yDm)に等しく設定されたブロックのクロマ位置(xBl,yBl)、エッジ方向edgeType、変数maxFilterLengthCbCr、及び2に等しいcIdxを入力として、且つ、変数tCを入力として用いて呼び出され、修正されたクロマピクチャサンプルアレイrecPictureを出力する。
[8.8.3.6.3 クロマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- [[色成分インデックスを指定する変数cIdx]]
- ピクチャレベルのクロマ量子化パラメータオフセットを指定する変数cQpPicOffset
- 境界フィルタリング強度を指定する変数bS
- 変数maxFilterLengthCbCr
このプロセスの出力は以下の通りである。
- 修正された変数maxFilterLengthCbCr
- 変数tC
変数maxKは、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
maxK=(SubHeightC==1)?3:1 (8-1124)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
maxK=(SubWidthC==1)?3:1 (8-1125)
値pi及びqi(c=0..1、i=0..maxFilterLengthCbCr及びk=0..maxK)は、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
q c,i,k=recPicture[c][xCb+xBl+i][yCb+yBl+k] (8-1126)
p c,i,k=recPicture[c][xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、以下が適用される。
q c,i,k=recPicture[c][xCb+xBl+k][yCb+yBl+i] (8-1129)
p c,i,k=recPicture[c][xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
変数QpQ及びQpPは、それぞれサンプルq0,0及びp0,0を含むコーディングブロックを含むコーディングユニットのQpY値に等しく設定される。
変数QpCは、以下のように導出される。
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi]+cQpPicOffset (8-1133)
QpC=((ChromaQpTable[0][qPi]+ChromaQpTable[1][qPi]+1)>>1)+cQpPicOffset (8-1133)
注記-変数cQpPicOffsetは、フィルタリングされたクロマ成分がCb成分であるかCr成分であるかに従って、pps_cb_qp_offset又はpps_cr_qp_offsetの値を調整する。しかし、ピクチャ内の調整の量を変更する必要性を回避するために、フィルタリングプロセスは、slice_cb_qp_offset又はslice_cr_qp_offsetの値についても、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffsetCb、CuQpOffsetCr又はCuQpOffsetCbCrの値についても調整を含まない。
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (8-1135)
変数tC’の値は、以下のように導出されたクロマ量子化パラメータQに基づいて、表8-18で示されるように決定される。
Q=Clip3(0,65,QpC+2×(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
ここで、slice_tc_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_tc_offset_div2の値である。
変数tCは、以下のように導出される。
tC=(BitDepthC<10)?(tC’+2)>>(10-BitDepthC):tC’×(1<<(BitDepthC-8)) (8-1137)
maxFilterLengthCbCrが1に等しく、bSが2に等しくない場合、maxFilterLengthCbCrは0に等しく設定される。
maxFilterLengthCbCrが3に等しい場合、以下の順序のステップが適用される。
1. 変数n1、dpq0c、dpq1c、dpc、dqc及びdc(c=0..1)が以下のように導出される。
n1=(subSampleC==2)?1:3 (8-1138)
dp0c=Abs(p c,2,0-2×p c,1,0+p c,0,0) (8-1139)
dp1c=Abs(p c,2,n1-2×p c,1,n1+p c,0,n1) (8-1140)
dq0c=Abs(q c,2,0-2×q c,1,0+qc,0,0) (8-1141)
dq1c= Abs(q c,2,n1-2×q c,1,n1+q c,0,n1) (8-1142)
dpq0c=dp0c+dq0c (8-1143)
dpq1c=dp1c+dq1c (8-1144)
dpc=dp0c+dp1c (8-1145)
dqc=dq0c+dq1c (8-1146)
dc=dpq0c+dpq1c (8-1147)
2. 変数dは、(d0+d1+1)>>1に等しく設定される。
3. 変数dSam0及びdSam1がともに0に等しく設定される。
4. dがβよりも小さい場合、以下の順序のステップが適用される。
a. 変数dpqが2×dpq0に等しく設定される。
b. 変数dSam0が、サンプル値p0,0、p3,0、q0,0及びq3,0、変数dpq、β及びtCを入力として用いて、サンプル位置(xCb+xBl,yCb+yBl)について、第8.8.3.6.8節で示されるクロマサンプルの決定プロセスを呼び出すことによって導出され、出力が、決定dSam0に割り当てられる。
c. 変数dpqが2×dpq1に等しく設定される。
d. 変数dSam1が、以下のように変更される。
- edgeTypeがEDGE_VERに等しい場合、サンプル位置(xCb+xBl,yCb+yBl+n1)について、第8.8.3.6.8節で示されるクロマサンプルの決定プロセスは、サンプル値p0,n1、p3,n1、q0,n1及びq3,n1、変数dpq、β及びtCを入力として用いて呼び出され、出力が、決定dSam1に割り当てられる。
- そうでない(edgeTypeがEDGE_HORに等しい)場合、サンプル位置(xCb+xBl+n1,yCb+yBl)について、第8.8.3.6.8節で示されるクロマサンプルの決定プロセスは、サンプル値p0,n1、p3,n1、q0,n1及びq3,n1、変数dpq、β及びtCを入力として用いて呼び出され、出力が、決定dSam1に割り当てられる。
5. 変数maxFilterLengthCbCrが、以下のように変更される。
- dSam0が1に等しく、dSam1が1に等しい場合、maxFilterLengthCbCrは3に等しく設定される。
- 上記以外の場合に、maxFilterLengthCbCrは1に等しく設定される。
[8.8.3.6.4 クロマブロックエッジのフィルタリングプロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR))がフィルタリングされるかを指定する変数edgeType
- 最大クロマフィルタ長さを含む変数maxFilterLengthCbCr
6. 色成分インデックスを指定する変数cIdx
- 変数tC
このプロセスの出力は、修正されたクロマピクチャサンプルアレイrecPictureである。
...
値pi及びqi(i=0..maxFilterLengthCbCr及びk=0..maxK)は、以下のように導出される。
- edgeTypeがEDGE_VERに等しい場合、以下が適用される。
qi,k=recPicture[cIdx][xCb+xBl+i][yCb+yBl+k] (8-1150)
pi,k=recPicture[cIdx][xCb+xBl-i-1][yCb+yBl+k] (8-1151)
- そうでない(edgeTypeがEDGE_HORに等しい)場合に、以下が適用される。
qi,k=recPicture[cIdx][xCb+xBl+k][yCb+yBl+i] (8-1152)
pi,k=recPicture[cIdx][xCb+xBl+k][yCb+yBl-i-1] (8-1153)
edgeTypeの値に依存して、以下が適用される。
- edgeTypeがEDGE_VERに等しい場合、各サンプル位置(xCb+xBl,yCb+yBl+k)(k=0..maxK)について、以下の順序のステップが適用される。
1. 第8.8.3.6.9節で示されるクロマサンプルのフィルタリングプロセスが、変数maxFilterLengthCbCr、サンプル値pi,k、qi,k(i=0..maxFilterLengthCbCr)、位置(xCb+xBl-i-1,yCb+yBl+k)及び(xCb+xBl+i,yCb+yBl+k)(i=0..maxFilterLengthCbCr-1)、並びに変数tCを入力として用いて呼び出され、フィルタリングされたサンプル値pi’及びqi’(i=0..maxFilterLengthCbCr-1)を出力する。
2. フィルタリングされたサンプル値pi’及びqi’(i=0..maxFilterLengthCbCr-1)が、以下のように、サンプルアレイrecPicture内の対応するサンプルを置換する。
recPicture[cIdx][xCb+xBl+i][yCb+yBl+k]=qi’ (8-1154)
recPicture[cIdx][xCb+xBl-i-1][yCb+yBl+k]=pi’ (8-1155)
- そうでない(edgeTypeがEDGE_HORに等しい)場合、各サンプル位置(xCb+xBl+k,yCb+yBl)(k=0..maxK)について、以下の順序のステップが適用される。
1. 第8.8.3.6.9節で示されるクロマサンプルのフィルタリングプロセスが、変数maxFilterLengthCbCr、サンプル値pi,k、qi,k(i=0..maxFilterLengthCbCr)、位置(xCb+xBl+k,yCb+yBl-i-1)及び(xCb+xBl+k,yCb+yBl+i)、並びに変数tCを入力として用いて呼び出され、フィルタリングされたサンプル値pi’及びqi’を出力する。
2. フィルタリングされたサンプル値pi’及びqi’が、以下のように、サンプルアレイrecPicture内の対応するサンプルを置換する。
recPicture[cIdx][xCb+xBl+k][yCb+yBl+i]=qi’ (8-1156)
recPicture[cIdx][xCb+xBl+k][yCb+yBl-i-1]=pi
【0122】
[5.11 実施形態#11]
[8.8.3.6.3 クロマブロックのエッジの決定プロセス]
...
[[変数Qp Q 及びQp P は、それぞれサンプルq 0,0 及びp 0,0 を含むコーディングブロックを含むコーディングユニットのQp Y 値に等しく設定される。]]
[[変数Qp C は、以下のように導出される。]]
[[qPi=Clip3(0,63,((Qp Q +Qp P +1)>>1)+cQpPicOffset) (8-1132)]]
[[Qp C =ChromaQpTable[cIdx-1][qPi] (8-1133)]]
ChromaArrayTypeが0に等しくなく、treeTypeがSINGLE_TREE又はDUAL_TREE_CHROMAに等しい場合、以下が適用される。
- treeTypeがDUAL_TREE_CHROMAに等しい場合、変数QpYは、ルマ位置(xCb+cbWidth/2,yCb+cbHeight/2)をカバーするルマコーディングユニットのルマ量子化パラメータQpYに等しく設定される。
- 変数qPCb、qPCr及びqPCbCrは、以下のように導出される。
qPiChroma=Clip3(-QpBdOffsetC,63,QpY) (8-935)
qPiCb=ChromaQpTable[0][qPiChroma] (8-936)
qPiCr=ChromaQpTable[1][qPiChroma] (8-937)
qPiCbCr=ChromaQpTable[2][qPiChroma] (8-938)
- Cb及びCr成分のクロマ量子化パラメータQp’Cb及びQp’Cr並びに共同Cb-Crコーディングのクロマ量子化パラメータQp’CbCrは、以下のように導出される。
Qp’Cb=Clip3(-QpBdOffsetC,63,qPCb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb)+QpBdOffsetC (8-939)
Qp’Cr=Clip3(-QpBdOffsetC,63,qPCr+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr)+QpBdOffsetC (8-940)
Qp’CbCr=Clip3(-QpBdOffsetC,63,qPCbCr+pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffsetCbCr)+QpBdOffsetC (8-941)
変数QpQ及びQpPは、それぞれ、サンプルq0,0及びp0,0を含むコーディングブロックを含むコーディングユニットの、cIdxが1に等しいときにはQp’Cb値に、或いは、cIdxが2に等しいときにはQp’Cr値に、或いは、tu_joint_cbcr_residual_flagが1に等しいときにはQp’CbCr値に等しく設定される。
変数QpCは、以下のように導出される。
QpC=(QpQ+QpP+1)>>1
【0123】
[5.12 実施形態#12]
[8.8.3.6.3 クロマブロックエッジの決定プロセス]
...
[[変数Qp Q 及びQp P は、それぞれサンプルq 0,0 及びp 0,0 を含むコーディングブロックを含むコーディングユニットのQp Y 値に等しく設定される。]]
[[変数QpCは、以下のように導出される。]]
[[qPi=Clip3(0,63,((Qp Q +Qp P +1)>>1)+cQpPicOffset) (8-1132)]]
[[Qp C =ChromaQpTable[cIdx-1][qPi] (8-1133)]]
[[注記-変数cQpPicOffsetは、フィルタリングされたクロマ成分がCb成分であるかCr成分であるかに従って、pps_cb_qp_offset又はpps_cr_qp_offsetの値を調整する。しかし、ピクチャ内の調整の量を変更する必要性を回避するために、フィルタリングプロセスは、slice_cb_qp_offset又はslice_cr_qp_offsetの値についても、(cu_chroma_qp_offset_enabled_flagが1に等しい場合)CuQpOffset Cb 、CuQpOffset Cr 又はCuQpOffset CbCr の値についても調整を含まない。]]
変数Qp Q 及びQp P は、それぞれ、サンプルq 0,0 及びp 0,0 を含む変換ブロック(xTb,yTb)の、TuCResMode[xTb][yTb]が2に等しいときにはQp’ CbCr -QpBdOffsetCに、cIdxが1に等しいときにはQp’ Cb -QpBdOffsetCに、cIdxが2に等しいときにはQp’ Cr -QpBdOffsetCに等しく設定される。
変数Qp C は、以下のように導出される。
Qp C =(Qp Q +Qp P +1)>>1
...
【0124】
[5.13 実施形態#13]
実施形態はJVET-P2001-vEに基づいている。新たに追加されたテキストは、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。削除されたテキストは、下線の付いた太字(又は[[]]と共に下線の付いたテキスト)で記されている。
[クロマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 修正されたフィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
...
変数QpPは以下のように導出される。
- ルマ位置(xTbP,xTbP)は、ピクチャの左上ルマサンプルに対してサンプルp0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbP][yTbP]が2に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb P ][yTb P ][cIdx]が1に等しい場合、Qp P は、サンプルp 0,0 を含む変換ブロックのMax(QpPrimeTsMin,Qp’ Cb )に等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb P ][yTb P ][cIdx]が0に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Crに等しく設定される。
- cu_act_enabled_flag[xTb P ][yTb P ]が1に等しい場合、Qp P はQp P -5に等しく設定される。
変数QpQは以下のように導出される。
- ルマ位置(xTbQ,xTbQ)は、ピクチャの左上ルマサンプルに対してサンプルq0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbQ][yTbQ]が2に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb Q ][yTb Q ][cIdx]が1に等しい場合、Qp Q は、サンプルp 0,0 を含む変換ブロックのMax(QpPrimeTsMin,Qp’ Cr )に等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb P ][yTb P ][cIdx]が0に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Crに等しく設定される。
- cu_act_enabled_flag[xTb Q ][yTb Q ]が1に等しい場合、Qp Q はQp Q -5に等しく設定される。
- 変数QpCは以下のように導出される。
QpC=(QpQ-QpBdOffset+QpP-QpBdOffset+1)>>1 (1321)
...
【0125】
[5.14 実施形態#14]
実施形態はJVET-P2001-vEに基づいている。新たに追加されたテキストは、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。削除されたテキストは、下線の付いたイタリック体の太字(又は[[]]と共に下線の付いたテキスト)で記されている。
[クロマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 修正されたフィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
変数QpPは以下のように導出される。
- ルマ位置(xTbP,xTbP)は、ピクチャの左上ルマサンプルに対してサンプルp0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbP][yTbP]が2に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb P ][yTb P ][cIdx]が1に等しい場合、Qp P は、サンプルp 0,0 を含む変換ブロックのMax(QpPrimeTsMin,Qp’ Cb )に等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb P ][yTb P ][cIdx]が0に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Crに等しく設定される。
- cu_act_enabled_flag[xTb P ][yTb P ]が1に等しい場合、Qp P はQp P -5に等しく設定される。
変数QpQは以下のように導出される。
- ルマ位置(xTbQ,xTbQ)は、ピクチャの左上ルマサンプルに対してサンプルq0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbQ][yTbQ]が2に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb Q ][yTb Q ][cIdx]が1に等しい場合、Qp Q は、サンプルp 0,0 を含む変換ブロックのMax(QpPrimeTsMin,Qp’ Cr )に等しく設定される。
- そうではなく、cIdxが1に等しく、transform_skip_flag[xTb P ][yTb P ][cIdx]が0に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Crに等しく設定される。
- cu_act_enabled_flag[xTb Q ][yTb Q ]が1に等しい場合、Qp Q はQp Q -3に等しく設定される。
- 変数QpCは以下のように導出される。
QpC=(QpQ-QpBdOffset+QpP-QpBdOffset+1)>>1 (1321)
...
【0126】
[5.15 実施形態#15]
以下の図17は、提案される制御ロジックを示している。
[7.3.2.6 ピクチャヘッダのRBSPのシンタックス]
【表9】
[7.3.7.1 一般的スライスヘッダのシンタックス]
【表10】
【0127】
[5.16 実施形態#16]
[7.3.2.4 ピクチャパラメータセットのRBSPのシンタックス]
【表11】
[7.3.2.6 ピクチャヘッダのRBSPのシンタックス]
【表12】
[7.3.7.1 一般的スライスヘッダのシンタックス]
【表13】
[7.4.3.4 ピクチャパラメータセットのRBSPの意味]
pps_cb_beta_offset_div2及びpps_cb_tc_offset_div2は、デフォルトのデブロッキングパラメータオフセットがPPSを参照するスライスのスライスヘッダに存在するデブロッキングパラメータオフセットによって上書きされない限り、PPSを参照するスライスのCb成分に適用されるβ及びtCのデフォルトのデブロッキングパラメータオフセット(2で除算する)を指定する。pps_beta_offset_div2及びpps_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpps_tc_offset_div2の値は0に等しいと推定される。
pps_cr_beta_offset_div2及びpps_cr_tc_offset_div2は、デフォルトのデブロッキングパラメータオフセットがPPSを参照するスライスのスライスヘッダに存在するデブロッキングパラメータオフセットによって上書きされない限り、PPSを参照するスライスのCr成分に適用されるβ及びtCのデフォルトのデブロッキングパラメータオフセット(2で除算する)を指定する。pps_beta_offset_div2及びpps_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpps_tc_offset_div2の値は0に等しいと推定される。
[7.4.3.4 ピクチャヘッダ]
pic_cb_beta_offset_div2及びpic_cb_tc_offset_div2は、PHに関連するスライスのCb成分に適用されるβ及びtCのデブロッキングパラメータオフセット(2で除算する)を指定する。pic_beta_offset_div2及びpic_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpc_tc_offset_div2の値は、それぞれpps_beta_offset_div2及びpps_tc_offset_div2に等しいと推定される。
pic_cr_beta_offset_div2及びpic_cr_tc_offset_div2は、PHに関連するスライスのCr成分に適用されるβ及びtCのデブロッキングパラメータオフセット(2で除算する)を指定する。pic_beta_offset_div2及びpic_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpc_tc_offset_div2の値は、それぞれpps_beta_offset_div2及びpps_tc_offset_div2に等しいと推定される。
[7.4.8.1 一般的スライスヘッダの意味]
slice_cb_beta_offset_div2及びslice_cb_tc_offset_div2は、現在のスライスのCb成分に適用されるβ及びtCのデロックパラメータオフセット(2で除算する)を指定する。slice_beta_offset_div2及びslice_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、slice_beta_offset_div2及びslice_tc_offset_div2の値は、それぞれpic_beta_offset_div2及びpic_tc_offset_div2と等しいと推定される。
slice_cr_beta_offset_div2及びslice_cr_tc_offset_div2は、現在のスライスのCb成分に適用されるβ及びtCのデロックパラメータオフセット(2で除算する)を指定する。slice_beta_offset_div2及びslice_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、slice_beta_offset_div2及びslice_tc_offset_div2の値は、それぞれpic_beta_offset_div2及びpic_tc_offset_div2と等しいと推定される。
[8.8.3.6.3 クロマブロックのエッジの決定プロセス]
...
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,63,Qp C +(slice_beta_offset_div2<<1)) (1322)]]
■ cIdxが1に等しい場合
Q=Clip3(0,63,Qp C +(slice_cb_beta_offset_div2<<1))
■ そうでない場合
Q=Clip3(0,63,Qp C +(slice_cr_beta_offset_div2<<1))
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (1323)
変数tC’の値は、以下のように導出されたクロマ量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_tc_offset_div2<<1)) (1324)]]
■ cIdxが1に等しい場合
Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_cb_tc_offset_div2<<1))
■ そうでない場合
Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_cr_tc_offset_div2<<1))
...
【0128】
[5.17 実施形態#17]
この実施形態は実施形態#15に基づく。
[7.3.2.4 ピクチャパラメータセットのRBSPのシンタックス]
【表14】
[7.3.7.1 一般的スライスヘッダのシンタックス]
【表15】
[7.4.3.4 ピクチャパラメータセットのRBSPの意味]
pps_cb_beta_offset_div2及びpps_cb_tc_offset_div2は、デフォルトのデブロッキングパラメータオフセットがPPSを参照するスライスのスライスヘッダに存在するデブロッキングパラメータオフセットによって上書きされない限り、PPSを参照するスライスのCb成分に適用されるβ及びtCのデフォルトのデブロッキングパラメータオフセット(2で除算する)を指定する。pps_beta_offset_div2及びpps_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpps_tc_offset_div2の値は0に等しいと推定される。
pps_cr_beta_offset_div2及びpps_cr_tc_offset_div2は、デフォルトのデブロッキングパラメータオフセットがPPSを参照するスライスのスライスヘッダに存在するデブロッキングパラメータオフセットによって上書きされない限り、PPSを参照するスライスのCr成分に適用されるβ及びtCのデフォルトのデブロッキングパラメータオフセット(2で除算する)を指定する。pps_beta_offset_div2及びpps_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpps_tc_offset_div2の値は0に等しいと推定される。
[7.4.8.1 一般的スライスヘッダの意味]
slice_cb_beta_offset_div2及びslice_cb_tc_offset_div2は、現在のスライスのCb成分に適用されるβ及びtCのデロックパラメータオフセット(2で除算する)を指定する。slice_beta_offset_div2及びslice_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、slice_beta_offset_div2及びslice_tc_offset_div2の値は、それぞれpps_beta_offset_div2及びpps_tc_offset_div2と等しいと推定される。
slice_cr_beta_offset_div2及びslice_cr_tc_offset_div2は、現在のスライスのCb成分に適用されるβ及びtCのデロックパラメータオフセット(2で除算する)を指定する。slice_beta_offset_div2及びslice_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、slice_beta_offset_div2及びslice_tc_offset_div2の値は、それぞれpps_beta_offset_div2及びpps_tc_offset_div2と等しいと推定される。
[8.8.3.6.3 クロマブロックのエッジの決定プロセス]
...
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,63,Qp C +(slice_beta_offset_div2<<1)) (1322)]]
■ cIdxが1に等しい場合
Q=Clip3(0,63,Qp C +(slice_cb_beta_offset_div2<<1))
■ そうでない場合
Q=Clip3(0,63,Qp C +(slice_cr_beta_offset_div2<<1))
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (1323)
1で示されるように決定される。
[[Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_tc_offset_div2<<1)) (1324)]]
■ cIdxが1に等しい場合
Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_cb_tc_offset_div2<<1))
■ そうでない場合
Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_cr_tc_offset_div2<<1))
...
【0129】
[5.18 実施形態#18]
この実施形態は実施形態#17に基づく。
[7.4.3.4 ピクチャパラメータセットのRBSPの意味]
pps_cb_beta_offset_div2及びpps_cb_tc_offset_div2は、現在のPPSのCb成分に適用されるβ及びtCのデフォルトのデブロッキングパラメータオフセット(2で除算する)を指定する。pps_beta_offset_div2及びpps_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpps_tc_offset_div2の値は0に等しいと推定される。
pps_cr_beta_offset_div2及びpps_cr_tc_offset_div2は、現在のPPSのCr成分に適用されるβ及びtCのデフォルトのデブロッキングパラメータオフセット(2で除算する)を指定する。pps_beta_offset_div2及びpps_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。存在しない場合、pps_beta_offset_div2及びpps_tc_offset_div2の値は0に等しいと推定される。
[7.4.8.1 一般的スライスヘッダの意味]
slice_cb_beta_offset_div2及びslice_cb_tc_offset_div2は、現在のスライスのCb成分に適用されるβ及びtCのデロックパラメータオフセット(2で除算する)を指定する。slice_beta_offset_div2及びslice_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。
slice_cr_beta_offset_div2及びslice_cr_tc_offset_div2は、現在のスライスのCb成分に適用されるβ及びtCのデロックパラメータオフセット(2で除算する)を指定する。slice_beta_offset_div2及びslice_tc_offset_div2の値は、双方とも-6以上6以下の範囲にあるものとする。
[8.8.3.6.1 ルマブロックのエッジの決定プロセス]
...
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,63,qP+(slice_beta_offset_div2<<1)) (1262)]]
Q=Clip3(0,63,qP+((pps_beta_offset_div2+slice_beta_offset_div2)<<1)) (1262)
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (1263)
変数tC’の値は、以下のように導出された量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,65,qP+2×(bS-1)+(slice_tc_offset_div2<<1)) (1264)]]
Q=Clip3(0,65,qP+2×(bS-1)+((pps_tc_offset_div2+slice_tc_offset_div2)<<1)) (1264)
...
[8.8.3.6.3 クロマブロックのエッジの決定プロセス]
...
変数β’の値は、以下のように導出された量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,63,Qp C +(slice_beta_offset_div2<<1)) (1322)]]
- cIdxが1に等しい場合
Q=Clip3(0,63,Qp C +((pps_cb_beta_offset_div2+slice_cb_beta_offset_div2)<<1))
- そうでない場合
Q=Clip3(0,63,Qp C +((pps_cr_beta_offset_div2+slice_cr_beta_offset_div2)<<1))
ここで、slice_beta_offset_div2は、サンプルq0,0を含むスライスについてのシンタックスエレメントslice_beta_offset_div2の値である。
変数βは、以下のように導出される。
β=β’×(1<<(BitDepthC-8)) (1323)
変数tC’の値は、以下のように導出されたクロマ量子化パラメータQに基づいて、表41で示されるように決定される。
[[Q=Clip3(0,65,Qp C +2×(bS-1)+(slice_tc_offset_div2<<1)) (1324)]]
- cIdxが1に等しい場合
Q=Clip3(0,65,Qp C +2×(bS-1)+((pps_cb_tc_offset_div2+slice_cb_tc_offset_div2)<<1))
- そうでない場合
Q=Clip3(0,65,Qp C +2×(bS-1)+((pps_cr_tc_offset_div2+slice_cr_tc_offset_div2)<<1))
...
【0130】
[5.19 実施形態#19]
この実施形態はACTに関する。
1に等しいintra_bdpcm_chroma_flagは、BDPCMが位置(x0,y0)における現在のクロマコーディングブロックにBDPCMが適用されること、すなわち、変換がスキップされ、イントラクロマ予測モードがintra_bdpcm_chroma_dir_flagで指定されることを指定する。0に等しいintra_bdpcm_chroma_flagは、BDPCMが位置(x0,y0)において現在のクロマコーディングブロックに適用されないことを指定する。
intra_bdpcm_chroma_flagが存在しない場合、[[0に等しいと推定される]]sps_bdpcm_chroma_enabled_flag&&cu_act_enabled_flag&&intra_bdpcm_luma_flagに等しいと推定される
変数BdpcmFlag[x][y][cIdx]は、x=x0..x0+cbWidth-1、y=y0..y0+cbHeight-1及びcIdx=1..2について、intra_bdpcm_chroma_flagに等しく設定される。
0に等しいintra_bdpcm_chroma_dir_flagは、BDPCM予測方向が水平であることを指定する。1に等しいintra_bdpcm_chroma_dir_flagは、BDPCM予測方向が垂直であることを指定する。
intra_bdpcm_chroma_dir_flagが存在しない場合、(cu_act_enabled_flag?intra_bdpcm_luma_dir_flag:0)に等しいと推定される。
変数BdpcmDir[x][y][cIdx]は、x=x0..x0+cbWidth-1、y=y0..y0+cbHeight-1及びcIdx=1..2について、intra_bdpcm_chroma_dir_flagに等しく設定される。
【0131】
[5.20 実施形態#20]
[8.8.3.6.1 ルマブロックエッジの決定プロセス]
このプロセスへの入力は以下の通りである。
- ピクチャサンプルアレイrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のコーディングブロックの左上サンプルに対する現在のブロックの左上サンプルを指定する位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 決定を含む変数dE、dEp及びdEq
- 修正フィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
...
[[変数Qp Q 及びQp P は、それぞれサンプルq 0,0 及びp 0,0 を含むコーディングブロックを含むコーディングユニットのQp Y 値に等しく設定される。]]
変数Qp Q は以下のように導出される。
Qp Q は、サンプルq 0,0 を含むコーディングブロックを含むコーディングユニットのQp Y 値に設定される。
サンプルq 0,0 を含むコーディングブロックのtransform_skip_flagが1に等しい場合、
Qp Q =Max(QpPrimeTsMin,Qp Q +QpBdOffset)-QpBdOffset
Qp p は、サンプルp 0,0 を含むコーディングブロックを含むコーディングユニットのQp Y 値に設定される。
サンプルp 0,0 を含むコーディングブロックのtransform_skip_flagが1に等しい場合、
Qp p =Max(QpPrimeTsMin,Qp p +QpBdOffset)-QpBdOffset
...
[8.8.3.6.3 クロマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 修正されたフィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
...
変数QpPは以下のように導出される。
- ルマ位置(xTbP,xTbP)は、ピクチャの左上ルマサンプルに対してサンプルp0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbP][yTbP]が2に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等し場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Crに等しく設定される。
変数Qp P は以下のように修正される。
Qp P =Max(transform_skip_flag[xTb P ][yTb P ][cIdx]?QpPrimeTsMin:0,Qp P )
変数QpQは以下のように導出される。
- ルマ位置(xTbQ,xTbQ)は、ピクチャの左上ルマサンプルに対してサンプルq0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbQ][yTbQ]が2に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Crに等しく設定される。
変数Qp Q は以下のように修正される。
Qp Q =Max(transform_skip_flag[xTb Q ][yTb Q ][cIdx]?QpPrimeTsMin:0,Qp Q )
- 変数QpCは以下のように導出される。
QpC=(QpQ-QpBdOffset+QpP-QpBdOffset+1)>>1 (1321)
【0132】
[5.21 実施形態#21]
この実施形態は、デブロッキングについてのQP導出に関する。
[8.8.3.6.1 ルマブロックエッジの決定プロセス]
このプロセスへの入力は以下の通りである。
- ピクチャサンプルアレイrecPicture
- 現在のピクチャの左上サンプルに対する現在のコーディングブロックの左上サンプルを指定する位置(xCb,yCb)
- 現在のコーディングブロックの左上サンプルに対する現在のブロックの左上サンプルを指定する位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 決定を含む変数dE、dEp及びdEq
- 修正フィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
...
変数QpQ及びQpPは、それぞれサンプルq0,0及びp0,0を含むコーディングブロックを含むコーディングユニットのQpY値に等しく設定される。
サンプルq 0,0 を含むコーディングユニットのtransform_skip_flagが1に等しい場合、Qp Q は以下のように修正される。
Qp Q =Max(QpPrimeTsMin,Qp Q +QpBdOffset)-QpBdOffset
サンプルp 0,0 を含むコーディングユニットのtransform_skip_flagが1に等しい場合、Qp P は以下のように修正される。
Qp p =Max(QpPrimeTsMin,Qp p +pBdOffset)-QpBdOffset
...
[8.8.3.6.3 クロマブロックエッジの決定プロセス]
このプロセスは、ChromaArrayTypeが0に等しくない場合にのみ呼び出される。
このプロセスへの入力は以下の通りである。
- クロマピクチャサンプルアレイrecPicture
- 現在のピクチャの左上クロマサンプルに対する現在のクロマコーディングブロックの左上サンプルを指定するクロマ位置(xCb,yCb)
- 現在のクロマコーディングブロックの左上サンプルに対する現在のクロマブロックの左上サンプルを指定するクロマ位置(xBl,yBl)
- 垂直エッジ(EDGE_VER)がフィルタリングされるか水平エッジ(EDGE_HOR)がフィルタリングされるかを指定する変数edgeType
- 色成分インデックスを指定する変数cIdx
- 境界フィルタリング強度を指定する変数bS
- 最大フィルタ長を指定する変数maxFilterLengthP
- 最大フィルタ長を指定する変数maxFilterLengthQ
このプロセスの出力は以下の通りである。
- 修正されたフィルタ長の変数maxFilterLengthP及びmaxFilterLengthQ
- 変数tC
...
変数QpPは以下のように導出される。
- ルマ位置(xTbP,xTbP)は、ピクチャの左上ルマサンプルに対してサンプルp0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbP][yTbP]が2に等しい場合、QpPは、サンプルp0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等し場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpPは、サンプルp0,0を含む変換ブロックのQp’Crに等しく設定される。
transform_skip_flag[xTb P ][yTb P ][cIdx]が1に等しい場合、変数Qp P は以下のように修正される。
Qp P =Max(QpPrimeTsMin,Qp P )
変数QpQは以下のように導出される。
- ルマ位置(xTbQ,xTbQ)は、ピクチャの左上ルマサンプルに対してサンプルq0,0を含む変換ブロックの左上ルマサンプル位置として設定される。
- TuCResMode[xTbQ][yTbQ]が2に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’CbCrに等しく設定される。
- そうではなく、cIdxが1に等しい場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Cbに等しく設定される。
- そうでない場合、QpQは、サンプルq0,0を含む変換ブロックのQp’Crに等しく設定される。
transform_skip_flag[xTb Q ][yTb Q ][cIdx]が1に等しい場合、変数Qp Q は以下のように修正される。
Qp Q =Max(QpPrimeTsMin,Qp Q )
- 変数QpCは以下のように導出される。
QpC=(QpQ-QpBdOffset+QpP-QpBdOffset+1)>>1 (1321)
【0133】
[5.22 実施形態#22]
この実施形態はCC-ALFに関する。新たに追加されたテキストは、JVET-Q0058によって提供されるドラフトの上に、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。この実施形態では、CC-ALF関連の情報の通知は、ChromaArraryTypeの条件チェックの下で行われる。
[7.3.2.6 ピクチャヘッダのRBSPのシンタックス]
【表16】
或いは、新たに追加された「ChromaArrayType!=0」は「chroma_format_idc!=0」に置き換えられてもよい。
【0134】
[5.22 実施形態#23]
この実施形態はCC-ALFに関する。新たに追加されたテキストは、JVET-Q0058によって提供されるドラフトの上に、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。
[7.3.2.3 シーケンスパラメータセットのRBSPのシンタックス]
【表17】
意味
0に等しいsps_ccalf_enabled_flagは、クロスコンポーネント適応ループフィルタが無効であることを指定する。1に等しいsps_ccalf_enabled_flagは、クロスコンポーネント適応ループフィルタが有効であることを指定する。
或いは、以下が適用されてもよい。
【表18】
或いは、以下が適用されてもよい。
【表19】
或いは、以下が適用されてもよい。
【表20】
意味
0に等しいsps_ccalf_enabled_flagは、クロスコンポーネント適応ループフィルタが無効であることを指定する。1に等しいsps_ccalf_enabled_flagは、クロスコンポーネント適応ループフィルタが有効であることを指定する。
[7.3.3.2 一般的制約情報のシンタックス]
【表21】
1に等しいno_ccalf_constraint_flagは、sps_ccalf_enabled_flagが0に等しいものであることを指定する。0に等しいno_ccalf_constraint_flagはこのような制約を課さない。
[7.3.2.6 ピクチャヘッダのRBSPのシンタックス]
【表22】
或いは、以下が適用される。
【表23】
或いは、以下が適用される。
【表24】
1に等しいpic_ccalf_enabled_present_flagは、pic_ccalf_enabled_flag、pic_cross_component_alf_cb_enabled_flag、pic_cross_component_alf_cb_aps_id、pic_cross_component_cb_filters_signalled_minus1、pic_cross_component_alf_cr_enabled_flag、pic_cross_component_alf_cr_aps_id及びpic_cross_component_cr_filters_signalled_minus1がPHに存在することを指定する。0に等しいpic_alf_enabled_present_flagは、pic_cross_component_alf_cb_enabled_flag、pic_cross_component_alf_cb_aps_id、pic_cross_component_cb_filters_signalled_minus1、pic_cross_component_alf_cr_enabled_flag、pic_cross_component_alf_cr_aps_id及びpic_cross_component_cr_filters_signalled_minus1がPHに存在しないことを指定する。pic_alf_enabled_present_flagが存在しない場合、0に等しいと推定される。
【0135】
[5.24 実施形態#24]
この実施形態はハイレベルのシンタックスに関し、JVET-P2001-vEに基づいている。新たに追加されたテキストは、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。削除されたテキストは、下線の付いた太字(又は[[]]と共に下線の付いたテキスト)で記されている。
[7.3.2.3 シーケンスパラメータセットのRBSPのシンタックス]
【表25】
【0136】
[5.1 実施形態#25]
この実施形態はハイレベルのシンタックスに関し、JVET-P2001-vEに基づいている。新たに追加されたテキストは、下線の付いたイタリック体の太字(又は下線の付いたテキスト)で示されている。削除されたテキストは、下線の付いた太字(又は[[]]と共に下線の付いたテキスト)で記されている。
1に等しいsps_bdpcm_chroma_enabled_flagは、intra_bdpcm_chroma_flagがイントラコーディングユニットについてのコーディングユニットのシンタックスに存在してもよいことを指定する。0に等しいsps_bdpcm_chroma_enabled_flagは、intra_bdpcm_chroma_flagがイントラコーディングユニットについてのコーディングユニットのシンタックスに存在しないことを指定する。存在しない場合、sps_bdpcm_chroma_enabled_flagの値は0に等しいと推定される。
ChromaArrayTypeが3に等しくない場合、sps_bdpcm_chroma_enabled_flagは0に等しいものとする。
1に等しいsps_palette_enabled_flagは、pred_mode_plt_flagがコーディングユニットのシンタックスに存在してもよいことを指定する。0に等しいsps_palette_enabled_flagは、pred_mode_plt_flagがコーディングユニットのシンタックスに存在しないことを指定する。sps_palette_enabled_flagが存在しない場合、0に等しいと推定される。
ChromaArrayTypeが3に等しくない場合、sps_palette_enabled_flagは0に等しいものとする。
1に等しいsps_act_enabled_flagは、適応色変換が使用されてもよく、cu_act_enabled_flagがコーディングユニットのシンタックスに存在してもよいことを指定する。0に等しいsps_act_enabled_flagは、適応色変換が使用されず、cu_act_enabled_flagがコーディングユニットのシンタックスに存在しないことを指定する。sps_act_enabled_flagが存在しない場合、0に等しいと推定される。
ChromaArrayTypeが3に等しくない場合、sps_act_enabled_flagは0に等しいものとする。
【0137】
[6. 開示される技術の実施例]
図12は、ビデオ処理装置1200のブロック図である。装置1200は、本明細書で記載されている方法の1つ以上を実装するために使用され得る。装置1200は、スマートフォン、タブレット、コンピュータ、モノのインターネット(Internet of Things,IoT)受信機等で具現されてもよい。装置1200は、1つ以上のプロセッサ1202、1つ以上のメモリ1204及びビデオ処理ハードウェア1206を含んでもよい。プロセッサ1202は、本明細書で記載される1つ以上の方法を実装するように構成されてもよい。メモリ1204は、本明細書で記載される方法及び技術を実装するために使用されるデータ及びコードを記憶するために使用されてもよい。ビデオ処理ハードウェア1206は、ハードウェア回路において、本明細書で記載されるいくつかの技術を実装するために使用されてもよい。いくつかの実施形態において、ビデオ処理ハードウェア1206は、部分的に又は完全にプロセッサ1202(例えば、グラフィクスプロセッサコアGPU又は他の信号処理回路)の一部でもよい。
【0138】
本明細書中、「ビデオ処理」という用語は、ビデオ符号化、ビデオ復号、ビデオ圧縮又はビデオ圧縮解除を指し得る。例えば、ビデオ圧縮アルゴリズムは、ビデオのピクセル表現から、対応するビットストリームへの変換中に、又はその逆も同様に、適用されてもよい。現在のビデオブロックのビットストリーム表現は、例えば、シンタックスによって定義されるような、ビットストリーム内で同一位置にあるか又は異なった場所に広がっているかのどちらかであるビットに対応してもよい。例えば、マクロブロックは、変換及びコーディングされた誤差残差値に関して、更には、ビットストリーム内のヘッダ及び他のフィールドにおけるビットを用いて、符号化されてよい。
【0139】
開示されている方法及び技術は、本明細書で開示される技術の使用を許可することによって、スマートフォン、ラップトップ、デスクトップ及び同様のデバイスのようなビデオ処理デバイス内に組み込まれたビデオエンコーダ及び/又はデコーダ実施形態のためになることが理解される。
【0140】
図13は、ビデオ処理の例示的な方法1300のフローチャートである。方法は、1310で、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、デブロッキングフィルタがビデオユニットの境界に対して使用され、それにより、クロマ量子化パラメータ(QP)テーブルがデブロッキングフィルタのパラメータを導出するために使用されるときに、クロマQPテーブルによる処理が個々のクロマQP値に対して実行されるようにする。
【0141】
図18は、本開示の技術を利用し得る、例示的なビデオコーディングシステム100を表すブロック図である。
【0142】
図15に示されるように、ビデオコーディングシステム100は、送信元デバイス110及び宛先デバイス120を含んでもよい。送信元デバイス110は、符号化されたビデオデータを生成し、ビデオ符号化デバイスと呼ばれてもよい。宛先デバイス120は、送信元デバイス110によって生成された符号化されたビデオデータを復号してもよく、ビデオ復号デバイスと呼ばれてもよい。
【0143】
送信元デバイス110は、ビデオソース112、ビデオエンコーダ114及び入力/出力(I/O)インターフェース116を含んでもよい。
【0144】
ビデオソース112は、ビデオ捕捉デバイス等のソース、ビデオコンテンツプロバイダからビデオデータを受け取るインターフェース、及び/又はビデオデータを生成するコンピュータグラフィクスシステム、又はこのようなソースの組み合わせを含んでもよい。ビデオデータは1つ以上のピクチャを有してもよい。ビデオエンコーダ114は、ビットストリームを生成するようビデオソース112からのビデオデータを符号化する。ビットストリームは、ビデオデータのコーディング表現を形成するビットのシーケンスを含んでもよい。ビットストリームは、コーディングされたピクチャ及び関連するデータを含んでもよい。コーディングされたピクチャは、ピクチャのコーディング表現である。関連するデータは、シーケンスパラメータセット、ピクチャパラメータセット及び他のシンタックス構造を含んでもよい。I/Oインターフェース116は、変調器/復調器(モデム)及び/又は送信機を含んでもよい。符号化されたビデオデータは、I/Oインターフェース116を介して宛先デバイス120に対してネットワーク130aを通じて直接に伝送されてよい。符号化されたビデオデータはまた、宛先デバイス120によるアクセスのために記憶媒体/サーバ130bに記憶されてもよい。
【0145】
宛先デバイス120は、I/Oインターフェース126、ビデオデコーダ124及び表示デバイス122を含んでもよい。
【0146】
I/Oインターフェース126は、受信機及び/又はモデムを含んでもよい。I/Oインターフェース126は、送信元デバイス110又は記憶媒体/サーバ130bから符号化されたビデオデータを取得してよい。ビデオデコーダ124は、符号化されたビデオデータを復号してよい。表示デバイス122は、復号されたビデオデータをユーザに表示してよい。表示デバイス122は、宛先デバイス120と一体化されてもよく、或いは、外付け表示デバイスとインターフェース接続するように構成されて宛先デバイス120の外にあってもよい。
【0147】
ビデオエンコーダ114及びビデオデコーダ124は、HEVC(High Efficiency Video Coding)標準、VVM(Versatile Video Coding)標準、及び他の現在の及び/又は更なる標準等のビデオ圧縮標準に従って動作してもよい。
【0148】
図19は、ビデオエンコーダ200の例を表すブロックであり、図18に表されているシステム100のビデオエンコーダ114でもよい。
【0149】
ビデオエンコーダ200は、本開示の技術のいずれか又は全てを実行するように構成されてよい。図19の例において、ビデオエンコーダ200は、複数の機能コンポーネントを含む。本開示で記載される技術は、ビデオエンコーダ200の様々なコンポーネントの間で共有されてもよい。いくつかの例において、プロセッサは、本開示で記載される技術のいずれか又は全てを実行するように構成されてもよい。
【0150】
ビデオエンコーダ200の機能コンポーネントは、パーティションユニット201と、モード選択ユニット203、動き推定ユニット204、動き補償ユニット205及びイントラ予測ユニット206を含み得る予測ユニット202と、残差生成ユニット207と、変換ユニット208と、量子化ユニット209と、逆量子化ユニット210と、逆変換ユニット211と、再構成ユニット212と、バッファ213と、エントロピー符号化ユニット214とを含んでもよい。
【0151】
他の例において、ビデオエンコーダ200は、より多い、より少ない、又は異なる機能コンポーネントを含んでもよい。例において、予測ユニット202は、イントラブロックコピー(Intra Block Copy,IBC)ユニットを含んでもよい。IBCユニットは、少なくとも1つの参照ピクチャが、現在のビデオブロックが位置しているピクチャであるIBCモードで、予測を実行してよい。
【0152】
さらに、動き推定ユニット204及び動き補償ユニット205等のいくつかのコンポーネントは、高度に集積されてもよいが、説明のために図19の例では別々に表されている。
【0153】
パーティションユニット201は、ピクチャを1つ以上のビデオブロックにパーティション化してよい。ビデオエンコーダ200及びビデオデコーダ300は、様々なビデオブロックサイズをサポートしてよい。
【0154】
モード選択ユニット203は、例えば、エラー結果に基づいて、イントラ又はインターのコーディングモードの1つを選択し、結果として得られたイントラ又はインターコーディングされたブロックを、残差ブロックデータを生成する残差生成ユニット207へ、及び参照ピクチャとしての使用のために、符号化されたブロックを再構成する再構成ユニット212へ提供してもよい。いくつかの例において、モード選択ユニット203は、予測がインター予測信号及びイントラ予測信号に基づくイントラ-インター複合予測(Combination of Intra and Inter Prediction,CIIP)モードを選択してもよい。モード選択ユニット203はまた、インター予測の場合、ブロックの動きベクトルのための分解能(例えば、サブピクセル又は整数ピクセル精度)を選択してもよい。
【0155】
現在のビデオブロックに対してインター予測を実行するために、動き推定ユニット204は、バッファ213からの1つ以上の参照フレームを現在のビデオブロックと比較することによって、現在のビデオブロックの動き情報を生成してもよい。動き補償ユニット205は、動き情報と、現在のビデオブロックに関連したピクチャ以外のバッファ213からのピクチャの復号されたサンプルとに基づいて、現在のビデオブロックの予測されたビデオブロックを決定してもよい。
【0156】
動き推定ユニット204及び動き補償ユニット205は、例えば、現在のビデオブロックがIスライス、Pスライス、又はBスライスであるか否かに応じて、現在のビデオブロックのために異なる動作を実行してもよい。
【0157】
いくつかの例において、動き推定ユニット204は、現在のビデオブロックのために一方向予測を実行してもよく、動き推定ユニット204は、現在のビデオブロックのための参照ビデオブロックをリスト0又はリスト1の参照ピクチャから探してもよい。動き推定ユニット204は、次いで、参照ビデオブロックを含むリスト0又はリスト1内の参照ピクチャを示す参照インデックスと、現在のビデオブロックと参照ビデオブロックとの間の空間変位を示す動きベクトルとを生成してよい。動き推定ユニット204は、現在のビデオブロックの動き情報として参照インデックス、予測方向インジケータ、及び動きベクトルを出力してもよい。動き補償ユニット205は、現在のビデオブロックの動き情報によって示されている参照ビデオブロックに基づいて、現在のブロックの予測されたビデオブロックを生成してもよい。
【0158】
他の例においては、動き推定ユニット204は、現在のビデオブロックのために双方向予測を実行してもよく、動き推定ユニット204は、現在のビデオブロックのための参照ビデオブロックをリスト0内の参照ピクチャから探してもよく、また、現在のビデオブロックのためのもう1つの参照ビデオブロックをリスト1内の参照ピクチャから探してもよい。動き推定ユニット204は、次いで、参照ビデオブロックを含むリスト0及びリスト1内の参照ピクチャを示す参照インデックスと、参照ビデオブロックと現在のビデオブロックとの間の空間変位を示す動きベクトルとを生成してもよい。動き推定ユニット204は、現在のビデオブロックの動き情報として現在のビデオブロックの参照インデックス及び動きベクトルを出力してもよい。動き補償ユニット205は、現在のビデオブロックの動き情報によって示されている参照ビデオブロックに基づいて、現在のビデオブロックの予測されたビデオブロックを生成してもよい。
【0159】
いくつかの例において、動き推定ユニット204は、デコーダの復号処理のために動き情報のフルセットを出力してもよい。
【0160】
いくつかの例において、動き推定ユニット204は、現在のビデオの動き情報のフルセットを出力しなくてもよい。むしろ、動き推定ユニット204は、他のビデオブロックの動き情報を参照して現在のビデオブロックの動き情報を通知してもよい。例えば、動き推定ユニット204は、現在のビデオブロックの動き情報が隣接ビデオブロックの動き情報と十分に類似していることを決定してもよい。
【0161】
一例において、動き推定ユニット204は、現在のビデオブロックに関連したシンタックス構造において、現在のビデオブロックが他のビデオブロックと同じ動き情報を有していることをビデオデコーダ300に示す値を示してもよい。
【0162】
他の例においては、動き推定ユニット204は、現在のビデオブロックに関連したシンタックス構造において、他のビデオブロック及び動きベクトル差分(Motion Vector Difference,MVD)を特定してもよい。動きベクトル差分は、現在のビデオブロックの動きベクトルと、特定されているビデオブロックの動きベクトルとの間の差を示す。ビデオデコーダ300は、現在のビデオブロックの動きベクトルを決定するために、特定されているビデオブロックの動きベクトル及び動きベクトル差分を使用してもよい。
【0163】
上述されたように、ビデオエンコーダ200は、動きベクトルを予測的に通知してもよい。ビデオエンコーダ200によって実装され得る予測通知技術の2つの例には、アドバンスド動きベクトル予測(Advanced Motion Vector Prediction,AMVP)及びマージモード通知がある。
【0164】
イントラ予測ユニット206は、現在のビデオブロックに対してイントラ予測を実行してもよい。イントラ予測ユニット206が現在のビデオブロックに対してイントラ予測を実行する場合、イントラ予測ユニット206は、同じピクチャ内の他のビデオブロックの復号されたサンプルに基づいて、現在のビデオブロックの予測データを生成し得る。現在のビデオブロックの予測データは、予測されたビデオブロック及び様々なシンタックスエレメントを含んでもよい。
【0165】
残差生成ユニット207は、現在のビデオブロックから現在のビデオブロックの予測されたビデオブロックを減じること(例えば、マイナス符号によって示される。)によって、現在のビデオブロックの残差データを生成してもよい。現在のビデオブロックの残差データは、現在のビデオブロック内のサンプルの異なるサンプルコンポーネントに対応する残差ビデオブロックを含んでもよい。
【0166】
他の例においては、例えば、スキップモードで、現在のビデオブロックの残差データは存在しない場合があり、残差生成ユニット207は、減算演算を実行しなくてもよい。
【0167】
変換処理ユニット208は、現在のビデオブロックに関連した残差ビデオブロックに1つ以上の変換を適用することによって、現在のビデオブロックの1つ以上の変換係数ビデオブロックを生成してもよい。
【0168】
変換処理ユニット208が現在のビデオブロックに関連した変換係数ビデオブロックを生成した後、量子化ユニット209は、現在のビデオブロックに関連した1つ以上の量子化パラメータ(QP)値に基づいて、現在のビデオブロックに関連した変換係数ビデオブロックを量子化してもよい。
【0169】
逆量子化ユニット210及び逆変換ユニット211は、変換係数ビデオブロックに各々逆量子化及び逆変換を適用して、変換係数ビデオブロックから残差ビデオブロックを再構成してもよい。再構成ユニット212は、再構成された残差ビデオブロックを、予測ユニット202によって生成された1つ以上の予測されたビデオブロックからの対応するサンプルに加えて、バッファ213での記憶のために、現在のブロックに関連した再構成されたビデオブロックを生成してもよい。
【0170】
再構成ユニット212がビデオブロックを再構成した後、ループフィルタリング動作が、ビデオブロックにおいてビデオブロッキングアーチファクトを低減するよう実行されてもよい。
【0171】
エントロピー符号化ユニット214は、ビデオエンコーダ200の他の機能コンポーネントからデータを受け取ってもよい。エントロピー符号化ユニット214がデータを受け取るとき、エントロピー符号化ユニット214は、エントロピー符号化されたデータを生成し、そのエントロピー符号化されたデータを含むビットストリームを生成するよう、1つ以上のエントロピー符号化動作を実行してもよい。
【0172】
開示されている技術のいくつかの実施形態は、ビデオ処理ツールまたはモードを有効にするための決定又は判断を行うことを含む。一例においては、ビデオ処理ツール又はモードが有効である場合、エンコーダは、ビデオのブロックの処理においてツール又はモードを使用又は実装するが、必ずしもツール又はモードの使用に基づいて結果のビットストリームを修正しなくてもよい。すなわち、ビデオのブロックからビデオのビットストリームへの変換は、決定又は判定に基づいて有効化されたときに、ビデオ処理ツール又はモードを使用する。他の例では、ビデオ処理ツール又はモードが有効である場合、デコーダは、ビットストリームがビデオ処理ツール又はモードに基づいて修正されたという認識で、ビットストリームを処理する。すなわち、ビデオのビットストリームからビデオのブロックへの変換は、決定または判定に基づいて有効化されたビデオ処理ツール又はモードを使用して実行される。
【0173】
図20は、ビデオデコーダ300の例を表すブロック図であり、図18で表されているシステム100のビデオデコーダ124でもよい。
【0174】
ビデオデコーダ300は、本開示の技術のいずれか又は全てを実行するように構成されてよい。図20の例で、ビデオデコーダ300は、複数の機能コンポーネントを含む。本開示で記載される技術は、ビデオデコーダ300の様々なコンポーネントの間で共有されてもよい。いくつかの例で、プロセッサは、本開示で記載される技術のいずれか又は全てを実行するように構成されてもよい。
【0175】
図20の例において、ビデオデコーダ300は、エントロピー復号ユニット301と、動き補償ユニット302と、イントラ予測ユニット303と、逆量子化ユニット304と、逆変換ユニット305と、再構成ユニット306と、バッファ307とを含む。ビデオデコーダ300は、いくつかの例において、ビデオエンコーダ200(図19)に関して記載された符号化パスとは概して逆の復号パスを実行してもよい。
【0176】
エントロピー復号ユニット301は、符号化されたビットストリームを取り出してもよい。符号化されたビットストリームは、エントロピーコーディングされたビデオデータ(例えば、ビデオデータの符号化されたブロック)を含んでもよい。エントロピー復号ユニット301は、エントロピーコーディングされたビデオデータを復号してよく、エントロピー復号されたビデオデータから、動き補償ユニット302は、動きベクトル、動きベクトル精度、参照ピクチャリストインデックス、及び他の動き情報を含む動き情報を決定し得る。動き補償ユニット302は、例えば、AMVP及びマージモードを実行することによって、そのような情報を決定してもよい。
【0177】
動き補償ユニット302は、場合により、補間フィルタに基づく補間を実行して、動き補償されたブロックを生成してもよい。サブピクセル精度で使用される補間フィルタのための識別子は、シンタックスエレメントに含まれてもよい。
【0178】
動き補償ユニット302は、参照ブロックのサブ整数ピクセルについて補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ200によって使用された補間フィルタを使用してもよい。動き補償ユニット302は、受け取られたシンタックス情報に従って、ビデオエンコーダ200によって使用された補間フィルタを決定し、その補間フィルタを使用して、予測ブロックを生成してもよい。
【0179】
動き補償ユニット302は、符号化されたビデオシーケンスのフレーム及び/又はスライスを符号化するために使用されるブロックのサイズと、符号化されたビデオシーケンスのピクチャの各マクロブロックがどのようにパーティション化されるかを記述するパーティション情報と、各インターコーディングされたブロックについての1つ以上の参照フレーム(及び参照フレームリスト)と、符号化されたビデオシーケンスを復号するための他の情報とを決定するために、シンタックス情報のいくつかを使用してもよい。
【0180】
イントラ予測ユニット303は、空間的に隣接するブロックから予測ブロックを形成するよう、例えば、ビットストリームで受け取られたイントラ予測モードを使用してもよい。逆量子化ユニット304は、ビットストリームで供給されてエントロピー復号ユニット301によって復号された量子化されたビデオブロック係数を逆量子化する、すなわち、量子化解除する。逆変換ユニット305は、逆変換を適用する。
【0181】
再構成ユニット306は、動き補償ユニット302又はイントラ予測ユニット303によって生成された対応する予測ブロックを残差ブロックに加算して、復号されたブロックを形成し得る。望まれる場合、デブロッキングフィルタも、ブロッキネスアーチファクトを取り除くために、復号されたブロックにフィルタをかけるよう適用されてもよい。復号されたビデオブロックは、次いで、バッファ307に格納され、バッファ307は、その後の動き補償/イントラ予測のために参照ブロックを提供し、更には、復号されたビデオを表示デバイスでの提示のために生成する。
【0182】
図21は、本明細書で開示されている様々な技術が実装され得る例示的なビデオ処理システム1900を示すブロック図である。様々な実施は、システム1900のコンポーネントの一部又は全部を含んでもよい。システム1900は、ビデオコンテンツを受ける入力部1902を含み得る。ビデオコンテンツは、生の又は圧縮されていないフォーマット、例えば、8又は10ビットのマルチコンポーネントピクセル値で受け取られてもよく、或いは、圧縮又は符号化されたフォーマットであってもよい。入力部1902は、ネットワークインターフェース、ペリフェラルバスインターフェース、又はストレージインターフェースに相当してもよい。ネットワークインターフェースの例には、Ethernet(登録商標)、受動光ネットワーク(PON)等のような有線インターフェース、及びWi-Fi又はセルラーネットワーク等の無線インターフェースが含まれる。
【0183】
システム1900は、本明細書で記載されている様々なコーディング又は符号化方法を実装し得るコーディングコンポーネント1904を含んでもよい。コーディングコンポーネント1904は、ビデオのビットストリーム表現を生成するよう、入力部1902からコーディングコンポーネント1904の出力部へのビデオの平均ビットレートを低減し得る。コーディング技術は、従って、ビデオ圧縮又はビデオトランスコーディング技術と時々呼ばれる。コーディングコンポーネント1904の出力は、コンポーネント1906によって表されるように、保存されても、或いは、接続された通信を介して伝送されてもよい。入力部1902で受け取られたビデオの保存又は通信されたビットストリーム(又はコーディングされた)表現は、ピクセル値又は表示インターフェース1910へ送られる表示可能なビデオを生成するためのコンポーネント1908によって使用されてもよい。ユーザが見ることができるビデオをビットストリーム表現から生成するプロセスは、ビデオ圧縮解除と時々呼ばれる。更に、特定のビデオ処理動作が「コーディング」動作又はツールと呼ばれる一方で、そのようなコーディングツール又は動作はエンコーダで使用され、コーディングの結果を入れ替える対応する復号ツール又は動作は、デコーダによって実行されることになることが理解される。
【0184】
ペリフェラルバスインターフェース又は表示インターフェースの例には、ユニバーサルシリアルバス(USB)又は高精細マルチメディアインターフェース(HDMI(登録商標))又はDisplayport(登録商標)等が含まれ得る。ストレージインターフェースの例には、SATA(Serial Advanced Technology Attachment)、PCI、IDEインターフェース、等がある。本明細書で説明されている技術は、携帯電話機、ラップトップ、スマートフォン、或いは、デジタルデータ処理及び/又はビデオ表示を実行する能力がある他のデバイス等の様々な電子デバイスで具現されてもよい。
【0185】
図22は、ビデオ処理の例示的な方法2200のフローチャートである。動作2202は、規則に従ってビデオのビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、規則は、クロスコンポーネント適応ループフィルタ(cross-component adaptive loop filter,CC-ALF)モード及び適応ループフィルタ(adaptive loop filter,ALF)モードがビデオユニットをコーディングするために有効であるか否かが、ビットストリームにおいて相互に独立した方式で示されることを指定する。
【0186】
方法2200のいくつかの実施形態では、ALFモードがビデオユニットに有効である場合、色空間変換は、ビデオユニットの残差値に対して実行される。方法2200のいくつかの実施形態では、CC-ALFツールがビデオユニットに有効である場合、ビデオ成分のビデオユニットのサンプル値は、ビデオの他のビデオ成分のサンプル値でフィルタリングされる。方法2200のいくつかの実施形態では、規則は、ビットストリームに選択的に含まれる第1のシンタックスエレメントが、CC-ALFモードがビデオユニットに有効であるか否かを示すことを指定する。方法2200のいくつかの実施形態では、第1のシンタックスエレメントは、ビデオユニットに関連するシーケンスレベル又はビデオレベル又はピクチャレベルで示され、第1のシンタックスエレメントは、ALFモードがビデオユニットに有効であるか否かを示すビットストリームに含まれる他のシンタックスエレメントとは異なる。方法2200のいくつかの実施形態では、第1のシンタックスエレメントは、ビデオユニットに有効になっているALFモードに基づいてビットストリームに含まれる。
【0187】
方法2200のいくつかの実施形態では、第1のシンタックスエレメントは、コーディング条件が満たされた場合にビットストリームに含まれ、コーディング条件は、ビデオのカラーフォーマットのタイプ、又はセパレートプレーンコーディングが変換のために有効であるか否か、又はビデオのクロマ成分のサンプリング構造を含む。方法2200のいくつかの実施形態では、規則は、ビットストリームが、CC-ALFモードに関連する1つ以上のシンタックスエレメントがピクチャヘッダに存在するか否かを示す第2のシンタックスエレメントを含むことを指定し、第2のシンタックスエレメントは、ピクチャヘッダ又はピクチャパラメータセット(picture parameter set,PPS)又はスライスヘッダに含まれる。方法2200のいくつかの実施形態では、規則は、ビットストリームが、ビデオユニットに有効になっているALFモードに基づいて第2のシンタックスエレメントを含むことを指定する。
【0188】
方法2200のいくつかの実施形態では、ALFは、隣接サンプルを入力とするWeinerフィルタである。方法2200のいくつかの実施形態では、規則は、クロマアレイタイムの値がゼロに等しくないか或いはビデオのカラーフォーマットが4:0:0ではない場合、ビットストリームが、CC-ALFモードに関連するピクチャヘッダ又はピクチャパラメータセット(picture parameter set,PPS)にシンタックスエレメントを含み、ビットストリームが、CC-ALFモードがビデオユニットに有効であることを示す第1のシンタックスエレメントを含むことを指定し、第1のシンタックスエレメントは、ビデオユニットのものよりも高いビデオのビデオレベルについて示される。方法2200のいくつかの実施形態では、規則は、クロマアレイタイムの値がゼロに等しくないか或いはビデオのカラーフォーマットが4:0:0ではない場合、ビットストリームが、CC-ALFモードに関連するピクチャヘッダ又はピクチャパラメータセット(picture parameter set,PPS)又はスライスヘッダにシンタックスエレメントを含むか、或いは、ビットストリームが、CC-ALFモードがビデオユニットに有効であることを示す第1のシンタックスエレメントを含むことを指定し、第1のシンタックスエレメントは、ビデオユニットのものよりも高いビデオのビデオレベルについて示される。方法2200のいくつかの実施形態では、ビデオレベルはシーケンスパラメータセット(sequence parameter set,SPS)を含む。
【0189】
図23は、ビデオ処理の例示的な方法2300のフローチャートである。動作2302は、ビデオのクロマ成分のビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、ビットストリームはフォーマット規則に準拠し、フォーマット規則は、クロマアレイタイプの値がゼロに等しくない場合又はビデオのカラーフォーマットが4:0:0でない場合にのみ、ビットストリームが、クロマ成分についてのクロスコンポーネントフィルタがピクチャヘッダに関連する全てのスライスに有効であるか否かを示すシンタックスエレメントを含むことを指定する。
【0190】
方法2300のいくつかの実施形態では、クロマ成分は、Cbクロマ成分を含む。方法2300のいくつかの実施形態では、クロマ成分は、Crクロマ成分を含む。方法2200~2300のいくつかの実施形態では、ビデオユニットは、コーディングユニット(coding unit,CU)、予測ユニット(prediction unit,PU)又は変換ユニット(transform unit,TU)を含む。方法2200~2300のいくつかの実施形態では、変換を実行するステップは、ビデオをビットストリームに符号化するステップを含む。方法2200~2300のいくつかの実施形態では、変換を実行するステップは、ビットストリームからビデオを復号するステップを含む。いくつかの実施形態では、ビデオ復号装置は、方法2200~2300に関連する実施形態のための技術を実装するように構成されたプロセッサを含む。いくつかの実施形態では、ビデオ符号化装置は、方法2200~2300に関連する実施形態のための技術を実装するように構成されたプロセッサを含む。いくつかの実施形態では、コンピュータ命令を記憶したコンピュータプログラム製品において、命令は、プロセッサによって実行されると、プロセッサに、方法2200~2300に関連する実施形態のための技術を実施させる。いくつかの実施形態では、コンピュータ可読媒体は、方法2200~2300に関連する実施形態のための技術に従って生成されたビットストリームを記憶する。いくつかの実施形態では、ビットストリームを記憶するためのビデオ処理装置において、ビデオ処理装置は、方法2200~2300に関連する実施形態のための技術を実装するように構成される。
【0191】
図24は、ビデオ処理の例示的な方法2400のフローチャートである。動作2402は、規則に従ってビデオのビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、規則は、ビットストリームがクロマブロックベースのデルタパルスコード変調(block-based delta pulse code modulation,BDPCM)モード、パレットモード又は適応色変換(adaptive color transform,ACT)モードの制御フラグのうち少なくとも1つを含むか否かがビデオのクロマアレイタイプの値に基づくことを指定する。
【0192】
いくつかの実施形態は、以下の項目ベースのフォーマットを使用して記述されてもよい。最初の項目のセットは、以前のセクションで議論した技術の例示的な実施形態を示す。
【0193】
1.ビデオ処理の方法であって、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマ量子化パラメータ(QP)テーブルがデブロッキングフィルタのパラメータを導出するために使用される場合、クロマQPテーブルによる処理が個々のクロマQP値に対して実行されるように、デブロッキングフィルタがビデオユニットの境界で使用される、方法。
【0194】
2.クロマQPオフセットは、クロマQPテーブルによる処理に続いて、個々のクロマQP値に追加される、項目1に記載の方法。
【0195】
3.クロマQPオフセットは、クロマQPテーブルによって出力される値に追加される、項目1~2のいずれかに記載の方法。
【0196】
4.クロマQPオフセットは、クロマQPテーブルへの入力として考慮されない、項目1~2のいずれかに記載の方法。
【0197】
5.クロマQPオフセットは、ピクチャレベル又はビデオユニットレベルにある、項目2に記載の方法。
【0198】
6.ビデオ処理の方法であって、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、クロマQPオフセットは、ピクチャ/スライス/タイル/ブリック/サブピクチャレベルにある、方法。
【0199】
7.デブロッキングフィルタで使用されるクロマQPオフセットは、ビデオユニットの境界で適用されるコーディング方法に関連する、項目6に記載の方法。
【0200】
8.コーディング方法は、クロミナンス残差の共同コーディング(JCCR)方法である、項目7に記載の方法。
【0201】
9.ビデオ処理の方法であって、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、同じルマコーディングユニットに関する情報は、デブロッキングフィルタでクロマQPオフセットを導出するために使用される、方法。
【0202】
10.同じルマコーディングユニットは、ビデオユニットの中心位置の対応するルマサンプルをカバーし、ビデオユニットがクロマコーディングユニットである、項目9に記載の方法。
【0203】
11.スケーリングプロセスがビデオユニットに適用され、デブロッキングフィルタの1つ以上のパラメータは、スケーリングプロセスの量子化/逆量子化パラメータに少なくとも部分的に依存する、項目9に記載の方法。
【0204】
12.スケーリングプロセスの量子化/逆量子化パラメータは、クロマQPオフセットを含む、項目11に記載の方法。
【0205】
13.ビデオユニット内のルマサンプルはPサイド又はQサイドにある、項目9~12のいずれかに記載の方法。
【0206】
14.同じルマコーディングユニットに関する情報は、同じルマコーディングユニットに関してコーディングユニットの相対位置に依存する、項目13に記載の方法。
【0207】
15.ビデオ処理の方法であって、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、クロマQPオフセットの使用を有効にする指示は、コーディング表現で通知される、方法。
【0208】
16.指示は、1つ以上のフラグを検出することに応じて条件付きで通知される、項目15に記載の方法。
【0209】
17.1つ以上のフラグは、JCCR有効フラグ又はクロマQPオフセット有効フラグに関連する、項目16に記載の方法。
【0210】
18.指示は、導出に基づいて通知される、項目15に記載の方法。
【0211】
19.ビデオ処理の方法であって、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、デブロッキングフィルタで使用されるクロマQPオフセットは、JCCRコーディング方法がビデオユニットの境界で適用されるか、JCCRコーディング方法とは異なる方法がビデオユニットの境界で適用されるかにかかわらず、同じである、方法。
【0212】
20.ビデオ処理の方法であって、ビデオユニットとビデオユニットのコーディング表現との間の変換を実行するステップを含み、変換中に、クロマQPオフセットがデブロッキングフィルタで使用されるように、デブロッキングフィルタがビデオユニットの境界で使用され、デブロッキングフィルタの境界強度(BS)は、Qサイド境界におけるビデオユニットに関連する参照ピクチャ及び/又は動きベクトル(MV)の数とPサイド境界におけるビデオユニットに関連する参照ピクチャ及び/又は動きベクトルの数を比較することなく計算される、方法。
【0213】
21.デブロッキングフィルタは、1つ以上の条件下で無効になる、項目20に記載の方法。
【0214】
22.1つ以上の条件は、動きベクトル(MV)の大きさ又は閾値に関連する、項目21に記載の方法。
【0215】
23.閾値は、i.ビデオユニットのコンテンツ、ii.DPS/SPS/VPS/PPS/APS/ピクチャヘッダ/スライスヘッダ/タイルグループヘッダ/最大コーディングユニット(LCU)/コーディングユニット(CU)/LCU行/LCUのグループ/TU/PUブロック/ビデオコーディングユニットで通知されるメッセージ、iii.CU/PU/TU/ブロック/ビデオコーディングユニットの位置、iv.境界に沿ったサンプルを有するブロックのコーディングモード、v.境界に沿ったサンプルを有するビデオユニットに適用される変換行列、vi.ビデオユニットの形状又は寸法、vii.カラーフォーマットの指示、viii.コーディングツリー構造、ix.スライス/タイルグループタイプ及び/又はピクチャタイプ、x.色成分、xi.時間レイヤID、又はxii.標準のプロファイル/レベル/層のうち少なくとも1つに関連する、項目22に記載の方法。
【0216】
24.異なるQPオフセットが、TSコーディングされたビデオユニット及びTSコーディングされていないビデオユニットに使用される、項目20に記載の方法。
【0217】
25.ルマフィルタリングステップで使用されるQPは、ルマブロックのスケーリングプロセスで使用されるQPに関連する、項目20に記載の方法。
【0218】
以下の項目は、いくつかの実施形態によって実施される。更なる特徴は、以前のセクションのリスト、例えば、項目31~32に示されている。
【0219】
26.ビデオ処理の方法であって、ビデオの成分のビデオユニットとビデオのコーディング表現との間の変換のために、サイズがKよりも大きくなければならないことを指定する制約規則に基づいて、ビデオユニットについての量子化グループのサイズを決定するステップであり、Kは正の数である、ステップと、決定に基づいて変換を実行するステップとを含む、方法。
【0220】
27.成分がクロマ成分であり、K=4である、項目26に記載の方法。
【0221】
28.成分がルマ成分であり、K=8である、項目26に記載の方法。
【0222】
29.変換は、ビデオをコーディング表現に符号化することを含む、項目1~28のいずれかに記載の方法。
【0223】
30.変換は、コーディング表現をパース及び復号して、ビデオを生成することを含む、項目1~28のいずれかに記載の方法。
【0224】
31.項目1~30のいずれかに記載の方法を実施するように構成されたプロセッサを含むビデオ復号装置。
【0225】
32.項目1~30のいずれかに記載の方法を実施するように構成されたプロセッサを含むビデオ符号化装置。
【0226】
第2の項目のセットは、以前のセクション(項目42~43)で議論した技術の例示的な実施形態を示す。
【0227】
1.ビデオ処理の方法であって、規則に従ってビデオのビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、規則は、クロスコンポーネント適応ループフィルタ(CC-ALF)モード及び/又は適応ループフィルタ(ALF)モードがビデオユニットをコーディングするために有効であるか否かが、ビットストリームにおいて相互に独立した方式で示されることを指定する、方法。
【0228】
2.CC-ALFツールがビデオユニットに有効である場合、ビデオ成分のビデオユニットのサンプル値は、ビデオの他のビデオ成分のサンプル値でフィルタリングされる、項目1に記載の方法。
【0229】
3.規則は、ビットストリームに選択的に含まれる第1のシンタックスエレメントが、CC-ALFモードがビデオユニットに有効であるか否かを示すことを指定する、項目1~2のいずれかに記載の方法。
【0230】
4.第1のシンタックスエレメントは、ビデオユニットに関連するシーケンスレベル又はビデオレベル又はピクチャレベルで示され、第1のシンタックスエレメントは、ALFモードがビデオユニットに有効であるか否かを示すビットストリームに含まれる他のシンタックスエレメントとは異なる、項目3に記載の方法。
【0231】
5.第1のシンタックスエレメントは、ビデオユニットに有効になっているALFモードに基づいてビットストリームに含まれる、項目3に記載の方法。
【0232】
6.第1のシンタックスエレメントは、コーディング条件が満たされた場合にビットストリームに含まれ、コーディング条件は、ビデオのカラーフォーマットのタイプ、又はセパレートプレーンコーディングが変換のために有効であるか否か、又はビデオのクロマ成分のサンプリング構造を含む、項目3に記載の方法。
【0233】
7.規則は、ビットストリームが、CC-ALFモードに関連する1つ以上のシンタックスエレメントがピクチャヘッダに存在するか否かを示す第2のシンタックスエレメントを含むことを指定し、第2のシンタックスエレメントは、ピクチャヘッダ又はピクチャパラメータセット(PPS)又はスライスヘッダに含まれる、項目1~2のいずれかに記載の方法。
【0234】
8.1つ以上のシンタックスエレメントは、Cb色成分についてのCC-ALFモードがピクチャに有効であることを示す第3のシンタックスエレメント、ビデオユニットを含むピクチャ内のスライスのCb色成分によって参照されるALF APSの適合パラメータセット(APS)IDを示す第4のシンタックスエレメント、クロスコンポーネントCbフィルタの数を示す第5のシンタックスエレメント、Cr色成分についてのCC-ALFモードがピクチャに有効であることを示す第6のシンタックスエレメント、ピクチャ内のスライスのCr色成分によって参照されるALF APSのAPS IDを示す第7のシンタックスエレメント、又はクロスコンポーネントCrフィルタの数を示す第8のシンタックスエレメントのうち少なくとも1つを含む、項目7に記載の方法。
【0235】
9.規則は、ビットストリームが、ビデオユニットに有効になっているALFモードに基づいて第2のシンタックスエレメントを含むことを指定する、項目7に記載の方法。
【0236】
10.ALFは、隣接サンプルを入力とするWeinerフィルタである、項目1~9のいずれかに記載の方法。
【0237】
11.規則は、ビットストリームが、クロマフォーマットサンプリング構造がモノクロでないことに基づく、CC-ALFに関連するピクチャヘッダ又はピクチャパラメータセット(PPS)内のシンタックスエレメント、及び/又はCC-ALFモードがビデオユニットのものよりも高いビデオの高レベルにおいて有効であることを示す第9のシンタックスエレメントを含むことを指定する、項目1~3のいずれかに記載の方法。
【0238】
12.規則は、クロマアレイタイプの値がゼロに等しくないか或いはビデオのカラーフォーマットが4:0:0ではない場合、ビットストリームが、CC-ALFモードに関連するピクチャヘッダ又はピクチャパラメータセット(PPS)にシンタックスエレメントを含み、ビットストリームが、CC-ALFモードがビデオユニットに有効であることを示す第1のシンタックスエレメントを含むことを指定し、第1のシンタックスエレメントは、ビデオユニットのものよりも高いビデオの高レベルについて示されることを指定する、項目1~3のいずれかに記載の方法。
【0239】
13.規則は、クロマアレイタイプの値がゼロに等しくないか或いはビデオのカラーフォーマットが4:0:0ではない場合、ビットストリームが、CC-ALFモードに関連するピクチャヘッダ又はピクチャパラメータセット(PPS)又はスライスヘッダにシンタックスエレメントを含むか、或いは、ビットストリームが、CC-ALFモードがビデオユニットに有効であることを示す第1のシンタックスエレメントを含むことを指定し、第1のシンタックスエレメントは、ビデオユニットのものよりも高いビデオのレベルについて示される、項目1~3のいずれかに記載の方法。
【0240】
14.ビデオレベルはシーケンスパラメータセット(SPS)を含む、項目11~12のいずれかに記載の方法。
【0241】
15.ビデオ処理の方法であって、ビデオのクロマ成分のビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、ビットストリームはフォーマット規則に準拠し、フォーマット規則は、クロマアレイタイプの値がゼロに等しくない場合又はビデオのカラーフォーマットが4:0:0でない場合にのみ、ビットストリームが、クロマ成分についてのクロスコンポーネントフィルタがピクチャヘッダに関連する全てのスライスに有効であるか否かを示すシンタックスエレメントを含むことを指定する、方法。
【0242】
16.クロマ成分は、Cbクロマ成分を含む、項目15に記載の方法。
【0243】
17.クロマ成分は、Crクロマ成分を含む、項目15に記載の方法。
【0244】
18.ビデオユニットは、コーディングユニット(CU)、予測ユニット(PU)又は変換ユニット(TU)を含む、項目1~17のいずれかに記載の方法。
【0245】
19.変換を実行するステップは、ビデオをビットストリームに符号化するステップを含む、項目1~18のいずれかに記載の方法。
【0246】
20.変換を実行するステップは、ビデオをビットストリームに符号化するステップを含み、当該方法は、ビットストリームを非一時的なコンピュータ可読記録媒体に記憶するステップを更に含む、項目1~18のいずれかに記載の方法。
【0247】
21.変換を実行するステップは、ビットストリームからビデオを復号するステップを含む、項目1~18のいずれかに記載の方法。
【0248】
22.ビデオのビットストリームを記憶するための方法であって、規則に従ってビデオのビデオユニットからビデオのビットストリームを生成するステップと、ビットストリームを非一時的なコンピュータ可読記録媒体に記憶するステップとを含み、規則は、クロスコンポーネント適応ループフィルタ(CC-ALF)モード及び適応ループフィルタ(ALF)モードがビデオユニットをコーディングするために有効であるか否かが、ビットストリームにおいて相互に独立した方式で示されることを指定する、方法。
【0249】
23.項目1~22のいずれかに記載の方法を実施するように構成されたプロセッサを含むビデオ復号装置。
【0250】
24.項目1~22のいずれかに記載の方法を実施するように構成されたプロセッサを含むビデオ符号化装置。
【0251】
25.コンピュータ命令を記憶したコンピュータプログラム製品であって、命令は、プロセッサによって実行されると、プロセッサに、項目1~22のいずれかに記載の方法を実施させる、コンピュータプログラム製品。
【0252】
26.項目1~22のいずれかに記載の方法に従って生成されたビットストリームを記憶した非一時的なコンピュータ可読記憶媒体。
【0253】
27.プロセッサに、項目1~22のいずれかに記載の方法を実施させる命令を記憶した非一時的なコンピュータ可読記憶媒体。
【0254】
第3の項目のセットは、以前のセクション(項目44)で議論した技術の例示的な実施形態を示す。
【0255】
1.ビデオ処理の方法であって、規則に従ってビデオのビデオユニットとビデオのビットストリームとの間の変換を実行するステップを含み、規則は、ビットストリームがクロマブロックベースのデルタパルスコード変調(BDPCM)モード、パレットモード又は適応色変換(ACT)モードの制御フラグのうち少なくとも1つを含むか否かがビデオのクロマアレイタイプの値に基づくことを指定する。
【0256】
2.クロマアレイタイプの値は、クロマ成分のサンプリングを記述する、項目1に記載の方法。
【0257】
3.クロマアレイタイプを示す第1のシンタックスエレメントは、ビットストリームのシーケンスパラメータセットに含まれる、項目1に記載の方法。
【0258】
4.クロマアレイタイプの値は、クロマ成分がダウンサンプリングされない場合、3に設定される、項目2に記載の方法。
【0259】
5.クロマBDPCMモード、パレットモード又はACTモードの制御フラグのうち少なくとも1つは、ビットストリームのシーケンスパラメータセットに含まれる、項目1に記載の方法。
【0260】
6.規則は、i)クロマBDPCMモードの制御フラグが真であり、ii)クロマアレイタイプが3に等しい場合にのみ、ビットストリームがクロマBDPCMモードの制御フラグを含むことを指定する、項目1に記載の方法。
【0261】
7.規則は、クロマアレイタイプが3に等しい場合にのみ、ビットストリームがパレットモードの制御フラグを含むことを指定する、項目1に記載の方法。
【0262】
8.規則は、クロマアレイタイプが3に等しい場合にのみ、ビットストリームがACTモードの制御フラグを含むことを指定する、項目1に記載の方法。
【0263】
9.規則は、クロマアレイタイプが3に等しくない場合、ビットストリームがクロマBDPCMモードの制御フラグを省略することを指定する、項目1に記載の方法。
【0264】
10.規則は、クロマアレイタイプが3に等しくない場合、ビットストリームがパレットモードの制御フラグを省略することを指定する、項目1に記載の方法。
【0265】
11.規則は、クロマアレイタイプが3に等しくない場合、ACTモードの制御フラグがビットストリームから除外されることを指定する、項目1に記載の方法。
【0266】
12.規則は、クロマアレイタイプが3に等しくない場合、クロマBDPCMモードの制御フラグが0に等しく設定されることを適合ビットストリームが満たすことを更に指定する、項目1に記載の方法。
【0267】
13.規則は、クロマアレイタイプが3に等しくない場合、パレットモードの制御フラグが0に等しく設定されることを適合ビットストリームが満たすことを更に指定する、項目1に記載の方法。
【0268】
14.規則は、クロマアレイタイプが3に等しくない場合、ACTモードの制御フラグが0に等しく設定されることを更に指定する、項目1に記載の方法。
【0269】
15.変換は、ビデオをコーディング表現に符号化することを含む、項目1~14のいずれかに記載の方法。
【0270】
16.変換は、ビットストリームからビデオを復号することを含む、項目1~14のいずれかに記載の方法。
【0271】
17.ビデオのビットストリームを記憶する方法であって、項目1~16のいずれかに記載の方法を含み、ビットストリームを非一時的なコンピュータ可読記録媒体に記憶するステップを更に含む、方法。
【0272】
18.項目1~16のいずれか1つ以上に記載の方法を実施するように構成されたプロセッサを含むビデオ処理装置。
【0273】
19.実行されると、プロセッサに、項目1~16のいずれか1つ以上に記載の方法を実施させるプログラムコードを記憶したコンピュータ可読媒体。
【0274】
20.上記の方法のいずれかに従って生成されたコーディング表現又はビットストリームを記憶したコンピュータ可読媒体。
【0275】
21.ビットストリーム表現を記憶するためのビデオ処理装置であって、ビデオ処理装置は、項目1~20のいずれか1つ以上に記載の方法を実施するように構成される、ビデオ処理装置。
【0276】
いくつかの実施形態では、解決策は、方法、装置、上述の方法に従って生成されたビットストリーム、又はビデオ処理のためのシステムが実施されることを含む。
【0277】
本明細書中で記載されている開示された及び他の解決法、例、実施形態、モジュール及び機能動作は、デジタル電子回路で、或いは、本明細書で開示されている構造及びそれらの構造的な同等物を含むコンピュータソフトウェア、ファームウェア、又はハードウェアで、或いは、それらのうちの1つ以上の組み合わせで実装可能である。開示された及び他の実施形態は、1つ以上のコンピュータプログラム製品、つまり、データ処理装置によって実行されるか又はその動作を制御するためにコンピュータ可読媒体で符号化されたコンピュータプログラム命令の1つ以上のモジュール、として実装可能である。コンピュータ可読媒体は、マシン可読記憶デバイス、マシン可読記憶基板、メモリデバイス、マシン可読な伝播信号に影響を与える物質の組成、又はそれらの1つ以上の組み合わせであることができる。「データ処理装置」との用語は、例として、プログラム可能なプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを含む、データを処理するための全ての装置、デバイス、及びマシンを包含する。装置は、ハードウェアに加えて、問題となっているコンピュータプログラムのための実行環境を作り出すコード、例えば、プロセッサハードウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、又はそれらの1つ以上の組み合わせを構成するコードを含むことができる。伝播信号は、人工的に生成された信号、例えば、マシンにより生成された電気的、光学的、又は電磁気信号であり、適切な受信装置へ伝送のために情報を符号化するよう生成される。
【0278】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られる。)は、コンパイル済み又は解釈済みの言語を含む如何なる形式のプログラミング言語でも記述可能であり、それは、スタンドアロンプログラムとして又はコンピューティング環境における使用に適したモジュール、コンポーネント、サブルーチン、若しくは他のユニットとして含め、如何なる形式でもデプロイ可能である。コンピュータプログラムは、必ずしもファイルシステムにおけるファイルに対応するわけではない。プログラムは、問題となっているプログラムに専用の単一のファイルで、又は複数の協調したファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの部分を保存するファイル)で、他のプログラム又はデータ(例えば、マークアップ言語文書で保存された1つ以上のスクリプト)を保持するファイルの部分において保存可能である。コンピュータプログラムは、1つのコンピュータで、或いは、1つの場所に位置しているか、又は複数の場所にわたって分布しており、通信ネットワークによって相互接続されている複数のコンピュータで実行されるようデプロイ可能である。
【0279】
本明細書で説明されているプロセス及びロジックフローは、入力データに作用して出力を生成することによって機能を実行するよう1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行可能である。プロセス及びロジックフローはまた、専用のロジック回路、例えば、フィールドプログラマブルゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)によっても実行可能であり、装置は、そのようなものとして実装可能である。
【0280】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用のマイクロプロセッサ及び専用のマイクロプロセッサの双方、並びにあらゆる種類のデジタルコンピュータのいずれか1つ以上のプロセッサを含む。一般に、プロセッサは、リードオンリーメモリ若しくはランダムアクセスメモリ又はその双方から命令及びデータを読み出すことになる。コンピュータの必須の要素は、命令を実行するプロセッサと、命令及びデータを保存する1つ以上のメモリデバイスとである。一般に、コンピュータはまた、データを保存する1つ以上の大容量記憶デバイス、例えば、磁気、光学磁気ディスク、又は光ディスクを含むか、或いは、そのような1つ以上の大容量記憶デバイスからのデータの受信若しくはそれへのデータの転送又はその双方のために動作可能に結合されることになる。しかし、コンピュータは、そのようなデバイスを有する必要はない。コンピュータプログラム命令及びデータを保存するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス;磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスク;光学磁気ディスク;並びにCD ROM及びDVD-ROMディスクを含む全ての形式の不揮発性メモリ、媒体及びメモリデバイスを含む。プロセッサ及びメモリは、専用のロジック回路によって強化されるか、或いは、それに組み込まれ得る。
【0281】
本明細書は、多数の詳細を含むが、それらは、あらゆる対象の又は請求される可能性があるものの範囲に対する限定としてではなく、むしろ、特定の技術の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別々の実施形態に関連して本明細書で説明されている特定の特徴は、単一の実施形態と組み合わせても実装可能である。逆に、単一の実施形態に関連して説明されている様々な特徴はまた、複数の実施形態で別々に、又は何らかの適切なサブコンビネーションで実装可能である。更に、特徴は、特定の組み合わせで動作するものとして先に説明され、更には、そのようなものとして最初に請求されることがあるが、請求されている組み合わせからの1つ以上の特徴は、いくつかの場合、その組み合わせから削除可能であり、請求されている組み合わせは、サブコンビネーション又はサブコンビネーションの変形に向けられてもよい。
【0282】
同様に、動作は、特定の順序で図面において表されているが、これは、所望の結果を達成するために、そのような動作が示されているその特定の順序で又は順次的な順序で実行されること、或いは、表されている全ての動作が実行されることを求めている、と理解されるべきではない。更に、本明細書で説明されている実施形態における様々なシステムコンポーネントの分離は、全ての実施形態でそのような分離を求めている、と理解されるべきではない。
【0283】
ほんのわずかの実施及び例が説明されており、他の実施、強化及び変形は、本特許文献で記載及び例示されているものに基づいて行われ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10
図11
図12
図13
図14A
図14B
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24