(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-16
(54)【発明の名称】選択可能なニューラルネットワークベースのコーディングツールによるビデオコーディング
(51)【国際特許分類】
H04N 19/70 20140101AFI20241008BHJP
H04N 19/30 20140101ALI20241008BHJP
【FI】
H04N19/70
H04N19/30
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518438
(86)(22)【出願日】2022-09-29
(85)【翻訳文提出日】2024-03-22
(86)【国際出願番号】 US2022077251
(87)【国際公開番号】W WO2023056348
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【氏名又は名称】出口 智也
(72)【発明者】
【氏名】佐藤 数史
(72)【発明者】
【氏名】ユイ、ユエ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MA31
5C159MC11
5C159ME01
5C159PP04
5C159RC11
5C159TA16
5C159TB04
5C159TB06
5C159UA02
5C159UA05
(57)【要約】
いくつかの実施形態では、ビデオデコーダーは、選択可能なニューラルネットワークベースのコーディングツールでエンコードされたビデオビットストリームからビデオをデコードする。ビデオデコーダーは、ビデオビットストリームからシンタックス要素を識別し、当該シンタックス要素は、ビデオビットストリームの一部をエンコードする期間中における、ニューラルネットワークベースのコーディングツールの利用状況を指示する。ビデオデコーダーはさらに、シンタックス要素の値に基づいて、ニューラルネットワークベースのコーディングツールが有効にされたか否かを確定する。有効にされた場合、ビデオデコーダーは、ニューラルネットワークベースのコーディングツールを利用して、ビデオビットストリームの当該一部をピクチャにデコードし、そうでない場合、ビデオデコーダーは、ニューラルネットワークベースのコーディングツールを利用せずに、ビデオビットストリームの当該一部をピクチャにデコードする。ビデオデコーダーはさらに、デコードされたピクチャの1つ又は複数を表示のために出力する。
【特許請求の範囲】
【請求項1】
ビデオエンコーダーを利用してエンコードされたビデオビットストリームからビデオをデコードするための方法であって、
前記ビデオビットストリームからシンタックス要素を識別することであって、前記シンタックス要素は、前記ビデオビットストリームの一部をエンコードする期間中における、ニューラルネットワークベースのコーディングツールの利用状況を指示する、識別することと、
前記シンタックス要素の値を確定することと、
前記シンタックス要素の前記値が、前記ビデオビットストリームの前記一部をエンコードする期間中に、前記ニューラルネットワークベースのコーディングツールが有効にされたことを指示すると確定することに応答して、前記ニューラルネットワークベースのコーディングツールを利用して、前記ビデオビットストリームの前記一部をピクチャにデコードすることと、
前記シンタックス要素の前記値が、前記ビデオビットストリームの前記一部をエンコードする期間中に、前記ニューラルネットワークベースのコーディングツールが無効にされたことを指示すると確定することに応答して、前記ニューラルネットワークベースのコーディングツールを利用せずに、前記ビデオビットストリームの前記一部をピクチャにデコードすることと、
デコードされた前記ピクチャを表示のために出力することと、
を含む、
ことを特徴とするビデオエンコーダーを利用してエンコードされたビデオビットストリームからビデオをデコードするための方法。
【請求項2】
前記シンタックス要素は、ビデオパラメータセット(VPS)において識別され、且つ前記シンタックス要素は前記ビデオの各レイヤのフラグを含み、前記フラグは、前記ビデオの対応するレイヤのエンコーディングにおける前記ニューラルネットワークベースのコーディングツールの利用状況を指示する、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記シンタックス要素は、シーケンスパラメータセット(SPS)において識別され、且つ、前記シンタックス要素は、前記ビデオの対応するシーケンスのエンコーディングにおける前記ニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記シンタックス要素は、ピクチャパラメータセット(PPS)、ピクチャヘッダ、又はスライスヘッダのうちの少なくとも1つにおいて識別され、且つ、前記シンタックス要素は、前記ビデオの対応するピクチャ又はスライスのエンコーディングにおける前記ニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含む、
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記ビデオのシーケンスがサブレイヤ構造でコードされ、前記シンタックス要素は、VPS又はSPSにおいて識別され、且つ、前記シンタックス要素は、前記シーケンスのエンコーディングにおいて前記ニューラルネットワークベースのコーディングツールが有効にされた、前記サブレイヤ構造内の最上位サブレイヤを指示する、
ことを特徴とする請求項1に記載の方法。
【請求項6】
前記ニューラルネットワークベースのコーディングツールは、ニューラルネットワークベースのイントラ予測コーディングツール、又はニューラルネットワークベースのループフィルタコーディングツールのいずれかである、
ことを特徴とする請求項1に記載の方法。
【請求項7】
前記シンタックス要素は、SPS又はシンタックスalf_data()において識別され、且つ、前記シンタックス要素は、前記ビデオの対応するシーケンス又は対応するピクチャもしくはスライスのエンコーディングにおけるニューラルネットワークベースのループフィルタコーディングツールの利用状況を指示するフラグを含む、
ことを特徴とする請求項1に記載の方法。
【請求項8】
前記ニューラルネットワークベースのコーディングツールを利用して、前記ビデオビットストリームの前記一部をピクチャにデコードすることは、
前記ニューラルネットワークベースのコーディングツールを利用して、前記ビデオビットストリームの前記一部をデコードするために、前記ビデオビットストリームの前記一部をクラウドサーバーに送信することと、
前記クラウドサーバーから、前記ビデオビットストリームの前記一部の圧縮されたデコードデータを受信することと、
受信した前記圧縮されたデコードデータを解凍して、前記ビデオビットストリームの前記一部のデコードされたビデオデータを生成することと、を含み、
前記ビデオビットストリームの前記一部の前記デコードされたビデオデータは、前記ビデオビットストリームの第2部分をデコードするために用いられる、
ことを特徴とする請求項1に記載の方法。
【請求項9】
ビデオの圧縮されたビデオデータを含むビデオビットストリームをデコードするためのシステムであって、クライアント装置及びクラウドサーバーを備え、
前記クライアント装置は、
ニューラルネットワークベースのコーディングツールでエンコードされる、前記圧縮されたビデオデータの第1部分を取得し、
前記圧縮されたビデオデータの前記第1部分を前記クラウドサーバーに送信し、
前記クラウドサーバーから、前記圧縮されたビデオデータの前記第1部分の圧縮されたデコードデータを受信し、
受信した前記圧縮されたデコードデータを解凍して、前記圧縮されたビデオデータの前記第1部分のデコードされたビデオデータを生成し、
前記デコードされたビデオデータを利用して、前記圧縮されたビデオデータの第2部分をデコードする、ように構成されており、
前記クラウドサーバーは、
前記クライアント装置から前記圧縮されたビデオデータの前記第1部分を受信し、
前記ニューラルネットワークベースのコーディングツールを利用して、前記圧縮されたビデオデータの前記第1部分をデコードし、
前記圧縮されたビデオデータのデコードされた前記第1部分を圧縮して、圧縮された且つデコードされたビデオデータを生成し、
前記圧縮された且つデコードされたビデオデータを前記クライアント装置に送信する、ように構成されている、
ことを特徴とするビデオの圧縮されたビデオデータを含むビデオビットストリームをデコードするためのシステム。
【請求項10】
前記クライアント装置は、前記ビデオビットストリームにおけるシンタックス要素に基づいて、前記圧縮されたビデオデータの前記第1部分を確定するようにさらに構成されている、
ことを特徴とする請求項9に記載のシステム。
【請求項11】
前記シンタックス要素は、
前記シンタックス要素が、ビデオパラメータセット(VPS)において識別され、且つ、前記シンタックス要素が前記ビデオの各レイヤのフラグを含み、前記フラグが、前記ビデオの対応するレイヤをエンコードする際の前記ニューラルネットワークベースのコーディングツールの利用状況を指示すること、
前記シンタックス要素が、シーケンスパラメータセット(SPS)において識別され、且つ、前記シンタックス要素が、前記ビデオの対応するシーケンスをエンコードする際の前記ニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含むこと、
前記シンタックス要素が、ピクチャパラメータセット(PPS)、ピクチャヘッダ、又はスライスヘッダのうちの少なくとも1つにおいて識別され、且つ、前記シンタックス要素が、前記ビデオの対応するピクチャ又はスライスをエンコードする際の前記ニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含むこと、
前記シンタックス要素が、VPS又はSPSにおいて識別され、且つ、前記シンタックス要素が、対応するシーケンスをエンコードする際に前記ニューラルネットワークベースのコーディングツールが有効にされた、サブレイヤ構造内の最上位サブレイヤを指示すること、又は、
前記シンタックス要素が、SPS又はシンタックスalf_data()において識別され、且つ、前記シンタックス要素が、前記ビデオの対応するシーケンス又は対応するピクチャもしくはスライスをエンコードする際のニューラルネットワークベースのループフィルタコーディングツールの利用状況を指示するフラグを含むこと、
のうちの少なくとも1つを満たす、
ことを特徴とする請求項10に記載のシステム。
【請求項12】
デコードされた前記第1部分を圧縮することは、デコードされた前記第1部分をロスレスに圧縮することを含む、
ことを特徴とする請求項9に記載のシステム。
【請求項13】
前記ニューラルネットワークベースのコーディングツールは、ニューラルネットワークベースのイントラ予測コーディングツール、又はニューラルネットワークベースのループフィルタコーディングツールのいずれかである、
ことを特徴とする請求項9に記載のシステム。
【請求項14】
非一時的なコンピュータ可読媒体であって、前記非一時的なコンピュータ可読媒体にプログラムコードが記憶されており、
以下の操作を実行するように、前記プログラムコードは、1つ又は複数の処理デバイスによって実行可能であり、前記操作は、
ビデオのビデオビットストリームからシンタックス要素を識別することであって、前記シンタックス要素は、前記ビデオビットストリームの一部をエンコードする期間中における、ニューラルネットワークベースのコーディングツールの利用状況を指示する、識別することと、
前記シンタックス要素の値を確定することと、
前記シンタックス要素の前記値が、前記ビデオビットストリームの前記一部をエンコードする期間中に、前記ニューラルネットワークベースのコーディングツールが有効にされたことを指示すると確定することに応答して、前記ニューラルネットワークベースのコーディングツールを利用して、前記ビデオビットストリームの前記一部をピクチャにデコードすることと、
前記シンタックス要素の前記値が、前記ビデオビットストリームの前記一部をエンコードする期間中に、前記ニューラルネットワークベースのコーディングツールが無効にされたことを指示すると確定することに応答して、前記ニューラルネットワークベースのコーディングツールを利用せずに、前記ビデオビットストリームの前記一部をピクチャにデコードすることと、
デコードされた前記ピクチャを表示のために出力することと、
を含む、
ことを特徴とする非一時的なコンピュータ可読媒体。
【請求項15】
前記シンタックス要素は、ビデオパラメータセット(VPS)において識別され、且つ前記シンタックス要素は前記ビデオの各レイヤのフラグを含み、前記フラグは、前記ビデオの対応するレイヤのエンコーディングにおける前記ニューラルネットワークベースのコーディングツールの利用状況を指示する、
ことを特徴とする請求項14に記載の非一時的なコンピュータ可読媒体。
【請求項16】
前記シンタックス要素は、シーケンスパラメータセット(SPS)において識別され、且つ、前記シンタックス要素は、前記ビデオの対応するシーケンスのエンコーディングにおける前記ニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含む、
ことを特徴とする請求項14に記載の非一時的なコンピュータ可読媒体。
【請求項17】
前記シンタックス要素は、ピクチャパラメータセット(PPS)、ピクチャヘッダ、又はスライスヘッダのうちの少なくとも1つにおいて識別され、且つ、前記シンタックス要素は、前記ビデオの対応するピクチャ又はスライスのエンコーディングにおける前記ニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含む、
ことを特徴とする請求項14に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記ビデオのシーケンスがサブレイヤ構造でコードされ、前記シンタックス要素は、VPS又はSPSにおいて識別され、且つ、前記シンタックス要素は、前記シーケンスのエンコーディングにおいて前記ニューラルネットワークベースのコーディングツールが有効にされた、前記サブレイヤ構造内の最上位サブレイヤを指示する、
ことを特徴とする請求項14に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記ニューラルネットワークベースのコーディングツールは、ニューラルネットワークベースのイントラ予測コーディングツール、又はニューラルネットワークベースのループフィルタコーディングツールのいずれかである、
ことを特徴とする請求項14に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記シンタックス要素は、SPS又はシンタックスalf_data()において識別され、且つ、前記シンタックス要素は、前記ビデオの対応するシーケンス又は対応するピクチャもしくはスライスのエンコーディングにおけるニューラルネットワークベースのループフィルタコーディングツールの利用状況を指示するフラグを含む、
ことを特徴とする請求項14に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、発明の名称が「ニューラルネットワークベースのビデオコーディングツールのためのシンタックス」である、2021年9月29日に出願された米国仮特許出願第63/249,942号の優先権を主張し、そのすべての内容が引用として本出願に組み込まれる。
【0002】
本開示は全般的に、ビデオ処理のためのコンピュータ実装方法及びシステムに関する。具体的に、本開示は、選択可能なニューラルネットワークベースのコーディングツールによるビデオコーディングに係る。
【背景技術】
【0003】
スマートフォン、タブレット端末、及びコンピュータなどのカメラ付きのデバイスの遍在により、ビデオやイメージのキャプチャーがかつてないほど簡単になった。また、画面コンテンツなど、カメラによるキャプチャーではないコンテンツも日々生成されている。しかし、短いビデオでもそのデータ量は相当なものになることができる。ビデオコーディング技術(ビデオのエンコーディング及びビデオのデコーディングを含む)によりビデオデータがより小さなサイズに圧縮され、それによって、様々なビデオが記憶され且つ伝送されることができるようになった。ビデオコーディングは、デジタルテレビ放送、インターネットやモバイルネットワークでのビデオ伝送、リアルタイムアプリケーション(例えば、ビデオチャット、ビデオ会議など)、デジタル多用途ディスク(digital versatile disc、DVD)やブルーレイ・ディスクなど、幅広い用途に使用されている。ビデオを記憶するための記憶スペース及び/又はビデオを伝送するためのネットワーク帯域幅の消費を低減するために、ビデオコーディングスキームの効率を向上させることが望まれている。
【発明の概要】
【0004】
いくつかの実施形態は、ニューラルネットワークベースのビデオコーディングツール(neural-network-based video coding tools)のためのシンタックスに係る。一例では、ビデオエンコーダーを利用してエンコードされたビデオビットストリームからビデオをデコードするための方法が提供される。当該方法は、以下の内容を含む。ビデオビットストリームからシンタックス要素を識別し、シンタックス要素は、ビデオビットストリームの一部をエンコードする期間中における、ニューラルネットワークベースのコーディングツールの利用状況を指示する。シンタックス要素の値を確定する。シンタックス要素の値が、ビデオビットストリームの一部をエンコードする期間中に、ニューラルネットワークベースのコーディングツールが有効にされたことを指示すると確定することに応答して、ニューラルネットワークベースのコーディングツールを利用して、ビデオビットストリームの一部をピクチャにデコードする。シンタックス要素の値が、ビデオビットストリームの一部をエンコードする期間中に、ニューラルネットワークベースのコーディングツールが無効にされたことを指示すると確定することに応答して、ニューラルネットワークベースのコーディングツールを利用せずに、ビデオビットストリームの一部をピクチャにデコードする。デコードされたピクチャを表示のために出力する。
【0005】
別の例では、ビデオの圧縮されたビデオデータを含むビデオビットストリームをデコードするためのシステムが提供される。当該システムは、クライアント装置及びクラウドサーバーを備える。上記クライアント装置は、ニューラルネットワークベースのコーディングツールでエンコードされる、圧縮されたビデオデータの第1部分を取得し、圧縮されたビデオデータの第1部分をクラウドサーバーに送信し、クラウドサーバーから、圧縮されたビデオデータの第1部分の圧縮されたデコードデータ(compressed decoded data)を受信し、受信した圧縮されたデコードデータを解凍して、圧縮されたビデオデータの第1部分のデコードされたビデオデータを生成し、デコードされたビデオデータを利用して、圧縮されたビデオデータの第2部分をデコードする、ように構成されている。上記クラウドサーバーは、クライアント装置から圧縮されたビデオデータの第1部分を受信し、ニューラルネットワークベースのコーディングツールを利用して、圧縮されたビデオデータの第1部分をデコードし、圧縮されたビデオデータのデコードされた第1部分を圧縮して、圧縮された且つデコードされたビデオデータを生成し、圧縮された且つデコードされたビデオデータをクライアント装置に送信する、ように構成されている。
【0006】
さらなる別の例では、非一時的なコンピュータ可読媒体が提供される。当該非一時的なコンピュータ可読媒体にプログラムコードが記憶されている。以下の操作を実行するように、プログラムコードは、1つ又は複数の処理デバイスによって実行可能であり、上記操作は、ビデオのビデオビットストリームからシンタックス要素を識別することであって、シンタックス要素は、ビデオビットストリームの一部をエンコードする期間中における、ニューラルネットワークベースのコーディングツールの利用状況を指示する、識別することと、シンタックス要素の値を確定することと、シンタックス要素の値が、ビデオビットストリームの一部をエンコードする期間中に、ニューラルネットワークベースのコーディングツールが有効にされたことを指示すると確定することに応答して、ニューラルネットワークベースのコーディングツールを利用して、ビデオビットストリームの一部をピクチャにデコードすることと、シンタックス要素の値が、ビデオビットストリームの一部をエンコードする期間中に、ニューラルネットワークベースのコーディングツールが無効にされたことを指示すると確定することに応答して、ニューラルネットワークベースのコーディングツールを利用せずに、ビデオビットストリームの一部をピクチャにデコードすることと、デコードされたピクチャを表示のために出力することと、を含む。
【0007】
これらの例示的な実施形態は、本開示を限定又は定義するために記載されているのではなく、本開示への理解を助けるための例を提供するために記載されている。追加の実施形態は、明細書の詳細に記述され、さらなる説明が明細書に提供される。
【図面の簡単な説明】
【0008】
添付図面を参照しながら以下の詳細な説明を読むと、本開示の特徴、実施形態及び利点がよりよく理解される。
【
図1】
図1は、本明細書で説明される実施形態を実施するように構成されたビデオエンコーダーの一例を示すブロック図である。
【
図2】
図2は、本明細書で説明される実施形態を実施するように構成されたビデオデコーダーの一例を示すブロック図である。
【
図3】
図3は、本開示のいくつかの実施形態に係る、特定の時間レイヤ(temporal layers)のために有効にされたニューラルネットワークベースのコーディングツールによるビデオコーディングスキームのサブレイヤ構造の一例を示す。
【
図4】
図4は、本開示のいくつかの実施形態に係る、ニューラルネットワークベースのコーディングツールに基づいたクラウドアシストデコーディング(cloud assisted decoding)の一例を示す。
【
図5】
図5は、本開示のいくつかの実施形態に係る、ニューラルネットワークベースのコーディングツールに基づいたクラウドアシストデコーディングのいくつかのプロセスを示すフローチャートである。
【
図6】
図6は、本開示のいくつかの実施形態に係る、選択可能なニューラルネットワークベースのコーディングツールでエンコードされたビデオビットストリームをデコードするプロセス600の一例を示す。
【
図7】
図7は、本開示のいくつかの実施形態を実施するために用いられることができるコンピューティングシステムの一例を示す。
【発明を実施するための形態】
【0009】
様々な実施形態は、選択可能なニューラルネットワークベースのエンコーディングツールによるビデオコーディングを提供する。上述したように、生成され、記憶され、伝送されるビデオデータがより多くなっている。ビデオコーディング技術の効率を向上させることが有益であり、それによって、デコードされたビデオの視覚的品質を損なうことなく、より少ないデータを利用してビデオを表現する。コーディング効率を向上させる1つの方法は、ニューラルネットワークベースのコーディングツールを利用することである。ニューラルネットワークベースのコーディングツールは、ビデオコーディングの様々な段階で利用されることができ、それによって、インター予測、イントラ予測、又はループフィルタリングなどにおけるコーディング効率を向上させる。
【0010】
しかし、ニューラルネットワークベースのコーディング方法は、高い計算能力を必要とし、例えば、高い計算能力を持つGPUなどが挙げられる。このようなGPUには一般的にクラウドサーバーが装備されており、スマートフォンなどの端末におけるGPUの能力はかなり限られている。その結果として、GPUの能力が限られているデバイスは、ニューラルネットワークベースのコーディングツールを利用してエンコードされたビデオをデコードすることができない。この問題を解決するために、ニューラルネットワークベースのコーディングツールを選択可能にすべきであり、それによって、計算能力が高いデバイスによってデコードされようとするビデオビットストリームと比べて、計算能力が限られているデバイスによってデコードされようとするビデオビットストリームは、より少ないニューラルネットワークベースのエンコーディングツールでエンコードされることができる。
【0011】
ビデオエンコーダー及びデコーダーの実施形態においてそのような柔軟性を可能にするために、ニューラルネットワークベースのコーディングツールを有効且つ無効にするためのフラグなどのシグナリングは、コーディングスキームの異なるレベル又はレイヤで採用されることができる。例えば、ニューラルネットワークベースのコーディングツールのためのシグナリングは、すべてのレイヤにおけるシーケンスに対して、シーケンスレベルにおいて、ピクチャレベルもしくはスライスレベルにおいて、時間レイヤにおいて設定されることができ、又は上記シグナリングがループフィルタに対して設定される場合、他のループフィルタに関連するシンタックスとともに設定されることができる。
【0012】
1つの実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、ビデオコーディングのすべてのレイヤにおけるシーケンスに対して設定される。各レイヤは、コードされたビデオのスケーラビリティ(scalability)に対する異なる空間解像度又はコードされたビデオの異なるビューを表すことができる。ビデオパラメータセット(video parameter set、VPS)において、レイヤごとにフラグが導入されることができ、当該フラグは、ビデオの対応するレイヤのエンコーディングにおけるニューラルネットワークベースのコーディングツールの利用状況を指示する。
【0013】
別の実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、シーケンスレベルにおいて設定される。例えば、シーケンスパラメータセット(sequence parameter set、SPS)にフラグが追加されることができ、当該フラグは、ビデオの対応するシーケンスのエンコーディングにおけるニューラルネットワークベースのコーディングツールの利用状況を指示する。
【0014】
別の実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、ピクチャレベル又はスライスレベルにおいて設定される。例えば、ピクチャパラメータセット(picture parameter set、PPS)、ピクチャヘッダ、又はスライスヘッダにおいて、フラグが定義されることができる。当該フラグは、ビデオの対応するピクチャ又はスライスのエンコーディングにおけるニューラルネットワークベースのコーディングツールの利用状況を指示する。
【0015】
別の実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、時間レイヤに対して設定される。例えば、ビデオのシーケンスがサブレイヤ構造でコードされる場合、VPS又はSPSにおいてフラグが識別されることができ、それによって、シーケンスのエンコーディングにおいてニューラルネットワークベースのコーディングツールが有効にされた、サブレイヤ構造内の最上位サブレイヤを指示する。
【0016】
別の実施形態では、シグナリングがニューラルネットワークベースのループフィルタコーディングツール(neural-network-based loop-filter coding tools)のために追加される。ループフィルタは、デコードされたイメージの画質及びコーディング効率に直接に影響する。そのため、上記実施形態で提案されたシーケンスレベルシグナリング(sequence level signaling)のためのシンタックスに加えて、ニューラルネットワークベースのループフィルタのためのフラグは、他のニューラルネットワークベースのコーディングツールとは別に定義されることができる。又は、ニューラルネットワークベースのループフィルタコーディングツールのためのフラグのみが定義される。
【0017】
さらなる実施形態では、ニューラルネットワークベースのコーディングツールは、デコードされたピクチャに適用されようとするポストフィルタツール(post-filter tool)として用いられる。例えば、ニューラルネットワークベースのツールは、標準ダイナミックレンジコンテンツ(standard dynamic range content)からハイダイナミックレンジコンテンツ(high dynamic range content)を作成することによって、デコードされたビデオの品質を向上させるために用いられることができ、又は、デコードされたビデオの色域(color gamut)を広色域(wide color gamut)に拡張するために用いられることができる。ポストフィルタシナリオにおけるニューラルネットワークベースのコーディングツールの利用を可能にするために、補足拡張情報(supplemental enhancement information、SEI)メッセージを利用して、ネットワークパラメータと、ニューラルネットワークベースのポストフィルタインジケータ(neural-network-based post-filter indicators)とを送信することができる。この実施形態では、ビデオ信号が、標準ダイナミックレンジ又はサイズが比較的小さい狭色域コンテンツ(narrow color gamut content)としてコードされることができる。ニューラルネットワークベースのコーディングツールを利用して、デコードされたビデオコンテンツをハイダイナミックレンジ又はホワイト色域コンテンツ(white color gamut content)に変換することにより、コーディングアーチファクト(coding artifact)は軽減されることができる。
【0018】
ここで図面を参照すると、
図1は、本明細書で説明される実施形態を実施するように構成されたビデオエンコーダー100の一例を示すブロック図である。
図1に示される例では、ビデオエンコーダー100は、パーティションモジュール112と、変換モジュール114と、量子化モジュール115と、逆量子化モジュール118と、逆変換モジュール119と、インループフィルタモジュール120と、イントラ予測モジュール126と、インター予測モジュール124と、動き推定モジュール122と、デコードピクチャバッファ130と、エントロピーコーディングモジュール116とを含む。
【0019】
ビデオエンコーダー100への入力は、ピクチャ(フレーム又はイメージとも呼ばれる)のシーケンスを含む入力ビデオ102である。ブロックベースのビデオエンコーダーでは、各ピクチャに対して、ビデオエンコーダー100は、パーティションモジュール112を利用して、ピクチャをブロック104に分割し、各ブロックは複数のピクセルを含む。これらのブロックは、マクロブロック、コーディングツリーユニット、コーディングユニット、予測ユニット、及び/又は予測ブロックであってもよい。1つのピクチャは異なるサイズを有するブロックを含むことができ、ビデオの異なるピクチャのブロック分割も異なることができる。各ブロックは、イントラ予測、インター予測、又は、イントラとインターのハイブリッド予測(intra and inter hybrid prediction)など、異なる予測を利用してエンコードされることができる。
【0020】
通常、ビデオ信号の一番目のピクチャは、イントラ予測のみを利用してエンコードされるイントラ予測ピクチャである。イントラ予測モードでは、同じピクチャからのデータのみを利用して当該ピクチャのブロックが予測される。イントラ予測されたピクチャは、他のピクチャからの情報なしでデコードされることができる。イントラ予測を実行するために、
図1に示されたビデオエンコーダー100は、イントラ予測モジュール126を利用することができる。イントラ予測モジュール126は、同じピクチャの隣接ブロックの再構成されたブロック136における再構成サンプルを利用して、イントラ予測ブロック(予測ブロック134)を生成するように構成されている。イントラ予測は、当該ブロックのために選択されたイントラ予測モードに基づいて実行される。次に、ビデオエンコーダー100は、ブロック104とイントラ予測ブロック134との間の差分を計算する。この差分は残差ブロック106と呼ばれる。
【0021】
ブロックから冗長性をさらに除去するために、変換モジュール114は、ブロックにおけるサンプルに変換を適用することで、残差ブロック106を変換ドメインに変換する。変換の例としては、離散コサイン変換(discrete cosine transform、DCT)又は離散サイン変換(discrete sine transform、DST)が含まれるが、それらに限定されない。変換された値は、変換ドメインにおける残差ブロックを表す変換係数と呼ばれることができる。いくつかの例では、残差ブロックは、変換モジュール114によって変換されることなく、直接に量子化されることができる。それは変換スキップモードと呼ばれる。
【0022】
ビデオエンコーダー100はさらに、量子化モジュール115を利用して変換係数を量子化し、それによって、量子化された係数を得ることができる。量子化は、サンプルを量子化ステップサイズで割り、それに続いて四捨五入する(rounding)ことを含み、一方、逆量子化は、量子化された値に量子化ステップサイズを乗算することを含む。このような量子化プロセスはスカラー量子化(scalar quantization)と呼ばれる。量子化は、(変換された又は変換されていない)ビデオサンプルのダイナミックレンジを減少させるために用いられ、それによって、より少ないビットを利用してビデオサンプルを表現する。
【0023】
ブロック内の係数/サンプルの量子化は独立して行われることができ、このような量子化方法は、H.264、高効率ビデオコーディング(high efficiency video coding、HEVC)などのいくつかの既存のビデオ圧縮規格に用いられる。N×Mのブロックに対して、係数量子化及びコーディングに用いられるために、特定のスキャン順序で、ブロックの2D(two-dimensional)係数を1D(one-dimensional)配列に変換することができる。ブロック内の係数の量子化は、スキャン順序情報を利用することができる。例えば、ブロックにおける所与の係数の量子化は、スキャン順序に沿った前の量子化された値の状態に依存することができる。コーディング効率をさらに向上させるために、複数の量子化器を利用することができる。どの量子化器が現在の係数の量子化に用いられるかは、エンコーディング/デコーディングスキャン順序における現在の係数の前の情報に依存する。このような量子化方式は、依存量子化(dependent quantization)と呼ばれる。
【0024】
量子化の度合いは、量子化ステップサイズを利用して調整されることができる。例えば、スカラー量子化に対して、より細かい量子化又はより粗い量子化を実現するために、異なる量子化ステップサイズを適用することができる。比較的小さい量子化ステップサイズは比較的細かい量子化に対応し、比較的大きい量子化ステップサイズは比較的粗い量子化に対応する。量子化ステップサイズは、量子化パラメータ(quantization parameter、QP)によって指示されることができる。ビデオデコーダーが同じ量子化パラメータを用いてデコーディングできるように、ビデオのエンコードされたビットストリームに量子化パラメータが提供される。
【0025】
次に、量子化されたサンプルは、エントロピーコーディングモジュール116によってコードされて、ビデオ信号のサイズをさらに縮小する。エントロピーエンコーディングモジュール116は、エントロピーエンコーディングアルゴリズムを量子化されたサンプルに適用するように構成されている。いくつかの例では、量子化されたサンプルはバイナリビン(binary bin)に2値化され、バイナリビンはコーディングアルゴリズムによりさらにビットに圧縮される。2値化方法の例としては、トランケートライス(truncated Rice、TR)及び限定されたk次指数ゴロム(k-th order Exp-Golomb、EGk)2値化が含まれるが、それらに限定されない。コーディング効率を向上させるために、履歴ベースのライスパラメータ導出の方法が利用され、ここで、変換ユニット(transform unit、TU)のために導出されたライスパラメータは、前のTUから得られ又は更新された変数に基づいている。エントロピーエンコーディングアルゴリズムの例としては、可変長コーディング(variable length coding、VLC)スキーム、コンテキスト適応型可変長コーディング(context adaptive VLC、CAVLC)スキーム、算術コーディングスキーム、2値化、コンテキスト適応型バイナリ算術コーディング(context-adaptive binary arithmetic coding、CABAC)、シンタックスベースのコンテキスト適応型バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding、SBAC)、確率間隔区分エントロピー(probability interval partitioning entropy、PIPE)コーディング、又は他のエントロピーエンコーディング技術が含まれるが、それらに限定されない。エントロピーコードされたデータは、出力エンコードビデオ132のビットストリームに追加される。
【0026】
上述したように、隣接ブロックからの再構成されたブロック136は、ピクチャのブロックのイントラ予測に用いられる。ブロックの再構成されたブロック136を生成することは、当該ブロックの再構成された残差を計算することに係る。再構成された残差は、逆量子化及び逆変換をブロックの量子化された残差に適用することによって確定されることができる。逆量子化モジュール118は、逆量子化を量子化されたサンプルに適用して、逆量子化された係数を得るように構成されている。逆量子化モジュール118は、量子化モジュール115と同じ量子化ステップサイズを利用することにより、量子化モジュール115によって適用された量子化スキームの逆を適用する。逆変換モジュール119は、変換モジュール114によって適用された変換の逆変換(例えば、逆DCT又は逆DST)を、逆量子化されたサンプルに適用するように構成されている。逆変換モジュール119の出力は、ピクセルドメインにおけるブロックの再構成された残差である。再構成された残差がブロックの予測ブロック134に加算されて、ピクセルドメインにおける再構成されたブロック136を得ることができる。変換がスキップされたブロックに対して、逆変換モジュール119はそれらのブロックに適用されない。逆量子化されたサンプルは、それらのブロックの再構成された残差である。
【0027】
1番目のイントラ予測ピクチャに続く後続のピクチャにおけるブロックは、インター予測又はイントラ予測のいずれかを利用してコードされることができる。インター予測では、ピクチャにおけるブロックの予測は、1つ又は複数の前にエンコードされたビデオピクチャからの予測である。インター予測を実行するために、ビデオエンコーダー100はインター予測モジュール124を利用する。インター予測モジュール124は、動き推定モジュール122によって提供される動き推定に基づいて、ブロックの動き補償を実行するように構成されている。
【0028】
動き推定モジュール122は、動き推定のために、現在のピクチャの現在のブロック104とデコードされた参照ピクチャ108とを比較する。デコードされた参照ピクチャ108は、デコードピクチャバッファ130に記憶されている。動き推定モジュール122は、デコードされた参照ピクチャ108から、現在のブロックに最もマッチングする参照ブロックを選択する。動き推定モジュール122はさらに、参照ブロックの位置(例えば、x、y座標)と現在のブロックの位置との間のオフセットを識別する。当該オフセットは動きベクトル(motion vector、MV)と呼ばれ、インター予測モジュール124に提供される。いくつかの場合では、複数のデコードされた参照ピクチャ108において、複数の参照ブロックが当該ブロックのために識別される。それによって、複数の動きベクトルが生成されて、インター予測モジュール124に提供される。
【0029】
インター予測モジュール124は、動きベクトル及び他のインター予測パラメータを利用して動き補償を実行して、現在のブロック(即ちインター予測ブロック134)の予測を生成する。例えば、動きベクトルに基づいて、インター予測モジュール124は、対応する参照ピクチャにおける動きベクトルによって指向される予測ブロックを位置付けることができる。複数の予測ブロックが存在する場合、現在のブロックの予測ブロック134を生成するために、これらの予測ブロックはいくつかのウェイト(weight)と組み合わせられる。
【0030】
インター予測されたブロックに対して、ビデオエンコーダー100は、ブロック104からインター予測ブロック134を減算して、残差ブロック106を生成することができる。残差ブロック106は、上述したイントラ予測ブロックの残差と同様の方法で、変換され、量子化され、且つエントロピーコードされることができる。同様に、インター予測されたブロックの再構成されたブロック136は、残差を逆量子化し、逆変換し、続いて対応する予測ブロック134と組み合わせることによって得られることができる。
【0031】
動き推定に用いられるデコードされたピクチャ108を得るために、再構成されたブロック136は、インループフィルタモジュール120によって処理される。インループフィルタモジュール120は、ピクセル遷移(pixel transition)を平滑化するように構成されており、それによって、ビデオ品質を向上させる。インループフィルタモジュール120は、デブロッキングフィルタ(de-blocking filter)、サンプル適応オフセット(sample adaptive offset、SAO)フィルタ、又は適応ループフィルタ(adaptive loop filter、ALF)などの1つ又は複数のインループフィルタを実現するように構成されることができる。
【0032】
図2は、本明細書で説明される実施形態を実施するように構成されたビデオデコーダー200の一例を示すブロック図である。ビデオデコーダー200は、ビットストリームにおけるエンコードされたビデオ202を処理し、デコードされたピクチャ208を生成する。
図2に示された例では、ビデオデコーダー200は、エントロピーデコーディングモジュール216、逆量子化モジュール218、逆変換モジュール219、インループフィルタモジュール220、イントラ予測モジュール226、インター予測モジュール224、及びデコードピクチャバッファ230を含む。
【0033】
エントロピーデコーディングモジュール216は、エンコードされたビデオ202のエントロピーデコーディングを実行するように構成されている。エントロピーデコーディングモジュール216は、量子化された係数と、イントラ予測パラメータ及びインター予測パラメータを含むコーディングパラメータと、他の情報とをデコードする。いくつかの例では、エントロピーデコーディングモジュール216は、エンコードされたビデオ202のビットストリームをバイナリ表現にデコードし、そして、このバイナリ表現を係数の量子化レベルに変換する。次に、エントロピーデコードされた係数は、逆量子化モジュール218によって逆量子化され、続いて、逆変換モジュール219によってピクセルドメインに逆変換される。逆量子化モジュール218及び逆変換モジュール219はそれぞれ、先に
図1について述べたように、逆量子化モジュール118及び逆変換モジュール119と同様に機能する。逆変換された残差ブロックが対応する予測ブロック234に加算されて、再構成されたブロック236を生成することができる。変換がスキップされたブロックに対して、逆変換モジュール219がこれらのブロックに適用されない。逆量子化モジュール118によって生成された、逆量子化されたサンプルは、再構成されたブロック236を生成するために用いられる。
【0034】
特定のブロックの予測ブロック234は、当該ブロックの予測モードに基づいて生成される。当該ブロックのコーディングパラメータは当該ブロックがイントラ予測されることを指示する場合、同じピクチャにおける参照ブロックの再構成されたブロック236がイントラ予測モジュール226にフィードされ、それによって、当該ブロックの予測ブロック234を生成することができる。当該ブロックのコーディングパラメータは当該ブロックがインター予測されることを指示する場合、予測ブロック234はインター予測モジュール224によって生成される。イントラ予測モジュール226及びインター予測モジュール224は、それぞれ
図1のイントラ予測モジュール126及びインター予測モジュール124と同様に機能する。
【0035】
先に
図1について述べたように、インター予測は1つ又は複数の参照ピクチャに係る。ビデオデコーダー200は、インループフィルタモジュール220を参照ピクチャの再構成されたブロックに適用することによって、参照ピクチャのデコードされたピクチャ208を生成する。デコードされたピクチャ208は、インター予測モジュール224によって利用されるために、且つ出力のために、デコードピクチャバッファ230に記憶される。
【0036】
多用途ビデオコーディング(versatile video coding、VVC)及び他の規格では、コーディング効率をさらに向上させるために、ニューラルネットワークベースのコーディング方法が提案されている。ニューラルネットワークベースのツールが提案されて、イントラ予測(イントラ予測モジュール126と226)、インター予測(インター予測モジュール124と224)、インループフィルタ120と220に用いられる。
【0037】
例えば、クロマ成分に用いられるニューラルネットワークベースのイントラ予測ツール(neural-network-based intra prediction tool)では、ルーマ成分及びクロマ成分の隣接する再構成されたサンプルと、現在のブロックのコロコーションエリア(co-located area)における再構成されたルーマサンプルとは、ニューラルネットワークベースのイントラ予測に基づいて2つのクロマブロックのサンプルを予測するために用いられる。ニューラルネットワークベースのイントラ予測の出力が処理され、当該出力が他のイントラクロマ予測モード(intra chroma prediction mode)と比較されて、レート歪みコストに基づいて最適なモードが決定される。
【0038】
ニューラルネットワークベースのインター予測ツール(neural-network-based inter prediction tool)では、1つ又は複数のニューラルネットワークを利用してフレーム補間(frame interpolation)を実行することができる。エンコーディング及びデコーディングのプロセスにおいて、フレーム補間ネットワーク(frame interpolation network)は、参照ピクチャリストから2つの再構成されたフレームを入力として受け、新しいフレームを生成する。カスケードフィルタリングネットワーク(cascade filtering network)は生成されたフレームを処理し、結果として、最終的な補間フレーム(interpolated frame)を出力する。最終的な補間フレームは、現在のピクチャの参照リストの最後の位置に置かれ、インター予測に用いられる。
【0039】
ニューラルネットワークベースのループフィルタツールでは、畳み込みニューラルネットワークベースのインループフィルタ(convolutional neural-network-based in-loop filter)が、デブロッキングフィルタとSAOとの間に挿入される。デブロッキング後のYUVピクチャとQPマップがニューラルネットワークに入力され、ニューラルネットワークは、高密度残差畳み込みニューラルネットワーク(dense residual convolutional neural network)を利用して、入力ピクチャをパッチ(patch)ごとに処理する。ニューラルネットワークの出力は、さらなる処理のためにSAOに提供される。
【0040】
しかし、ニューラルネットワークベースのコーディング方法は、高い計算能力を必要とし、例えば、高い計算能力を持つGPUなどが挙げられる。このようなGPUには一般的にクラウドサーバーが装備されており、スマートフォンなどの端末におけるGPUの能力はかなり限られている。そのため、ビデオコーディング規格では、このような計算能力の変化を有するエンコーダー及びデコーダーを開発することを可能にすべきである。
【0041】
ビデオエンコーダー及びデコーダーの実施形態に柔軟性を持たせるために、ニューラルネットワークベースのコーディングツールを有効且つ無効にするためのフラグなどのシグナリングは、コーディングスキームの異なるレベル又はレイヤで採用されることができる。例えば、ニューラルネットワークベースのコーディングツールのためのシグナリングは、すべてのレイヤにおけるシーケンスに対して、シーケンスレベルにおいて、ピクチャレベルもしくはスライスレベルにおいて、時間レイヤにおいて設定されることができ、又は上記シグナリングがループフィルタに対して設定される場合、他のループフィルタに関連するシンタックスとともに設定されることができる。
【0042】
1つの実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、ビデオコーディングのすべてのレイヤにおけるシーケンスに対して設定される。各レイヤは、コードされたビデオのスケーラビリティに対する異なる空間解像度又はコードされたビデオの異なるビューを表すことができる。例えば、表1に示されるように、VPSにおいて、フラグ「vps_nn_enabled_flag[i]」は、レイヤiごとに定義されることができる。追加された内容には下線が引かれている。
【0043】
【表1】
いくつかの実施形態では、vps_nn_enabled_flag[i]が1に等しいことは、第iレイヤに対してニューラルネットワークベースのコーディングツールが有効にされることを表す。vps_nn_enabled_flag[i]が0に等しいことは、第iレイヤに対してニューラルネットワークベースのコーディングツールが無効にされることを表す。
【0044】
選択的に又は追加的に、フラグは、ニューラルネットワークベースのコーディングツールごとに別々に定義されることができる。例えば、vps_nn_intra_prediction_enabled_flag[i]は、ニューラルネットワークベースのイントラ予測コーディングツールのために定義されることができ、vps_nn_loop_filter_enabled_flag[i]は、ニューラルネットワークベースのループフィルタコーディングツールのために定義されることができる。vps_nn_intra_prediction_enabled_flag[i]が1に等しいことは、第iレイヤに対してニューラルネットワークベースのイントラ予測コーディングツールが有効にされることを表す。vps_nn_intra_prediction_enabled_flag[i]が0に等しいことは、第iレイヤに対してニューラルネットワークベースのイントラ予測コーディングツールが無効にされることを表す。同様に、vps_nn_loop_filter_enabled_flag[i]が1に等しいことは、第iレイヤに対してニューラルネットワークベースのループフィルタコーディングツールが有効にされることを表す。vps_nn_loop_filter_enabled_flag[i]が0に等しいことは、第iレイヤに対してニューラルネットワークベースのループフィルタコーディングツールが無効にされることを表す。
【0045】
別の実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、シーケンスレベルにおいて設定される。例えば、表2に示されるように、フラグ「sps_nn_enabled_flag」はSPSにおいて定義されることができる。追加された内容には下線が引かれている。
【0046】
【0047】
いくつかの実施形態では、sps_nn_enabled_flagが1に等しいことは、シーケンス全体に対してニューラルネットワークベースのコーディングツールが有効にされることを表す。sps_nn_enabled_flagが0に等しいことは、シーケンス全体に対してニューラルネットワークベースのコーディングツールが無効にされることを表す。
【0048】
選択的に又は追加的に、フラグは、ニューラルネットワークベースのコーディングツールごとに別々に定義されることができる。例えば、sps_nn_intra_prediction_enabled_flagは、ニューラルネットワークベースのイントラ予測コーディングツールのために定義されることができ、sps_nn_loop_filter_enabled_flagは、ネットワークベースのループフィルタコーディングツールのために定義されることができ、また、sps_nn_inter_prediction_enabled_flagは、ニューラルネットワークベースのインター予測コーディングツールのために定義されることができる。sps_nn_intra_prediction_enabled_flagが1に等しいことは、シーケンス全体に対してニューラルネットワークベースのイントラ予測コーディングツールが有効にされることを表す。sps_intra_prediction_nn_enabled_flagが0に等しいことは、シーケンス全体に対してニューラルネットワークベースのイントラ予測コーディングツールが無効にされることを表す。sps_nn_loop_filter_enabled_flagが1に等しいことは、シーケンス全体に対してニューラルネットワークベースのループフィルタコーディングツールが有効にされることを表す。sps_nn_loop_filter_enabled_flagが0に等しいことは、シーケンス全体に対してニューラルネットワークベースのループフィルタコーディングツールが無効にされることを表す。sps_nn_inter_prediction_enabled_flagが1に等しいことは、シーケンス全体に対してニューラルネットワークベースのインター予測コーディングツールが有効にされることを表す。sps_inter_prediction_nn_enabled_flagが0に等しいことは、シーケンス全体に対してニューラルネットワークベースのインター予測コーディングツールが無効にされることを表す。
【0049】
別の実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、ピクチャレベル又はスライスレベルにおいて設定される。例えば、表3、表4又は表5に示されるように、フラグ「pps_nn_enabled_flag」、「ph_nn_enabled_flag」、又は、「sh_nn_enabled_flag」は、それぞれ、PPS、ピクチャヘッダ、又はスライスヘッダにおいて定義されることができる。追加された内容には下線が引かれている。
【0050】
【0051】
【0052】
【0053】
いくつかの実施形態では、pps_nn_enabled_flag(又はph_nn_enabled_flag)の値が1である場合、ニューラルネットワークベースのコーディングツールは、関連するピクチャにおいて有効にされる。pps_nn_enabled_flag(又はph_nn_elabled_flag)の値が0である場合、ニューラルネットワークベースのコーディングツールは、関連するピクチャにおいて無効にされる。同様に、sh_nn_enabled_flagの値が1である場合、ニューラルネットワークベースのコーディングツールは、関連するスライスにおいて有効にされる。sh_nn_enabled_flagの値が0である場合、ニューラルネットワークベースのコーディングツールは、関連するスライスにおいて無効にされる。
【0054】
選択的に又は追加的に、フラグは、ニューラルネットワークベースのコーディングツールごとに別々に定義されることができる。例えば、pps_nn_intra_prediction_enabled_flagは、ピクチャレベルにおいてPPSでニューラルネットワークベースのイントラ予測コーディングツールのために定義されることができ、pps_nn_loop_filter_enabled_flagは、ピクチャレベルにおいてPPSでニューラルネットワークベースのループフィルタコーディングツールのために定義されることができる。同様に、ph_nn_intra_prediction_enabled_flagは、ピクチャレベルにおいてピクチャヘッダでニューラルネットワークベースのイントラ予測コーディングツールのために定義されることができ、ph_nn_loop_filter_enabled_flagは、ピクチャレベルにおいてピクチャヘッダでニューラルネットワークベースのループフィルタコーディングツールのために定義されることができる。sh_nn_intra_prediction_enabled_flagは、スライスレベルにおいてスライスヘッダでニューラルネットワークベースのイントラ予測コーディングツールのために定義されることができ、sh_nn_loop_filter_enabled_flagは、スライスレベルにおいてスライスヘッダでニューラルネットワークベースのループフィルタコーディングツールのために定義されることができる。
【0055】
いくつかの実施形態において、pps_nn_intra_prediction_enabled_flag、ph_nn_intra_prediction_enabled_flag、又はsh_nn_intra_prediction_enabled_flagが1に等しいことは、関連するピクチャ又はスライスに対してニューラルネットワークベースのイントラ予測コーディングツールが有効にされることを表す。pps_nn_intra_prediction_enabled_flag、ph_nn_intra_prediction_enabled_flag、又はsh_nn_intra_prediction_enabled_flagが0に等しいことは、関連するピクチャ又はスライスに対してニューラルネットワークベースのイントラ予測コーディングツールが無効にされることを表す。同様に、pps_nn_loop_filter_enabled_flag、ph_nn_loop_filter_enabled_flag、又はsh_nn_loop_filter_enabled_flagが1に等しいことは、関連するピクチャ又はスライスに対してニューラルネットワークベースのループフィルタコーディングツールが有効にされることを表す。pps_nn_loop_filter_enabled_flag、ph_nn_loop_filter_enabled_flag、又はsh_nn_loop_filter_enabled_flagが0に等しいことは、関連するピクチャ又はスライスに対してニューラルネットワークベースのループフィルタコーディングツールが無効にされることを表す。
【0056】
別の実施形態では、ニューラルネットワークベースのコーディングツールのためのシグナリングは、時間レイヤに対して設定される。例えば、シーケンスが階層B構造(hierarchical B structure)でコードされる場合、下位の時間レイヤ(例えば、Iピクチャ及びPピクチャ)の画質は、上位の時間レイヤ(例えば、Bピクチャ)の画質に影響を与える。画質と計算の複雑さとの兼ね合いをうまくとったニューラルネットワークベースのコーディングツールを実現するために、ニューラルネットワークベースのコーディングツールは、下位の時間階層(temporal hierarchy)のピクチャに適用されることができる。
【0057】
本実施形態では、表6又は表7に示されるように、シンタックス「max_nn_enabled_sublayer_minus1」はVPS又はSPSにおいてそれぞれ定義されることができる。追加された内容には下線が引かれている。max_nn_enabled_sublayer_minus1の値は、対応するmax_sublayers_minus1の値以下であるべきである。
【0058】
【0059】
【0060】
(max_nn_enabled_sublayer_minus1 + 1)以下の時間レイヤに対して、ニューラルネットワークベースのコーディングツールが有効にされる。(max_nn_enabled_sublayer_minus1 + 1)より大きい時間レイヤに対して、ニューラルネットワークベースのコーディングツールが無効にされる。
【0061】
選択的に又は追加的に、シンタックスは、ニューラルネットワークベースのコーディングツールごとに別々に定義されることができる。例えば、VPSにおいて、vps_max_nn_intra_prediction_enabled_sublayer_minus1及びvps_max_nn_loop_filter_enabled_sublayer_minus1は、それぞれ、ニューラルネットワークベースのイントラ予測コーディングツール及びネットワークベースのループフィルタコーディングツールのために定義されることができる。SPSにおいて、sps_max_nn_intra_prediction_enabled_sublayer_minus1及びsps_max_nn_loop_filter_enabled_sublayer_minus1は、それぞれ、ニューラルネットワークベースのイントラ予測コーディングツール及びネットワークベースのループフィルタコーディングツールのために定義されることができる。
【0062】
上記シンタックスが与えられ、(max_nn_intra_prediction_enabled_sublayer_minus1 + 1)以下の時間レイヤに対して、ニューラルネットワークベースのイントラ予測コーディングツールが有効にされる。(max_nn_intra_prediction_enabled_sublayer_minus1 + 1)より大きい時間レイヤに対して、ニューラルネットワークベースのイントラ予測コーディングツールが無効にされる。同様に、(max_nn_loop_filter_enabled_sublayer_minus1 + 1)以下の時間レイヤに対して、ニューラルネットワークベースのループフィルタコーディングツールが有効にされる。(max_nn_loop_filter_enabled_sublayer_minus1 + 1)より大きい時間レイヤに対して、ニューラルネットワークベースのループフィルタコーディングツールが無効にされる。
【0063】
図3は、本開示のいくつかの実施形態に係る、特定の時間レイヤのために有効にされたニューラルネットワークベースのコーディングツールによるビデオコーディングスキームのサブレイヤ構造の一例を示す。
図3では、302A~302Dという4つのレイヤがある。第1レイヤ(レイヤ1 302A)は、Bピクチャなどの他のピクチャを予測するために用いられるIピクチャ及びPピクチャを含む。第2レイヤ(レイヤ2 302B)は、他のピクチャを予測するために用いられるBピクチャを含む。第3レイヤ(レイヤ3 302C)は、他のフレームの予測のために用いられるBピクチャを含む。第4レイヤ(レイヤ4 302D)は、他のピクチャの予測のために用いられないBピクチャを含む。この例では、4つの時間レイヤがあるため、max_sublayers_minus1は3に設定され、max_nn_enabled_sublayers_minus1は2に設定され、従って、3つの最も下位の時間レイヤ302A~302Cに対して、ニューラルネットワークベースのコーディングツールが有効にされる。最も上位の時間レイヤ302Dに対して、ニューラルネットワークベースのコーディングツールが無効にされる。
【0064】
【0065】
別の実施形態では、ニューラルネットワークベースのループフィルタコーディングツールのためにシグナリングが追加される。ループフィルタは、デコードされたイメージの画質に直接に影響する。そのため、上記実施形態で提案されたシーケンスレベルシグナリングのためのシンタックスに加えて、ニューラルネットワークベースのループフィルタのためのフラグは、他のニューラルネットワークベースのコーディングツールとは別に定義されることができる。又は、ニューラルネットワークベースのループフィルタコーディングツールのためのフラグのみが定義される。
【0066】
本実施形態では、ニューラルネットワークベースのループフィルタのためのフラグalf_nn_filter_enabled_flagは、SPS又はシンタックスalf_data()のいずれかにおいて定義されることができる。表8と表9はそれぞれ、SPSにおいてalf_nn_filter_enabled_flagを定義する例を示す。表10は、シンタックスalf_data()においてalf_nn_filter_enabled_flagを定義する例を示す。追加された内容には下線が引かれている。
【0067】
【0068】
【0069】
【0070】
上記の例において、alf_nn_enabled_flagが1に等しいことは、シーケンス全体又は関連するピクチャもしくはスライスに対してニューラルネットワークベースのコーディングツールが有効にされることを表す。alf_nn_enabled_flagが0に等しいことは、シーケンス全体又は関連するピクチャもしくはスライスに対してニューラルネットワークベースのコーディングツールが無効にされることを表す。
【0071】
別の例では、alf_nn_filter_enabled_flagsはルーマ成分及びクロマ成分のそれぞれのために定義され、例えば、alf_luma_nn_filter_enabled_flag及びalf_chroma_nn_filter_enabled_flagが挙げられる。alf_nn_luma_enabled_flagが1に等しいことは、シーケンス全体又は関連するピクチャもしくはスライスにおけるルーマ成分に対してニューラルネットワークベースのコーディングツールが有効にされることを表す。alf_nn_luma_enabled_flagが0に等しいことは、シーケンス全体又は関連するピクチャもしくはスライスにおけるルーマ成分に対してニューラルネットワークベースのコーディングツールが無効にされることを表す。同様に、alf_nn_chroma_enabled_flagが1に等しいことは、シーケンス全体又は関連するピクチャもしくはスライスにおけるクロマ成分に対してニューラルネットワークベースのコーディングツールが有効にされることを表す。alf_nn_luma_enabled_flagが0に等しいことは、シーケンス全体又は関連するピクチャもしくはスライスにおけるクロマ成分に対してニューラルネットワークベースのコーディングツールが無効にされることを表す。
【0072】
ニューラルネットワークベースのコーディングツールを柔軟的に有効且つ無効にすることで、クラウドアシストデコーディング及びエンコーディング(cloud assisted decoding and encoding)を実行できる。高い計算能力を持つGPUが装備されたデバイスは、ニューラルネットワークベースのコーディングツールを問題なく実行できる。しかし、スマートフォンなどの端末に装備されているGPUの計算能力はかなり限られている。クラウドアシストビデオデコーディング及びエンコーディング(cloud-assisted video decoding and encoding)は、この問題を解決することができる。
図4は、本開示のいくつかの実施形態に係る、ニューラルネットワークベースのコーディングツールに基づいたクラウドアシストデコーディングの一例を示す。この例では、Iピクチャのみがニューラルネットワークベースのコーディングツールでコードされる。ビデオビットストリームは、クラウドアシストシステムを用いて、以下の手順でデコードされ得る。クライアント装置は、ビデオビットストリームをデコードするとき、I
0ピクチャ及びI
4ピクチャの圧縮されたデータをクラウドサーバーに送信する。クラウドサーバーは、クライアント装置より計算能力が高いため、ニューラルネットワークベースのコーディングツールを利用して圧縮されたビデオをデコードする能力がより高い。クラウドサーバーでは、圧縮されたビデオにおけるシンタックスによって指示されるように、I
0ピクチャ及びI
4ピクチャは、ニューラルネットワークベースのコーディングツールを利用してデコードされる。クラウドサーバーは、I
0及びI
4のデコードされたピクチャをロスレス(losslessly)に圧縮し、圧縮されたデコードピクチャをクライアント装置に送信する。
【0073】
クライアント装置は、圧縮されたデコードピクチャを受信し解凍し、解凍したピクチャをフレームメモリ(frame memory)に記憶する。その後、クライアント装置は、ニューラルネットワークベースのコーディングツールを利用せずに、フレームメモリに記憶されたI0ピクチャ及びI4ピクチャを参照ピクチャとして、ピクチャb1、B2及びb3をデコードする。より多くのピクチャをデコードするために、クライアント装置はピクチャI8の圧縮されたデータをクラウドサーバーに送信する。クラウドサーバーは、ニューラルネットワークベースのコーディングツールでピクチャI8をデコードする。同様に、クラウドサーバーは、デコードされたピクチャI8をロスレスに圧縮し、圧縮したピクチャをクライアント装置に送信する。クライアント装置はデコードされたピクチャI8を解凍し、解凍したピクチャをフレームメモリに記憶する。クライアント装置は、ニューラルネットワークベースのコーディングツールを利用せずに、フレームメモリに記憶されたI4ピクチャ及びI8ピクチャを参照ピクチャとして、ピクチャb5、B6及びb7をデコードする。上記の例では、クライアント装置がIピクチャを参照ピクチャとして利用してBピクチャをデコードすることは、クラウドサーバーがニューラルネットワークベースのコーディングツールを利用してIピクチャをデコードすることと並行して実行されることができる。
【0074】
図5は、本開示のいくつかの実施形態に係る、ニューラルネットワークベースのコーディングツールに基づいたクラウドアシストデコーディングのいくつかのプロセス500A及び500Bを示すフローチャートである。プロセス500Aは、クライアント装置の態様を示し、プロセス500Bは、クラウドサーバーの態様を示す。プロセス500A及び500Bは、以下で併せて説明される。
【0075】
ブロック502において、プロセス500Aは、ニューラルネットワークベースのコーディングツールでエンコードされた、圧縮されたビデオデータを取得することを含む。例えば、クライアント装置は、ビデオビットストリームにおけるシンタックスに基づいて、ビデオの一部がニューラルネットワークベースのコーディングツールでエンコードされたことを確定することができる。例えば、
図4に示されたように、圧縮されたビデオデータは、ニューラルネットワークベースのコーディングツールでエンコードされたIピクチャ(又はPピクチャ)を含み得る。別の例では、ビデオビットストリームにおけるシンタックスは、ビデオの特定のレイヤがニューラルネットワークベースのコーディングツールでエンコードされたことを指示することができる。クライアント装置は、ニューラルネットワークベースのコーディングツールでエンコードされた、圧縮されたビデオの一部を取得する。ブロック504において、プロセス500Aは、ニューラルネットワークベースのコーディングツールでエンコードされた、圧縮されたビデオデータをクラウドサーバーに送信することを含む。
【0076】
ブロック522において、プロセス500Bは、クラウドサーバーが、ニューラルネットワークベースのコーディングツールでエンコードされた圧縮されたビデオデータを受信することを含む。ブロック524において、プロセス500Bは、クラウドサーバーが、圧縮されたビデオデータのシンタックスで指定されるような、ニューラルネットワークベースのコーディングツールを利用して、受信したビデオデータをデコードすることを含む。例えば、ビデオデータにおけるシンタックスは、ニューラルネットワークベースのイントラ予測コーディングツールがビデオデータの一部のエンコーディングに用いられたことを指示する場合、クラウドサーバーは、ニューラルネットワークベースのイントラ予測コーディングツールを利用してビデオデータの当該一部をデコードする。同様に、ビデオデータにおけるシンタックスは、ニューラルネットワークベースのループフィルタコーディングツールがビデオデータの一部のエンコーディングに用いられたことを指示する場合、クラウドサーバーは、ニューラルネットワークベースのループフィルタコーディングツールを利用してビデオデータの当該一部をデコードする。ブロック526において、プロセス500Bは、クラウドサーバーがデコードされたビデオデータをロスレスに圧縮することを含む。ブロック528において、クラウドサーバーは、ロスレス圧縮された、デコードされたデータをクライアント装置に送信する。
【0077】
ブロック506において、プロセス500Aは、クライアント装置がデコードされたビデオデータを受信し解凍することを含む。ブロック508において、クライアント装置は、デコードされたビデオデータをフレームメモリに記憶し、それによって、上記データがビデオビットストリームにおける将来のピクチャをデコードするために用いられることができる。例えば、デコードされたビデオデータは、Iフレーム及びPフレームを含み得、Iフレーム及びPフレームは、将来のPフレーム又はBフレームのデコーディングのためにフレームメモリに記憶され得る。ブロック510において、プロセス500Aは、クライアント装置が、フレームメモリに記憶された、デコードされたデータ(例えば、Iフレーム及びPフレーム)を参照として利用して、他のビデオデータをデコードすることを含む。クライアント装置は、ビデオビットストリームをデコードし続け、プロセス500Aにおけるステップ502~ステップ510を繰り返すことができる。
図4の例で述べたように、プロセス500Aのステップ510は、プロセス500Bのステップ522~ステップ528と並行して実行されることができる。
【0078】
図5は、クラウドアシストシステムを利用してビデオストリームをデコードするプロセスを説明したが、同じフレームワークがビデオ信号のエンコード中に利用されることもできる。例えば、ビデオエンコーダーは、ビデオ信号をエンコードするとき、ビデオエンコーダーと通信している別のデバイスの計算能力を活用して、ビデオ信号をエンコードすることができる。ビデオエンコーダーは、ニューラルネットワークベースのコーディングツールでエンコードされようとするビデオ信号の一部を、ニューラルネットワークベースのコーディングツールを利用してビデオ信号の当該一部をエンコードする能力を有する他のデバイスに送信することができ、それによって、ビデオエンコーダーのコンピューティングワークロード(computing workload)を軽減することができる。ビデオエンコーダーと他のデバイスは並列にエンコーディングを実行できるため、全体のエンコーディングプロセスを速めることができる。
【0079】
図6は、本開示のいくつかの実施形態に係る、選択可能なニューラルネットワークベースのコーディングツールでエンコードされたビデオビットストリームをデコードするプロセス600の一例を示す。1つ又は複数のコンピューティングデバイスは、適切なプログラムコードを実行することによって、
図6に描写される操作を実現する。例えば、ビデオデコーダー200を実現するコンピューティングデバイスは、イントラ予測モジュール226、インター予測モジュール224、及びインループフィルタ220に用いられるプログラムコードを実行することによって、
図6に描写される操作を実現することができる。例示の目的として、プロセス600は、図に描かれたいくつかの例を参照して説明される。しかしながら、他の実施形態も可能である。
【0080】
ブロック602において、プロセス600は、ビデオ信号のビットストリームにアクセスすることを含む。ビデオビットストリームは、選択可能なニューラルネットワークベースのコーディングツールを利用してビデオ信号をエンコードすることによって生成される。ブロック604において、プロセス600は、ビデオビットストリームからシンタックス要素を識別することを含み、当該シンタックス要素は、ビデオビットストリームをエンコードする期間中における、ニューラルネットワークベースのコーディングツールの利用状況を指示する。ニューラルネットワークベースのコーディングツールは、ニューラルネットワークベースのイントラ予測コーディングツール、又はニューラルネットワークベースのループフィルタコーディングツールであることができる。
【0081】
上述したように、シンタックス要素は、VPSにおいて識別されることができ、且つ当該シンタックス要素はビデオの各レイヤのフラグを含み、当該フラグは、ビデオの対応するレイヤのエンコーディングにおけるニューラルネットワークベースのコーディングツールの利用状況を指示する。シンタックス要素は、SPSにおいて識別されることができ、且つ当該シンタックス要素は、ビデオの対応するシーケンスのエンコーディングにおけるニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含む。別の例では、シンタックス要素は、PPS、ピクチャヘッダ、又はスライスヘッダのうちの少なくとも1つにおいて識別され、且つ、当該シンタックス要素は、ビデオの対応するピクチャ又はスライスのエンコーディングにおけるニューラルネットワークベースのコーディングツールの利用状況を指示するフラグを含む。ビデオのシーケンスがサブレイヤ構造でコードされる場合、シンタックス要素は、VPS又はSPSにおいて識別されることができ、且つ、当該シンタックス要素は、シーケンスのエンコーディングにおいてニューラルネットワークベースのコーディングツールが有効にされた、サブレイヤ構造内の最上位サブレイヤを指示する。別の例では、シンタックス要素は、SPS又はシンタックスalf_data()において識別されることができ、且つ、当該シンタックス要素は、ビデオの対応するシーケンス又は対応するピクチャもしくはスライスのエンコーディングにおけるニューラルネットワークベースのループフィルタコーディングツールの利用状況を指示するフラグを含む。
【0082】
ブロック606において、プロセス600は、シンタックス要素の値を確定することを含む。上述したように、シンタックス要素がニューラルネットワークベースのコーディングツールが有効にされるか否かを指示するフラグである場合、シンタックス要素の値は、0又は1であることができ、0は対応するレイヤ、ピクチャ、もしくはスライス、又は対応する色成分に対してニューラルネットワークベースのコーディングツールが無効にされることを指示し、1は対応するレイヤ、ピクチャ、もしくはスライス、又は対応する色成分に対してニューラルネットワークベースのコーディングツールが有効にされることを指示する。シンタックス要素が、max_nn_enabled_sublayers_minus1のような、ニューラルネットワークベースのコーディングツールが有効にされたサブレイヤの最大数を指示する値である場合、当該シンタックス値より大きいサブレイヤに対して、ニューラルネットワークベースのコーディングツールが無効にされる。
【0083】
ブロック608において、プロセス600は、上述のようなシンタックス要素のタイプ及び値に基づいて、現在のレイヤ、サブレイヤ、シーケンス、ピクチャ、スライス、又は色成分に対してニューラルネットワークベースのコーディングツールが有効にされるか否かを確定することを含む。
【0084】
ニューラルネットワークベースのコーディングツールが有効にされる場合、プロセス600は、ブロック610において、ニューラルネットワークベースのコーディングツールを利用してビデオビットストリームの少なくとも一部をデコードすることを含む。シンタックス要素のタイプに応じて、ビデオストリームの当該一部は、レイヤ、サブレイヤ、シーケンス、ピクチャ、スライス、又は色成分に対応し得る。ニューラルネットワークベースのコーディングツールが無効にされると確定する場合、プロセス600は、ブロック612において、ニューラルネットワークベースのコーディングツールを利用せずに、ビデオビットストリームの当該一部をデコードすることを含む。ブロック614において、プロセス600は、デコードされたピクチャを表示のために出力することを含む。
【0085】
ビデオビットストリーム全体をデコードするために、プロセス600のステップ604からステップ612は、ビデオビットストリームに対して複数回繰り返されてもよいことを理解されたい。さらに、先に
図4及び
図5について述べたように、ステップ610は、ビデオデコーダーによってローカルに実行されてもよく、クラウドサーバーによって実行されてもよい。
【0086】
いくつかの例では、ニューラルネットワークベースのコーディングツールは、デコードされたピクチャ208に適用されようとするポストフィルタツールとしても用いられる。ニューラルネットワークベースのポストフィルタツールでは、超解像ニューラルネットワーク(super resolution neural network)は、デコードされたビデオの品質を向上させるためにポストフィルタツールとして用いられる。ニューラルネットワークのパラメータは、SEIメッセージを通じて送信されることができる。表11は、ニューラルネットワークベースのポストフィルタリングツールのSEIメッセージにおけるシンタックスエレメント「nn_post_filter_type_idc」の例を示す。
【0087】
【表11】
ニューラルネットワークベースのポストフィルタリングツールは、標準ダイナミックレンジ(standard dynamic range、SDR)コンテンツからハイダイナミックレンジ(high dynamic range、HDR)コンテンツを作成し、色域を拡張するために用いられることもできる。
【0088】
しかし、ディスプレイによって能力が異なる。いくつかのディスプレイは、HDRと広色域(wide color-gamut、WCG)をサポートし、別のいくつかのディスプレイは、SDRと狭色域のみをサポートする。さらに、HDRとWCGコンテンツのピクセルのダイナミックレンジは、SDRと狭色域コンテンツのピクセルのダイナミックレンジより大きい。従って、HDRとWCGコンテンツを圧縮するために、より多くのビットを必要とする。より優れた圧縮効率を提供するために、ビデオが、HDR又は広色域コンテンツではなく、ビット数がより少ないSDR又は狭色域コンテンツとしてエンコードされることができる。例えば、エンコーディングの前に、ダイナミックレンジ又は色域という面からビデオがダウンサンプリングされ、それによって、ピクセルのダイナミックレンジが小さくなる。ダウンサンプリングされたビデオは、通常通りエンコード、記憶又は伝送、デコードされる。エンコードされたコーディングアーチファクトを軽減するために、デコーディングの後に、エンコードされたコンテンツをHDR又は広色域コンテンツに変換することができる。当該変換は、ニューラルネットワークベースのコーディングツールを利用して実行される。ダイナミックレンジ又は色域変換のネットワークパラメータ及びニューラルネットワークベースのポストフィルタインジケータは、SEIメッセージ又はシステムレイヤのいずれかにおいて伝送される。変換は、ニューラルネットワークベースのポストフィルタリングツールを利用して実行されることができる。
【0089】
ニューラルネットワークベースのポストフィルタリングを利用してダイナミックレンジ変換と色域変換を行うことを可能にするために、表12に示されるように、表11に示された「nn_postfilter_type_idc」の定義が拡張される(追加された内容には下線が引かれている。)。
【0090】
【0091】
ニューラルネットワークベースのコーディングツールを利用してダイナミックレンジ拡張と色域拡張を行うことを可能にすることで、低ビットレートを維持しながらコーディングアーチファクトを軽減できる。また、ディスプレイ装置がHDR又はWCGをサポートしない場合、ダイナミックレンジ拡張及び色域拡張を行わずにビデオ信号をデコードすれば十分である。従って、エンコードされたSDR又は狭色域コンテンツの記憶及び/又は伝送に用いられるファイルが比較的小さいため、記憶スペースとネットワーク帯域幅が削減される。
【0092】
ビデオコーディングの依存量子化を実現するためのコンピューティングシステムの例
【0093】
任意の適切なコンピューティングシステムは、本明細書で説明される操作を実行するために用いられることができる。例えば、
図7は、
図1のビデオエンコーダー100又は
図2のビデオデコーダー200を実現することができるコンピューティングデバイス700の一例を示す。いくつかの実施形態では、コンピューティングデバイス700は、プロセッサ712を含むことができ、当該プロセッサ712は、メモリ714に通信可能に結合され、且つ、コンピュータ実行可能なプログラムコードを実行し及び/又はメモリ714に記憶された情報にアクセスする。プロセッサ712は、マイクロプロセッサ、特定用途向け集積回路(application specific integrated circuit、ASIC)、ステートマシン(state machine)、又は他の処理デバイスを含むことができる。プロセッサ712は、1つを含む任意の数の処理デバイスを含むことができる。このようなプロセッサは、命令を記憶するコンピュータ可読媒体を含み得るか、又は命令を記憶するコンピュータ可読媒体と通信し得る。当該命令は、プロセッサ712によって実行されると、プロセッサに本明細書で説明される操作を実行させる。
【0094】
メモリ714は、任意の適切な非一時的なコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、コンピュータ可読命令又は他のプログラムコードをプロセッサに提供することができる任意の電子、光学、磁気、又は他の記憶装置を含むことができる。コンピュータ可読媒体の非限定的な例としては、磁気ディスク、メモリチップ、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、ASIC、構成されたプロセッサ、光学記憶装置、磁気テープ又は他の磁気記憶装置、又はコンピュータプロセッサがそこから命令を読み取ることができる他の任意の媒体が挙げられる。命令は、例えば、C、C++、C#、Visual Basic、Java、Python、Perl、JavaScript、及びActionScriptを含む任意の適切なコンピュータプログラミング言語で記述されたコードから、コンパイル及び/又はインタプリタによって生成されたプロセッサ特定の命令を含むことができる。
【0095】
コンピューティングデバイス700は、バス716を含むこともできる。バス716は、コンピューティングデバイス700の1つ又は複数のコンポーネントに通信可能に結合されることができる。コンピューティングデバイス700は、入力デバイス又は出力デバイスなどの複数の外部デバイス又は内部デバイスを含むこともできる。例えば、示されるコンピューティングデバイス700は、1つ又は複数の入力デバイス720から入力を受信し、又は1つ又は複数の出力デバイス722に出力を提供することができる入力/出力(input/output、I/O)インターフェース718を有する。1つ又は複数の入力デバイス720及び1つ又は複数の出力デバイス722は、I/Oインターフェース718に通信可能に結合され得る。通信結合は、任意の適切な方法(例えば、プリント回路基板を介した接続、ケーブルを介した接続、無線伝送を介した通信など)で実現され得る。入力デバイス720の非限定的な例には、タッチスクリーン(例えば、タッチ領域をイメージングするための1つ又は複数のカメラ、又は、タッチによって引き起こされる圧力変化を検出するための圧力センサ)、マウス、キーボード、又は、コンピューティングデバイスのユーザの物理的動作に応答して入力イベントを生成するために用いられることができる任意の他のデバイスが含まれる。出力デバイス722の非限定的な例には、LCDスクリーン、外部モニタ、スピーカ、又は、コンピューティングデバイスによって生成された出力を表示するか、もしくは他の方法で提示するために用いられることができる任意の他のデバイスが含まれる。
【0096】
コンピューティングデバイス700は、プログラムコードを実行することができ、当該プログラムコードは、
図1~
図12を参照して叙述した上記の操作の1つ又は複数を実行するようにプロセッサ712を構成する。当該プログラムコードは、ビデオエンコーダー100又はビデオデコーダー200を含み得る。プログラムコードは、メモリ714又は任意の適切なコンピュータ可読媒体に留まることができ、プロセッサ712又は任意の他の適切なプロセッサによって実行されることができる。
【0097】
コンピューティングデバイス700はまた、少なくとも1つのネットワークインターフェースデバイス724を含み得る。ネットワークインターフェースデバイス724は、1つ又は複数のデータネットワーク728と有線又は無線データ接続を確立することに適した任意のデバイス又はデバイスグループを含み得る。ネットワークインターフェースデバイス724の非限定的な例としては、イーサネットネットワークアダプタ、モデムなどが含まれる。コンピューティングデバイス700は、ネットワークインターフェースデバイス724を介して、メッセージを電子信号又は光信号として伝送することができる。
【0098】
一般的な考慮
【0099】
特許請求の主題を十分に理解するために、本明細書には多数の具体的なディテールが記載されている。しかしながら、当業者であれば、これらの具体的なディテールがなくても、特許請求の主題を実施し得ることを理解するであろう。他の例では、当業者に知られることができる方法、装置、又はシステムは、特許請求の主題を不明瞭にしないように詳細には記載されていない。
【0100】
特に説明されない限り、本明細書を通じて、「処理」、「コンピューティング」、「計算」、「確定」、及び「識別」などの用語を利用する議論は、コンピューティングデバイス(例えば、1つ又は複数のコンピュータ又は類似の1つ又は複数の電子コンピューティングデバイスもしくはデバイス)の動作又は処理を指すことが理解される。当該コンピューティングデバイスは、コンピューティングプラットフォームのメモリ、レジスタ、又は他の情報記憶デバイス、伝送デバイス、又はディスプレイ装置内の物理的な電子又は磁気量として表されるデータを操作し又は変換する。
【0101】
本明細書で論じる1つ又は複数のシステムは、任意の特定のハードウェアアーキテクチャ又は構成に限定されない。コンピューティングデバイスは、1つ又は複数の入力を条件として結果を提供する任意の適切なコンポーネントの配置を含むことができる。適切なコンピューティングデバイスは、記憶されたソフトウェアにアクセスする多目的マイクロプロセッサベースのコンピュータシステムを含み、当該システムは、記憶されたソフトウェアにアクセスし、当該ソフトウェアは、コンピューティングシステムを、汎用コンピューティング装置から本主題の1つ又は複数の実施形態を実現する特定のコンピューティング装置となるようにプログラムし又は構成する。任意の適切なプログラミング、スクリプト、又は他のタイプの言語又は言語の組み合わせは、コンピューティングデバイスをプログラムし又は構成するために用いられるソフトウェアにおいて本明細書に含まれる教示を実現するために用いられることができる。
【0102】
本明細書に開示される方法の実施形態は、そのようなコンピューティングデバイスの操作において実行され得る。以上の例におけるブロックの順序は変化することができ、例えば、ブロックは、再順序付けされ、組み合わされ、及び/又はサブブロックに分割され得る。いくつかのブロック又はプロセスは、並行して実行されることができる。
【0103】
本明細書における「に適合した」又は「ように構成された」の使用は、付加的なタスク又はステップを実行するように適合又は構成されたデバイスを排除せず、開放的且つ包括的な文言として意図されている。さらに、「に基づく」の使用は、開放的且つ包括的であることを意図しており、1つ又は複数の挙げられた条件又は値「に基づく」処理、ステップ、計算、又は他の動作は実際に、挙げられた条件又は値以外の追加の条件又は値に基づくことができる。本明細書に含まれる見出し、リスト、及び番号付けは、説明を容易にするためだけのものであり、限定を意味するものではない。
【0104】
本主題は、その特定の実施形態を参照して詳細に説明されたが、当業者は、前述を理解した後、そのような実施形態に対する変更、変形、及び等価物を容易に提供することができることが理解される。従って、本開示は、限定ではなく例示の目的で提示されたものであり、当業者にとって明らかである本主題への変更、変形、及び/又は追加を含むことを排除しないことを理解されたい。
【国際調査報告】