(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-22
(54)【発明の名称】ビデオコーディングのための方法、コンピューティングシステム、及びコンピュータプログラム
(51)【国際特許分類】
H04N 19/109 20140101AFI20250115BHJP
H04N 19/157 20140101ALI20250115BHJP
H04N 19/176 20140101ALI20250115BHJP
H04N 19/46 20140101ALI20250115BHJP
H04N 19/52 20140101ALI20250115BHJP
H04N 19/58 20140101ALI20250115BHJP
【FI】
H04N19/109
H04N19/157
H04N19/176
H04N19/46
H04N19/52
H04N19/58
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024538352
(86)(22)【出願日】2023-05-12
(85)【翻訳文提出日】2024-06-24
(86)【国際出願番号】 US2023066958
(87)【国際公開番号】W WO2023239992
(87)【国際公開日】2023-12-14
(32)【優先日】2022-06-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2023-05-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】ガオ,ハン
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】ジャオ,リアン
(72)【発明者】
【氏名】リウ,シャン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LC09
5C159MA05
5C159NN10
5C159NN11
5C159NN21
5C159RC12
5C159TA61
5C159TB08
5C159TC25
5C159TC41
5C159TC42
5C159UA02
5C159UA05
5C159UA33
(57)【要約】
ここに記載される様々な実装は、現在コーディングブロックを復号するための方法及びシステムを含む。一態様において、方法は、1つ以上の動きベクトル(MV)候補を参照MVバンクから取り出すことを含む。当該方法は、第1の条件が満たされるとの判定に従って、現在コーディングブロックに関連付けられたMVPリストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入された後に挿入することを含む。当該方法は、第1の条件が満たされないとの判定に従って、現在コーディングブロックに関連付けられたMVPリストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入される前に挿入することを含む。当該方法は、MVPリストに基づいて現在コーディングブロックを予測することを含む。
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサとメモリとを有するコンピューティングシステムが実行する、現在コーディングブロックをコーディングするための方法であって、
1つ以上の動きベクトル(MV)候補を参照MVバンクから取り出すステップと、
第1の条件が満たされるとの判定に従って、前記現在コーディングブロックに関連付けられた動きベクトル予測(MVP)リストに、前記参照MVバンクからの前記1つ以上のMV候補を、導出されたMV候補が前記MVPリストに挿入された後に挿入するステップと、
前記第1の条件が満たされないとの判定に従って、前記現在コーディングブロックに関連付けられた前記MVPリストに、前記参照MVバンクからの前記1つ以上のMV候補を、前記導出されたMV候補が前記MVPリストに挿入される前に挿入するステップと、
前記MVPリストに基づいて前記現在コーディングブロックを予測するステップと、
を有する方法。
【請求項2】
前記1つ以上のMV候補は、前記現在コーディングブロックに隣接する空間隣接ブロックから導出された空間MV予測子(SMVP)を含む、請求項1に記載の方法。
【請求項3】
前記第1の条件は、Nは8以上の整数であるとして、
前記現在コーディングブロックがNルマサンプル以上の幅を持つという条件、及び
前記現在コーディングブロックがNルマサンプル以上の高さを持つという条件、
のうちの少なくとも一方を有する、請求項1に記載の方法。
【請求項4】
前記第1の条件は、Nは8以上の整数であるとして、
前記現在コーディングブロックがNルマサンプル以上の幅を持つという第1のサブ条件、及び
前記現在コーディングブロックがNルマサンプル以上の高さを持つという第2のサブ条件、
を含む、請求項1に記載の方法。
【請求項5】
前記第1の条件が満たされないとき、前記MVPリストは、隣接SMVP、並べ替えられた一連のMV候補、時間動きベクトル予測子(TMVP)候補、非隣接SMVP候補、前記参照MV候補バンクからの第2の候補、及び導出された候補という順番を有する、請求項1に記載の方法。
【請求項6】
前記第1の条件は、前記現在コーディングブロックの幅と前記現在コーディングブロックの高さとの積がN×N以上であるという条件を有し、Nは、ルマサンプルの数を表す整数であり、Nは8以上である、請求項1に記載の方法。
【請求項7】
前記第1の条件は、現在のMVコーディングモードが用語“NEAR”を含むという条件を有する、請求項1に記載の方法。
【請求項8】
前記第1の条件は、現在のMVコーディングモードが、前記コンピューティングシステムによって取得されたビデオストリームにおける各参照フレームリストについてNEARモードを有するという条件を有する、請求項1に記載の方法。
【請求項9】
前記第1の条件は、現在の動きモードが並進モードであるという条件を有する、請求項1に記載の方法。
【請求項10】
前記導出されたMV候補は、インター予測に基づく単一の参照フレームにおける動きベクトル、又は複合インター予測における複数の隣接参照フレームからの合成動きベクトルのいずれかから導出されたMV予測子である、請求項1に記載の方法。
【請求項11】
現在コーディングブロックをコーディングするためのコンピューティングシステムであって、
1つ以上のプロセッサと、
1つ以上のプログラムを格納したメモリと、
を有し、
前記1つ以上のプログラムは、前記1つ以上のプロセッサによって実行されるときに、前記1つ以上のプロセッサに請求項1乃至10のいずれか一項に記載の方法を実行させる、
コンピューティングシステム。
【請求項12】
コンピュータに請求項1乃至10のいずれか一項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、“Systems and Methods for Motion Vector Predictor List Improvements”と題して2023年5月11日に出願された米国特許出願第18/196,368号の継続出願であって、それに対する優先権を主張するものであり、また、“Motion Vector Predictor List Improvements”と題して2022年6月7日に出願された米国仮特許出願第63/349,754号に対する優先権を主張するものであり、それをその全体にてここに援用する。
【0002】
開示される実施形態は、概してビデオコーディングに関し、以下に限られないが、動きベクトル予測子リストの改善のためのシステム及び方法を含む。
【背景技術】
【0003】
デジタル映像は、例えばデジタルテレビ、ラップトップ若しくはデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録機器、デジタルメディアプレーヤ、ビデオゲームコンソール、スマートフォン、ビデオ遠隔会議機器、ビデオストリーミング機器などの様々な電子機器によってサポートされている。それらの電子機器は、通信ネットワークを横切ってデジタルビデオデータを送受信したり、その他の方法で通信したりして、デジタルビデオデータをストレージデバイスに格納する。通信ネットワークの限られた帯域幅容量及びストレージデバイスの限られたメモリリソースに起因して、ビデオデータが通信又は格納される前に、1つ以上のビデオコーディング標準に従ってビデオデータを圧縮するために、ビデオコーディングが使用され得る。
【0004】
複数のビデオコーデック標準が開発されてきた。例えば、ビデオコーディング標準は、AOMediaビデオ1(AV1)、バーサタイルビデオコーディング(VVC)、共同探索モデル(JEM)、ハイエフィシェンシービデオコーディング(HEVC/H.265)、アドバンストビデオコーディング(AVC/H.264)、及びムービングピクチャエキスパートグループ(MPEG)コーディングを含む。ビデオコーディングは、一般に、ビデオデータに生来的に備わる冗長性を活用する予測法(例えば、インター予測、イントラ予測、又はこれらに類するもの)を利用する。ビデオコーディングは、ビデオ品質への劣化を回避又は最小限に抑えながら、より低いビットレートを使用する形態へとビデオデータを圧縮することを狙いとする。
【0005】
H.265としても知られるHEVCは、MPEG-Hプロジェクトの一部として設計されたビデオ圧縮標準である。ITU-T及びISO/IECは、HEVC/H.265標準を2013年(バージョン1)、2014年(バージョン2)、2015年(バージョン3)、及び2016年(バージョン4)に公開した。H.266としても知られるバーサタイルビデオコーディング(VVC)は、HEVCの後継として意図されたビデオ圧縮標準である。ITU-T及びISO/IECは、VVC/H.266標準を2020年(バージョン1)及び2022年(バージョン2)に公開した。AV1は、HEVCの代替として設計されたオープンビデオコーディングフォーマットである。2019年1月8日に、仕様の正誤表付きの認証バージョン1.0.0がリリースされた。
【発明の概要】
【0006】
本開示は、動きベクトル予測(MVP)リストに基づいてビデオデータを復号するための改善された方法及びシステムを記述する。ビデオコーデック標準において、符号化又は復号されているブロックの動きベクトル予測の結果は、動きベクトルのリストである。このリストを形成することの主な考えは、現在ブロックについての動きベクトルは、高い確率で、それより前にコーディングされた隣接ブロックについての動きベクトルと殆ど差がなく、故に、それを予測として使用することができるというものである。現行では、MVPリスト内の動きベクトル(MV)候補を順序付けるプロセスは準最適であり、何故なら、より重要である(例えば、より正確な予測を生み出す)一部のMV候補が後ろの方の位置でリストに入れられるからである。また、所定の重み付けベースの並べ替えプロセスを用いて、隣接する空間MVP(SMVP)、時間MVP(TMVP)、及び非隣接SMVPのみを並べ替えており、これは、他のMV候補について準最適である。
【0007】
従って、ビデオデータを符号化及び復号するためのMVPリストを構築するための改善された方法及びシステムが望まれる。例えば、空間MV候補は、通常、組み合わされた(例えば、スケーリングされた)候補及びパディングされた候補(例えばゼロMVなど)よりも正確であるので、本開示の一部の態様によれば、1つ以上の条件が満たされるとき、参照MV候補バンクからの候補が、他のMV候補よりも前にMVPリストに挿入される。参照MV候補バンクからのMV候補は主に空間ネイバーからのものであるので、本開示は、より正確な動きベクトル予測を有する改善されたMVPリストを生成し、それにより、高められたコーディング効率をもたらす。
【0008】
一部の実施形態によれば、現在コーディングブロックを復号することを構築するための方法が、1つ以上のプロセッサ及びメモリを有するコンピューティングシステムにおいて実行される。当該方法は、1つ以上の動きベクトル(MV)候補を参照MVバンクから取り出すことを含む。当該方法は、第1の条件が満たされるとの判定に従って、現在コーディングブロックに関連付けられた動きベクトル予測子(MVP)リストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入された後に挿入することを含む。当該方法は、第1の条件が満たされないとの判定に従って、現在コーディングブロックに関連付けられたMVPリストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入される前に挿入することを含む。当該方法は、MVPリストに基づいて現在コーディングブロックを予測することを含む。
【0009】
一部の実施形態によれば、例えばストリーミングシステム、サーバシステム、パーソナルコンピュータシステム、又は他の電子機器などのコンピューティングシステムが提供される。当該コンピューティングシステムは、制御回路と、1つ以上の命令セットを格納したメモリとを含む。該1つ以上の命令セットは、ここに記載される方法のうちのいずれかを実行するための命令を含む。一部の実施形態において、当該コンピューティングシステムは、エンコーダコンポーネント及び/又はデコーダコンポーネントを含む。
【0010】
一部の実施形態によれば、非一時的コンピュータ読み取り可能記憶媒体が提供される。当該非一時的コンピュータ読み取り可能記憶媒体は、コンピューティングシステムによる実行のための1つ以上の命令セットを格納する。該1つ以上の命令セットは、ここに記載される方法のうちのいずれかを実行するための命令を含む。
【0011】
従って、映像を符号化及び復号するための方法とともに機器及びシステムが開示される。そのような方法、機器、及びシステムは、映像符号化/復号のための従来の方法、機器、及びシステムを補完したり置き換えたりすることができる。
【0012】
本明細書に記載される特徴及び利点は必ずしも包括的なわけではなく、特に、この開示にて提供される図面、明細書、及び特許請求の範囲に鑑みて当業者には幾つかの追加の特徴及び利点が明らかになる。また、留意されたいことには、本明細書で使用される言葉は、主に読みやすさ及び教示目的のために選択されており、必ずしもここで説明される主題を線引きしたり境界付けたりするために選択されているわけではない。
【図面の簡単な説明】
【0013】
より詳細に本開示が理解され得るように、様々な実施形態の特徴を参照することによって、より具体的な説明が行われ、それら実施形態のうちの一部が添付の図面に示される。しかしながら、添付の図面は、本開示の関連する特徴を単に例示するものであり、従って、必ずしも限定するものと見なされるべきではなく、説明のために、当業者がこの開示を読んで理解することになるような他の有効な特徴を認めることがある。
【
図1】一部の実施形態に従った通信システムの一例を示すブロック図である。
【
図2A】一部の実施形態に従ったエンコーダコンポーネントの要素例を示すブロック図である。
【
図2B】一部の実施形態に従ったデコーダコンポーネントの要素例を示すブロック図である。
【
図3】一部の実施形態に従ったサーバシステムの一例を示すブロック図である。
【
図4】一部の実施形態に従ったブロックパーティショニングを示している。
【
図5A】
図5A及び
図5Bは、一部の実施形態に従った、四分木(QT)+二分木(QTBT)構造を示している。
【
図5B】
図5A及び
図5Bは、一部の実施形態に従った、四分木(QT)+二分木(QTBT)構造を示している。
【
図6A】
図6A及び
図6Bは、一部の実施形態に従った三分木(TT)パーティショニングを示している。
【
図6B】
図6A及び
図6Bは、一部の実施形態に従った三分木(TT)パーティショニングを示している。
【
図7】一部の実施形態に従った、マージモード・ウィズ・動きベクトル差分(MMVD)向けの探索点の例を示している。
【
図8】一部の実施形態に従った、MV予測のために空間隣接ブロックを用いることを示している。
【
図9】一部の実施形態に従った、線形投影による動きフィールド推定を示している。
【
図10】一部の実施形態に従った、時間MV予測子を導出するためのブロック位置の使用を示している。
【
図11】一部の実施形態に従った、単一インター予測ブロックについての追加の動きベクトル候補生成を示している。
【
図12】一部の実施形態に従った、複合予測ブロックについての追加の動きベクトル候補生成を示している。
【
図13】一部の実施形態に従った、参照MV候補バンク更新プロセスを示している。
【
図14】一部の実施形態に従った、MVPリストを構築するためのプロセスを示している。
【
図15】一部の実施形態に従った、現在コーディングブロックを復号するための方法のフロー図である。
【0014】
一般的なやり方に従って、図面に示される様々なフィーチャは必ずしも一定の縮尺で描かれているわけではなく、また、明細書及び図面全体を通して同様のフィーチャを示すために同様の参照符号を使用することがある。
【発明を実施するための形態】
【0015】
本開示は、動きベクトル予測(MVP)リストに基づいて現在コーディングブロックを復号することを記述する。1つ以上の動きベクトル(MV)候補が参照MVバンクから取り出される。第1の条件が満たされるとき、参照MVバンクからのMV候補は、現在コーディングブロックに関連付けられたMVPリストに、導出されたMV候補がMVPリストに挿入された後に挿入される。第1の条件が満たされないとき、参照MVバンクからのMV候補は、現在コーディングブロックに関連付けられたMVPリストに、導出されたMV候補がMVPリストに挿入される前に挿入される。MVPリストに基づいて現在コーディングブロックが予測される。導出されたMV候補は、インター予測に基づく単一の参照フレームにおける(1つ以上の)動きベクトル、又は複合インター予測モードにおける複数の隣接参照フレームからの(1つ以上の)合成動きベクトル、のいずれかから導出されたMV予測子である。
【0016】
システム及び機器の例
図1は、一部の実施形態に従った通信システム100を示すブロック図である。通信システム100は、ソース機器102と、1つ以上のネットワークを介して互いに通信可能に結合された複数の電子機器120(例えば、電子機器120-1から電子機器120-m)とを含んでいる。一部の実施形態において、通信システム100は、例えば、ビデオ会議アプリケーション、デジタルTVアプリケーション、並びにメディアストレージ及び/又は配信アプリケーションなどのビデオ対応アプリケーションとともに使用するための、ストリーミングシステムである。
【0017】
ソース機器102は、ビデオソース104(例えば、カメラコンポーネント又はメディアストレージ)と、エンコーダコンポーネント106とを含んでいる。一部の実施形態において、ビデオソース104はデジタルカメラ(例えば、未圧縮ビデオサンプルストリームを作成するように構成される)である。エンコーダコンポーネント106は、ビデオストリームから1つ以上の符号化ビデオビットストリームを生成する。ビデオソース104からのビデオストリームは、エンコーダコンポーネント106によって生成された符号化ビデオビットストリーム108と比較して大きいデータ量であるとし得る。符号化ビデオビットストリーム108は、ビデオソースからのビデオストリームと比較してより小さいデータ量(より少ないデータ)であるので、符号化ビデオビットストリーム108は、ビデオソース104からのビデオストリームと比較して、伝送するために少ない帯域幅を必要とし、格納するために少ないストレージ空間を必要とする。一部の実施形態において、ソース機器102はエンコーダコンポーネント106を含まない(例えば、未圧縮ビデオデータを(1つ以上の)ネットワーク110に送信するように構成される)。
【0018】
1つ以上のネットワーク110は、ソース機器102、サーバシステム112、及び/又は電子機器120の間で情報を搬送する任意の数のネットワークを表し、例えば、ワイヤライン(有線)及び/又は無線通信ネットワークを含む。1つ以上のネットワーク110は、回線交換チャネル及び/又はパケット交換チャネルにおいてデータを交換することができる。代表的なネットワークは、遠距離通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又はインターネットを含む。
【0019】
1つ以上のネットワーク110は、サーバシステム112(例えば、分散/クラウドコンピューティングシステム)を含む。一部の実施形態において、サーバシステム112はストリーミングサーバ(例えば、ソース機器102からの符号化ビデオストリームなどのビデオコンテンツを格納及び/又は配信するように構成される)であるか、それを含むかである。サーバシステム112はコーダコンポーネント114(例えば、ビデオデータを符号化及び/又は復号するように構成される)を含む。一部の実施形態において、コーダコンポーネント114は、エンコーダコンポーネント及び/又はデコーダコンポーネントを含む。様々な実施形態において、コーダコンポーネント114は、ハードウェア、ソフトウェア、又はそれらの組み合わせとしてインスタンス化される。一部の実施形態において、コーダコンポーネント114は、符号化ビデオビットストリーム108を復号し、異なる符号化標準及び/又は方法を使用してビデオデータを再符号化して、符号化ビデオデータ116を生成するように構成される。一部の実施形態において、サーバシステム112は、符号化ビデオビットストリーム108から複数のビデオフォーマット及び/又は符号化を生成するように構成される。
【0020】
一部の実施形態において、サーバシステム112は、メディアアウェアネットワーク要素(Media-Aware Network Element;MANE)として機能する。例えば、サーバシステム112は、電子機器120のうちの1つ以上に対して潜在的に異なるビットストリームを仕立てるように、符号化ビデオビットストリーム108をプルーニングするように構成され得る。一部の実施形態では、サーバシステム112とは別個にMANEが設けられる。
【0021】
電子機器120-1は、デコーダコンポーネント122及びディスプレイ124を含んでいる。一部の実施形態において、デコーダコンポーネント122は、符号化ビデオデータ116を復号して、ディスプレイ又は他のタイプのレンダリングデバイス上でレンダリングされることができる出力ビデオストリームを生成するように構成される。一部の実施形態において、電子機器120のうちの1つ以上はディスプレイコンポーネントを含まない(例えば、外付けのディスプレイ機器に通信可能に結合され、及び/又はメディアストレージを含む)。一部の実施形態において、電子機器120はストリーミングクライアントである。一部の実施形態において、電子機器120は、サーバシステム112にアクセスして符号化ビデオデータ116を取得するように構成される。
【0022】
ソース機器及び/又は複数の電子機器120は、“端末機器”又は“ユーザ機器”と呼ばれることがある。一部の実施形態において、ソース機器102、及び/又は電子機器120のうちの1つ以上は、サーバシステム、パーソナルコンピュータ、ポータブル機器(例えば、スマートフォン、タブレット、又はラップトップ)、ウェアラブル機器、ビデオ会議機器、及び/又は他のタイプの電子機器のインスタンスである。
【0023】
通信システム100の動作例において、ソース機器102は符号化ビデオビットストリーム108をサーバシステム112に送信する。例えば、ソース機器102は、当該ソース機器によってキャプチャされたピクチャのストリームをコーディングし得る。サーバシステム112は、符号化ビデオビットストリーム108を受信し、コーダコンポーネント114を用いて符号化ビデオビットストリーム108を復号及び/又は符号化し得る。例えば、サーバシステム112は、ネットワーク伝送及び/又はストレージのためにいっそう最適な符号化をビデオデータに適用し得る。サーバシステム112は、符号化ビデオデータ116(例えば、1つ以上の符号化ビデオビットストリーム)を電子機器120のうちの1つ以上に送信し得る。各電子機器120は、符号化ビデオデータ116を復号してビデオピクチャを復元し、オプションでそれを表示し得る。
【0024】
一部の実施形態において、上述の送信は、単方向データ送信である。単方向データ送信は、メディアサービングアプリケーション及びそれに類するもので利用されることがある。一部の実施形態において、上述の送信は双方向データ送信である。双方向データ送信は、ビデオ会議アプリケーション及びそれに類するもので利用されることがある。一部の実施形態において、符号化ビデオビットストリーム108及び/又は符号化ビデオデータ116は、例えばHEVC、VVC、及び/又はAV1などの、ここに記載されるビデオコーディング/圧縮標準のうちのいずれかに従って符号化及び/又は復号される。
【0025】
図2Aは、一部の実施形態に従ったエンコーダコンポーネント106の要素例を示すブロック図である。エンコーダコンポーネント106は、ビデオソース104からソースビデオシーケンスを受信する。一部の実施形態において、エンコーダコンポーネントは、ソースビデオシーケンスを受信するように構成された受信器(例えば、トランシーバ)コンポーネントを含む。一部の実施形態において、エンコーダコンポーネント106は、リモートビデオソース(例えば、エンコーダコンポーネント106とは異なる機器のコンポーネントであるビデオソース)からビデオシーケンスを受信する。ビデオソース104は、ソースビデオシーケンスを、任意の好適なビット深さ(例えば、8ビット、10ビット、又は12ビット)、任意の色空間(例えば、BT.601 Y CrCB、又はRGB)、及び任意の好適なサンプリング構造(例えば、Y CrCb 4:2:0、又はY CrCb 4:4:4)のものとし得るデジタルビデオサンプルストリームの形態で提供し得る。一部の実施形態において、ビデオソース104は、事前にキャプチャ/準備されたビデオを格納したストレージデバイスである。一部の実施形態において、ビデオソース104は、ローカルな画像情報をビデオシーケンスとしてキャプチャするカメラである。ビデオデータは、順に見たときに動きを伝える複数の個々のピクチャとして提供され得る。それらピクチャ自体は、ピクセルの空間アレイとして編成されることができ、各ピクセルが、使用されるサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことができる。当業者は、ピクセルとサンプルとの関係を直ちに理解することができる。以下の説明は、サンプルに焦点を当てている。
【0026】
エンコーダコンポーネント106は、ソースビデオシーケンスのピクチャを、リアルタイムで、又はアプリケーションによって要求される他の時間制約下で、符号化ビデオシーケンス(643)へと符号化及び/又は圧縮するように構成される。適切な符号化速度を強制することが、コントローラ204の1つの機能である。一部の実施形態において、コントローラ204は、後述するような他の機能ユニットを制御し、それら他の機能ユニットに帰納的に結合される。コントローラ204によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、及び/又はレート歪み最適化技術のラムダ値、ピクチャサイズ、グループ・オブ・ピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などを含み得る。当業者はコントローラ204の他の機能を直ちに特定することができ、何故なら、それらは、エンコーダコンポーネント106が特定のシステム設計に対して最適化されることに関係し得るからである。
【0027】
一部の実施形態において、エンコーダコンポーネント106は、コーディングループにて動作するように構成される。単純化した一例において、コーディングループは、ソースコーダ202(例えば、コーディングされる入力ピクチャ及び(1つ以上の)参照ピクチャに基づいて例えばシンボルストリームなどのシンボルを作成することを担う)と、(ローカル)デコーダ210とを含む。デコーダ210は、(シンボルと符号化ビデオビットストリームとの間での圧縮が可逆であるときに)(リモート)デコーダと同様にしてシンボルを再構成してサンプルデータを作成する。再構成されたサンプルストリーム(サンプルデータ)が、参照ピクチャメモリ208に入力される。シンボルストリームの復号は、デコーダ位置(ローカル又はリモート)に依存しないビット正確な結果をもたらすので、参照ピクチャメモリ208内のコンテンツもローカルエンコーダとリモートエンコーダとの間でビット正確である。斯くして、エンコーダの予測部分は、デコーダが復号中に予測を使用するときに解釈するのと同じサンプル値を参照ピクチャサンプルとして解釈する。この参照ピクチャ同期性の原理(及び、例えばチャネルエラーのために、同期性を維持することができない場合に結果として生じるドリフト)は、当業者に知られている。
【0028】
デコーダ210の動作は、例えば
図2Bに関連して詳細に後述するものであるデコーダコンポーネント122などの、リモートデコーダのものと同じであるとすることができる。しかしながら、
図2Bを手短に参照するに、シンボルが利用可能であり、且つエントロピーコーダ214及びパーサ254によるシンボルの符号化ビデオシーケンスへの符号化/復号は可逆であるとし得るので、バッファメモリ252及びパーサ254を含むデコーダコンポーネント122のエントロピー復号部分は、ローカルデコーダ210には完全に実装されなくてよい。
【0029】
この時点で気付くことができることには、デコーダ内に存在する構文解析/エントロピー復号を除くデコーダ技術が、必ず、対応するエンコーダ内にも実質的に同じ機能的形態で存在する必要がある。この理由から、開示に係る事項はデコーダ動作に焦点を当てる。エンコーダ技術の説明は、徹底して説明されるデコーダ技術の逆であるので、省略することができる。ある特定の領域においてのみ、更なる詳細な説明が必要であり、以下にて提供される。
【0030】
その動作の一部として、ソースコーダ202は、ビデオシーケンスからの、参照フレームとして指定された1つ以上の先にコーディングされたフレームを参照して、入力フレームを予測的にコーディングするものである動き補償予測コーディングを実行し得る。斯くして、コーディングエンジン212は、入力フレームのピクセルブロックと、入力フレームに対する(1つ以上の)予測参照として選択され得る(1つ以上の)参照フレームのピクセルブロックとの間の差分をコーディングする。コントローラ204が、例えば、ビデオデータを符号化するのに使用されるパラメータ及びサブグループパラメータの設定を含め、ソースコーダ202のコーディング動作を管理し得る。
【0031】
デコーダ210は、参照フレームとして指定され得るフレームの符号化ビデオデータを、ソースコーダ202によって作成されたシンボルに基づいて復号する。コーディングエンジン212の動作は、有利には、非可逆プロセスとし得る。符号化ビデオデータがビデオデコーダ(
図2Aには示されていない)で復号されるとき、再構成されたビデオシーケンスは、幾分の誤差を伴うソースビデオシーケンスのレプリカであり得る。デコーダ210は、参照フレーム上でリモートビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照フレームを参照ピクチャメモリ208に格納させるようにし得る。斯くして、エンコーダコンポーネント106は、リモートビデオデコーダによって得られることになる再構成参照フレームと共通のコンテンツを持つ再構成参照フレームのコピーをローカルに格納する。
【0032】
予測器206は、コーディングエンジン212のために予測探索を実行し得る。すなわち、コーディングすべき新たなフレームに関して、予測器206は、新たなピクチャ用の適切な予測参照としての役割を果たし得るサンプルデータ(候補参照ピクセルブロックとして)又は例えば参照ピクチャ動きベクトルやブロック形状などの特定のメタデータについて、参照ピクチャメモリ208を検索し得る。予測器206は、適切な予測参照を見出すために、ピクセルブロック毎に動作し得る。一部のケースにおいて、予測器206によって得られた探索結果により決定されるように、入力ピクチャは、参照ピクチャメモリ208に格納された複数の参照ピクチャから引き出された予測参照を有し得る。
【0033】
前述の全ての機能ユニットの出力が、エントロピーコーダ214におけるエントロピーコーディングに掛けられ得る。エントロピーコーダ214は、当業者に知られる技術(例えばハフマンコーディング、可変長コーディング、及び/又は算術コーディング)に従ってシンボルを可逆圧縮するによって、様々な機能ユニットによって生成されたシンボルを符号化ビデオシーケンスへと変換する。
【0034】
一部の実施形態において、エントロピーコーダ214の出力は送信器に結合される。送信器は、エントロピーコーダ214によって生成された(1つ以上の)符号化ビデオシーケンスをバッファリングして、それらを、通信チャネル218を介した伝送のために準備するように構成され得る。通信チャネル218は、符号化されたビデオデータを格納するストレージデバイスへのハードウェア/ソフトウェアリンクとし得る。送信器は、ソースコーダ202からの符号化ビデオデータを、例えば符号化オーディオデータ及び/又は補助データストリーム(ソースは図示していない)といった、送信される他のデータとマージするように構成され得る。一部の実施形態において、送信器は、符号化されたビデオとともに追加のデータを送信し得る。ソースコーダ202は、そのようなデータを符号化ビデオシーケンスの一部として含み得る。追加のデータは、時間/空間/SNRエンハンスメントレイヤ、例えば冗長ピクチャ及びスライスなどの他の形態の冗長データ、補足強化情報(SEI)メッセージ、ビジュアルユーザビリティ情報(VUI)パラメータセットフラグメント、及びこれらに類するものを有し得る。
【0035】
コントローラ204は、エンコーダコンポーネント106の動作を管理し得る。コーディングにおいて、コントローラ204は、各符号化ピクチャに、それぞれのピクチャに適用されるコーディング技術に影響を及ぼし得るものである特定の符号化ピクチャタイプを割り当て得る。例えば、ピクチャは、イントラピクチャ(Iピクチャ)、予測ピクチャ(Pピクチャ)、又は双方向予測ピクチャ(Bピクチャ)として割り当てられ得る。イントラピクチャは、シーケンス内の如何なる他のフレームも予測のソースとして使用することなく符号化及び復号され得る。一部のビデオコーデックは、例えば独立デコーダリフレッシュ(Independent Decoder Refresh;IDR)ピクチャを含め、複数の異なるタイプのイントラピクチャを許している。当業者は、Iピクチャのそれら異形、並びにそれらそれぞれの用途及び特徴を知っており、故に、それらをここで繰り返すことはしない。予測ピクチャは、各ブロックのサンプル値を予測するために、多くて1つの動きベクトルと参照インデックスとを使用して、イントラ予測又はインター予測を用いて符号化及び復号され得る。双方向予測ピクチャは、各ブロックのサンプル値を予測するために、多くて2つの動きベクトルと参照インデックスとを使用して、イントラ予測又はインター予測を用いて符号化及び復号され得る。同様に、多重予測ピクチャは、単一のブロックの再構成のために3つ以上の参照ピクチャと関連メタデータとを使用することができる。
【0036】
ソースピクチャは、一般に、空間的に複数のサンプルブロック(例えば、各々4×4、8×8、4×8、又は16×16サンプルのブロック)に細分化され、ブロック毎に符号化され得る。ブロックは、それらブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定される他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは非予測的にコーディングされることができ、あるいは、それらは同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされることができる(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、非予測的に、又は空間予測を介して、又は1つの先にコーディングされた参照ピクチャを参照する時間予測を介してコーディングされることができる。Bピクチャのブロックは、非予測的に、又は空間予測を介して、又は1つ若しくは2つの先にコーディングされた参照ピクチャを参照する時間予測を介してコーディングされることができる。
【0037】
ビデオは、時間シーケンスにて複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(しばしば、イントラ予測と略される)は、所与のピクチャ内の空間的な相関を使用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を使用する。一例において、現在ピクチャと称される符号化/復号中の特定のピクチャが、複数のブロックへとパーティショニングされる。現在ピクチャ内のあるブロックが、ビデオ内の先にコーディングされ且つ依然としてバッファリングされている参照ピクチャ内の参照ブロックに類似しているとき、現在ピクチャ内の該ブロックは、動きベクトルと称されるベクトルによってコーディングされ得る。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合には、参照ピクチャを特定する第3の次元を持つことができる。
【0038】
エンコーダコンポーネント106は、例えばここに記載されるいずれかなどの、所定のビデオコーディング技術又は標準に従ってコーディング動作を実行し得る。その動作において、エンコーダコンポーネント106は、入力ビデオシーケンスにおける時間的及び空間的な冗長性を活用する予測コーディング動作を含め、様々な圧縮動作を実行することができる。従って、符号化ビデオデータは、使用されるビデオコーディング技術又は標準によって規定されるシンタックスに準拠し得る。
【0039】
図2Bは、一部の実施形態に従ったデコーダコンポーネント122の要素例を示すブロック図である。
図2Bのデコーダコンポーネント122は、チャネル218及びディスプレイ124に結合されている。一部の実施形態において、デコーダコンポーネント122は、ループフィルタ256に結合されてデータをディスプレイ124に送信する(例えば、有線又は無線接続を介して)ように構成された送信器を含む。
【0040】
一部の実施形態において、デコーダコンポーネント122は、チャネル218に結合されてデータをチャネル218から受信する(例えば、有線又は無線接続を介して)ように構成された受信器を含む。受信器は、デコーダコンポーネント122によって復号される1つ以上の符号化ビデオシーケンスを受信するように構成され得る。一部の実施形態において、各符号化ビデオシーケンスの復号は、他の符号化ビデオシーケンスとは独立である。各符号化ビデオシーケンスは、符号化ビデオデータを格納するストレージデバイスへのハードウェア/ソフトウェアリンクとし得るものであるチャネル218から受信され得る。受信器は、符号化ビデオデータを、例えば符号化オーディオデータ及び/又は補助データストリームといった他のデータとともに受信してもよく。それら他のデータはそれらそれぞれの使用エンティティ(図示せず)に転送され得る。受信器は、符号化ビデオシーケンスを他のデータから分離することができる。一部の実施形態において、受信器は、符号化ビデオとともに追加の(冗長)データを受信する。追加のデータは、(1つ以上の)符号化ビデオシーケンスの一部として含められ得る。追加のデータは、データを復号するために、及び/又は元のビデオデータをいっそう正確に再構成するために、デコーダコンポーネント122によって使用され得る。追加のデータは、例えば、時間的、空間的、若しくはSNRエンハンスメントレイヤ、冗長スライス、冗長ピクチャ、順方向誤り訂正符号などの形態とし得る。
【0041】
一部の実施形態によれば、デコーダコンポーネント122は、バッファメモリ252、パーサ254(エントロピーデコーダと称されることもある)、スケーラ/逆変換ユニット258、イントラピクチャ予測ユニット262、動き補償予測ユニット260、アグリゲータ268、ループフィルタユニット256、参照ピクチャメモリ266、及び現在ピクチャメモリ264を含む。一部の実施形態において、デコーダコンポーネント122は、集積回路、一連の集積回路、及び/又は他の電子回路として実装される。一部の実施形態において、デコーダコンポーネント122は、少なくとも部分的にソフトウェアで実装される。
【0042】
バッファメモリ252は、(例えば、ネットワークジッタに対処するために)チャネル218とパーサ254との間に結合される。一部の実施形態において、バッファメモリ252はデコーダコンポーネント122とは別個である。一部の実施形態において、チャネル218の出力とデコーダコンポーネント122との間に別個のバッファメモリが設けられる。一部の実施形態では、デコーダコンポーネント122の内部のバッファメモリ252(例えば、これは再生タイミングを取り扱うように構成される)に加えて、(例えば、ネットワークジッタに対処するために)別個のバッファメモリがデコーダコンポーネント122の外部に設けられる。十分な帯域幅及び可制御性の格納/転送デバイスから又は等同期(isosynchronous)ネットワークからデータを受信するとき、バッファメモリ252は、必要とされなくてもよく、又は小さくされることができる。例えばインターネットなどのベストエフォート型パケットネットワーク上での使用では、バッファメモリ252が必要とされ得るとともに、比較的大きくされることができ、有利には適応可能なサイズのものとされることができ、また、少なくとも部分的に、デコーダコンポーネント122の外部のオペレーティングシステム又は同様の要素(図示せず)にて実装され得る。
【0043】
パーサ254は、符号化ビデオシーケンスからシンボル270を再構成するように構成される。シンボルは、例えば、デコーダコンポーネント122の動作を管理するために使用される情報、及び/又は例えばディスプレイ124などのレンダリングデバイスを制御する情報を含み得る。(1つ以上の)レンダリング装置用の制御情報は、例えば、補足強化情報(SEI)メッセージ又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態とし得る。パーサ254は符号化ビデオシーケンスを解析(エントロピー復号)する。符号化ビデオシーケンスのコーディングは、ビデオコーディング技術又は標準によることができ、可変長コーディング、ハフマンコーディング、コンテキスト依存性を持つ又は持たない算術コーディングなどを含め、当業者によく知られた原理に従うことができる。パーサ254は、符号化ビデオシーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダにおけるピクセルのサブグループのうちの少なくとも1つに関する一組のサブグループパラメータを抽出し得る。サブグループは、グループ・オブ・ピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ254はまた、符号化ビデオシーケンス情報から、例えば変換係数、量子化パラメータ値、動きベクトルなどの情報を抽出し得る。
【0044】
シンボル270の再構成には、コーディングされたビデオピクチャ又はその部分のタイプ及び他の要因(例えば、インターピクチャ及びイントラピクチャ、インターブロック及びイントラブロックなど)に応じて、複数の異なるユニットが関与し得る。どのユニットが関与するのか、及びそれらがどのように関与するかは、パーサ254によって符号化ビデオシーケンスから解析されたサブグループ制御情報によって制御されることができる。パーサ254と以下の複数のユニットとの間でのこのようなサブグループ制御情報の流れは、明瞭さのために図示していない。
【0045】
既述の機能ブロックを超えて、デコーダコンポーネント122は概念的に、後述のような多数の機能ユニットに細分化されることができる。商業上の制約の下で稼働する実用的な実装において、これらのユニットのうちの多くが互いに密接にインタラクトし、少なくとも部分的に互いに統合され得る。しかしながら、開示される主題を説明するという目的のために、以下の機能ユニットへの概念的な細分化を維持することとする。
【0046】
スケーラ/逆変換ユニット258は、パーサ254からの(1つ以上の)シンボル270として、量子化された変換係数と制御情報(例えば、どの変換を使用すべきか、ブロックサイズ、量子化係数、及び/又は量子化スケーリング行列)とを受け取る。スケーラ/逆変換ユニット258は、アグリゲータ268に入力されることが可能なサンプル値を含むブロックを出力することができる。
【0047】
一部のケースにおいて、スケーラ/逆変換ユニット258の出力サンプルは、イントラコーディングされたブロック、すなわち、先行して再構成されたピクチャからの予測情報を使用していないが、現在ピクチャのうち先行して再構成された部分からの予測情報を使用することができるブロック、に関係する。このような予測情報は、イントラピクチャ予測ユニット262によって提供されることができる。イントラピクチャ予測ユニット262は、現在ピクチャメモリ264からの現在の(部分的に再構成された)ピクチャからフェッチされた周囲の既に再構成された情報を用いて、再構成中のブロックと同じサイズ及び形状のブロックを生成し得る。アグリゲータ268は、サンプル毎に、イントラピクチャ予測ユニット262が生成した予測情報を、スケーラ/逆変換ユニット258によって提供される出力サンプル情報に付加し得る。
【0048】
他のケースにおいて、スケーラ/逆変換ユニット258の出力サンプルは、インターコーディングされた、動き補償された可能性のあるブロックに関係する。このような場合、動き補償予測ユニット260が、参照ピクチャメモリ266にアクセスして、予測に使用されるサンプルをフェッチすることができる。フェッチされたサンプルを、ブロックに関係するシンボル270に従って動き補償した後、これらのサンプルが、アグリゲータ268によって、スケーラ/逆変換ユニット258の出力(この場合、残差サンプル又は残差信号と称される)に付加されて、出力サンプル情報を生成することができる。そこから動き補償予測ユニット260が予測サンプルをフェッチする参照ピクチャメモリ266内のアドレスが、動きベクトルによって制御され得る。動きベクトルは、例えばX、Y、及び参照ピクチャ成分を有し得るシンボル270の形態で動き補償予測ユニット260に利用可能であり得る。動き補償はまた、サブサンプルの正確な動きベクトルが使用されるときの、参照ピクチャメモリ266からフェッチされたサンプル値の補間、及び動きベクトル予測メカニズムなどを含むことができる。
【0049】
アグリゲータ268の出力サンプルは、ループフィルタユニット256にて様々なループフィルタリング技術に掛けられ得る。ビデオ圧縮技術は、インループ(in-loop)フィルタ技術を含むことができ、これは、符号化ビデオビットストリームに含められてパーサ254からのシンボル270としてループフィルタユニット256に利用可能にされるパラメータによって制御されるが、符号化ピクチャ又は符号化ビデオシーケンスのうちの(復号順で)先行部分の復号中に得られたメタ情報にも応答することができるとともに、先行して再構成されてループフィルタリングされたサンプル値にも応答することができる。
【0050】
ループフィルタユニット256の出力は、例えばディスプレイ124などのレンダリングデバイスに出力されることが可能なサンプルストリームとすることができ、これはまた、将来のインターピクチャ予測での使用のために参照ピクチャメモリ266に格納されることができる。
【0051】
ある特定の符号化ピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用されることができる。符号化ピクチャが完全に再構成され、その符号化ピクチャが参照ピクチャとして(例えば、パーサ254によって)特定されると、現在の参照ピクチャが参照ピクチャメモリ266の一部となり得るとともに、次の符号化ピクチャの再構成を開始する前に新しい現在ピクチャメモリを割り当て直すことができる。
【0052】
デコーダコンポーネント122は、例えばここに記載された標準のうちのいずれかなど、標準において文書化され得る所定のビデオ圧縮技術に従って復号動作を実行し得る。符号化ビデオシーケンスは、ビデオ圧縮技術文書又は標準、そして具体的にはその中のプロファイル文書に規定されるビデオ圧縮技術又は標準のシンタックスを忠実に守るという意味で、使用されるビデオ圧縮技術又は標準によって規定されるシンタックスに従い得る。また、一部のビデオ圧縮技術又は標準との準拠のために、符号化ビデオシーケンスの複雑さが、ビデオ圧縮技術又は標準のレベルによって規定される範囲内にされ得る。一部のケースにおいて、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒メガサンプルで測定される)、最大参照ピクチャサイズなどを制約する。レベルによって設定される制限は、一部のケースで、仮説的リファレンスデコーダ(Hypothetical Reference Decoder;HRD)仕様、及び符号化ビデオシーケンス内でシグナリングされるHRDバッファ管理用のメタデータを通して更に制約され得る。
【0053】
図3は、一部の実施形態に従ったサーバシステム112を示すブロック図である。サーバシステム112は、制御回路302、1つ以上のネットワークインタフェース304、メモリ314、ユーザインタフェース306、及びこれらのコンポーネントを相互接続するための1つ以上の通信バス312を含んでいる。一部の実施形態において、制御回路302は、1つ以上のプロセッサ(例えば、CPU、GPU、及び/又はDPU)を含む。一部の実施形態において、制御回路は、1つ以上のフィールドプログラマブルゲートアレイ(FPGA)、ハードウェアアクセラレータ、及び/又は1つ以上の集積回路(例えば、特定用途向け集積回路)を含む。
【0054】
(1つ以上の)ネットワークインタフェース304は、1つ以上の通信ネットワーク(例えば、無線、有線、及び/又は光ネットワーク)とインタフェースするように構成され得る。通信ネットワークは、ローカル、広域、大都市、車両及び産業、リアルタイム、耐遅延などとすることができる。通信ネットワークの例は、例えばイーサネット(登録商標)などのローカルエリアネットワークや、無線LANや、GSM、3G、4G、5G、LTE及びこれらに類するものを含むセルラネットワークや、ケーブルTV、衛星TV、及び地上波放送TVを含むTV有線又は無線広域デジタルネットワークや、CANbusを含む車両及び産業などを含む。そのような通信は、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、特定のCANbusデバイスに対するCANbus)、又は双方向(例えば、ローカル又はワイドエリアデジタルネットワークを用いた、他のコンピュータシステムに対する)とし得る。そのような通信は、1つ以上のクラウドコンピューティングネットワークへの通信を含むことができる。
【0055】
ユーザインタフェース306は、1つ以上の出力デバイス308及び/又は1つ以上の入力デバイス310を含む。(1つ以上の)入力デバイス310は、キーボード、マウス、トラックパッド、タッチスクリーン、データグローブ、ジョイスティック、マイクロフォン、スキャナ、カメラ、又はこれらに類するもののうちの1つ以上を含み得る。(1つ以上の)出力デバイス308は、オーディオ出力デバイス(例えば、スピーカ)、ビジュアル出力デバイス(例えば、ディスプレイ若しくはモニタ)、又はこれらに類するもののうちの1つ以上を含み得る。
【0056】
メモリ314は、高速ランダムアクセスメモリ(例えば、DRAM、SRAM、DDR RAM、及び/又は他のランダムアクセスソリッドステートメモリデバイスなど)及び/又は不揮発性メモリ(例えば、1つ以上の磁気ディスクストレージデバイス、光ディスクストレージデバイス、フラッシュメモリデバイス、及び/又は他の不揮発性ソリッドステートストレージデバイスなど)を含み得る。メモリ314は、オプションで、制御回路302からリモートに位置する1つ以上のストレージデバイスを含む。メモリ314、又は代わりにメモリ314内の不揮発性ソリッドステートメモリデバイスは、非一時的コンピュータ読み取り可能記憶媒体を含む。一部の実施形態において、メモリ314、又はメモリ314の非一時的コンピュータ読み取り可能記憶媒体は、以下のプログラム、モジュール、命令、及びデータ構造を格納し、あるいは、これらのサブセット又はスーパーセットを格納する:
・様々な基本システムサービスを取り扱うための及びハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム316;
・1つ以上のネットワークインタフェース304を介して(例えば、有線及び/又は無線接続を介して)サーバシステム112を他のコンピューティング機器に接続するのに使用されるネットワーク通信モジュール318;
・例えばビデオデータなどのデータを符号化及び/又は復号することに関して様々な機能を実行するコーディングモジュール320。一部の実施形態において、コーディングモジュール320は、コーダコンポーネント114のインスタンスである。コーディングモジュール320は、以下に限られないが、以下のうちの1つ以上を含む:
・例えばデコーダコンポーネント122に関して前述したものなどの、符号化データを復号することに関して様々な機能を実行する復号モジュール322;及び
・例えばエンコーダコンポーネント106に関して前述したものなどの、データを符号化することに関する様々な機能を実行する符号化モジュール340;並びに
・例えばコーディングモジュール320と共に使用するための、ピクチャ及びピクチャデータを格納するピクチャメモリ352。一部の実施形態において、ピクチャメモリ352は、参照ピクチャメモリ208、バッファメモリ252、現在ピクチャメモリ264、及び参照ピクチャメモリ266のうちの1つ以上を含む。
【0057】
一部の実施形態において、復号モジュール322は、解析モジュール324(例えば、パーサ254に関して前述した様々な機能を実行するように構成される)、変換モジュール326(例えば、スケーラ/逆変換ユニット258に関して前述した様々な機能を実行するように構成される)、予測モジュール328(例えば、動き補償予測ユニット260及び/又はイントラピクチャ予測ユニット262に関して前述した様々な機能を実行するように構成される)、及びフィルタモジュール330(例えば、ループフィルタ256に関して前述した様々な機能を実行するように構成される)を含む。
【0058】
一部の実施形態において、符号化モジュール340は、コードモジュール342(例えば、ソースコーダ202及び/又はコーディングエンジン212に関して前に説明した様々な機能を実行するように構成される)、及び予測モジュール344(例えば、予測器206に関して前述した様々な機能を実行するように構成される)を含む。一部の実施形態において、復号モジュール322及び/又は符号化モジュール340は、
図3に示されるモジュールのうちのサブセットを含む。例えば、共有の予測モジュールが、復号モジュール322及び符号化モジュール340の両方によって使用される。
【0059】
メモリ314に格納された、上で特定したモジュールの各々は、ここで説明される機能を実行するための命令セットに対応する。上で特定したモジュール(例えば、命令セット)は、別々のソフトウェアプログラム、プロシージャ、又はモジュールとして実装される必要はなく、従って、様々な実施形態において、これらのモジュールの様々なサブセットが組み合わされたり、それ以外で再編成されたりし得る。例えば、コーディングモジュール320は、オプションで、別々の復号モジュール及び符号化モジュールを含まずに、両方の機能セットを実行するのに同じモジュールセットを使用する。一部の実施形態において、メモリ314は、上で特定したモジュール及びデータ構造のうちのサブセットを格納する。一部の実施形態において、メモリ314は、例えばオーディオ処理モジュールなどの、上述されていない追加のモジュール及びデータ構造を格納する。
【0060】
一部の実施形態において、サーバシステム112は、ウェブ若しくはハイパーテキスト転送プロトコル(HTTP)サーバ、ファイル転送プロトコル(FTP)サーバ、並びに、共通ゲートウェイインタフェース(CGI)スクリプト、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、ハイパーティストマークアップ言語(HTML)、拡張マークアップ言語(XML)、Java(登録商標)、JavaScript(登録商標)、非同期JavaScript+XML(AJAX)、XHP、Javelin、ワイヤレスユニバーサルリソースファイル(WURFL)、及びこれらに類するものを用いて実装されるウェブページ及びアプリケーションを含む。
【0061】
図3は、一部の実施形態に従ったサーバシステム112を示しているが、
図3は、ここで説明される実施形態の構造的概略図というよりも、1つ以上のサーバシステムに存在し得る様々なフィーチャの機能的説明として意図されている。実際には、当業者によって認識されるように、別々に示されたアイテムが組み合わされてもよく、一部のアイテムが分離されてもよい。例えば、
図3に別々に示された一部のアイテムが単一のサーバ上で実装されてもよく、単一のアイテムが1つ以上のサーバによって実装されてもよい。サーバシステム112を実装するのに使用されるサーバの実際の数、及びそれらの間でどのようにフィーチャが割り当てられるかは、実装ごとに異なることになり、オプションで、ピーク使用期間中及び平均的使用期間中にサーバシステムが取り扱うデータトラフィックの量に部分的に依存する。
【0062】
ブロックパーティショニング
【0063】
図4は、一部の実施形態に従ったブロックパーティショニングを示している。
図4の上半分は、VP9におけるブロックパーティショニングを示しており、これは、64×64レベルから開始して下に4×4レベルまで、4ウェイのパーティションツリーを使用し、ブロック8×8以下に対して幾つかの追加の制約がある。“R”として指定されたパーティションは、最低の4×4レベルに達するまで同じパーティションツリーがより低いスケールで繰り返されるという点で再帰的(recursive)として参照される。
図4の下半分は、AV1でのブロックパーティショニングを示しており、これは、パーティションツリーを10ウェイ構造に拡張するだけでなく、128×128から開始するように最大サイズ(VP9/AV1の用語ではスーパーブロックと称される)を増加させる。10ウェイ構造は、4:1/1:4の長方形パーティションを含み、これらの長方形パーティションはいずれも、更に細分化されることはできない。AV1は、8×8レベルより下のパーティションの使用に更なる柔軟性を追加する。例えば、2×2クロマインター予測が特定のケースで可能である。
【0064】
一部の実施形態において、ブロックパーティショニングは、様々な局所的特性に適応するために、コーディングツリーと呼ばれる四分木構造を用いることによってコーディングツリーユニット(CTU)をコーディングユニット(CU)に分割することを含む。ピクチャエリアをインターピクチャ(時間)予測を用いてコーディングすべきか、それともイントラピクチャ(空間)予測を用いてコーディングすべきかの決定が、CUレベルで行われる。各CUは、PU分割タイプに従って、1つ、2つ、又は4つの予測ユニット(PU)に更に分割されることができる。1つのPU内部では、同じ予測プロセスが適用され、関連情報がPUベースでデコーダに伝送される。PU分割タイプに基づいて予測プロセスを適用することによって残差ブロックを取得した後、CUは、該CUについてのコーディングツリーのような別の四分木構造に従って変換ユニット(TU)にパーティショニングされ得る。一部の実施形態において、ブロックは、CU、PU、及びTUを含む複数のパーティション概念を用いてパーティショニングされる。一部の実施形態において、CU又はTUは正方形の形状のみであるが、PUは、インター予測ブロックに対して正方形又は長方形の形状とし得る。一部の実施形態において、1つのコーディングブロックが4つの正方形サブブロックに更に分割されることができ、各サブブロック、すなわち、TUに対して変換が実行される。各TUは、(四分木分割を用いて)より小さいTUに更に再帰的に分割されることができ、これは残差四分木(RQT)と呼ばれる。
【0065】
一部の実施形態において、ブロックパーティショニングは、四分木(QT)+二分木(BT)構造(QTBT構造としても知られる)を用いることを含む。QTBT構造は、マルチパーティションタイプの概念を除去し、すなわち、QTBTは、CU、PU、及びTUの概念の分離を除去し、CUパーティション形状について、より多くの柔軟性をサポートする。QTBTブロック構造において、CUは正方形又は長方形のいずれかの形状を持つことができる。これは
図5Aに示されている。コーディングツリーユニット(CTU)は、最初に四分木構造によってパーティショニングされる。四分木リーフノードが更に、二分木構造によってパーティショニングされる。二分木分割には、対称水平分割と対称垂直分割の2つの分割タイプが存在する。二分木リーフノードはコーディングユニット(CU)と呼ばれ、そのセグメンテーションが、如何なる更なるパーティショニングもなしに予測及び変換処理に使用される。これが意味することは、QTBTコーディングブロック構造においてはCU、PU、及びTUが同じブロックサイズを持つということである。一部の実施形態において、CUは、異なるカラー成分のコーディングブロック(CB)を含む。例えば、4:2:0クロマフォーマットのPスライス及びBスライスの場合、1つのCUが1つのルマCBと2つのクロマCBとを含み、時々、単一のコンポーネントのCBで構成されることもある。他の一例として、Iスライスの場合、1つのCUが1つのルマCB又は2つのクロマCBのみを含む。
【0066】
一部の実施形態において、以下のパラメータが、QTBTパーティショニングスキームのために定義される:(i)CTUサイズ:四分木のルートノードサイズ(例えば、HEVCにおいてと同じ概念);(ii)MinQTSize:最小許容四分木リーフノードサイズ;(iii)MaxBTSize:最大許容二分木ルートノードサイズ;(iv)MaxBTDepth:最大許容二分木深さ;及び(v)MinBTSize:最小許容二分木リーフノードサイズ。
【0067】
QTBTパーティショニング構造の一例において、CTUサイズは、2つの対応する64×64ブロックのクロマサンプルを備えた128×128ルマサンプルとして設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、MinBTSize(幅及び高さの両方に関して)は4×4として設定され、そして、MaxBTDepthは4として設定される。先ず、CTUに四分木分割が適用されて、四分木リーフノードが生成される。四分木リーフノードは、16×16(MinQTSize)から128×128(CTUサイズ)までのサイズを持ち得る。リーフ四分木ノードが128×128である場合、サイズがMaxBTSize(64×64)を超えているので、それは、二分木によって更に分割されることにはならない。それ以外の場合、リーフ四分木ノードは、二分木によって更にパーティショニングされ得る。従って、四分木リーフノードは、二分木にとってのルートノードでもあり、それは0として二分木深さを持つ。二分木深さがMaxBTDepth(4)に達すると、更なる分割は検討されない。二分木ノードがMinBTSize(4)に等しい幅を持つようになると、更なる水平分割は検討されない。同様に、二分木ノードがMinBTSizeに等しい高さをもつようになると、更なる垂直分割は検討されない。二分木のリーフノードは、更なるパーティショニングなしで、予測及び変換処理によって更に処理される。JEMでは、最大CTUサイズは256×256ルマサンプルである。
【0068】
図5Aは、QTBTを用いたブロック502のパーティショニングの一例を示している。
図5Bは、対応するツリー表現504を示している。実線は四分木分割を示し、点線は二分木分割を示している。二分木のノード(例えば、非リーフノード)の各分割において、どの分割タイプ(例えば、水平又は垂直)が使用されるかを指し示すために、1つのフラグがシグナリングされ、0は水平分割を指し示し、1は垂直分割を指し示す。四分木分割では、分割タイプを指し示す必要はない。何故なら、四分木分割は常に、ブロックを水平方向及び垂直方向の両方で分割して、等しいサイズの4つのサブブロックを生成するからである。
【0069】
一部の実施形態において、QTBTスキームは、ルマ及びクロマが別々のQTBT構造を持つ柔軟性をサポートする。現在、P及びBスライスでは、1つのCTUのルマCTB及びクロマCTBが同一のQTBT構造を共有している。しかし、Iスライスでは、ルマCTBはQTBT構造によってCUへとパーティショニングされ、クロマCTBは別のQTBT構造によってクロマCUへとパーティショニングされる。これが意味することは、IスライスにおけるCUは、ルマ成分のコーディングブロック又は2つのクロマ成分のコーディングブロックで構成され、P又はBスライスにおけるCUは、3つ全ての色成分のコーディングブロックで構成されるということである。
【0070】
一部の実施形態において、小ブロックについてのインター予測が、動き補償のメモリアクセスを削減するために制限され、その結果、4×8及び8×4のブロックで双方向予測がサポートされておらず、4×4ブロックでインター予測がサポートされていない。一部の実施形態では、これらの制約がQTBTにおいて取り除かれる。
【0071】
一部の実施形態において、ブロックパーティショニングは、三分木(トリプルツリー;TT)(マルチタイプツリー(MTT)構造としても知られる)を用いて実装される。
図6A及び
図6Bは、一部の実施形態に従ったMTT構造602及び604を示しているす。MTT構造は、QTBTに加えて水平センター-サイドトリプルツリー及び垂直センター-サイドトリプルツリーを追加する。三分木パーティショニングの利益は、(i)四分木及び二分木パーティショニングの補完であり、四分木及び二分木が常にブロック中心に沿って分割するのに対して、三分木パーティショニングはブロック中心に位置するオブジェクトを捕捉することができること、及び(ii)提案された三分木のパーティションの幅及び高さは常に2のべき乗であり、それ故に追加の変換が必要とされないことを含む。
【0072】
主に複雑さの低減により、2レベルツリーの設計が動機付けられる。理論的に、ツリーを横断することの複雑さはTDであり、ただし、Tは分割タイプの数を表し、Dはツリーの深さである。
【0073】
マージモード・ウィズ・動きベクトル差分(MMVD)
【0074】
マージモードでは、黙示的に導出される動き情報が、現在CUの予測サンプル生成のために直接用いられる。マージモード・ウィズ・動きベクトル差分(merge mode with motion vector differences;MMVD)では、CUにMMVDモードが使用されるかを規定するために、スキップフラグ及びマージフラグを送った直後にMMVDフラグがシグナリングされ得る。
【0075】
MMVDでは、マージ候補が選択された後に、それを更に、シグナリングされた(1つ以上の)動きベクトル差分(MVD)情報によって精緻化することができる。シグナリングされる情報は、マージ候補フラグと、動きの大きさを規定するインデックスと、動き方向を示すためのインデックスとを含み得る。MMVDモードでは、マージリスト内の最初の2つの候補についての1つが選択されてMV基礎として用いられる。マージ候補フラグは、どの1つが用いられるかを規定するためにシグナリングされ得る。
【0076】
距離インデックスが、動きの大きさ情報を規定し、開始点からの所定のオフセットを示す。
図7に示すように、開始動きベクトル(MV)の水平成分又は垂直成分のいずれかにオフセットが付加され得る。距離インデックスと所定のオフセットとの関係が表1にて規定され得る。
【表1】
【0077】
方向インデックスが、開始点に対するMVDの方向を表す。方向インデックスは、表2に示すように、4つの方向を表すことができる。
【表2】
【0078】
一部の実施形態において、MVDの符号の意味は開始MVの情報に従って変わることができる。開始MVが、片方向予測MV又は両方のリストが現在ピクチャの同じ側を指す双方向予測MVである(例えば、2つの参照のピクチャオーダカウント(POC)がどちらも現在ピクチャのPOCよりも大きい、又はどちらも現在ピクチャのPOCよりも小さい)とき、表2中の符号は、開始MVに加算されるMVオフセットの符号を規定する。開始MVが双方向予測MVであり、2つのMVが現在ピクチャの異なる側を指し(例えば、一方の参照のPOCが現在ピクチャのPOCよりも大きく、他方の参照のPOCが現在ピクチャのPOCよりも小さい)、リスト0におけるPOCの差がリスト1におけるPOCの差よりも大きいとき、表1中の符号は、開始MVのリスト0 MV成分に加算されるMVオフセットの符号を規定し、リスト1 MVに対する符号は反対の値を持つ。そうでなく、リスト1におけるPOCの差がリスト0よりも大きい場合には、表2中の符号は、開始MVのリスト1 MV成分に加算されるMVオフセットの符号を規定し、リスト0 MVに対する符号は反対の値を持つ。
【0079】
一部の実施形態において、MVDは、各方向におけるPOCの差に従ってスケーリングされる。両方のリスト内のPOCの差が同じである場合、スケーリングは必要とされない。そうでなく、リスト0におけるPOCの差がリスト1のそれよりも大きい場合、リスト1のMVDがスケーリングされる。L1のPOC差がL0よりも大きい場合、リスト0のMVDが同様にスケーリングされる。開始MVが片予測される場合、利用可能なMVにMVDが加算される。
【0080】
対称動きベクトル差分(MVD)コーディング
【0081】
対称MVDモードでは、リスト0及びリスト1の両方の参照ピクチャインデックスとリスト1のMVDとを含む動き情報が、シグナリングされずに導出される。
【0082】
一部の実施形態において、スライスレベルでの対称MVDモードの復号プロセスは以下の通りである:変数BiDirPredFlag、RefIdxSymL0、及びRefIdxSymL1が、次のように導出される:(i)mvd_l1_zero_flagが1である場合、BiDirPredFlagは0に等しく設定される。(ii)そうでなく、リスト0内の最も近い参照ピクチャとリスト1内の最も近い参照ピクチャとが、参照ピクチャの前方及び後方ペア、又は参照ピクチャの後方及び前方ペアを形成する場合、BiDirPredFlagは1に設定され、リスト0参照ピクチャ及びリスト1参照ピクチャの両方が短期参照ピクチャである。(iii)それ以外の場合、BiDirPredFlagは0に設定される。
【0083】
一部の実施形態において、CUレベルでの対称MVDモードの復号プロセスは以下の通りである:CUが双方向予測コーディングされ且つBiDirPredFlagが1に等しい場合に、対称モードが用いられるか否かを示す対称モードフラグが明示的にシグナリングされる。対称モードフラグが真であるとき、mvp_l0_flag、mvp_l1_flag、及びMVD0のみが明示的にシグナリングされる。リスト0及びリスト1の参照インデックスは、それぞれ、参照ピクチャのペアに等しく設定される。MVD1が(-MVD0)に等しく設定される。
【0084】
インターモードコーディング
【0085】
一部の実施形態において、インターフレームでコーディングされるブロックについて、現在ブロックのモードがスキップモードではなくインターコーディングモードである場合に、現在ブロックに対して単一参照モードが用いられるのか複合参照モードが用いられるのかを示すために別のフラグがシグナリングされる。単一参照モードでは、1つの動きベクトルによって予測ブロックが生成され得る。複合参照モード(例えば、現在ブロックが2つの参照ピクチャを持つ)では、2つの動きベクトルから導出される2つの予測ブロックを加重平均することによって予測ブロックが生成される。
【0086】
一部の実施形態において、単一参照モードでシグナリングされる:
・NEARMV - DRL(Dynamic Reference List;動的参照リスト)インデックスによって示されるリスト内の動きベクトル予測子(MVP)のうちの1つを使用する;
・NEWMV - DRLインデックスによってシグナリングされたリスト内の動きベクトル予測子(MVP)のうちの1つを参照として使用し、MVPにデルタを適用する;
・GLOBALMV - フレームレベルのグローバル動きパラメータに基づく動きベクトルを使用する。
【0087】
一部の実施形態において、以下のモードが複合参照モードでシグナリングされる:
・NEAR_NEARMV - DRLインデックスによってシグナリングされるリスト内の動きベクトル予測子(MVP)のうちの1つを使用する;
・NEAR_NEWMV - DRLインデックスによってシグナリングされるリスト内の動きベクトル予測子(MVP)のうちの1つを参照として使用し、第2のMVについてデルタMVを送信する;
・NEW_NEARMV - DRLインデックスによってシグナリングされるリスト内の動きベクトル予測子(MVP)のうちの1つを参照として使用し、第1のMVについてデルタMVを送信する;
・NEW_NEWMV - DRLインデックスによってシグナリングされるリスト内の動きベクトル予測子(MVP)のうちの1つを参照として使用し、両方のMVについてデルタMVを送信する;
・GLOBAL_GLOBALMV - フレームレベルのグローバル動きパラメータに基づいて各参照からのMVを使用する。
【0088】
動きベクトル差分(MVD)コーディング
【0089】
AV1は、1/8ピクセルの動きベクトル精度(又は正確度)を可能にしている。参照フレームリスト0又はリスト1における動きベクトル差分をシグナリングするために、以下のシンタックスが使用される:
・mv_jointが、動きベクトル差分のどの成分が非ゼロであるかを規定する
- 0は、水平方向又は垂直方向のいずれに沿っても非ゼロのMVDが存在しないことを示す
- 1は、水平方向に沿ってのみ非ゼロのMVDが存在することを示す
- 2は、垂直方向に沿ってのみ非ゼロのMVDが存在することを示す
- 3は、水平方向及び垂直方向の両方に沿って非ゼロのMVDが存在することを示す
・mv_signが、動きベクトル差分が正であるのか負であるのかを規定する
・mv_classが、動きベクトル差分のクラスを規定する。表3に示すように、クラスが高いほど、動きベクトル差分が大きい大きさを持つことを意味する
・Hhmv_bitが、動きベクトル差分と各MVクラスの開始の大きさとの間のオフセットの整数部分を規定する
・mv_frが、動きベクトル差分の最初の2つの小数ビットを規定する
・mv_hpが、動きベクトル差分の第3の小数ビットを規定する。
【表3】
【0090】
適応MVD解像度
【0091】
NEW_NEARMVモード及びNEAR_NEWMVモードについて、MVDの精度は、関連するクラス及びMVDの大きさに依存する。例えば、MVDの大きさが1ピクセル以下である場合にのみ、小数MVDが許される。他の一例として、関連するMVクラスの値がMV_CLASS_1以上であるとき、1つのMVD値のみが許され、各MVクラスにおけるMVD値は、MVクラス1(MV_CLASS_1)、2(MV_CLASS_2)、3(MV_CLASS_3)、4(MV_CLASS_4)、又は5(MV_CLASS_5)について4、8、16、32、64として導出される。他の一例として、現在ブロックがNEW_NEARMVモード又はNEAR_NEWMVモードとしてコーディングされる場合、mv_joint又はmv_classをシグナリングするために1つのコンテキストが使用される。そうでない(例えば、現在ブロックがNEW_NearMVとしてコーディングされない)場合、mv_joint又はmv_classをシグナリングするために別のコンテキストが使用される。
【0092】
表4は、それぞれのMVクラスでの許容MVD値を示す。
【表4】
【0093】
一部の実施形態において、2つの参照リストについてのMVDが一緒にシグナリングされるかを示すために、JOINT_NEWMVと呼ばれるインターコーディングモードが適用される。インター予測モードがJOINT_NEWMVモードに等しい場合、参照リスト0及び参照リスト1についてのMVDが一緒にシグナリングされる。そうして、joint_mvdと呼ばれる1つのMVDのみがシグナリングされてデコーダに送られ得るとともに、参照リスト0及び参照リスト1についてのデルタMVがjoint_mvdから導出される。
【0094】
一部の実施形態において、JOINT_NEWMVモードは、NEAR_NEARMVモード、NEAR_NEWMVモード、NEW_NEARMVモード、NEW_NEWMVモード、及びGLOBAL_GLOBALMVモードとともにシグナリングされる。追加のコンテキストは追加されない。
【0095】
一部の実施形態において、JOINT_NEWMVモードがシグナリングされ、2つの参照フレームと現在のフレームとの間のPOC距離が相異なるとき、POC距離に基づいて参照リスト0又は参照リスト1に対してMVDがスケーリングされる。参照フレームリスト0と現在フレームとの間の距離をtd0と表し、参照フレームリスト1と現在フレームとの間の距離をtd1と表す。td0がtd1以上である場合、参照リスト0に対してjoint_mvdが直接用いられ、参照リスト1についてのmvdは、joint_mvdから、式(1):
【数1】
に基づいて導出される。
【0096】
そうでなく、td1がtd0以上である場合には、参照リスト1に対してjoint_mvdが直接用いられ、参照リスト0についてのmvdが、joint_mvdから、式(2):
【数2】
に基づいて導出される。
【0097】
一部の実施形態において、単一参照ケースに対して、AMVDMVと呼ばれるインターコーディングモードが追加される。AMVDMVモードが選択されるとき、それは、MVDをシグナリングするのにAMVDが適用されることを示す。JOINT_NEWMVモードの下で、ジョイントMVDコーディングモードにAMVDが適用されるかを示すために、フラグ(amvd_flag)が追加される。適応MVD解像度がジョイントMVDコーディングモードに適用されるとき、それをジョイントAMVDコーディングと呼び、2つの参照フレームについてのMVDが一緒にシグナリングされ、MVDの精度がMVDの大きさによって黙示的に決定される。そうでない場合、2つ(又は2つよりも多い)参照フレームについてのMVDが一緒にシグナリングされ、従来からのMVDコーディングが適用される。
【0098】
一部の実施形態において、適応動きベクトル解像度(AMVRでは7つのMV精度(8,4,2,1,1/2,1/4,1/8)をサポートする。各予測ブロックに対して、AOMビデオモデル(AVM)エンコーダが、サポートされた全ての精度値をサーチし、最良の精度をデコーダにシグナリングする。一部の実施形態において、エンコーダ実行時間を短縮するために、2つの精度セットがサポートされる。各精度セットが4つの所定の精度を含む。フレームレベルで、そのフレームの最大精度の値に基づいて適応的に精度セットが選択される。一部の実施形態において、最大精度はフレームヘッダ内でシグナリングされる。
【0099】
表5は、フレームレベル最大精度に基づいてサポートされる精度値をまとめたものである。
【表5】
【0100】
一部の実施形態において、フレームレベルフラグが、フレームのMVがサブペル精度を含むか否かを示す。cur_frame_force_integer_mvフラグの値が0である場合にのみ、AMVRが有効にされる。AMVRにおいて、ブロックの精度が最大精度よりも低い場合、動きモデル及び補間フィルタはシグナリングされない。ブロックの精度が最大精度よりも低い場合、動きモードは並進モーションと推定され、補間フィルタはREGULAR補間フィルタと推定される。同様に、ブロックの精度が4ペル又は8ペルのいずれかである場合、インターイントラモードはシグナリングされず、0であると推定される。
【0101】
動きベクトル予測子(MVP)リスト
【0102】
空間動きベクトル予測子(spatial motion vector predictor;SMVP)(例えば、隣接SMVP及び非隣接SMVPの両方)、時間MV予測子(temporal MV predictor;TMVP)、AV1におけるエクストラMV候補、及び追加で導出されたMVP、及び参照バンクMVPが、AVM設計において更に追加される。MVPリストを格納するために、固定サイズを有するスタックがエンコーダ端及びデコーダ端の両方で生成される。
【0103】
一部の実施形態において、SMVPは空間隣接ブロックから導出される。空間隣接ブロックは、現在ブロックの上側及び左側への直接ネイバーである隣接する空間隣接ブロックと、現在ブロックに直接には隣接しない非隣接の空間隣接ブロックとを含む。ルマブロックについての空間隣接ブロックの例示的なセットが
図8に示されており、各空間隣接ブロックは8×8ブロックである。空間隣接ブロックは、現在ブロックと同じ参照フレームインデックスに関連付けられた1つ以上のMVを見つけるために検査される。現在ブロックについて、空間的に隣接する8×8のルマブロックの探索順序は、
図8に番号1-8によって示される通りである:
1.上の隣接する行が左から右にチェックされる;
2.左に隣接する列が上から下にチェックされる;
3.右上に隣接するブロックがチェックされる;
4.左上ブロックに隣接するブロックがチェックされる;
5.上の隣接しない1つめの行が左から右にチェックされる;
6.左の隣接しない1つめの列が上から下にチェックされる;
7.上の隣接しない2つめの行が左から右にチェックされる;
8.左の隣接しない2つめの行が上から下にチェックされる。
【0104】
一部の実施形態において、隣接候補(
図8における候補1-3)は、TMVPの前でMV予測子リストに挿入され、非隣接(外側候補としても知られ、すなわち、
図8における候補4-8)は、TMVPの後でMV予測子リストに入れられる。全てのSMVP候補が現在ブロックと同じ参照ピクチャを持つべきである。現在ブロックが単一の参照ピクチャを持ち、MVP候補が単一参照ピクチャを有し、この参照ピクチャが現在ブロックの参照ピクチャと同じである場合、又はMVP候補が複合参照ピクチャ(例えば、2つの参照ピクチャ)を有し、それらの参照ピクチャのうちの1つが現在ブロックの参照ピクチャと同じである場合、このMVP候補はMV予測子リストに入れられることになる。現在ブロックが2つの参照ピクチャを持つ場合、MVP候補は、当該MVP候補が2つの参照ピクチャを持ち、これら2つの参照ピクチャが現在ブロックの参照ピクチャと同じであるときにのみ、MV予測子リストに入れられることになる。
【0105】
一部の実施形態では、ラインメモリを減らすために、さらに、
図8のライン5及び7によって表される外側候補が非隣接候補から除かれる。
【0106】
一部の実施形態において、TMVPは、参照フレーム内のコロケートブロックを用いて導出されることができる。TMVPを生成するために、先ず、参照フレームのMVが、それぞれの参照フレームに関連付けられた参照インデックスとともに格納される。その後、現在フレームの各8×8ブロックについて、その軌跡が該8×8ブロックを通過する参照フレームのMVが特定され、参照フレームインデックスとともに時間MVバッファに格納される。単一参照フレームを使用するインター予測では、参照フレームが前方参照フレームであるか後方参照フレームであるかにかかわらず、MVが、将来フレームの時間動きベクトル予測を行うために8×8単位で格納される。複合インター予測では、前方MVのみが、将来フレームの時間動きベクトル予測を行うために8×8単位で格納される。
【0107】
図9は、参照フレーム1(R1)908に対応した、R1からR1の参照フレーム902を指す動きベクトルMVref910を示している。そうする際に、MVref910は、現在フレーム906の8×8ブロック914を通過する。MVref910は、8×8ブロック914に関連付けられた時間MVバッファに格納される。TMVPを導出するための動き投影プロセスにおいて、参照フレームは、所定の順序、すなわち、LAST_FRAME、BWDREF_FRAME、ALTREF_FRAME、ALTREF2_FRAME、そして、LAST2_FRAMEという順序で走査される。(走査順において)より高いインデックスの参照フレームからのMVは、(走査順において)より低いインデックスの参照フレームによって割り当てられた先に特定されたMVを置き換えない。所定のブロック座標が与えられると、時間MVバッファに格納された関連するMVが特定されて現在ブロック上に投影されることで、現在ブロック914からその参照フレーム904を指す時間MV予測子(例えば、MV0 912)が導出される。
【0108】
図10は、一部の実施形態に従った、16×16ブロックの時間MV予測子を導出するための所定のブロック位置を示している。最大7つのブロック(例えば、ブロックB0-B6)が、有効な時間MV予測子についてチェックされる。時間MV予測子は、隣接空間MV予測子の後であるが、非隣接空間MV予測子の前にチェックされる。
【0109】
MV予測子を導出するために、全ての空間及び時間MV候補がプールされ、各予測子に、空間及び時間隣接ブロックの走査中に決定された重みが割り当てられる。関連する重みに基づいて、候補がソート及びランク付けされ、最大4つの候補が特定されてMV予測子リストに追加される。MV予測子のこのリストは、動的参照リスト(DRL)とも呼ばれ、次のサブセクションで説明するように、更に動的MV予測モードで使用される。
【0110】
エクストラMVP候補についての追加探索
一部の実施形態において、MVPリストが依然として満杯でない場合、追加の探索が実行され、MVPリストを満たすためにエクストラMVP候補が使用される。エクストラMVP候補は、例えば、グローバルMVと、ゼロMVと、スケーリングなしの組み合わられた複合MVとを含む。
【0111】
MVP候補並べ替えプロセス
一部の実施形態において、MVPリストに追加される隣接SMVP候補、TMVP候補、非隣接SMVP候補が並べ替えられる。一部の実施形態において、並べ替えプロセスは各候補の重みに基づく。候補の重みは、現在ブロックと候補ブロックとの重なり合う面積に応じて予め定められる。一部の実施形態において、外側/非隣接候補及びTMVP候補の重み付けは、並べ替えプロセス中に考慮されず、これは、並べ替えプロセスが隣接候補のみに影響を及ぼすことを意味する。
【0112】
導出されたMVP候補
一部の実施形態において、導出されたMVP候補は、単一参照ピクチャ及び複合モードの両方の導出されたMVPを含む。
【0113】
単一インター予測
一部の実施形態において、隣接ブロックの参照フレームが現在ブロックの参照フレームとは異なるが、同じ方向にある場合、時間スケーリングアルゴリズムを利用して、そのMVをその参照フレームにスケーリングして、現在ブロックの動きベクトルについてのMVPを形成することができる。
図11は、時間スケーリングを用いて現在ブロック1108の動きベクトルMV0 1104についてのMVPを導出するために、隣接ブロック1106からのMV1 1102が利用され得る一例を示している。
【0114】
複合インター予測
一部の実施形態において、現在ブロックのMVPを導出するために、相異なる隣接ブロックからの合成MVが利用されるが、合成MVの参照フレームは現在ブロックと同じである必要がある。
図12に示すように、MV2 1202及びMV3 1206からなる合成MVは、現在ブロック1210と同じ参照フレームを持つが、それらは、相異なる隣接ブロックからのものである。
図12は、フレームF3内の別の参照ブロック1212を指す現在フレームF4内の現在ブロック1210の動きベクトルMV0 1204と、(例えば、別の方向に)フレームF5内の別の参照ブロック1214を指す現在ブロック1210の動きベクトルMV1 1208とを示している。
【0115】
図13は、一部の実施形態に従った、コンピューティングシステム(例えば、サーバシステム112、ソース機器102、又は電子機器120)の一部である又はそれと通信可能に接続されることができる参照MV候補バンク1302を示している。一部の実施形態において、各バッファが、それぞれ単一インターモード及び複合インターモードをカバーする単一の参照フレーム又は一対の参照フレームに対応する一意の参照フレームタイプに対応する。一部の実施形態において、全てのバッファが同じサイズである。一部の実施形態において、新しいMVが満杯のバッファに追加されるとき、該新しいMVのための場所を空けるために既存のMVが追い出される。
【0116】
コーディングブロックは、参照MVリスト生成で得られたものに加えて、MV候補バンクを参照して参照MV候補を収集することができる。スーパーブロックをコーディングした後、MV候補バンク1302は、該スーパーブロックのコーディングブロックによって使用されたMVで更新される。
【0117】
一部の実施形態において、各タイルが、該タイル内の全てのスーパーブロックによって利用される独立したMV参照バンクを持つ。各タイルを符号化することの開始時に、対応するバンクが空(エンプティ)にされる。その後、そのタイル内の各スーパーブロックをコーディングする間、バンクからのMVがMV参照候補として使用され得る。スーパーブロックを符号化することの終了時にバンクが更新される。
【0118】
図13は、一部の実施形態に従った、スーパーブロックに基づく参照MV候補バンク1302の更新プロセスを示している。スーパーブロックがコーディングされた後、該スーパーブロック内のコーディングブロックによって使用された最初の例えば(最大64個の)候補MVが、参照MV候補バンク1302に追加される。一部の実施形態において、この更新中にプルーニングプロセスも含まれる。一部の実施形態において、参照MV候補について走査した後、候補リスト内に空きスロットが存在する場合、コーデックアルゴリズムは、更なるMV候補のために(一致する参照フレームタイプのバッファ内の)MV候補バンク1302を参照することができる。バッファの終わりから開始して始まりまで、バンクバッファ内のMVが、リスト内に既に存在しているのでなければ、候補リストに追加される。
【0119】
図14は、一部の実施形態に従った、動きベクトル予測子(MVP)リストを構築するためのプロセス1400を示している。一部の実施形態において、MVPリストは、完全なプルーニングを用いて以下の順序で構築される。一部の実施形態において、当該プロセスは、隣接するSMVPを挿入すること(1404)によって開始する(1402)。当該プロセスは、既存の候補についての並べ替えステップ1406を含み、それに、TMVP 1408、非隣接SMVP 1410、導出されたMVP候補1412、エクストラMVP候補1414、及び参照MV候補バンク(例えば、参照MV候補バンク1302)からの候補1416が続く。
【0120】
図15は、一部の実施形態に従った、現在コーディングブロックを復号するための方法1500を示すフロー図である。方法1500は、制御回路と、該制御回路による実行のための命令を格納したメモリと、を有するコンピューティングシステム(例えば、サーバシステム112、ソース機器102、又は電子機器120)にて実行され得る。一部の実施形態において、方法1500は、コンピューティングシステムのメモリ(例えば、メモリ314)に格納された命令を実行することによって実行される。
【0121】
システムは、1つ以上の動きベクトル(MV)候補を参照MVバンクから取り出す(1502)。第1の条件が満たされるとの判定に従って、システムは、現在コーディングブロックに関連付けられた動きベクトル予測(MVP)リストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入された後に挿入する(1504)。第1の条件が満たされないとの判定に従って、システムは、現在コーディングブロックに関連付けられたMVPリストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入される前に挿入する(1506)。システムは、MVPリストに基づいて現在コーディングブロックを予測する(1508)。
【0122】
(A1)一態様において、一部の実施形態は、現在コーディングブロックを復号するための方法(例えば、方法1500)を含む。一部の実施形態において、当該方法は、メモリ及び制御回路を有するコンピューティングシステム(例えば、サーバシステム112)にて実行される。一部の実施形態において、当該方法は、コーディングモジュール(例えば、コーディングモジュール320)にて実行される。当該方法は、1つ以上の動きベクトル(MV)候補を参照MVバンクから取り出すことを含む。当該方法は、
一部の実施形態において、参照候補バンク(例えば、参照MV候補バンク1302)からの候補は、導出された候補より前にMVPリストに挿入され、その結果、MVPリストは、以下の順序によって構築され、すなわち、隣接SMVP、既存の候補についての並べ替えプロセス、TMVP候補、非隣接SMVP候補、参照MV候補バンクからの候補、導出された候補、及びエクストラ候補、の順序によって構築される。
【0123】
一部の実施形態において、導出されたMV候補は、インター予測モードに基づく単一の参照フレームにおける1つ以上の動きベクトル、又は複合インター予測モードにおける複数の隣接参照フレームからの合成動きベクトルのいずれかから導出されたMV予測子である。
【0124】
一部の実施形態において、参照候補バンクからの候補は、条件付きで、導出された候補より前にMVPリストに挿入される。例えば、1つの条件が満たされる場合、元のMVPリスト順序が用いられ、そうではなく、その条件が満たされない場合、異なる順序又はコンテンツを有する新たなMVPリストが構築される。
【0125】
一部の実施形態において、参照候補バンクからの候補は、条件付きで、導出された候補より前にMVPリストに挿入される。例えば、1つの条件が満たされる場合、元のMVPリスト順序が用いられ、そうでない場合(例えば、その条件が満たされない場合)、MVPリストは、以下の順序によって構築され、すなわち、隣接SMVP、既存の候補についての並べ替えプロセス、TMVP候補、非隣接SMVP候補、参照MV候補バンクからの候補、導出された候補、及びエクストラ候補、の順序によって構築される。
【0126】
一部の実施形態において、幅≧N且つ/或いは高さ≧Nという条件が満たされる場合(例えば、Nは、以下に限られないが、8、16、32、又は64ルマサンプルに等しいとし得る)、元のMVPリスト順序が用いられ(例えば、参照MV候補バンクからの候補がMVPリストの最後に挿入される)、そうではなく、幅<N又は高さ<Nである場合、参照MV候補バンクからの候補が、導出された候補の前に挿入される。
【0127】
一部の実施形態において、幅≧N且つ/或いは高さ≧Nという条件が満たされる場合(例えば、Nは、以下に限られないが、8、16、32、又は64ルマサンプルに等しい)、元のMVPリスト順序が用いられ(例えば、参照MV候補バンクからの候補がMVPリストの最後に置かれる)、そうではなく、幅<N且つ高さ<Nである場合、参照MV候補バンクからの候補が、導出された候補の前に挿入される。
【0128】
一部の実施形態において、幅×高さ≧N×Nという条件が満たされる場合(例えば、Nは、以下に限られないが、8、16、32、又は64ルマサンプルに等しい)、元のMVPリスト順序が用いられ(例えば、参照MV候補バンクからの候補がMVPリストの最後に置かれる)、そうではなく、幅×高さ<N×Nである場合、参照MV候補バンクからの候補は、導出された候補の前に挿入されることになる。
【0129】
一部の実施形態において、現在のMVコーディングモードが“NEAR”を含む場合(例えば、単一参照のケースでのNEARMV、又は複合参照のケースでの、NEAR_NEWMV、NEW_NEARMV、NEAR_NEARMV、及び例えばオプティカルフローなどのそれらの拡張)、元のMVPリスト順序が用いられ(例えば、参照MV候補バンクからの候補がMVPリストの最後に置かれる)、そうではなく、現在のMVコーディングモードが“NEAR”を含まない場合(例えば、単一参照でのNEWMV、並びに複合参照でのNEW_NEWMV及びJOINT_NEWMV、並びに例えばオプティカルフローなどのそれらの拡張)、参照MV候補バンクからの候補が、導出された候補の前に挿入される。
【0130】
一部の実施形態において、現在のMVコーディングモードが各参照フレームリストについてNEARを含む場合(例えば、単一参照のケースでのNEARMV、複合参照のケースでのNEAR_NEARMV、及び例えばオプティカルフローなどのそれらの拡張)、元のMVPリスト順序が用いられ(例えば、参照MV候補バンクからの候補がMVPリストの最後に置かれる)、そうではなく、現在のMVコーディングモードが全ての参照フレームリストについてNEARを含まない場合(例えば、単一参照でのNEWMV、及び複合参照でのNEW_NEWMV、NEAR_NEWMV、NEW_NEARMV及びJOINT_NEWMV、並びに例えばオプティカルフローなどのそれらの拡張)、参照MV候補バンクからの候補が、導出された候補の前に挿入される。
【0131】
一部の実施形態において、現在の動きモードが並進である場合、元のMVPリスト順序が用いられ、そうでない場合(例えば、動きモードがワープ又はobmcである)、異なる順序又はコンテンツを有する新たなMVPリストが構築される。
【0132】
図15は、幾つかの論理ステージを特定の順序で示しているが、順序依存ではないステージは並べ替えられてもよく、また、他のステージが組み合わされたり分解されたりしてもよい。特に言及されていない何らかの並べ替え又は他のグループ化が当業者には明らかになるのであり、ここで提示された順序付け及びグループ化は網羅的ではない。また、認識されるべきことには、これらのステージは、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせで実装され得る。
【0133】
次に、一部の実施形態例を参照する。
【0134】
(A1)一態様において、一部の実施形態は、現在コーディングブロックを復号するための方法(例えば、方法1500)を含む。一部の実施形態において、当該方法は、メモリ及び制御回路を有するコンピューティングシステム(例えば、サーバシステム112)にて実行される。一部の実施形態において、当該方法は、コーディングモジュール(例えば、コーディングモジュール320)にて実行される。当該方法は、1つ以上の動きベクトル(MV)候補を参照MVバンクから取り出すことを含む。当該方法は、第1の条件が満たされるとの判定に従って、現在コーディングブロックに関連付けられたMVPリストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入された後に挿入し、第1の条件が満たされないとの判定に従って、現在コーディングブロックに関連付けられたMVPリストに、参照MVバンクからの上記1つ以上のMV候補を、導出されたMV候補がMVPリストに挿入される前に挿入し、MVPリストに基づいて現在コーディングブロックを予測する、ことを含む。
【0135】
(A2)A1の一部の実施形態において、上記1つ以上のMV候補は、現在コーディングブロックに隣接する空間隣接ブロックから導出された空間MV予測子(SMVP)を含む。これは
図8に示されている。
【0136】
(A3)A1又はA2の一部の実施形態において、第1の条件は、Nは8以上の整数であるとして、(i)現在コーディングブロックがNルマサンプル以上の幅を持つという条件、及び(ii)現在コーディングブロックがNルマサンプル以上の高さを持つという条件、のうちの少なくとも一方を有する。
【0137】
(A4)A1-A3のいずれかの一部の実施形態において、第1の条件は、Nは8以上の整数であるとして、(i)現在コーディングブロックがNルマサンプル以上の幅を持つという第1のサブ条件、及び(ii)現在コーディングブロックがNルマサンプル以上の高さを持つという第2のサブ条件を含む。
【0138】
(A5)A1-A4のいずれかの一部の実施形態において、第1の条件が満たされないとき、MVPリストは、隣接SMVP、並べ替えられた一連のMV候補、時間動きベクトル予測子(TMVP)候補、非隣接SMVP候補、参照MV候補バンクからの第2の候補、及び導出された候補という順番を有する。
【0139】
(A6)A1-A5のいずれかの一部の実施形態において、第1の条件は、現在コーディングブロックの幅と現在コーディングブロックの高さとの積がN×N以上であるという条件を有し、Nは、ルマサンプルの数を表す整数であり、Nは8以上である。
【0140】
(A7)A1-A6のいずれかの一部の実施形態において、第1の条件は、現在のMVコーディングモードが用語“NEAR”を含む(例えば、単一参照のケースでのNEARMV、又は複合参照のケースでの、NEAR_NEWMV、NEW_NEARMV、NEAR_NEARMV、及び例えばオプティカルフローなどのそれらの拡張)という条件を有する。
【0141】
(A8)A1-A7のいずれかの一部の実施形態において、第1の条件は、現在のMVコーディングモードが、コンピューティングシステムによって取得されたビデオストリームにおける各参照フレームリストについてNEARモードを有するという条件を有する。
【0142】
(A9)A1-A8のいずれかの一部の実施形態において、第1の条件は、現在の動きモードが並進モードであるという条件を有する。
【0143】
(A10)A1-A9のいずれかの一部の実施形態において、導出されたMV候補は、インター予測モードに基づく単一の参照フレームにおける動きベクトル(又は1つ以上の動きベクトル)、又は複合インター予測モードにおける複数の隣接参照フレームからの合成動きベクトル(又は1つ以上の合成動きベクトル)のいずれかから導出されたMV予測子である。
【0144】
他の一態様において、一部の実施形態は、制御回路(例えば、制御回路302)と、該制御回路に結合されたメモリ(例えば、メモリ314)とを含むコンピューティングシステム(例えば、サーバシステム112)を含み、メモリは、制御回路によって実行されるように構成された1つ以上の命令セットを格納し、該1つ以上の命令セットは、ここで説明された方法(例えば、上のA1-A9)のうちのいずれかを実行するための命令を含む。
【0145】
更なる他の一態様において、一部の実施形態は、コンピューティングシステムの制御回路による実行のための1つ以上の命令セットを格納した非一時的コンピュータ読み取り可能記憶媒体を含み、該1つ以上の命令セットは、ここで説明された方法(例えば、上のA1-A9)のうちのいずれかを実行するための命令を含む。
【0146】
理解されることには、様々な要素を説明するためにここでは用語“第1”、“第2”などが使用されていることがあるが、それらの要素はこれらの用語によって限定されるべきでない。これらの用語は、1つの要素を別の要素から区別するためにのみ使用されている。
【0147】
ここで使用される用語は、特定の実施形態を説明することのみを目的としており、請求項を限定することは意図していない。実施形態の説明及び添付の請求項において使用されるとき、単数形の“a”、“an”、及び“the”は、文脈が別のことを明確に示していない限り、複数形も同様に含むことを意図している。これまた理解されることには、ここで使用される用語“及び/又は”は、関連して列挙されるアイテムのうちの1つ以上のありとあらゆる可能な組み合わせを指し、それらを包含する。更に理解されることには、用語“含む”及び/又は“含んでいる”は、この明細書中で使用されるとき、述べられるフィーチャ、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ以上の他のフィーチャ、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらのグループの存在又は追加を排除しない。
【0148】
ここで使用されるとき、用語“場合”は、文脈に応じて、述べられる先行条件が真である“ときに”、又は“それを受けて”、又は“そう決定することに応答して”、又は“その決定に従って”、又は“そう検出したことに応答して”を意味するように解釈されることができる。同様に、“[述べられる先行条件が真である]と決定された場合”、又は“[述べられる先行条件が真である]場合”、又は“[述べられる先行条件が真である]とき”という句は、文脈に応じて、述べられる先行条件が真であることを“決定したことを受けて”、又は“決定したことに応答して”、又は“決定に従って”又は“検出したことを受けて”、又は“検出したことに応答して”を意味するように解釈されることができる。
【0149】
以上の記載は、説明の目的で、特定の実施形態を参照して記述されている。しかしながら、上での例示的な説明は、網羅的であることや、開示されたままの形態に請求項を限定することを意図していない。上の教示に鑑みて数多くの変更及び変形が可能である。これらの実施形態は、動作の原理及び実用的な用途を最もうまく説明し、それによって他の当業者ができるようにするために選択されて説明されたものである。
【国際調査報告】