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

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

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

特許7438196ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測
<>
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図1
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図2
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図3
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図4A
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図4B
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図5
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図6
  • 特許-ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-15
(45)【発行日】2024-02-26
(54)【発明の名称】ビデオコーディングのためのメモリ消費を低減した適応ループフィルタパラメータの時間予測
(51)【国際特許分類】
   H04N 19/117 20140101AFI20240216BHJP
   H04N 19/127 20140101ALI20240216BHJP
   H04N 19/156 20140101ALI20240216BHJP
   H04N 19/176 20140101ALI20240216BHJP
   H04N 19/31 20140101ALI20240216BHJP
   H04N 19/423 20140101ALI20240216BHJP
【FI】
H04N19/117
H04N19/127
H04N19/156
H04N19/176
H04N19/31
H04N19/423
【請求項の数】 15
(21)【出願番号】P 2021512762
(86)(22)【出願日】2019-09-12
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019050836
(87)【国際公開番号】W WO2020056151
(87)【国際公開日】2020-03-19
【審査請求日】2022-08-12
(31)【優先権主張番号】62/730,504
(32)【優先日】2018-09-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/567,966
(32)【優先日】2019-09-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【弁理士】
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】エイイレメゼ、ヒルミ・エネス
(72)【発明者】
【氏名】フ、ナン
(72)【発明者】
【氏名】セレジン、バディム
(72)【発明者】
【氏名】チェン、ウェイ-ジュン
(72)【発明者】
【氏名】カルチェビチ、マルタ
【審査官】久保 光宏
(56)【参考文献】
【文献】米国特許出願公開第2018/0192050(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
ビデオデータをデコードする方法であって、
適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶することと、Nは正の整数値であり、ここで、前記ALFパラメータのセットを記憶することは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、前記対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することを備え、ここで、前記ALFパラメータのセットを記憶することは、決定された順序(determined order)で前記ALFパラメータのセットを記憶することを備え;ここで、ALFパラメータの新しいセットが受信され、前記N個のメモリ要素のすべてが使用されるとき、前記方法は、
前記メモリ要素のうちの1つから1つのエントリを除去することと、前記1つのエントリを除去することは、前記メモリ要素のうちの1つが前記ALFパラメータの新しいセットの時間レイヤID値と共通の時間レイヤID値を有するように、前記メモリ要素のうちの1つを選択することをさらに備える、
前記ALFパラメータの新しいセットを前記メモリ要素のうちの1つに記憶することと、
ビデオデータの1つ以上のブロックをデコードすることと、
前記1次元アレイの前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングすることとを備える、方法。
【請求項2】
前記ALFパラメータのセットを記憶することは、BスライスまたはPスライスのうちの少なくとも1つから前記ALFパラメータを記憶することを備える、請求項1に記載の方法。
【請求項3】
前記決定された順序は、デコーディング順序を備える、請求項1に記載の方法。
【請求項4】
前記ALFパラメータのセットのうちのどれが前記フィルタリングのために使用されるべきかを表す値を有する以前のインデックス変数(index variable)を維持することをさらに備える、請求項1に記載の方法。
【請求項5】
前記以前のインデックス変数は、単進符号フォーマット(unary code format)を有する、請求項4に記載の方法。
【請求項6】
前記以前のインデックス変数の値は、0からN-1までの範囲である、請求項4に記載の方法。
【請求項7】
前記1つ以上のブロックは、現在ピクチャ(current picture)に含まれ、フィルタリングすることは、前記現在ピクチャの時間レイヤID以下の時間レイヤIDを有する前記アレイに含まれる前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングすることを備える、請求項4に記載の方法。
【請求項8】
コード化されている現在ピクチャの時間レイヤIDに従って、前記アレイのエントリを表す値をコーディングすることをさらに備える、請求項4に記載の方法。
【請求項9】
前記ビデオデータを含むビットストリームからピクチャが失われたことを検出することと、
失われた前記ピクチャに対してALFパラメータの事前構成されたセットを追加することとをさらに備える、請求項1に記載の方法。
【請求項10】
前記ビデオデータの後続のイントラ予測ピクチャ(Iピクチャ)をコード化した後まで、前記ALFパラメータのセットのうちの1つ以上の除去を防止することをさらに備える、請求項1に記載の方法。
【請求項11】
前記1つ以上のブロックをデコードする前に、前記1つ以上のブロックをエンコードすることをさらに備える、請求項1に記載の方法。
【請求項12】
ビデオデータをデコードするデバイスであって、
適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶させる手段と、Nは正の整数値であり、ここで、前記ALFパラメータのセットを記憶させることは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、前記対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶させることを備え、ここで、前記ALFパラメータのセットを記憶するための手段は、決定された順序で前記ALFパラメータのセットを記憶するように構成され;前記記憶するための手段は、ALFパラメータの新しいセットが受信され、前記N個のメモリ要素のすべてが使用されるとき、
前記メモリ要素のうちの1つが前記ALFパラメータの新しいセットの時間レイヤID値と共通の時間レイヤID値を有するように、前記メモリ要素のうちの1つを選択することによって、前記メモリ要素のうちの1つから1つのエントリを除去することと、
前記ALFパラメータの新しいセットを前記メモリ要素のうちの1つに記憶することと、を行うようにさらに構成される、
前記ビデオデータの1つ以上のブロックをデコードするための手段と、
前記1次元アレイの前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングするための手段と、を備えるデバイス。
【請求項13】
前記ビデオデータを表示するように構成されたディスプレイをさらに備える、請求項12に記載のデバイス。
【請求項14】
前記デバイスは、カメラ、コンピュータ、移動体デバイス、ブロードキャスト受信機デバイス、または、セットトップボックスのうちの1つ以上を備える、請求項12に記載のデバイス。
【請求項15】
命令を記憶しているコンピュータ読取可能記憶媒体であって、
前記命令が実行されるとき、請求項1乃至10のいずれかに記載の方法をプロセッサに実行させる、コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【優先権の主張】
【0001】
[0001] 本願は、2019年9月11日に出願された米国特許出願第16/567,966号、2018年9月12日に出願された米国仮特許出願第62/730,504号の利益を主張し、それらの各々の内容全体は、参照によってここに組み込まれている。
【技術分野】
【0002】
[0002] 本開示は、ビデオエンコーディング(video encoding)およびビデオデコーディング(video decoding)に関する。
【背景技術】
【0003】
[0003] デジタルビデオ能力は、デジタルテレビ、デジタルディレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、パーソナルデジタルアシスタント(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲーム機、セルまたは衛星無線電話、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、およびこれらに類するものを含む、幅広い範囲のデバイス(device)に組み込まれることができる。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part10、アドバンストビデオコーディング(AVC)、ITU-T H.265/高効率ビデオコーディング(HEVC)、およびそのような規格の拡張によって定義された規格に説明されているもののような、ビデオコーディング技術を実現する。ビデオデバイスは、そのようなビデオコーディング技術を実現することによって、デジタルビデオ情報をより効率的に送信(transmit)、受信(receive)、エンコード(encode)、デコード(decode)、および/または記憶(store)し得る。
【0004】
[0004] ビデオコーディング技術は、ビデオシーケンスに内在する冗長性を低減または取り除くために、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を含む。ブロックベースのビデオコーディングに対して、ビデオスライス(例えば、ビデオピクチャまたはビデオピクチャの一部分)は、コーディングツリーユニット(CTU:coding tree unit)、コーディングユニット(CU:coding unit)、および/またはコーディングノードとも呼ばれ得る、ビデオブロックに区分され得る。ピクチャ(picture)のイントラコード化された(I)スライス中のビデオブロックは、同じピクチャ中の近隣するブロック(block)中の参照サンプルに対して空間予測を使用してエンコードされる。ピクチャのインターコードされた(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロックにおける参照サンプルに関する空間予測、または他の参照ピクチャ中の参照サンプルに関する時間予測を使用し得る。ピクチャは、フレームと呼ばれ得、参照ピクチャは、参照フレームと呼ばれ得る。
【発明の概要】
【0005】
[0005] 概して、本開示は、適応ループフィルタリング(ALF:adaptive loop filtering)における時間予測のメモリ使用量を低減し得る技術を説明する。JEM7において採用される時間予測と比較して、説明する技術は、圧縮性能の損失がほとんどまたは全くなく、有意なメモリ低減(memory reduction)を提供し得る。本開示の技術は、H.265/HEVCの拡張およびH.266/VVCを含む次世代ビデオコーディング規格など、アドバンストビデオコーデック(advanced video codecs)におけるALFのより実用的な実現を開発するために使用され得る。
【0006】
[0006] 一例では、ビデオデータ(video data)をデコードする方法は、適応ループフィルタ(ALF:adaptive loop filter)パラメータのセットを、N個のメモリ要素(memory element)の予め定められたサイズ(predefined size)を有する1次元アレイ(one-dimensional array)に記憶することと、Nは正の整数値(positive integer value)であり、ここで、ALFパラメータのセットを記憶することは、アレイ(array)のメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤ(temporal layer)を示す時間レイヤ識別子(ID:identifier)値との両方を記憶することを備え、ビデオデータの1つ以上のブロックをデコードすることと、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングする(filter)こととを含む。
【0007】
[0007] 別の例では、ビデオデータをデコードするためのデバイスは、ビデオデータを記憶するように構成されたメモリ(memory)と、回路中で実現される1つ以上のプロセッサとを含み、1つ以上のプロセッサ(processor)は、適応ループフィルタ(ALF)パラメータのセットを、メモリ中の1次元アレイに記憶し、1次元アレイはN個のメモリ要素の予め定められたサイズを有し、Nは正の整数値であり、ここで、1つ以上のプロセッサは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶するように構成され、ビデオデータの1つ以上のブロックをデコードし、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングするように構成される。デバイスは、1つ以上のブロックをデコードする前に、1つ以上のブロックをさらにエンコードし得る。
【0008】
[0008] 別の例では、命令(instruction)を記憶しているコンピュータ読取可能記憶媒体(computer-readable storage medium)は、命令が実行されるとき、プロセッサに、適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶させ、Nは正の整数値であり、ここで、ALFパラメータのセットを記憶させることは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶させることを備え、ビデオデータの1つ以上のブロックをデコードさせ、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングさせる。
【0009】
[0009] 別の例では、ビデオデータをデコードするデバイスは、適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶する手段と、Nは正の整数値であり、ここで、ALFパラメータのセットを記憶することは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することを備え、ビデオデータの1つ以上のブロックをデコードする手段と、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングする手段とを含む。
【0010】
[0010] 1つ以上の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点が、説明、図面、および特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0011】
図1】[0011] 図1は、例示的な適応ループフィルタ(ALF)サポートを図示する概念図である。
図2】[0012] 図2は、階層フレーム構造(hierarchical frame structure)における例示的な時間レイヤを図示する概念図である。
図3】[0013] 図3は、本開示を実行し得る例示的なビデオエンコーディングおよびデコーディングシステムを図示するブロック図である。
図4A】[0014] 図4Aは、例示的な四分木二分木(QTBT:quadtree binary tree)構造を図示する概念図である。
図4B図4Bは、対応するコーディングツリーユニット(CTU:coding tree unit)を図示する概念図である。
図5】[0015] 図5は、本開示の技術を実行し得る例示的なビデオエンコーダ(video encoder)を図示するブロック図である。
図6】[0016] 図6は、本開示の技術を実行し得る例示的なビデオデコーダ(video decoder)を図示するブロック図である。
図7】[0017] 図7は、この開示の技術にしたがった、ビデオデータをデコーディングおよびフィルタリングする例示的な方法を図示するフローチャートである。
【詳細な説明】
【0012】
[0018] ビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、および(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264を含み、そのスケーラブルビデオコーディング(SVC:Scalable Video Coding)およびマルチビュービデオコーディング(MVC:Multi-view Video Coding)拡張を含む。
【0013】
[0019] 加えて、新しいビデオコーディング規格、すなわち高効率ビデオコーディング(HEVC)が最近、ITU-Tビデオコーディング専門家グループ(VCEG)およびISO/IECモーションピクチャ専門家グループ(MPEG)のビデオコーディングに関する共同コラボレーションチーム(JCT-VC)によって開発された。以下においてHEVC WDと呼ばれるHEVC仕様書は、phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zipから入手可能である。HEVC規格は、2013年1月にまとまった。
【0014】
[0020] ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は現在、(スクリーンコンテンツコーディングおよびハイダイナミックレンジコーディングについてのその現在の拡張および近々の拡張を含む)現在のHEVC規格のそれを有意に上回る圧縮能力を有する将来のビデオコーディングテクノロジーの標準化の潜在的な必要性を研究している。このグループは、このエリアの専門家によって提案された圧縮テクノロジー設計を評価するために、ジョイントビデオ調査チーム(JVET)として知られている共同の試みでこの調査活動に関して協力し合っている。JVETが最初に集ったのは2015年10月19日-21日の間である。参照ソフトウェア、すなわち、共同調査モデル7(JEM7)は、jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0から入手可能である。
【0015】
[0021] ビデオコーディングの分野では、デコードされたビデオ信号の品質を向上させるために、フィルタリングを適用することは一般的である。フィルタは、フィルタリングされたフレームが将来のフレームの予測のために使用されないポストフィルタ(post-filter)として、またはフィルタリングされたフレームが将来のフレームを予測するために使用されるインループフィルタ(in-loop filter)として適用されることができる。フィルタは、例えば、元の信号と、デコードされたフィルタリングされた信号との間の誤りを最小化することによって設計されることができる。変換係数にあるように、フィルタの係数h(k,l),k=-K,...,K,l=-K,...Kは、
f(k,l)=round(normFactor・h(k,l))
に従って量子化することができる。
【0016】
[0022] 量子化変換係数(quantized transform coefficient)は、次いで、コード化され、デコーダに送られ得る。normFactorは、2と等しくてよい。normFactorのより大きい値は、より正確な量子化につながり得る。結果として、量子化されたフィルタ係数f(k,l)は、より良好な性能を提供することができる。しかしながら、normFactorの非常に大きな値は、一般に、送信するためにより多くのビットを必要とする係数f(k,l)を生成する。
【0017】
[0023] デコーダでは、デコードされたフィルタ係数f(k,l)は、以下の通りに、再構築された画像(reconstructed image)R(i,j)に適用される:
【数1】
ここで、iおよびjは、フレーム内のピクセルの座標である。
【0018】
[0024] 図1は、例示的な適応ループフィルタ(ALF)サポートを図示する概念図である。インループ適応フィルタ(in-loop adaptive filter)は、HEVCステージにおいて評価されたが、最終バージョンには含まれていない。
【0019】
[0025] JEMにおいて採用されたインループ適応ループフィルタは、J.Chen,Y.Chen,M.Karczewicz,X.Li,H.Liu,L.Zhang,X.Zhao,「次世代ビデオコーディングのためのコーディングツール研究」SG16-ジュネーブ-C806,2015年1月において最初に提案された。基本的な考え方は、HM-3[3]におけるブロックベースの適応を伴うALFと同じである。ルーマコンポーネントについては、1Dラプラシアン方向(最大3方向)および2Dラプラシアンアクティビティ(最大5アクティビティ値)に基づいて、ピクチャ全体における4×4ブロックが分類される。方向Dir_bおよび量子化されていないアクティビティAct_bの計算は、式(2)から(5)に示され、ここで、I^_(i,j)は、4×4ブロックの左上への相対座標(i,j)を有する再構築されたピクセルを示す。Act_bは、さらに、T.Wiegand,B.Bross,W.-J.Han,J.-R.OhmおよびG.J.Sullivan,「WD3:高効率ビデオコーディングの作業ドラフト3」ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11,JCTVC-E603のビデオコーディングに関する協同合作チーム(JCT-VC)、第5回会議:2011年3月16~23日、スイス、ジュネーブにおいて説明されているように0から4の範囲で包括的に量子化される。
【数2】
【数3】
【数4】
【数5】
【0020】
[0026] 全体で、各ブロックは、15(5×3)個のクラスのうちの1つにカテゴリ化され得、インデックス(index)が、ブロックのDir_bおよびAct_bの値に従って、各4×4ブロックに割り当てられる。したがって、最大15セットまでのALFパラメータが、ピクチャのルーマコンポーネントのためにシグナリングされ得る。シグナリングコストを節約するために、これらグループは、グループインデックス値に沿ってマージされ得る。各マージされたグループについて、1セットのALF係数がシグナリングされる。(図1に示すような)最大3つまでの円対称フィルタ形状(circular symmetric filter shape)がサポートされる。
【0021】
[0027] ピクチャ中の両方のクロマコンポーネントについて、ALF係数の単一のセットが適用され、および5×5菱形形状フィルタ(diamond shape filter)が常に使用される。
【0022】
[0028] デコーダ側において、各ピクセルサンプル
【数6】
がフィルタリングされ、式(6)に示されるように、結果としてピクセル値I′i,jをもたらし、ここで、Lはフィルタ長を示し、fm,nはフィルタ係数を表し、oはフィルタオフセットを示す。
【数7】
【0023】
[0029] JEM2.0では、BDによって示されるビット深度は、9に設定され、これは、フィルタ係数が、[-256,256]の範囲にあり得ることを意味する。
【0024】
[0030] 以前にコード化されたピクチャのALF係数は、記憶され、現在ピクチャ(current picture)のALF係数として再利用されることが可能である。現在ピクチャは、参照ピクチャのために記憶されたALF係数を使用することを選び、ALF係数のシグナリングをバイパスし得る。このケースでは、参照ピクチャのうちの1つに対する1つのインデックスのみがシグナリングされ、示された参照ピクチャの記憶されたALF係数は、現在ピクチャのために単純に引き継がれる。時間的予測の使用を示すために、インデックスを送る前に、1つのフラグが最初にコード化される。
【0025】
[0031] JEM7の設計では、多くとも6つの以前のピクチャ/スライスからのALFパラメータは、各時間レイヤについて別個のアレイに記憶される。例えば、階層的B/Pコーディング構造内に5つの時間レイヤが存在する場合(現在のビデオエンコーディング標準化で使用されるランダムアクセス設定のケース)、エンコーダおよびデコーダの両方が5×6メモリアレイを使用し、その結果、合計で、以前に取得されたALFパラメータを記憶するための30個のメモリ要素が存在する。
【0026】
[0032] JEM7の従来の設計は、IRAPピクチャ(Iフレーム)がエンコード/デコードされるとき、記憶されたALFパラメータを効果的に削除する。重複を避けるために、ALFパラメータは、デコーダ側でのシグナリングを通じて新たに取得された場合にのみメモリに記憶される(エンコーダ側では、推定/トレーニングを介して新たなパラメータが取得される)。パラメータを記憶することは、先入れ先出し(FIFO:first-in-first-out)順序(すなわち、FIFO方式)で動作し、したがって、アレイが満杯である場合、ALFパラメータ値の新しいセットが、デコーディング順序(decoding order)で最も古いパラメータを上書きする。
【0027】
[0033] 図2は、階層フレーム構造における例示的な時間レイヤを図示する概念図である。
【0028】
[0034] ALFパラメータを記憶するために(メモリ中の)2次元(2D)アレイを使用することの1つの例示的な理由は、階層的B/Pフレームコーディング構造において時間スケーラビリティ(temporal scalability)を保つことである。図2に示すように、i<kの場合、レイヤTにおけるフレームはレイヤTにおけるフレームに依存することができない(たとえば、レイヤTにおけるフレームから予測することができない)。言い換えれば、下位時間レイヤ(たとえば、T)におけるフレーム/スライスは、上位レイヤ(たとえば、TおよびT)におけるフレーム/スライスに依存することができない。米国特許出願公開第2018/0192050号として公開された、2018年1月3日に出願された米国出願第15/861,165号でカバーされる、ALFにおける現在の時間予測は、異なる時間レイヤから取得されたALFパラメータを2Dアレイの異なる行に単に記憶し、それらのパラメータが階層B/Pフレームにおける依存構造を壊すことなく使用されることを確実にすることによって、時間スケーラビリティを保つ。
【0029】
[0035] 時間予測の現在の設計は、大量のメモリを必要とし得る。具体的には、30メモリ要素を有する5×6アレイは、ALFパラメータを記憶するために、エンコーダとデコーダの両方において必要とされ得る。本開示の技術は、1Dアレイを使用することによってメモリ要件を著しく低減し得る一方で、依然として時間的スケーラビリティを保つ。
【0030】
[0036] 図3は、本開示の技術を実行し得る例示的なビデオエンコーディングおよびデコーディングシステム100を図示するブロック図である。本開示の技術は、概して、ビデオデータをコーディング(エンコーディング(encoding)および/またはデコーディング(decoding))することに向けられている。一般に、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の、コード化されていないビデオ、エンコードされたビデオ、デコードされた(例えば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
【0031】
[0037] 図3に示されているように、システム100は、この例では、宛先デバイス116によってデコードおよび表示されることになるエンコードされたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ読取可能媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、またはこれらに類するものを含む、幅広い範囲のデバイスのうちのいずれかを備え得る。いくつかのケースでは、ソースデバイス102および宛先デバイス116は、ワイヤレス通信のために装備され得、このことから、ワイヤレス通信デバイスと呼ばれ得る。
【0032】
[0038] 図3の例では、ソースデバイス102は、ビデオソース104、メモリ106、ビデオエンコーダ200、および出力インターフェース108を含む。宛先デバイス116は、入力インターフェース122、ビデオデコーダ300、メモリ120、およびディスプレイデバイス118を含む。本開示に従って、ソースデバイス102のビデオエンコーダ200と宛先デバイス116のビデオデコーダ300とは、メモリ消費(memory consumption)を低減し得る、適応ループフィルタパラメータの時間予測のための技術を適用するように構成され得る。このことから、ソースデバイス102は、ビデオエンコーディングデバイスの例を表す一方で、宛先デバイス116は、ビデオデコーディングデバイスの例を表す。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは配置を含み得る。例えば、ソースデバイス102は、外部カメラなどの外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むよりもむしろ、外部ディスプレイデバイスとインターフェースし得る。
【0033】
[0039] 図3に示されているシステム10は単に、一例に過ぎない。一般に、任意のデジタルビデオエンコーディングおよび/またはデコーディングデバイスは、メモリ消費を低減し得る、適応ループフィルタパラメータの時間予測のための技術を実行し得る。ソースデバイス102および宛先デバイス116は単に、ソースデバイス102が、宛先デバイス116への送信のためのコード化されたビデオデータを生成するそのようなコーディングデバイスの例に過ぎない。本開示は、データのコーディング(エンコーディングおよび/またはデコーディング)を実行するデバイスとして「コーディング(coding)」デバイスに言及する。このことから、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイスの例、特に、ビデオエンコーダおよびビデオデコーダをそれぞれ表す。いくつかの例では、ソースデバイス102および宛先デバイス116は、ソースデバイス102および宛先デバイス116の各々がビデオエンコーディングおよびデコーディングコンポーネントを含むような実質的に対称的な方法で動作し得る。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオ電話のための、ソースデバイス102と宛先デバイス116との間の1方向または2方向ビデオ送信をサポートし得る。
【0034】
[0040] 一般に、ビデオソース104は、ビデオデータのソース(即ち、生の、コード化されていないビデオデータ)を表し、ビデオデータの連続する一連のピクチャ(「フレーム(frame)」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャについてのデータをエンコードする。ソースデバイス102のビデオソース104は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。更なる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、または、ライブビデオとアーカイブビデオとコンピュータが生成したビデオとの組み合わせを生成し得る。各ケースでは、ビデオエンコーダ200が、キャプチャされた、予めキャプチャされた、またはコンピュータが生成したビデオデータをエンコードする。ビデオエンコーダ200は、ピクチャを、受信した順序(ときには「表示順序(display order)」と呼ばれる)から、コーディングのためのコーディング順序(coding order)に再配列し得る。ビデオエンコーダ200は、エンコードされたビデオデータを含むビットストリーム(bitstream)を生成し得る。ソースデバイス102は次いで、例えば、宛先デバイス116の入力インターフェース122による受信および/または取り出しのために、出力インターフェース108を介してコンピュータ読取可能媒体110上にエンコードされたビデオデータを出力し得る。
【0035】
[0041] ソースデバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、例えば、ビデオソース104からの生のビデオ、およびビデオデコーダ300からの生のデコードされたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、例えば、それぞれビデオエンコーダ200およびビデオデコーダ300によって実行可能なソフトウェア命令を記憶し得る。メモリ106および120は、この例ではビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300はまた、機能的に類似または同等の目的のために内部メモリを含み得ることが理解されるべきである。更に、メモリ106、120は、エンコードされたビデオデータ、例えば、ビデオエンコーダ200からの出力およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の一部分は、例えば、生の、デコードされた、および/またはエンコードされたビデオデータを記憶するために、1つ以上のビデオバッファとして割り振られ得る。
【0036】
[0042] コンピュータ読取可能媒体110は、ソースデバイス102から宛先デバイス116にエンコードされたビデオデータを転送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ読取可能媒体110は、ソースデバイス102が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、リアルタイムで宛先デバイス116にエンコードされたビデオデータを直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、エンコードされたビデオデータを含む送信信号を変調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つ以上の物理的な送信ラインのような、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットといったグローバルネットワークのような、パケットベースのネットワークの一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を容易にするのに有用であり得る他の何らかの機器を含み得る。
【0037】
[0043] いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に、エンコードされたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス112からのエンコードされたビデオデータにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいはエンコードされたビデオデータを記憶するための他の何らかの適したデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のうちのいずれかを含み得る。
【0038】
[0044] いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成されたエンコードされたビデオを記憶し得るファイルサーバ114または別の中間記憶デバイスに、エンコードされたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、エンコードされたビデオデータを記憶することと、宛先デバイス116にそのエンコードされたビデオデータを送信することとが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(例えば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む、任意の標準データ接続を通じて、ファイルサーバ114からのエンコードされたビデオデータにアクセスし得る。これは、ファイルサーバ114上に記憶されているエンコードされたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、デジタル加入者回線(DSL)、ケーブルモデム、等)、またはその両方の組み合わせを含み得る。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組み合わせに従って動作するように構成され得る。
【0039】
[0045] 出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキングコンポーネント(例えば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のうちの任意のものに従って動作するワイヤレス通信コンポーネント、または他の物理的コンポーネントを表し得る。出力インターフェース108および入力インターフェース122がワイヤレスコンポーネントを備える例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5G、またはこれらに類するもののようなセルラ通信規格にしたがって、エンコードされたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(登録商標))、Bluetooth(登録商標)規格、またはこれらに類するもののような、他のワイヤレス規格にしたがって、エンコードされたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。例えば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に備わる機能性を実行するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に備わる機能性を実行するためのSoCデバイスを含み得る。
【0040】
[0046] 本開示の技術は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的適応型ストリーミング(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上にエンコードされたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオのデコード、または他のアプリケーションなどの、様々なマルチメディアアプリケーションのうちのいずれかをサポートするビデオコーディングに適用され得る。
【0041】
[0047] 宛先デバイス116の入力インターフェース122は、コンピュータ読取可能媒体110(例えば、通信媒体、記憶デバイス112、ファイルサーバ114、またはこれらに類するもの)からエンコードされたビデオビットストリームを受信する。コンピュータ読取可能媒体110からのエンコードされたビデオビットストリームは、ビデオブロックまたは他のコード化されたユニット(例えば、スライス、ピクチャ、ピクチャのグループ、シーケンス、またはこれらに類するもの)の特性および/または処理を記述する値を有するシンタックス要素などの、ビデオエンコーダ200によって定義され、ビデオデコーダ300によっても使用されるシグナリング情報を含み得る。ディスプレイデバイス118は、ユーザにデコードされたビデオデータのデコードされたピクチャを表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのうちのいずれかを表してもよい。
【0042】
[0048] 図3には示されていないが、いくつかの態様では、ビデオエンコーダ200およびビデオデコーダ300は各々、オーディオエンコーダおよび/またはオーディオデコーダと一体化され得、共通のデータストリームにおけるオーディオとビデオとの両方を含む多重化されたストリームを取り扱うために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能である場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る。
【0043】
[0049] ビデオエンコーダ200およびビデオデコーダ300は各々、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせなどの、様々な適したエンコーダおよび/またはデコーダ回路のうちのいずれかとして実現され得る。本技術がソフトウェアにおいて部分的に実現されるとき、デバイスは、適した非一時的コンピュータ読取可能媒体中にソフトウェアのための命令を記憶し、本開示の技術を実行するために、1つ以上のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ200およびビデオデコーダ300の各々は、1つ以上のエンコーダまたはデコーダに含まれ得、それらのうちのいずれも、それぞれのデバイスにおいて組み合わされたエンコーダ/デコーダ(CODEC)の一部として統合され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラ電話機などのワイヤレス通信デバイスを備え得る。
【0044】
[0050] ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265などのビデオコーディング規格に、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などの、高効率ビデオコーディング(HEVC)に対する拡張に従って動作し得る。代替的に、ビデオエンコーダ200およびビデオデコーダ300は、汎用ビデオコーディング(VVC:Versatile Video Coding)とも呼ばれるITU-T H.266または共同調査テストモデル(JEM)などの、他のプロプライエタリまたは業界規格にしたがって動作し得る。VVC規格の最近のドラフトは、Bross他「汎用ビデオコーディング(ドラフト6)」、ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第15回会議:2019年7月3~12日スウェーデン、ヨーテボリ、JVET-O2001-vE(以下、「VVCドラフト6」)において説明されている。しかしながら本開示の技術は、何れの特定のコーディング規格にも限定されない。
【0045】
[0051] 一般に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャのブロックベースのコーディングを実行し得る。「ブロック(block)」という用語は、一般に、処理される(例えば、エンコードされる、デコードされる、あるいはそうでなければ、エンコーディングおよび/またはデコーディングプロセスにおいて使用される)べきデータを含む構造を指す。例えば、ブロックは、ルミナンスデータおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200およびビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコード化し得る。すなわち、ピクチャのサンプルのための赤、緑、および青(RGB)データをコーディングするよりもむしろ、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンスコンポーネントおよびクロミナンスコンポーネントをコード化し得、ここで、クロミナンスコンポーネントは、赤の色相と青の色相両方のクロミナンスコンポーネントを含み得る。いくつかの例では、ビデオエンコーダ200は、エンコーディングの前に、受信したRGBフォーマットされたデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替として、前処理ユニットおよび後処理ユニット(図示せず)が、これらの変換を実行し得る。
【0046】
[0052] 本開示は、一般に、ピクチャのデータをエンコードまたはデコードするプロセスを含むように、ピクチャのコーディング(例えば、エンコーディングおよびデコーディング)に言及し得る。同様に、本開示は、ブロックについてのデータをエンコードまたはデコードするプロセス、例えば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングに言及し得る。エンコードされたビデオビットストリームは、一般に、コーディング決定(例えば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、一般に、ピクチャまたはブロックを形成するシンタックス要素(syntax element)についてのコーディング値として理解されるべきである。
【0047】
[0053] HEVCは、コーディングユニット(CU)と、予測ユニット(PU)と、変換ユニット(TU)とを含む様々なブロックを定義する。HEVCによれば、ビデオコーダ(ビデオエンコーダ200など)は、四分木構造にしたがってコーディングツリーユニット(CTU)をCUに区分する。即ち、ビデオコーダは、CTUおよびCUを4つの等しい、重複しない正方形に区分し、四分木の各ノードは、0または4つの子ノードのうちのいずれかを有する。子ノードを有さないノードは、「リーフノード」と呼ばれ得、そのようなリーフノードのCUは、1つ以上のPUおよび/または1つ以上のTUを含み得る。ビデオコーダは、PUとTUとを更に区分し得る。例えば、HEVCでは、残差四分木(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表す一方で、TUは残差データを表す。イントラ予測されるCUは、イントラモード表示などのイントラ予測情報を含む。
【0048】
[0054] 別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMまたはVVCにしたがって動作するように構成され得る。JEMまたはVVCによれば、ビデオコーダ(ビデオエンコーダ200など)は、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、四分木二分木(QTBT)構造またはマルチタイプツリー(MTT:multi-type tree)構造などのツリー構造に従ってCTUを区分し得る。JEMのQTBT構造は、HEVCのCU、PU、およびTU間の分離など、複数の区分タイプの概念を取り除く。JEMのQTBT構造は、四分木分割にしたがって区分された第1のレベルと、二分木分割にしたがって区分された第2のレベルとの2つのレベルを含む。QTBT構造のルートノードはCTUに対応する。二分木のリーフノードは、コーディングユニット(CU)に対応する。
【0049】
[0055] MTT区分構造では、ブロックは、四分木(QT)区分と、二分木(BT)区分と、1つ以上のタイプの三分木(TT:triple tree)(三分木(TT:ternary tree)とも呼ばれる)区分とを使用して区分され得る。三分木区分(triple tree partition)または三分木区分(ternary tree partition)は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、三分木区分(triple tree partition)または三分木区分(ternary tree partition)は、中心を通して元のブロックを分割することなく、ブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(例えば、QT、BT、およびTT)は、対称または非対称であり得る。
【0050】
[0056] いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンスコンポーネントおよびクロミナンスコンポーネントの各々を表すために単一のQTBTまたはMTT構造を使用し得るが、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンスコンポーネントのための1つのQTBT/MTT構造、および両方のクロミナンスコンポーネントのための別のQTBTまたはMTT構造(あるいはそれぞれのクロミナンスコンポーネントのための2つのQTBTまたはMTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
【0051】
[0057] ビデオエンコーダ200およびビデオデコーダ300は、HEVCごとの四分木区分、JEMによるQTBT区分、または他の区分構造を使用するように構成され得る。説明を目的として、本開示の技術の説明は、QTBT区分に関して提示される。しかしながら、本開示の技術はまた、四分木区分、または他のタイプの区分も使用するように構成されたビデオコーダに適用され得ることが理解されるべきである。
【0052】
[0058] ブロック(例えば、CTUまたはCU)は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリック(brick)は、ピクチャ中の特定のタイル内のCTU行の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(例えば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を指す。タイル行は、(例えば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を指す。
【0053】
[0059] いくつかの例では、タイルは、複数のブリックに区分され得、それらの各々は、タイル内に1つ以上のCTU行を含み得る。複数のブリックに区分されていないタイルもまた、ブリックと呼ばれ得る。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないかもしれない。
【0054】
[0060] ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、単一のネットワーク抽象化レイヤ(NAL:network abstraction layer)ユニット中に排他的に包含され得るピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、多くの完全なタイル、または1つのタイルの完全なブリックの連続したシーケンスのみのうちのいずれかを含む。
【0055】
[0061] 本開示は、垂直寸法および水平寸法に関する(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法、例えば、16×16サンプルまたは16掛ける16サンプルを指すために、「N×N」および「N掛けるN」を交換可能に使用し得る。一般に、16×16CUは、垂直方向に16個のサンプル(y=16)を、および水平方向に16個のサンプル(x=16)を有するだろう。同様に、N×N CUは、一般に、垂直方向にN個のサンプルを、水平方向にN個のサンプルを有し、ここで、Nは、非負整数値を表す。CU中のサンプルは、行および列に配置され得る。その上、CUは、水平方向に、垂直方向と同じ数のサンプルを必ずしも有する必要はない。例えば、CUは、N×Mサンプルを備え得、ここで、Mは、必ずしもNと等しいわけではない。
【0056】
[0062] ビデオエンコーダ200は、予測および/または残差情報、並びに他の情報を表すCUについてのビデオデータをエンコードする。予測情報は、CUのための予測ブロックを形成するために、どのようにCUが予測されるべきかを示す。残差情報は、一般に、エンコーディング前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
【0057】
[0063] CUを予測するために、ビデオエンコーダ200は、一般に、インター予測またはイントラ予測を通じてCUについての予測ブロックを形成し得る。インター予測は、一般に、以前にコード化されたピクチャのデータからCUを予測することを指す一方で、イントラ予測は、一般に、同じピクチャの以前にコード化されたデータからCUを予測することを指す。インター予測を実行するために、ビデオエンコーダ200は、1つ以上の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、例えば、CUと参照ブロックとの間の差分に関して、CUに密接に一致する参照ブロックを識別するために動きサーチを実行し得る。ビデオエンコーダ200は、参照ブロックが現在CUに密接に一致するかどうかを決定するために、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
【0058】
[0064] JEMおよびVVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モード(affine motion compensation mode)を提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはズームアウト、回転、透視動き、または他の不規則な動きタイプなどの非並進動きを表す2つ以上の動きベクトルを決定し得る。
【0059】
[0065] イントラ予測を実行するために、ビデオエンコーダ200は、予測ブロックを生成するためにイントラ予測モードを選択(select)し得る。JEMは、様々な方向性モードとともに、平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(例えば、CUのブロック)に対する隣接サンプルを記述するイントラ予測モードを選択して、そのサンプルから現在ブロックのサンプルを予測する。ビデオエンコーダ200がラスタ走査順序(左から右、上から下)でCTUおよびCUをコード化する(code)と仮定すると、そのようなサンプルは、一般に、現在ブロックと同じピクチャ中の現在ブロックの上、左上、または左にあり得る。
【0060】
[0066] ビデオエンコーダ200は、現在ブロックについての予測モードを表すデータをエンコードする。例えば、インター予測モードに対して、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるかを表すデータ、並びに対応するモードについての動き情報をエンコードし得る。単方向または双方向インター予測に対して、例えば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP:advanced motion vector prediction)またはマージモードを使用して動きベクトルをエンコードし得る。ビデオエンコーダ200は、アフィン動き補償モードについての動きベクトルをエンコードするために、同様のモードを使用し得る。
【0061】
[0067] ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについての残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間のサンプル毎の差分を表す。ビデオエンコーダ200は、サンプルドメインの代わりに変換ドメイン中に変換されたデータを作り出すために、残差ブロックに1つ以上の変換を適用し得る。例えば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、モード依存分離不可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT:Karhunen-Loeve transform)、または、これらに類するもののような、第1の変換に続く2次変換を適用し得る。ビデオエンコーダ200は、1つ以上の変換の適用に続いて変換係数を生成する。
【0062】
[0068] 上述されたように、変換係数を作り出すための任意の変換に続いて、ビデオエンコーダ200は、変換係数の量子化を実行し得る。量子化は一般に、変換係数を表現するために使用されるデータの量を出来る限り減少させるために変換係数が量子化されるプロセスを指し、これは、さらなる圧縮を提供する。量子化プロセスを実行することによって、ビデオエンコーダ200は、変換係数のうちのいくつかまたは全てに関連付けられたビット深度を低減し得る。例えば、ビデオエンコーダ200は、量子化の間にn-ビット値をm-ビット値に切り捨ててもよく、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行し得る。
【0063】
[0069] 量子化に続いて、ビデオエンコーダ200は、変換係数を走査し得、量子化変換係数を含む2次元行列から1次元ベクトルを作り出し得る。走査は、ベクトルの前方により高いエネルギー(従って、より低い周波数)の変換係数を配置し、ベクトルの後方により低いエネルギー(従って、より高い周波数)の変換係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、予め規定された走査順序を利用して、量子化変換係数を走査し、シリアル化ベクトルを生成させ、その後、ベクトルの量子化変換係数をエントロピーエンコードし得る。他の例では、ビデオエンコーダ200は、適応走査を実行し得る。1次元ベクトルを形成するために、量子化変換係数を走査した後、ビデオエンコーダ200は、例えば、コンテキスト適応2値算術コーディング(CABAC)に従って1次元ベクトルをエントロピーエンコーディングし得る。ビデオエンコーダ200はまた、ビデオデータをデコードする際にビデオデコーダ300によって使用するためのエンコードされたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピーエンコードし得る。
【0064】
[0070] CABACを実行するために、ビデオエンコーダ200は、送信されることになるシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの近隣値が0値であるか否かに関連し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0065】
[0071] ビデオエンコーダ200は、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを更に生成し得る。ビデオデコーダ300は、同様に、対応するビデオデータをどのようにデコードするかを決定するために、そのようなシンタックスデータをデコードし得る。
【0066】
[0072] このように、ビデオエンコーダ200は、エンコードされたビデオデータ、例えば、ブロック(例えば、CU)へのピクチャの区分、並びに、ブロックについての予測および/または残差情報を記述するシンタックス要素、を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、エンコードされたビデオデータをデコードし得る。
【0067】
[0073] 一般に、ビデオデコーダ300は、ビットストリームのエンコードされたデータをデコードするために、ビデオエンコーダ200によって実行されたものとは相反するプロセスを実行する。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABACエンコーディングプロセスと逆ではあるが実質的に同様な方法でCABACを使用して、ビットストリームのシンタックス要素についての値をデコードし得る。シンタックス要素は、CTUへのピクチャの区分情報と、CTUのCUを定義するための、QTBT構造などの対応する区分構造にしたがう各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(例えば、CU)についての予測および残差情報を更に定義し得る。
【0068】
[0074] 残差情報は、例えば、量子化変換係数によって表され得る。ビデオデコーダ300は、ブロックについての残差ブロックを再び作り出すために、ブロックの量子化変換係数を逆量子化および逆変換し得る。ビデオデコーダ300は、ブロックについての予測ブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)および関連する予測情報(例えば、インター予測のための動き情報)を使用する。ビデオデコーダ300は次いで、元のブロックを再び作り出すために、(サンプル毎のベースで)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、デブロッキングプロセスを実行することなど、追加の処理を実行して、ブロックの境界に沿った視覚的アーティファクトを低減させ得る。
【0069】
[0075] 本開示の技術によれば、ビデオエンコーダ200およびビデオデコーダ300は、以下の表1に示すように、時間レイヤID値(tId)とともに、サイズNの単一の1-Dアレイ(またはバッファ)にALFパラメータを記憶するように構成され得る。
【表1】
【0070】
[0076] 表1の例では、1-Dアレイの各メモリ要素は、(i)ALFパラメータと、(ii)どのレイヤから対応するALFパラメータが推定されるかを示す時間レイヤID(tId)とを記憶する。時間レイヤ情報は、より高い時間レイヤ(たとえば、tId=4)から取得されたALFパラメータが、より低い時間レイヤ(たとえば、tId=3)におけるフレーム/スライスをエンコード/デコードするために使用されないことを確実にするために記憶され得る。
【0071】
[0077] ビデオエンコーダ200およびビデオデコーダ300は、時間予測のためのALFパラメータをロード、記憶、および/または使用するために、以下の技術のうちのいずれかを、単独でまたは任意の組合せで適用するように構成され得る:
1.ALFパラメータの時間予測において使用されるために、アレイは、BスライスまたはPスライスのいずれかからのパラメータを記憶し得る。
2.アレイにおいて、ALFパラメータのエントリ(entry)は、ある順序で(たとえば、デコーディング順序に従うことによって)記憶され得る。N個のエントリすべてが記憶することに使用されるとき(すなわち、アレイが満杯であるとき)、1つのエントリを除去(remove)し、次いで新しいパラメータをアレイに追加することによって、新しく取得されたパラメータを記憶することができる。
a.一例として、これは、FIFO(先入れ先出し)方式で行うことができ、アレイが満杯になるとき、アレイ中の最後のエントリ(すなわち、パラメータの最も古いセット)が除去され、新しいパラメータがアレイの第1の要素に記憶される。
b.別の例では、ALFパラメータは、同じ時間ID(temporal ID)を有するバッファ中のある記憶されたパラメータを置き換え、たとえば、あるパラメータは、バッファ中の最も古いパラメータであり得るか、あるいは、あまり使用されない、または他の何らかのルールが適用され得る。
3.prevIdxと呼ばれる非負のインデックス値は、ALFパラメータのどのセットがエンコーディング/デコーディングのためにバッファからロード/使用されるかを識別するためにシグナリングされ得る。
a.prevIdxをシグナリングするために、単進符号(unary code)などの可変長コード(variable length code)が使用され得る。ある時間的Idに対するパラメータの利用可能な総数は、記憶されたバッファ中でカウントすることができ、切り捨てられる2値化を使用して、フィルタの利用可能な総数から1を引いた数を有するprevIdxを最大インデックスとしてシグナリングすることができる。しかしながら、切り捨てられるコーディングは、たとえば、いくつかのピクチャが送信中に失われたとき、エンコーダとデコーダとの間に不一致をもたらし得る。
b.prevIdxは、0からN-1までの値をとることができる。コーディングに使用される階層フレーム構造のタイプに応じて、prevIdxの最大値はより小さくなり得る。
c.スライス/ピクチャをコーディングするとき、時間的予測のための可能性のある候補は、アレイ中に含まれたセットをトラバース(traverse)することによって決められ得、および等しいまたはより小さいtIdを有する全てまたはいくつかのパラメータセットが、有効な候補として扱われる。
d.(コーディングのために使用されるALFパラメータを決定する)アレイエントリのシグナリングは、コード化されている現在のフレームの時間レイヤIDに依存し得る。特に、prevIdxは、エンコード/デコードされている現在のフレームの時間レイヤIDに依存して、アレイ中の異なるエントリに対応し得る。
i.以下の表2に図示される例として、prevIdx=1は、コード化されている現在のフレームのtIdに依存して、アレイ中の以下の2つの異なるエントリを指し得る。
1.prevIdx=1は、tId=1でフレームをコーディングするときに、Alf(P,1)を記憶する、アレイ中の4番目のエントリに対応し、これは、時間スケーラビリティを保持するためにコーディングを可能にする第2の可能なオプションであるからであり、ここで、Alf(P,1)は、prevIdx=0でシグナリングされる第1の候補である。
2.prevIdx=1は、tId=2でフレームをコーディングするときに、Alf(P,2)を記憶する、アレイ中の2番目エントリに対応し、これは、コーディングを可能にする第2の可能なオプションであるからであり、ここで、Alf(P,1)は、prevIdx=0に対応する第1のオプションである。
【表2】
e.フレーム損失(たとえば、ネットワークを通してビデオビットストリームを送るときのパケット損失による)のケースでは、デコーダは、アレイに任意のエントリを追加しないことを選んでよく、ダミー(すなわち、事前構成された)エントリを導入し得、したがって、ピクチャが失われたときでも、ダミーエントリがバッファに追加される。いずれのケースも、上述した方法が適用される限り、時間スケーラビリティは維持される。言い換えれば、より高いレベルのフレームが失われたとき(たとえば、T3)、より低いレイヤのフレームは依然としてデコード可能である(たとえば、T1およびT2)。
f.別の例では、より低い時間IDをもつピクチャまたはスライスは、より高い時間IDのALFパラメータについての情報を搬送し得、このケースでは、より高い時間IDをもつピクチャが失われる場合、パラメータは、より低い時間IDをもつピクチャから取得されることができる。それらのパラメータはまた、より高い時間IDピクチャがそのようなALFパラメータを搬送するかどうかを含み得、それらのパラメータまたはダミー(事前構成された)パラメータがバッファに追加され得る。
g.別の例では、デコーダピクチャバッファ管理(DPB)方法は、DPB管理が失われたピクチャの処理を含むので、時間的ALFパラメータ処理に適用されることができる。
4.ALFパラメータの重要度に依存して(たとえば、重要度は、それらが使用される頻度に基づいて、またはそれらの時間レイヤ情報に基づいて測定できる)、それらの重要なALFパラメータのうちのいくつかは固定され、次のIスライスがコード化されるまでバッファ中に保持されることができる。そのような重要度メトリックは、シグナリングprevIdx(たとえば、単項コーディング)のシグナリングオーバーヘッドを低減するためにエントリをランク付けし、並べ替えるために使用されることができる。
5.ALFパラメータのロードおよび記憶(バッファの管理)に関する追加の決定または制限は、(時間レイヤIDに加えて)他の何らかのサイド情報、またはALFパラメータとともに記憶されることができる重要度尺度に基づいて行われることができる。
6.別々のバッファは、ルーマチャネルおよびクロマチャネルを別々にコーディングするために使用されることができる。結果として、各sbufferは、ルーマチャネルおよびクロマチャネルに対して別々に使用されるALFパラメータを決定するために、prevIdxの異なるシグナリングを有し得る。
【0072】
[0078] 本開示は、一般に、シンタックス要素のようなある情報を「シグナリングすること」に言及し得る。「シグナリングすること(signaling)」という用語は、一般に、エンコードされたビデオデータをデコードするために使用されるシンタックス要素および/または他のデータについての値の通信を指し得る。即ち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素についての値をシグナリングし得る。一般に、シグナリングは、ビットストリーム中で値を生成することを指す。上述されたように、ソースデバイス102は、実質的にリアルタイムで、または、宛先デバイス116による後の取り出しのために、シンタックス要素を記憶デバイス112に記憶させるときに起こるかもしれないような、リアルタイムではなく、ビットストリームを宛先デバイス116に転送してもよい。
【0073】
[0079] 図4Aおよび図4Bは、例示的な四分木二分木(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを図示する概念図である。実線は、四分木分割を表し、点線は、二分木分割を示す。二分木の各分割(すなわち、非リーフ)ノードでは、どの分割タイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされ、ここで、この例では、0が水平分割を示し、1が垂直分割を示す。四分木分割に対して、四分木ノードが等しいサイズを有する4つのサブブロックに水平および垂直にブロックを分割するので、分割タイプを示す必要はない。したがって、QTBT構造130の領域ツリーレベル(すなわち、実線)についてのシンタックス要素(分割情報など)と、QTBT構造130の予測ツリーレベル(すなわち、破線)についてのシンタックス要素(分割情報など)とを、ビデオエンコーダ200がエンコーディングし得、ビデオデコーダ300がデコードし得る。QTBT構造130の終端リーフノードによって表されるCUについての予測および変換データなどのビデオデータを、ビデオエンコーダ200はエンコードし得、ビデオデコーダ300はデコードし得る。
【0074】
[0080] 概して、図4BのCTU132は、第1および第2のレベルにおけるQTBT構造130のノードに対応するブロックのサイズを定義するパラメータに関連付けられ得る。これらのパラメータは、CTUサイズ(サンプル中のCTU132のサイズを表す)、最小四分木サイズ(MinQTSize、最小許容四分木リーフノードサイズを表す)、最大二分木サイズ(MaxBTSize、最大許容二分木ルートノードサイズを表す)、最大二分木深度(MaxBTDepth、最大許容二分木深度を表す)、および最小二分木サイズ(MinBTSize、最小許容二分木リーフノードサイズを表す)を含み得る。
【0075】
[0081] CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルで4つの子ノードを有し得、それらの各々は、四分木区分に従って区分され得る。即ち、第1のレベルのノードは、リーフノード(子ノードを有さない)であるか、または4つの子ノードを有するかのうちのいずれかである。QTBT構造130の例は、分岐のための実線を有する親ノードおよび子ノードを含むようなノードを表す。第1のレベルのノードが最大許容二分木ルートノードサイズ(MaxBTSize)よりも大きくない場合、それらノードは、それぞれの二分木によって更に区分されることができる。分割に起因するノードが、最小許容二分木リーフノードサイズ(MinBTSize)または最大許容二分木深度(MaxBTDepth)に達するまで、1つのノードの二分木分割を繰り返すことができる。QTBT構造130の例は、分岐のための破線を有するノードを表す。二分木リーフノードは、コーディングユニット(CU)と呼ばれ、これは、さらなる分割なしに、予測(例えば、イントラピクチャ予測またはインターピクチャ予測)および変換のために使用される。上述されたように、CUはまた、「ビデオブロック」または「ブロック」と呼ばれ得る。
【0076】
[0082] QTBT区分構造の一例では、CTUサイズは、128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは、16×16として設定され、MaxBTSizeは、64×64として設定され、(幅と高さとの両方についての)MinBTSizeは、4として設定され、MaxBTDepthは、4として設定される。四分木リーフノードを生成するために、最初に四分木分割がCTUに適用される。四分木リーフノードは、16×16(即ち、MinQTSize)から128×128(即ち、CTUサイズ)までのサイズを有し得る。リーフ四分木ノードが128×128である場合、サイズがMaxBTSize(即ち、この例では、64×64)を上回るので、二分木によって更に分割されないであろう。そうでない場合、リーフ四分木ノードは、二分木によって更に区分されるであろう。従って、四分木リーフノードはまた、二分木のためのルートノードであり、0の二分木深度を有する。二分木深度がMaxBTDepth(この例では、4)に達するとき、更なる分割は許可されない。二分木ノードの幅がMinBTSize(この例では4)に等しいとき、それはさらなる水平分割が許可されないことを示唆する。同様に、MinBTSizeに高さが等しい二分木ノードは、その二分木ノードに対してさらなる垂直分割が許可されないことを示唆する。上述したように、二分木のリーフノードはCUと呼ばれ、さらなる区分なく予測および変換にしたがってさらに処理される。
【0077】
[0083] 図5は、本開示の技術を実行し得る実例的なビデオエンコーダ200を図示するブロック図である。図5は、説明の目的のために提供されており、本開示において広く例示および説明されているような技術の限定と見なすべきではない。説明を目的として、本開示は、HEVCビデオコーディング規格、および開発中のH.266ビデオコーディング規格などのビデオコーディング規格のコンテキストでビデオエンコーダ200を説明する。しかしながら、本開示の技術は、これらのビデオコーディング規格に限定されず、概してビデオエンコーディングおよびデコーディングに適用可能である。
【0078】
[0084] 図5の例では、ビデオエンコーダ200は、ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、フィルタユニット(filter unit)216、デコードされたピクチャバッファ(DPB:decoded picture buffer)218、およびエントロピーエンコーディングユニット220を含む。ビデオデータメモリ230、モード選択ユニット202、残差生成ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、フィルタユニット216、DPB218、およびエントロピーエンコーディングユニット220のうちのいずれかまたはすべては、1つ以上のプロセッサまたは処理回路において実現され得る。さらに、ビデオエンコーダ200は、これらおよび他の機能を実行するための追加または代替のプロセッサまたは処理回路を含み得る。
【0079】
[0085] ビデオデータメモリ230は、ビデオエンコーダ200のコンポーネントによってエンコードされることになるビデオデータを記憶し得る。ビデオエンコーダ200は、例えば、ビデオソース104(図3)から、ビデオデータメモリ230中に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして機能し得る。ビデオデータメモリ230およびDPB218は、同期動的ランダムアクセスメモリ(SDRAM)、磁気RAM(MRAM)、抵抗性RAM(RRAM(登録商標))を含む、DRAMまたは他のタイプのメモリデバイスのような、様々なメモリデバイスのうちのいずれかによって形成され得る。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、図示されているように、ビデオデータメモリ230は、ビデオエンコーダ200の他のコンポーネントと共にオンチップであり得るか、またはそれらのコンポーネントに対してオフチップであり得る。
【0080】
[0086] この開示では、ビデオデータメモリ230への言及は、そのように明記されていない限り、ビデオエンコーダ200の内部にあるメモリに、またはそのように明記されていない限り、ビデオエンコーダ200の外部にあるメモリに、限定されると解釈されるべきではない。むしろ、ビデオデータメモリ230への言及は、ビデオエンコーダ200がエンコーディングのために受信するビデオデータ(例えば、エンコードされるべき現在ブロックについてのビデオデータ)を記憶するメモリへの言及として理解されるべきである。図3のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時記憶を提供し得る。
【0081】
[0087] 図5の様々なユニットは、ビデオエンコーダ200によって実行される動作の理解を助けるために図示される。それらユニットは、固定機能回路、プログラマブル回路、またはそれらの組み合わせとして実現され得る。固定機能回路は、特定の機能性を提供する回路を指し、実行されることができる動作に予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路(circuitry)を指し、実行されることができる動作において柔軟な機能性を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つ以上のユニットは、集積回路であり得る。
【0082】
[0088] ビデオエンコーダ200は、プログラマブル回路から形成された、算術論理ユニット(ALU)、初等関数ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオエンコーダ200の動作がプログラマブル回路によって実行されるソフトウェアを使用して実行される例では、メモリ106(図3)はビデオエンコーダ200が受信し実行するソフトウェアのオブジェクトコードを記憶し得、またはビデオエンコーダ200内の別のメモリ(図示せず)がそのような命令を記憶し得る。
【0083】
[0089] ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、残差生成ユニット204およびモード選択ユニット202にビデオデータを提供し得る。ビデオデータメモリ230中のビデオデータは、エンコードされるべき生のビデオデータであり得る。
【0084】
[0090] モード選択ユニット202は、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226を含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実行するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM:linear model)ユニット、またはこれらに類するものを含み得る。
【0085】
[0091] モード選択ユニット202は、一般に、エンコーディングパラメータの組み合わせをテストするために複数のエンコーディングパスを調整し、結果として、そのような組み合わせのためのレート歪み値(rate-distortion value)をもたらす。エンコーディングパラメータは、CUへのCTUの区分、CUについての予測モード、CUの残差データについての変換タイプ、CUの残差データについての量子化パラメータ、等を含み得る。モード選択ユニット202は、最終的に、他のテストされた組合せよりも良好なレート歪み値を有するエンコーディングパラメータの組合せを選択し得る。
【0086】
[0092] ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内に1つ以上のCTUをカプセル化し得る。モード選択ユニット202は、上述したHEVCの四分木構造またはQTBT構造などのツリー構造にしたがって、ピクチャのCTUを分割し得る。上述したように、ビデオエンコーダ200は、ツリー構造にしたがってCTUを分割することから1つ以上のCUを形成し得る。そのようなCUは、一般に「ビデオブロック」または「ブロック」とも呼ばれ得る。
【0087】
[0093] 一般に、モード選択ユニット202はまた、現在ブロック(例えば、現在CU、またはHEVCでは、PUとTUとの重複部分)についての予測ブロックを生成するために、そのコンポーネント(例えば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測に対して、動き推定ユニット222は、1つ以上の参照ピクチャ(例えば、DPB218中に記憶された1つ以上の以前にコード化されたピクチャ)中の1つ以上の密接に一致する参照ブロックを識別するために動きサーチを実行し得る。特に、動き推定ユニット222は、例えば、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、これらに類するものにしたがって、潜在的参照ブロックが現在ブロックにどれだけ類似しているかを表す値を計算し得る。動き推定ユニット222は、一般に、現在ブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用してこれらの計算を実行し得る。動き推定ユニット222は、現在ブロックに最も密接に一致する参照ブロックを示す、これらの計算の結果として生じる最低値を有する参照ブロックを識別し得る。
【0088】
[0094] 動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対する参照ピクチャ中の参照ブロックの位置を定義する1つ以上の動きベクトル(MV:motion vector)を形成し得る。動き推定ユニット222は次いで、動き補償ユニット224に動きベクトルを提供し得る。例えば、単方向インター予測に対して、動き推定ユニット222は、単一の動きベクトルを提供し得る一方で、双方向インター予測に対して、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は次いで、動きベクトルを使用して予測ブロックを生成し得る。例えば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルがわずかなサンプル精度を有する場合、動き補償ユニット224は、1つ以上の補間フィルタにしたがって、予測ブロックに対する値を補間し得る。さらに、双方向インター予測に対して、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックに対するデータを取り出し、例えば、サンプル毎の平均化または重み付き平均化を通して、取り出されたデータを組み合わせ得る。
【0089】
[0095] 別の例として、イントラ予測、またはイントラ予測コーディングに対して、イントラ予測ユニット226は、現在ブロックに近隣するサンプルから予測ブロックを生成し得る。例えば、方向性モードに対して、イントラ予測ユニット226は、一般的に、現在ブロックに渡る定義された方向で、隣接するサンプルの値を数学的に組み合わせ、これらの計算された値を格納して、予測ブロックを作り出すことができる。別の例として、DCモードに対して、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックの各サンプルについてこの結果として得られる平均を含むように予測ブロックを生成し得る。
【0090】
[0096] モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生のコード化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプル毎の差分を計算する。結果として生じるサンプル毎の差分は、現在ブロックについての残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差ブロック中のサンプル値間の差分を決定し、残差差分パルスコード変調(RDPCM:residual differential pulse code modulation)を使用して、残差ブロックを生成し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実行する1つ以上の減算器回路を使用して形成され得る。
【0091】
[0097] モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関連付けられ得る。ビデオエンコーダ200およびビデオデコーダ300は、様々なサイズを有するPUをサポートし得る。上述のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得、PUのサイズは、PUのルーマ予測ユニットのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対して、2N×2NまたはN×NというPUサイズを、インター予測に対しては、2N×2N、2N×N、N×2N、N×N、または同様のものの対称PUサイズをサポートし得る。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測に対して、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズについての非対称区分をサポートし得る。
【0092】
[0098] モード選択ユニット202がCUをPUに更に区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
【0093】
[0099] イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技術に対して、いくつかの例として、モード選択ユニット202は、コーディング技術に関連するそれぞれのユニットを介して、エンコードされている現在ブロックについての予測ブロックを生成する。パレットモードコーディングなどのいくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築する方法を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、エンコードされるように、エントロピーエンコーディングユニット220にこれらのシンタックス要素を提供し得る。
【0094】
[0100] 上述されたように、残差生成ユニット204は、現在ブロックと対応する予測ブロックとについてのビデオデータを受信する。残差生成ユニット204は次いで、現在ブロックについての残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプル毎の差分を計算する。
【0095】
[0101] 変換処理ユニット206は、変換係数のブロック(ここでは「変換係数ブロック(transform coefficient block)」と呼ばれる)を生成するために、残差ブロックに1つ以上の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。例えば、変換処理ユニット206は、残差ブロックに、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に類似した変換を適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、例えば、回転変換などの1次変換および2次変換を実行し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
【0096】
[0102] 量子化ユニット208は、量子化変換係数ブロックを作り出すために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP:quantization parameter)値にしたがって変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ202は(例えば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、このことから、量子化変換係数は、変換処理ユニット206によって作り出された元の変換係数よりも低い精度を有し得る。
【0097】
[0103] 逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度の歪みを有するが)現在ブロックに対応する再構築されたブロックを作り出し得る。例えば、再構築ユニット214は、再構築されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに再構築された残差ブロックのサンプルを追加し得る。
【0098】
[0104] フィルタユニット216は、再構築されたブロックに対して1つ以上のフィルタ動作を実行し得る。例えば、フィルタユニット216は、デブロッキング動作を実行して、CUのエッジに沿ったブロッキネスアーティファクト(blockiness artifact)を低減させ得る。いくつかの例では、フィルタユニット216の動作は、スキップされ得る。本開示の技術によれば、フィルタユニット216は、適応ループフィルタ(ALF)パラメータと、関連する時間レイヤ識別子(ID)値とを含むアレイを維持し得る。アレイは、N個の要素の予め定められたサイズを有することができ、Nは非負の整数値である。アレイは、上述の表1の例に準拠し得る。
【0099】
[0105] このようにして、現在時間レイヤ(current temporal layer)の現在ピクチャのビデオデータのデコードされたブロックのフィルタリングを実行するとき、フィルタユニット216は、同じまたはより低い時間レイヤからのものである、アレイからのALFパラメータを使用し得る。特に、フィルタユニット216は、アレイ要素の時間レイヤIDを現在ピクチャのための現在時間レイヤID値(current temporal layer ID value)と比較し、現在ピクチャのデコードされたブロックをフィルタリングするために使用されるべき現在時間レイヤID値以下である時間レイヤIDを有するALFパラメータのみを選択し得る。
【0100】
[0106] フィルタユニット216は、デコーディング順序または他の予め定められた順序でアレイにALFパラメータを記憶し得る。したがって、フィルタユニット216は、先入れ先出し(FIFO)方式でアレイ中の既存のALFパラメータを置き換えるか、またはアレイからの特定の時間レイヤにおけるALFパラメータの除去を優先させ得る。
【0101】
[0107] フィルタユニット216は、現在ピクチャのために使用されるべきアレイ中のあるALFパラメータを決定し、現在ピクチャをフィルタリングするときにALFパラメータのうちのどれが使用されるかを表す値をシグナリングし得る。フィルタユニット216は、これらの値をエントロピーエンコーディングユニット220に提供することができ、エントロピーエンコーディングユニット220は、単進符号を使用して値をエンコーディングすることができる。
【0102】
[0108] ビデオエンコーダ200は、DPB218中に再構築されたブロックを記憶する。例えば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216が、フィルタリングされた再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222および動き補償ユニット224は、後にエンコードされるピクチャのブロックをインター予測するために、再構築された(および潜在的にフィルタリングされた)ブロックから形成された参照ピクチャをDPB218から取り出し得る。加えて、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築されたブロックを使用し得る。
【0103】
[0109] 一般に、エントロピーエンコーディングユニット220は、ビデオエンコーダ200の他の機能的コンポーネントから受信されたシンタックス要素をエントロピーエンコードし得る。例えば、エントロピーエンコーディングユニット220は、量子化ユニット208からの量子化変換係数ブロックをエントロピーエンコードし得る。別の例として、エントロピーエンコーディングユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピーエンコードし得る。エントロピーエンコーディングユニット220は、エントロピーエンコードされたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つ以上のエントロピーエンコーディング動作を実行し得る。例えば、エントロピーエンコーディングユニット220は、データに、コンテキスト適応可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースのコンテキスト適応2値算術コードディング(SBAC)動作、確率区間区分化エントロピー(PIPE)コーディング動作、指数ゴロムエンコーディング動作、または、別のタイプのエントロピーエンコーディング動作を実行してもよい。
いくつかの例では、エントロピーエンコーディングユニット220は、シンタックス要素がエントロピーエンコードされないバイパスモードで動作し得る。
【0104】
[0110] ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピーエンコードされたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピーエンコーディングユニット220はビットストリームを出力し得る。
【0105】
[0111] 上述された動作は、ブロックに関して説明される。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であると理解されるべきである。上述のように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマコンポーネントおよびクロマコンポーネントである。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマコンポーネントおよびクロマコンポーネントである。
【0106】
[0112] いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックのために繰り返される必要はない。1つの例として、ルーマコーディングブロックのための動きベクトル(MV)および参照ピクチャを識別するための動作は、クロマブロックのためのMVおよび参照ピクチャを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックについて同じであり得る。
【0107】
[0113] ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路内で実現される1つ以上の処理ユニットとを含む、ビデオデータをエンコードするように構成されたデバイスの一例を表し、1つ以上の処理ユニットは、適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶し、Nは正の整数値であり、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することを備え、ビデオデータの1つ以上のブロックをデコードし、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングするように構成される。
【0108】
[0114] 図6は、本開示の技術を実行し得る例示的なビデオデコーダ300を図示するブロック図である。図6は、説明を目的で提供されており、本開示で広く実証され、説明されているような技術に限定されない。説明を目的として、本開示は、JEM、VVC、およびHEVCの技術にしたがってビデオデコーダ300を説明する。しかしながら、本開示の技術は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実行され得る。
【0109】
[0115] 図6の例では、ビデオデコーダ300は、コード化されたピクチャバッファ(CPB:coded picture buffer)メモリ320、エントロピーデコーディングユニット302、予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、フィルタユニット312、デコードされたピクチャバッファ(DPB:decoded picture buffer)314を含む。予測処理ユニット304は、動き補償ユニット316およびイントラ予測ユニット318を含む。予測処理ユニット304は、他の予測モードに従って予測を実行するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、またはこれらに類するものを含み得る。他の例では、ビデオデコーダ300は、より多い、より少ない、または異なる機能的コンポーネントを含み得る。
【0110】
[0116] CPBメモリ320は、ビデオデコーダ300のコンポーネントによってデコードされることになる、エンコードされたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されたビデオデータは、例えば、コンピュータ読取可能媒体110(図3)から取得され得る。CPBメモリ320は、エンコードされたビデオビットストリームからのエンコードされたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コード化されたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、一般に、エンコードされたビデオビットストリームの後続のデータまたはピクチャをデコードするときに、ビデオデコーダ300が参照ビデオデータとして出力および/または使用し得るデコードされたピクチャを記憶する。CPBメモリ320およびDPB314は、同期動的ランダムアクセスメモリ(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのうちのいずれかによって形成され得る。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他のコンポーネントとともにオンチップであり得るか、これらのコンポーネント対してオフチップであり得る。
【0111】
[0117] 追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(図3)からコード化されたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320を用いて上述したようにデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の処理回路によって実行されることになるソフトウェアにおいてビデオデコーダ300の機能性のうちのいくつかまたは全てが実現されるとき、ビデオデコーダ300によって実行されることになる命令を記憶し得る。
【0112】
[0118] 図6に示された様々なユニットは、ビデオデコーダ300によって実行される動作の理解を助けるために図示される。それらユニットは、固定機能回路、プログラマブル回路、またはそれらの組み合わせとして実現され得る。図5と同様に、固定機能回路は、特定の機能性を提供する回路を指し、実行されることができる動作に予め設定される。プログラマブル回路は、様々なタスクを実行するようにプログラムされることができる回路を指し、実行されることができる動作において柔軟な機能性を提供する。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義された方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実行する動作のタイプは、一般に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、1つ以上のユニットは、集積回路であり得る。
【0113】
[0119] ビデオデコーダ300は、プログラマブル回路から形成された、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブルコアを含み得る。ビデオデコーダ300の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップまたはオフチップメモリが、ビデオデコーダ300が受信および実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶し得る。
【0114】
[0120] エントロピーデコーディングユニット302は、CPBからエンコードされたビデオデータを受信し、シンタックス要素を再び作り出すためにビデオデータをエントロピーデコードし得る。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、およびフィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、デコードされたビデオデータを生成し得る。
【0115】
[0121] 一般に、ビデオデコーダ300は、ブロック毎のベースでピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築動作を実行し得る(ここで、現在再構築されている、即ち、デコードされているブロックは、「現在ブロック」と呼ばれ得る)。
【0116】
[0122] エントロピーデコーディングユニット302は、量子化変換係数ブロックの量子化変換係数を定義するシンタックス要素、並びに量子化パラメータ(QP)および/または変換モード表示などの変換情報をエントロピーデコードし得る。逆量子化ユニット306は、量子化変換係数ブロックに関連付けられたQPを使用して、量子化の程度を、そして、同様に逆量子化ユニット306が適用する逆量子化の程度を決定し得る。逆量子化ユニット306は、例えば、ビット単位の左シフト演算を実行して、量子化変換係数を逆量子化し得る。逆量子化ユニット306は、それによって、変換係数を含む変換係数ブロックを形成し得る。
【0117】
[0123] 逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つ以上の逆変換を適用し得る。例えば、逆変換処理ユニット308は、変換係数ブロックに逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を適用し得る。
【0118】
[0124] 更に、予測処理ユニット304は、エントロピーデコーディングユニット302によってエントロピーデコードされた予測情報シンタックス要素に従って予測ブロックを生成する。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット316は、予測ブロックを生成し得る。このケースでは、予測情報シンタックス要素は、参照ブロックを取り出すべきDPB314中の参照ピクチャとともに、現在ピクチャ中の現在ブロックのロケーションに対する、参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、一般に、動き補償ユニット224(図5)に関して説明されたのと実質的に同様の方法でインター予測プロセスを実行し得る。
【0119】
[0125] 別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、一般に、イントラ予測ユニット226(図5)に関して説明されたのと実質的に同様の方法でイントラ予測プロセスを実行し得る。イントラ予測ユニット318は、DPB314から現在ブロックに近隣するサンプルのデータを取り出し得る。
【0120】
[0126] 再構築ユニット310は、予測ブロックおよび残差ブロックを使用して現在ブロックを再構築し得る。例えば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを追加し得る。
【0121】
[0127] フィルタユニット312は、再構築されたブロックに対して1つ以上のフィルタ動作を実行し得る。例えば、フィルタユニット312は、デブロッキング動作を実行して、再構築されたブロックのエッジに沿ったブロッキネスアーティファクトを低減させ得る。フィルタユニット312の動作は、必ずしも全ての例において実行されるわけではない。本開示の技術によれば、フィルタユニット312は、適応ループフィルタ(ALF)パラメータと、関連する時間レイヤ識別子(ID)値とを含むアレイを維持し得る。アレイは、N個の要素の予め定められたサイズを有することができ、Nは非負の整数値である。アレイは、上述の表1の例に準拠し得る。
【0122】
[0128] このようにして、現在時間レイヤの現在ピクチャのビデオデータのデコードされたブロックのフィルタリングを実行するとき、フィルタユニット312は、同じまたはより低い時間レイヤからのものである、アレイからのALFパラメータを使用し得る。特に、フィルタユニット312は、アレイ要素の時間レイヤIDを現在ピクチャのための現在時間レイヤID値と比較し、現在ピクチャのデコードされたブロックをフィルタリングするために使用されるべき現在時間レイヤID値以下である時間レイヤIDを有するALFパラメータのみを選択し得る。
【0123】
[0129] フィルタユニット312は、デコーディング順序または他の予め定められた順序でアレイにALFパラメータを記憶し得る。したがって、フィルタユニット312は、先入れ先出し(FIFO)方式でアレイ中の既存のALFパラメータを置き換えるか、またはアレイからの特定の時間レイヤにおけるALFパラメータの除去を優先させ得る。
【0124】
[0130] いくつかの例では、エントロピーデコーディングユニット302は、現在ピクチャをフィルタリングするときにどのALFパラメータが使用されるべきかを表す値(たとえば、単進符号化値)をエントロピーデコードし得る。エントロピーデコーディングユニット302は、これらの値をフィルタユニット312に提供することができ、フィルタユニット210は、値から現在ピクチャに使用されるべきアレイ中のALFパラメータを決定することができる。
【0125】
[0131] ビデオデコーダ300は、DPB314中にフィルタリングされた、再構築されたブロックを記憶し得る。上述されたように、DPB314は、予測処理ユニット304に、イントラ予測のための現在ピクチャと後続の動き補償のための以前にデコードされたピクチャとのサンプルなどの参照情報を提供し得る。さらに、ビデオデコーダ300は、図3のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、デコードされたピクチャをDPBから出力し得る。
【0126】
[0132] このようにして、ビデオデコーダ300は、ビデオデータを記憶するように構成されたメモリと、回路中で実現される1つ以上の処理ユニットとを含むビデオデコーディングデバイスの例を表し、1つ以上の処理ユニットは、適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶し、Nは正の整数値であり、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することを備え、ビデオデータの1つ以上のブロックをデコードし、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングするように構成される。
【0127】
[0133] 図7は、この開示の技術にしたがった、ビデオデータをデコーディングおよびフィルタリングする例示的な方法を図示するフローチャートである。図7は、説明の目的のために、図6のビデオデコーダ300に関連して説明される。しかしながら、他のビデオコーディングデバイスがこの方法または類似の方法を実行するように構成され得ることを理解すべきである。たとえば、ビデオエンコーダ200は、ビデオデータのブロックをデコードする前に、ビデオデータのブロックをエンコードすることを含む同様の方法を実行し得、デコーディングおよびフィルタリングは、ビデオエンコーダ200の動き補償ユニット224、イントラ予測ユニット226、逆量子化ユニット210、逆変換処理ユニット212、再構築ユニット214、およびフィルタユニット216によって実行される。
【0128】
[0134] 最初に、ビデオデコーダ300は、N個の要素のアレイを例示し得(350)、ここで、Nは非負の整数値である。ビデオデコーダ300は、たとえば、DPB314を含むメモリ、フィルタユニット312のメモリ、またはビデオデコーダ300内の他のメモリ中でアレイを例示し得る。一般に、「メモリ」への言及は、これらのメモリのうちのいずれかまたはすべて、あるいは図3のメモリ120などのビデオデコーダ300の外部のメモリを含むものとして理解されるべきである。
【0129】
[0135] ビデオデコーダ300は、アレイの要素中に適応ループフィルタ(ALF)パラメータを記憶し得る(352)。特に、上記の表1に示すように、ビデオデコーダ300は、ALFパラメータとともにそれぞれの時間レイヤ識別子(ID)値を記憶することとあわせて、アレイの要素(すなわち、セル)中に実際のALFパラメータを記憶し得る(354)。すなわち、時間レイヤID値は、ALFパラメータが推定される、または推定されるべきピクチャの時間レイヤID値を示す。
【0130】
[0136] ビデオデコーダ300は、次いで、現在時間レイヤ中の現在ピクチャの1つ以上のブロックをデコードし得る(356)。たとえば、ビデオデコーダ300は、動き補償ユニット316によって実行されるインター予測、および/またはイントラ予測ユニット318によって実行されるイントラ予測を使用してブロックを予測し、予測ブロックを形成し得る。ビデオデコーダ300はまた、逆量子化ユニット306および逆変換処理ユニット308を使用して、量子化変換係数を逆量子化および逆変換し、残差サンプルを含む残差ブロックを形成し得る。再構築ユニット310は、次いで、現在ピクチャのためのデコードされたブロックを形成するために、サンプル毎のベースで残差ブロックを対応する予測ブロックと結合し得る。
【0131】
[0137] フィルタユニット312は、次いで、現在ピクチャのデコードされたブロックの適応ループフィルタリングを実行し得る。特に、本開示の技術によれば、フィルタユニット312は、現在ピクチャのための現在時間レイヤIDを決定し、デコードされたブロックに実行されるフィルタリングプロセスに対して現在時間レイヤID以下の時間レイヤIDを有するアレイのALFパラメータを決定し得る。フィルタユニット312は次いで、決定されたALFパラメータを使用して、デコードされたブロックをフィルタリングする(360)。このようにして、ビデオデコーダ300は、現在時間レイヤIDよりも高い時間レイヤIDを有するピクチャのALFパラメータを現在ピクチャのデコードされたブロックに適用することを回避し得る。
【0132】
[0138] ビデオデコーダ300は、フィルタリングされ、デコードされたブロックをDPB314中に記憶し得る(362)。ビデオデコーダ300は、最終的に、フィルタリングされ、デコードされたブロックを含むデコードされたピクチャを出力し、また、デコードされたピクチャを、後にデコードされるべきピクチャのための参照ピクチャとして使用し得る。ビデオデコーダ300は、デコードされたビデオデータ、たとえば、ビットストリームのデコードされたパラメータおよび/またはデコードされたピクチャ自体から決定されたデータを使用して、アレイ中のALFパラメータを更新し得る。
【0133】
[0139] いくつかのケースでは、アレイにALFパラメータを追加することは、バッファのNのサイズを超え得る。そのようなケースでは、ビデオデコーダ300は、たとえば、先入れ先出し(FIFO)方式で、バッファから既存のパラメータを除去し得る。したがって、ビデオデコーダ300は、アレイから最も古いALFパラメータを除去し、除去された最も古いALFパラメータの代わりに最新のALFパラメータを追加し得る。
【0134】
[0140] このようにして、図7の方法は、適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶することを含む、ビデオデータをデコードする方法の一例を表し、Nは正の整数値であり、ここで、ALFパラメータのセットを記憶することは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することと、ビデオデータの1つ以上のブロックをデコードすることと、1次元アレイのALFパラメータを使用して、1つ以上のブロックをフィルタリングすることとを備える。
【0135】
[0141] 例に依存して、ここで説明された技術のうちのいずれかのある動作またはイベントは、異なるシーケンスで実行されることができ、追加、統合、または完全に省略され得る(例えば、全ての説明された動作またはイベントが、それら技術の実施のために必要なわけではない)ことが認識されるべきである。その上、ある例では、動作またはイベントは、連続によりもむしろ、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサを通じて、同時に実行され得る。
【0136】
[0142] 1つ以上の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実現され得る。ソフトウェアにおいて実現される場合、それら機能は、1つ以上の命令またはコードとして、コンピュータ読取可能媒体上に記憶され得るか、またはコンピュータ読取可能媒体を通して送信され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ読取可能媒体は、たとえば、通信プロトコルにしたがって、コンピュータプログラムの1つの場所から別の場所への転送を容易にするあらゆる媒体を含む通信媒体、またはデータ記憶媒体のような有体の媒体に対応するコンピュータ読取可能記憶媒体を含み得る。このように、コンピュータ読取可能媒体は、概して、(1)非一時的である有体のコンピュータ読取可能記憶媒体、または(2)信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示に説明された技術のインプリメンテーションのための命令、コードおよび/またはデータ構造を取り出すために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ読取可能媒体を含むことができる。
【0137】
[0143] 限定ではなく例として、このようなコンピュータ読取可能記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶するために使用でき、コンピュータによってアクセスされることができる他の何らかの媒体を備えることができる。また、任意の接続は、厳密にはコンピュータ読取可能媒体と称される。たとえば、命令が、ウェブサイトから、サーバから、あるいは同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波のようなワイヤレステクノロジーを使用する他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ読取可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象にすることが理解されるべきである。ここで使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)(disc)、レーザーディスク(登録商標)(disc)、光学ディスク(disc)、デジタル多用途ディスク(DVD)(disc)、フロッピー(登録商標)ディスク(disk)、ブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は通常はデータを磁気的に再生する一方で、ディスク(disc)は通常はデータをレーザで光学的に再生する。上記の組合せもまた、コンピュータ読取可能媒体の範囲内に含まれるべきである。
【0138】
[0144] 命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または、他の同等な集積またはディスクリート論理回路、のような1つ以上のプロセッサによって実行されうる。したがって、ここで使用されるように、「プロセッサ」および「処理回路」という用語は、前述の構造、またはここで説明される技術のインプリメンテーションに適した他の何らかの構造のいずれかを指し得る。加えて、いくつかの態様では、ここで説明されている機能性は、エンコーディングおよびデコーディングのために構成された専用ハードウェアモジュールおよび/またはソフトウェアモジュール内で提供され得るか、あるいは組み合わせられたコーデックに組み込まれ得る。また、技術は、1つ以上の回路あるいは論理要素において十分に実現され得る。
【0139】
[0145] 本開示の技術は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い種類のデバイスまたは装置において実行されうる。様々なコンポーネント、モジュール、またはユニットは、本開示では、開示された技術を実行するように構成されたデバイスの機能的な態様を強調するように説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上で説明されたように、様々なユニットがコーデックハードウェアユニットで組み合わせられ得るか、あるいは適したソフトウェアおよび/またはファームウェアとともに、上で説明されたような1つ以上のプロセッサを含む、相互動作可能ハードウェアユニットの集合によって提供され得る。
【0140】
[0146] 様々な例を説明してきた。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをデコードする方法であって、
適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶することと、Nは正の整数値であり、ここで、前記ALFパラメータのセットを記憶することは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、前記対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することを備え、
ビデオデータの1つ以上のブロックをデコードすることと、
前記1次元アレイの前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングすることとを備える、方法。
[C2]
前記ALFパラメータのセットを記憶することは、BスライスまたはPスライスのうちの少なくとも1つから前記ALFパラメータを記憶することを備える、C1に記載の方法。
[C3]
前記ALFパラメータのセットを記憶することは、決定された順序(determined order)で前記ALFパラメータのセットを記憶することを備える、C1に記載の方法。
[C4]
前記決定された順序は、デコーディング順序を備える、C3に記載の方法。
[C5]
ALFパラメータの新しいセットが受信され、前記N個のメモリ要素のすべてが使用されるとき、前記方法は、
前記メモリ要素のうちの1つから1つのエントリを除去することと、
前記ALFパラメータの新しいセットを前記メモリ要素のうちの1つに記憶することとをさらに備える、C3に記載の方法。
[C6]
前記1つのエントリを除去することは、先入れ先出し(FIO)順序に従って、前記メモリ要素のうちの1つを選択することを備える、C5に記載の方法。
[C7]
前記1つのエントリを除去することは、前記メモリ要素のうちの1つが前記ALFパラメータの新しいセットの時間ID値と共通の時間ID値を有するように、前記メモリ要素のうちの1つを選択することを備える、C5に記載の方法。
[C8]
前記ALFパラメータのセットのうちのどれが前記フィルタリングのために使用されるべきかを表す値を有する以前のインデックス変数(index variable)を維持することをさらに備える、C1に記載の方法。
[C9]
前記以前のインデックス変数は、単進符号フォーマット(unary code format)を有する、C8に記載の方法。
[C10]
前記以前のインデックス変数の値は、0からN-1までの範囲である、C8に記載の方法。
[C11]
前記1つ以上のブロックは、現在時間ID(current temporal ID)を有するピクチャに含まれ、フィルタリングすることは、前記現在時間ID以下の時間IDを有する前記アレイに含まれる前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングすることを備える、C8に記載の方法。
[C12]
コード化されている現在ピクチャの時間IDに従って、前記アレイのエントリを表す値をコーディングすることをさらに備える、C8に記載の方法。
[C13]
前記ビデオデータを含むビットストリームからピクチャが失われたことを検出することと、
失われた前記ピクチャに対してALFパラメータの事前構成されたセットを追加することとをさらに備える、C1に記載の方法。
[C14]
前記ビデオデータの後続のイントラ予測ピクチャ(Iピクチャ)をコード化した後まで、前記ALFパラメータのセットのうちの1つ以上の除去を防止することをさらに備える、C1に記載の方法。
[C15]
前記1つ以上のブロックをデコードする前に、前記1つ以上のブロックをエンコードすることをさらに備える、C1に記載の方法。
[C16]
ビデオデータをデコードするデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
回路中で実現される1つ以上のプロセッサとを備え、
前記1つ以上のプロセッサは、
適応ループフィルタ(ALF)パラメータのセットを、前記メモリ中の1次元アレイに記憶し、前記1次元アレイはN個のメモリ要素の予め定められたサイズを有し、Nは正の整数値であり、ここで、前記1つ以上のプロセッサは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、前記対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶するように構成され、
前記ビデオデータの1つ以上のブロックをデコードし、
前記1次元アレイの前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングするように構成される、デバイス。
[C17]
前記1つ以上のプロセッサは、デコーディング順序で前記ALFパラメータのセットを記憶するように構成される、C16に記載のデバイス。
[C18]
ALFパラメータの新しいセットが受信され、前記N個のメモリ要素のすべてが使用されるとき、前記1つ以上のプロセッサは、
先入れ先出し(FIFO)順序に従って、前記メモリ要素のうちの1つを選択し、
選択された前記メモリ要素のうちの1つを除去し、
前記ALFパラメータの新しいセットを前記選択された前記メモリ要素のうちの1つに記憶するように構成される、C17に記載のデバイス。
[C19]
前記1つ以上のプロセッサは、前記ALFパラメータのセットのうちのどれが前記フィルタリングのために使用されるべきかを表す値を有する以前のインデックス変数を維持するように構成される、C16に記載のデバイス。
[C20]
前記1つ以上のブロックは、現在時間IDを有するピクチャに含まれ、前記1つ以上のプロセッサは、前記現在時間ID以下の時間IDを有する前記アレイに含まれる前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングするように構成される、C19に記載のデバイス。
[C21]
前記1つ以上のプロセッサは、コード化されている現在ピクチャの時間IDに従って、前記アレイのエントリを表す値をコード化するようにさらに構成される、C19に記載のデバイス。
[C22]
前記1つ以上のプロセッサは、前記1つ以上のブロックをデコードする前に、前記1つ以上のブロックをエンコードするようにさらに構成される、C16に記載のデバイス。
[C23]
前記ビデオデータを表示するように構成されたディスプレイをさらに備える、C16に記載のデバイス。
[C24]
前記デバイスは、カメラ、コンピュータ、移動体デバイス、ブロードキャスト受信機デバイス、または、セットトップボックスのうちの1つ以上を備える、C16に記載のデバイス。
[C25]
命令を記憶しているコンピュータ読取可能記憶媒体であって、
前記命令が実行されるとき、プロセッサに、
適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶させ、Nは正の整数値であり、ここで、前記ALFパラメータのセットを記憶させることは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、前記対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶させることを備え、
ビデオデータの1つ以上のブロックをデコードさせ、
前記1次元アレイの前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングさせる、コンピュータ読取可能記憶媒体。
[C26]
前記プロセッサに、デコーディング順序で前記ALFパラメータのセットを記憶させる命令をさらに備える、C25に記載のコンピュータ読取可能記憶媒体。
[C27]
前記プロセッサに、前記ALFパラメータのセットのうちのどれが前記フィルタリングのために使用されるべきかを表す値を有する以前のインデックス変数を維持させる命令をさらに備える、C25に記載のコンピュータ読取可能記憶媒体。
[C28]
前記プロセッサに、前記1つ以上のブロックをデコードする前に、前記1つ以上のブロックをエンコードさせる命令をさらに備える、C25に記載のコンピュータ読取可能記憶媒体。
[C29]
ビデオデータをデコードするデバイスであって、
適応ループフィルタ(ALF)パラメータのセットを、N個のメモリ要素の予め定められたサイズを有する1次元アレイに記憶する手段と、Nは正の整数値であり、ここで、前記ALFパラメータのセットを記憶することは、アレイのメモリ要素のうちの1つ以上に、対応するALFパラメータと、前記対応するALFパラメータが推定される時間レイヤを示す時間レイヤ識別子(ID)値との両方を記憶することを備え、
ビデオデータの1つ以上のブロックをデコードする手段と、
前記1次元アレイの前記ALFパラメータを使用して、前記1つ以上のブロックをフィルタリングする手段とを備える、デバイス。
[C30]
前記ビデオデータの1つ以上のブロックをデコードする前に、前記ビデオデータの1つ以上のブロックをエンコードする手段をさらに備える、C29に記載のデバイス。
図1
図2
図3
図4A
図4B
図5
図6
図7