(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-21
(54)【発明の名称】並列エントロピーコーディングのためのビットストリームインデックスの圧縮
(51)【国際特許分類】
H04N 19/91 20140101AFI20231214BHJP
H04N 19/436 20140101ALI20231214BHJP
【FI】
H04N19/91
H04N19/436
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023542776
(86)(22)【出願日】2022-01-07
(85)【翻訳文提出日】2023-07-13
(86)【国際出願番号】 US2022011715
(87)【国際公開番号】W WO2022164618
(87)【国際公開日】2022-08-04
(32)【優先日】2021-01-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】サイド、アミール
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159KK13
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159PP16
5C159UA02
5C159UA05
5C159UA16
5C159UA33
(57)【要約】
ニューラルネットワークベースのビデオコーディングおよび/または並列エントロピーコーディングのためのビットストリームインデックスの圧縮を含む、ビデオコーディングのための技法が本明細書に記載される。一例は、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することとを含む。次いで、ビデオデータの並列エントロピーコーディング可能なシーケンスに対してインデックスが生成され、このインデックスは、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する。
【選択図】
図5A
【特許請求の範囲】
【請求項1】
ビデオデータを符号化するための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
ビデオデータのシーケンスを取得することと、
ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータの前記シーケンス内の位置を特定することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、前記インデックスは、ビデオデータの前記並列エントロピーコーディング可能なシーケンス内の前記個別にエントロピーコーディング可能なパーセルを特定する、
を行うように構成される、装置。
【請求項2】
前記エントリーポイントは、ビデオデータの前記シーケンスの二分列挙を実行することによって少なくとも部分的に特定される、請求項1に記載の装置。
【請求項3】
ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記個別にエントロピーコーディング可能なパーセルを生成するための前記位置によって決定されたビデオデータの前記シーケンスからのデータを含む前記個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、請求項2に記載の装置。
【請求項4】
前記二分列挙を実行するために、前記1つまたは複数のプロセッサは、
前記位置のうちの初期位置を特定するために、ビデオデータの前記シーケンスを二分することと、ここにおいて、前記初期位置は、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、
前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、
を行うように構成される、請求項3に記載の装置。
【請求項5】
前記個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータの前記シーケンスからの対応するデータと、前記個別にエントロピーコーディング可能なパーセルに関する前記情報とを含む、請求項3に記載の装置。
【請求項6】
前記個別にエントロピーコーディング可能なパーセルに関する前記情報は、ビデオデータの前記シーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である、請求項5に記載の装置。
【請求項7】
前記個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満である、請求項1に記載の装置。
【請求項8】
前記並列エントロピーコーディング可能なシーケンスを生成するために、前記1つまたは複数のプロセッサは、
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、前記数のパーセルのパーセルサイズは合計で、前記並列エントロピーコーディング可能なシーケンスのサイズになる、請求項1に記載の装置。
【請求項9】
ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成するために、前記1つまたは複数のプロセッサは、
ある数のパーセルと、前記数のパーセルの対応するデータのある大きさのバイナリ表現とを含む前記メモリ内のスタックを初期化することと、
前記スタックが空になるまで以下の動作、すなわち
現在間隔セットを取得するために前記スタックを解析することと、
前記現在間隔セットの平均として前記パーセルの新インデックスを定義することによってパーセルを選択することと、
前記パーセルのビットを前記現在間隔セットの前記平均を使用して符号化するために二分法を使用することと、
前記パーセルが前記1番目のパーセルでない場合には、前記1番目のパーセルから前記パーセルまでのセットで前記スタックを更新することと、
前記パーセルが前記最後のパーセルでない場合には、前記パーセルから前記最後のパーセルまでのセットで前記スタックを更新することと、
を行うことによって、少なくとも部分的にビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
を行うように構成される、請求項8に記載の装置。
【請求項10】
前記スタックは、ユニバーサル符号語セットでさらに初期化される、請求項9に記載の装置。
【請求項11】
二分法を使用して前記パーセルの前記ビットを符号化するために、前記1つまたは複数のプロセッサは、
第1の変数を前記最小パーセルサイズに、第2の変数を前記最大パーセルサイズに、第3の変数を前記最小パーセルサイズと前記最大パーセルサイズの平均に初期化することと、
前記パーセルのバイナリ表現の大きさの値にアクセスすることと、
前記第3の変数が前記値以下である場合には第1のビットを符号化することと、
前記第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、
前記第3の変数を前記第1の変数と前記第2の変数の新たな平均に更新することと、
を行うように構成される、請求項9に記載の装置。
【請求項12】
前記1つまたは複数のプロセッサは、
前記個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、
対応するパーセル対は、前記インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、請求項1に記載の装置。
【請求項13】
前記インデックスは、前記個別にエントロピーコーディング可能なパーセルの数が偶数である場合にはN/2個のエントリーポイントを含み、前記インデックスが、前記個別にエントロピーコーディング可能なパーセルの前記数が奇数である場合には[(N-1)/2]+1個のエントリーポイントを含む、請求項12に記載の装置。
【請求項14】
前記1つまたは複数のプロセッサは、
前記インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化された前記メモリに、前記個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、
各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションは、前記対応するパーセル対のうちの対応するフォワードパーセルと前記対応するバックワードパーセルのためのフォワードパーセル構造とバックワードパーセル構造とを含む、請求項12に記載の装置。
【請求項15】
前記1つまたは複数のプロセッサは、前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを含む前記ファイルを送信するようにさらに構成される、請求項14に記載の装置。
【請求項16】
前記インデックスは、符号化ビットストリーム中のビデオデータの前記シーケンスの符号化に続いて特定される前記エントリーポイントを使用して、前記個別にエントロピーコーディング可能なパーセルを特定する、請求項1に記載の装置。
【請求項17】
前記インデックスは、ビデオデータの前記シーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、前記個別にエントロピーコーディング可能なパーセルを特定する、請求項1に記載の装置。
【請求項18】
前記1つまたは複数のプロセッサに結合された送信機をさらに備え、前記送信機は、前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータの前記シーケンスを送信するように構成される、請求項1に記載の装置。
【請求項19】
前記1つまたは複数のプロセッサに結合されたディスプレイをさらに備え、前記ディスプレイは、ビデオデータの前記シーケンスの画像を表示するように構成される、請求項1に記載の装置。
【請求項20】
コンピュータに実装される方法であって、
ビデオデータのシーケンスを取得することと、
ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータの前記シーケンス内の位置を特定することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、前記インデックスは、ビデオデータの前記並列エントロピーコーディング可能なシーケンス内の前記個別にエントロピーコーディング可能なパーセルを特定する、
を備える、コンピュータに実装される方法。
【請求項21】
前記エントリーポイントは、ビデオデータの前記シーケンスの二分列挙を実行することによって少なくとも部分的に特定され、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記個別にエントロピーコーディング可能なパーセルを生成するための前記位置によって決定されたビデオデータの前記シーケンスからのデータを含む前記個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、
請求項20に記載のコンピュータに実装される方法。
【請求項22】
前記位置のうちの初期位置を特定するために、ビデオデータの前記シーケンスを二分することと、ここにおいて、前記初期位置は、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、
前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、
をさらに備える、請求項21に記載のコンピュータに実装される方法。
【請求項23】
前記個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータの前記シーケンスからの対応するデータと、前記個別にエントロピーコーディング可能なパーセルに関する前記情報とを含む、請求項21に記載のコンピュータに実装される方法。
【請求項24】
前記個別にエントロピーコーディング可能なパーセルに関する前記情報は、ビデオデータの前記シーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である、請求項23に記載のコンピュータに実装される方法。
【請求項25】
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定すること、
をさらに備え、
前記数のパーセルのパーセルサイズは合計で、前記並列エントロピーコーディング可能なシーケンスのサイズになる、請求項20に記載のコンピュータに実装される方法。
【請求項26】
ある数のパーセルと、その数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、
前記スタックが空になるまで以下の動作、すなわち、
現在間隔セットを取得するために前記スタックを解析することと、
前記現在間隔セットの平均として前記パーセルの新インデックスを定義することによってパーセルを選択することと、
前記パーセルのビットを前記現在間隔セットの前記平均を使用して符号化するために二分法を使用することと、
前記パーセルが前記1番目のパーセルでない場合には、前記1番目のパーセルから前記パーセルまでのセットで前記スタックを更新することと、
前記パーセルが前記最後のパーセルでない場合には、前記パーセルから前記最後のパーセルまでのセットで前記スタックを更新することと、
を行うことによって、少なくとも部分的にビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
をさらに備える、請求項25に記載のコンピュータ実装の方法。
【請求項27】
第1の変数を前記最小パーセルサイズに、第2の変数を前記最大パーセルサイズに、第3の変数を前記最小パーセルサイズと前記最大パーセルサイズの平均に初期化することと、
前記パーセルのバイナリ表現の大きさの値にアクセスすることと、
前記第3の変数が前記値以下である場合には第1のビットを符号化することと、
前記第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、
前記第3の変数を前記第1の変数と前記第2の変数の新たな平均に更新することと、
をさらに備える、請求項25に記載のコンピュータ実装の方法。
【請求項28】
前記個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義することと、ここにおいて、対応するパーセル対は、前記インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、
前記インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに、前記個別にエントロピーコーディング可能なパーセルを記憶することと、
各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションは、前記対応するパーセル対のうちの前記対応するフォワードパーセルと前記対応するバックワードパーセルのためのフォワードパーセル構造とバックワードパーセル構造とを含む、
をさらに備える、請求項20に記載のコンピュータ実装の方法。
【請求項29】
ビデオデータを復号するための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、
前記個別にエントロピーコーディング可能なパーセルに関連するデータの前記インデックスを復号することと、
前記インデックスから前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを特定することと、
前記インデックスから復号された前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを並列に復号することと、
を行うように構成される、装置。
【請求項30】
コンピュータに実装される方法であって、
インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、
前記個別にエントロピーコーディング可能なパーセルに関連するデータの前記インデックスを復号することと、
前記インデックスから前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを特定することと、
前記インデックスから復号された前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを並列に復号することと、
を備える、コンピュータに実装される方法。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本開示は概して、画像および/またはビデオの符号化(または圧縮)および復号(解凍)を含む、画像およびビデオのコーディングに関する。本開示の態様は、画像および/またはビデオの並列エントロピーコーディングの技法に関する。
【背景技術】
【0002】
[0002]多くのデバイスおよびシステムは、ビデオデータが消費のために処理および出力されることを可能にする。デジタルビデオデータは、消費者およびビデオプロバイダの需要を満たすための大量のデータを含む。たとえば、ビデオデータの消費者は、高い忠実度、解像度、フレームレートなどを含む高い品質のビデオを望む。その結果、これらの需要を満たすために必要とされる大量のビデオデータは、ビデオデータを処理および記憶する通信ネットワークおよびデバイスに負担をかける。
【0003】
[0003]ビデオコーディング技法は、ビデオデータを圧縮するために使用され得る。ビデオコーディングの目標は、ビデオ品質に対する劣化を回避または最小化しながら、より低いビットレートを使用する形式にビデオデータを圧縮することである。常に発展しつつあるビデオサービスが利用可能になるとともに、より良いコーディング効率を有する符号化技法が必要とされる。
【発明の概要】
【0004】
[0004]並列エントロピーコーディングを使用して画像および/またはビデオコンテンツをコーディング(たとえば、符号化および/または復号)するためのシステムおよび技法が記載される。データコーディングおよびメディアコーディング(メディア圧縮とも呼ばれる)の従来の手法は、逐次に処理される単一のビットストリームにすべての情報をコーディングするものである。高精細ビデオのコーディングなどの、要求の厳しい多くの用途では、単一ビットストリームがデータボトルネックをもたらす可能性がある。高効率ビデオコーディング(HEVC)および多用途ビデオコーディング(VVC)などのエントロピーコーディングを使用する規格では、並列構造が、単一ビットストリームのうちの以前に処理された部分に依存するコーディングシステムを分割するように、ビットストリームの他の部分に使用されるデータに対して複数のプロセスパスを実行するために単一ビットストリーム構造を使用する。したがって、そのようなコーディングシステムに対する従来の修正は、そのようなビットストリームのパーセルがビットストリームの異なる部分間の相互依存性(たとえば、予測コーディングなど)の故に別個にコーディング可能ではないので、実行可能ではない。
【0005】
[0005]本明細書に記載された例は、エントロピーコーディングを新しいコーディング方法によって広範に並列化するために圧縮技法を使用する。さらに、例は、ブロックが同時に符号化および復号され得るように、ビットストリームを、独立したエントリーポイント(たとえば、ブロック外のストリームの他の部分からのデータに依存しないデータストリームのポイント)を含む小さいブロックにセグメント化することによって、広範囲の並列化を可能にする。本明細書に記載された例は、インデックスオーバーヘッドの符号化と、余分なインデックス情報のコーディングに関連する計算の複雑さとを制限するシステムによって、そのような並列化を可能にする。
【0006】
[0006]1つの例示的な例では、ビデオデータを処理する方法が提供される。この方法は、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成すること、このインデックスは、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、と、を含む。
【0007】
[0007]別の例では、非一時的コンピュータ可読媒体が提供され、この媒体は命令を記憶しており、この命令は、1つまたは複数のプロセッサによって実行されると、その1つまたは複数のプロセッサに、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、を行わせ、このインデックスは、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する。
【0008】
[0008]別の例では、ビデオデータを符号化するための装置が提供される。この装置は、ビデオデータのシーケンスを取得するための手段と、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定するための手段と、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するための手段と、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成するための手段とを備え、このインデックスは、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する。
【0009】
[0009]別の例では、ビデオデータを符号化するための装置が提供される。この装置は、メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、この1つまたは複数のプロセッサは、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成すること、このインデックスは、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、と、を行うように構成される。
【0010】
[0010]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、エントリーポイントは、ビデオデータのシーケンスの二分列挙(bisection enumeration)を実行することによって少なくとも部分的に特定される。
【0011】
[0011]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、ビデオデータの並列エントロピーコーディング可能なシーケンスは、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む、個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される。
【0012】
[0012]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、二分列挙を実行するために、1つまたは複数のプロセッサは、前記位置のうちの初期位置を特定するために、ビデオデータのシーケンスを二分すること、ここにおいて、前記初期位置が、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、と、前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、を行うように構成される。
【0013】
[0013]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータのシーケンスからの対応するデータと、個別にエントロピーコーディング可能なパーセルに関する情報とを含む。
【0014】
[0014]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、個別にエントロピーコーディング可能なパーセルに関する情報は、ビデオデータのシーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である。
【0015】
[0015]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満である。
【0016】
[0016]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサは、最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、前記数のパーセルのパーセルサイズが合計で、並列エントロピーコーディング可能なシーケンスのサイズになる。
【0017】
[0017]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサは、ある数のパーセルと、当該数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、スタックが空になるまで以下の動作を実行することによって、すなわち、現在間隔セットを取得するためにスタックを解析し、現在間隔セットの平均としてパーセルの新インデックスを定義することによってパーセルを選択し、パーセルのビットを、現在間隔セットの平均を使用して符号化するために二分法を使用し、パーセルが1番目のパーセルでない場合には1番目のパーセルからそのパーセルまでのセットでスタックを更新し、ならびに、使用するパーセルが最後のパーセルでない場合にはそのパーセルから最後のパーセルまでのセットでスタックを更新することによって、少なくとも部分的にビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、を行うように、構成される。
【0018】
[0018]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、スタックは、ユニバーサル符号語セットでさらに初期化される。
【0019】
[0019]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、二分法を使用してパーセルのビットを符号化するために、1つまたは複数のプロセッサは、第1の変数を最小パーセルサイズに、第2の変数を最大パーセルサイズに、第3の変数を最小パーセルサイズと最大パーセルサイズの平均に初期化することと、パーセルのバイナリ表現の大きさの値にアクセスすることと、第3の変数が前記値以下である場合には第1のビットを符号化することと、第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、第3の変数を第1の変数と第2の変数の新たな平均に更新することと、を行うように、構成される。
【0020】
[0020]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、1つまたは複数のプロセッサは、個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、ここにおいて、対応するパーセル対は、インデックス内の単一の共有エントリーポイントを使用して定義される対応するフォワードパーセルおよび対応するバックワードパーセルを含む。
【0021】
[0021]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、インデックスは、個別にエントロピーコーディング可能なパーセルの数が偶数である場合、N/2個のエントリーポイントを含み、インデックスは、個別にエントロピーコーディング可能なパーセルの数が奇数である場合、[(N-1)/2]+1個のエントリーポイントを含む。
【0022】
[0022]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、1つまたは複数のプロセッサは、インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに、個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションは、対応するパーセル対のうちの対応するフォワードパーセルと対応するバックワードパーセルとのためのフォワードパーセル構造とバックワードパーセル構造とを含む。
【0023】
[0023]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、1つまたは複数のプロセッサは、インデックスと個別にエントロピーコーディング可能なパーセルとを含むファイルを送信するようにさらに構成される。
【0024】
[0024]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、インデックスは、符号化ビットストリーム中のビデオデータのシーケンスの符号化に続いて特定されるエントリーポイントを使用して、個別にエントロピーコーディング可能なパーセルを特定する。
【0025】
[0025]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体がさらに動作し、インデックスは、ビデオデータのシーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、個別にエントロピーコーディング可能なパーセルを特定する。
【0026】
[0026]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体は、1つまたは複数のプロセッサに結合された、ならびに、インデックスと個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータのシーケンスを送信するように構成された、送信機をさらに備える。
【0027】
[0027]いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体は、1つまたは複数のプロセッサに結合された、ならびに、ビデオデータのシーケンスの画像を表示するように構成された、ディスプレイをさらに備える。
【0028】
[0028]いくつかの態様では、装置は、モバイルデバイス(たとえば、携帯電話もしくはいわゆる「スマートフォン」、タブレットコンピュータ、もしくは他のタイプのモバイルデバイス)、ウェアラブルデバイス、エクステンデッドリアリティデバイス(たとえば、仮想現実(VR)デバイス、拡張現実(AR)デバイス、もしくは複合現実(MR)デバイス)、パーソナルコンピュータ、ラップトップコンピュータ、ビデオサーバ、テレビジョン、車両(もしくは車両のコンピューティングデバイス)、または他のデバイスを備える。いくつかの態様では、装置は、1つまたは複数の画像またはビデオフレームをキャプチャするための少なくとも1つのカメラを含む。たとえば、装置は、1つもしくは複数の画像および/またはビデオフレームを含む1つもしくは複数のビデオをキャプチャするためのカメラ(たとえば、RGBカメラ)または複数のカメラを含むことができる。いくつかの態様では、装置は、1つまたは複数の画像、ビデオ、通知、または他の表示可能なデータを表示するためのディスプレイを含む。いくつかの態様では、装置は、1つまたは複数のビデオフレームおよび/またはシンタックスデータを送信媒体(たとえば、ワイヤレス媒体を介して送信するためのアンテナ)を介して少なくとも1つのデバイスに送信するように構成された送信機を含む。いくつかの態様では、プロセッサには、ニューラル処理装置(NPU)、中央処理装置(CPU)、グラフィックス処理装置(GPU)、または他の処理デバイスもしくは構成要素が含まれる。
【0029】
[0029]本概要は、請求される主題の主要または本質的な特徴を識別するものではなく、請求される主題の範囲を決定するために切り離して使用されるものでもない。本主題は、本特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分を参照して理解されるべきである。
【0030】
[0030]上記は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照すると、より明らかになるであろう。
【0031】
[0031]本出願の例示的な実施形態は、以下の図を参照して以下で詳細に記載される。
【図面の簡単な説明】
【0032】
【
図1】[0032]いくつかの例による、符号化デバイスおよび復号デバイスの一例を示すブロック図。
【
図2】[0033]本開示の技法を実行するためのフィルタユニットの例示的な実装形態を示す図。
【
図3】[0034]本明細書に記載された例による、別個にエントロピーコーディング可能なパーセルの並列コーディングの態様を示す図。
【
図4】[0035]本明細書に記載された例による、並列エントロピーコーディングのために別個にエントロピーコーディング可能なパーセルを分離するエントリーポイントを表すインデックスの態様を示す図。
【
図5A】[0036]本明細書に記載された例で使用するための二分動作を表すツリー構造の階層を示す図。
【
図5B】[0036]本明細書に記載された例で使用され得る接頭符号の態様を示す図。
【
図5C】[0036]本明細書に記載された例で使用され得る接頭符号の態様を示す図。
【
図5D】[0036]本明細書に記載された例で使用され得る接頭符号の態様を示す図。
【
図5E】[0036]本明細書に記載された例で使用され得る接頭符号の態様を示す図。
【
図5F】[0036]本明細書に記載された例で使用され得る接頭符号の態様を示す図。
【
図6】[0037]本明細書に記載された例による、別個にエントロピーコーディング可能なパーセルの並列コーディングの態様を示す図。
【
図7】[0038]本明細書に記載された例による、ビデオデータのシーケンスの別個にエントロピーコーディング可能なパーセルの並列コーディングで使用するためのファイル構造を示す図。
【
図8A】[0039]本明細書に記載された例による、ビデオデータを符号化する方法を示す図。
【
図8B】[0040]本明細書に記載された例による、ビデオデータを符号化する方法を示す図。
【
図9】[0041]本明細書に記載された例による、ビデオデータを符号化するためのニューラルネットワークシステムで使用され得る例示的なシステムを示す図。
【
図10A】[0042]本明細書に記載された例による、全結合ニューラルネットワークの一例を示す図。
【
図10B】[0043]本明細書に記載された例による、局所結合ニューラルネットワークの一例を示す図。
【
図10C】[0044]本明細書に記載された例による、畳み込みニューラルネットワークの一例を示す図。
【
図10D】[0045]本明細書に記載された例による、画像から視覚的特徴を認識するように設計された深層畳み込みネットワーク(DCN)の詳細な例を示す図。
【
図11】[0046]本明細書に記載された例による、深層畳み込みネットワーク(DCN)を示すブロック図。
【
図12】[0047]いくつかの例による、ニューラルネットワークベースのシステムを使用して画像および/またはビデオのコーディング(符号化および復号)を実行するように動作可能なデバイスを含むシステムの一例を示す図。
【
図13】[0048]本明細書に記載された様々な技法を実装することができる例示的なコンピューティングデバイスの例示的なコンピューティングデバイスアーキテクチャを示す図。
【発明を実施するための形態】
【0033】
[0049]本開示のいくつかの態様および実施形態が以下に提供される。当業者に明らかであるように、これらの態様および実施形態のうちのいくつかは独立して適用されてもよく、それらのうちのいくつかは組み合わせて適用されてもよい。以下の記載では、説明の目的で、本出願の実施形態の完全な理解を提供するために具体的な詳細が記載される。しかしながら、様々な実施形態は、これらの具体的な詳細なしに実践され得ることが明らかであろう。図および説明は限定するものではない。
【0034】
[0050]その後の説明は、例示的な実施形態を提供するにすぎず、本開示の範囲、適用性、または構成を限定するものではない。むしろ、例示的な実施形態のその後の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供するであろう。添付の特許請求の範囲に記載されるように、本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が行われ得ることを理解されたい。
【0035】
[0051]デジタルビデオデータは、特に、高品質のビデオデータに対する需要が成長し続けるにつれて大量のデータを含むことができる。たとえば、ビデオデータの消費者は、通常、高い忠実度、解像度、フレームレートなどを有するますます高い品質のビデオを望む。しかしながら、そのような需要を満たすために必要とされる大量のビデオデータは、通信ネットワーク、ならびにビデオデータを処理し記憶するデバイスに著しい負担をかける可能性がある。
【0036】
[0052]ビデオコーディングデバイスは、ビデオデータを効率的に符号化および復号するためにビデオ圧縮技法を実装する。ビデオ圧縮技法は、空間予測(たとえば、フレーム内予測またはイントラ予測)、時間予測(たとえば、フレーム間予測またはインター予測)、層間予測(ビデオデータの異なる層間)、および/またはビデオシーケンスに固有の冗長性を低減もしくは除去するための他の予測技法を含めて、異なる予測モードを適用することを含む場合がある。ビデオエンコーダは、元のビデオシーケンスの各ピクチャを、ビデオブロックまたはコーディングユニット(より詳細に以下に記載)と呼ばれる矩形領域に区分化することができる。これらのビデオブロックは、特定の予測モードを使用して符号化される場合がある。
【0037】
[0053]ビデオブロックは、1つまたは複数の方法で、より小さいブロックの1つまたは複数のグループに分割される場合がある。ブロックは、コーディングツリーブロック、予測ブロック、変換ブロック、および/または他の適切なブロックを含むことができる。一般に「ブロック」と呼ばれるものは、特にことわらない限り、そのようなビデオブロック(たとえば、コーディングツリーブロック、コーディングブロック、予測ブロック、変換ブロック、または当業者によって理解されるであろう他の適切なブロックもしくはサブブロック)を指し得る。さらに、これらのブロックのそれぞれは、本明細書において、「ユニット」(たとえば、コーディングツリーユニット(CTU)、コーディングユニット、予測ユニット(PU)、変換ユニット(TU)など)とも交換可能に呼ばれることがある。場合によっては、ユニットが、ビットストリームに符号化されるコーディング論理ユニットを示すことがあり、ブロックが、プロセスの対象となるビデオフレームバッファの一部分を示すことがある。
【0038】
[0054]インター予測モードでは、ビデオエンコーダは、別の時間位置にある、参照フレームまたは参照ピクチャと呼ばれるフレーム(またはピクチャ)内で符号化されているブロックと同様のブロックを検索することができる。イントラ予測モードでは、ビデオエンコーダは、同じピクチャ内の以前に符号化された隣接ブロックからのデータに基づいて空間予測技法を使用して、予測ブロックを形成することができる。
【0039】
[0055]ビデオエンコーダは、予測誤差(残差とも呼ばれる)を決定することができる。たとえば、予測誤差は、符号化されているブロックの画像サンプルまたはピクセル値と予測ブロックとの間の差分として決定され得る。ビデオエンコーダはまた、変換係数を生成するために変換を予測誤差に適用することもできる(たとえば、離散コサイン変換(DCT)または他の適切な変換)。変換後、ビデオエンコーダは、変換係数を量子化することができる。量子化された変換係数および動きベクトルは、シンタックス要素を使用して表現される場合があり、制御情報とともに、ビデオシーケンスのコード化表現を形成する。次いで、ビデオエンコーダは、シンタックス要素をエントロピーコーディングし、それによって、その表現に必要なビット数をさらに減少させることができる。多くのビデオコーディングシステムにおいて、エントロピーコーディングは、情報が、保存または伝送に使用されるべき圧縮ビットストリームを形成するビットに変換される場合の、データ圧縮の最終プロセスである。
【0040】
[0056]ビデオデコーダは、上で論じられたシンタックス要素および制御情報を使用して、現在フレームを復号するための予測データ(たとえば、予測ブロック)を構成することができる。たとえば、ビデオデコーダは、予測ブロックと圧縮予測誤差を加算することができる。ビデオデコーダは、量子化係数を用いて変換基底関数を重み付けすることによって、圧縮予測誤差を決定することができる。復元フレームと元のフレームとの差は、復元誤差と呼ばれる。
【0041】
[0057]ビデオデータをコーディングするために、様々な技法が使用され得る。たとえば、ビデオコーディングは、特定のビデオコーディング規格またはコーディングプロセスに従って実行され得る。例示的なビデオコーディング規格には、高効率ビデオコーディング(HEVC)、アドバンストビデオコーディング(AVC)、ムービングピクチャエキスパートグループ(MPEG)コーディング、および多用途ビデオコーディング(VVC)が含まれる。ビデオコーディングは、しばしば、ビデオ画像またはシーケンス内に存在する冗長構成を利用するインター予測またはイントラ予測などの予測方法を使用する。
【0042】
[0058]ビデオコーディング技法の共通の目標は、ビデオ品質の劣化を回避または最小化しながら、より低いビットレートを使用する形式にビデオデータを圧縮することである。しかし、HEVC、AVC、VVC、および他の多くのそのようなコーディング規格は、予測方法の一部としてシングルスレッド処理に依存する。ストリームを複数のパーセルに単に分割すると、そのようなコーディング規格を使用してコーディングできないパーセルになる。このコーディング不可能性は、ビットストリームの一部からのデータ(たとえば、ビットストリームが分割された場合に、別のパーセルにある場合がある)をコーディングのために使用する予測方法、および他のそのようなコーディング技法の影響に起因し得る。
【0043】
[0059]したがって、(たとえば、数十、数百、またはそれより多い符号化プロセッサまたは復号プロセッサなどの多くのコーディング要素を使用する)広範な並列化は、ビデオデータが、同時に符号化および復号され得るブロックにセグメント化されている場合にだけ可能である。そのような並列化は、圧縮および計算効率に関連する2つの問題を引き起こす。1つの問題は、別個にコーディング可能なデータセグメント(たとえば、ブロック、パーセルなど)と関連付けられたインデックスを符号化するためのオーバーヘッドを制限することに関連している。別の問題は、余分なインデックス情報をコーディングする計算の複雑さに対処することである。本明細書に記載された例は、インデックス付けのための計算の複雑さが制限されオーバーヘッドが低いインデックス付け構造を提供する。この例は、並列コーディングの改善に関連したオーバーヘッドを制限しながら、コーディング速度を改善し、単一ビットストリームボトルネックを回避するための広範な並列化による、ビデオコーディングのためのデバイス動作の改善を可能にする。
【0044】
[0060]ビデオデータの並列エントロピーコーディングのためのシステム、装置、方法(本明細書では「プロセス」とも呼ばれる)およびコンピュータ可読媒体(一括して本明細書では「システムおよび技法」と呼ばれる)が、本明細書に記載されている。このシステムおよび技法では、セグメント化されたビデオデータを個別にエントロピーコーディング可能なパーセルとしてコーディングするときに、ビデオデータをセグメント化し、追加情報(たとえば、オーバーヘッドデータ)をビデオデータに追加することによって、少なくとも部分的にビデオデータの並列エントロピーコーディングを行う。このシステムおよび技法では、本明細書で入れ子式二分コーディングと呼ばれる、二分法の2つの入れ子式適用を使用することができる。エントロピーコーディングされるべき符号化ビデオデータから始めて、第1の二分法適用により、符号化ビデオデータを2つのサブシーケンスに分割する。いくつかの例では、2つのサブシーケンスの分割点は、符号化が完了したときに分割点が、符号化ビデオストリームへのエントリーポイントとなるように、データの特性に基づいて、疑似ランダムとすることができる。次いで、2つのサブシーケンスは、追加のサブシーケンスになるように複数の階層にさらに分割されてよく、各追加の分割では、関連付けられた位置が、符号化ビデオデータのエントリーポイントになるものに関連付けられている。
【0045】
[0061]第2の二分法適用により、上述の第1の二分法適用による位置によって決定されるビデオデータの各サブシーケンスに追加情報を追加する。そのような追加情報は、ビデオデータに関連付けられたサブシーケンスの数の大きさに関する情報(たとえば、2つの位置の間のビデオデータのサブシーケンスの部分、または、個別にエントロピーコーディング可能なパーセルに含まれるビデオデータのサブシーケンスの部分)であり得る。オーバーヘッドデータは、個別にエントロピーコーディング可能なパーセルを生成するために、ビデオデータの元のシーケンスからのデータで符号化される。各パーセルは一緒にビデオデータの並列エントロピーコーディング可能なシーケンスを構成し、エントリーポイントは、並列復号を実行するための適切な状態をデコーダが知ることができる位置と関連付けられている。
【0046】
[0062]いくつかの例では、システムおよび技法は、個別にエントロピーコーディング可能なパーセルを特定するためにデコーダによって使用され得る情報(たとえば、エントリーポイント位置、パーセル位置および長さなど)を記憶するためのインデックスを生成することができる。インデックスは、ビデオデータの並列エントロピーコーディング可能なシーケンス(たとえば、多くの個別にエントロピーコーディング可能なパーセルで構成される)とともに記憶または送信され得る。インデックスは、デコーダユニットがビデオデータの並列復号を実行することを可能にするために復号されるべき第1の項目であり得る。さらなる詳細は、様々な図に関して以下に提示される。
【0047】
[0063]
図1は、エントロピーコーディングプロセスを高レベルで表す、符号化デバイス104と復号デバイス112とを含むシステム100の一例を示すブロック図である。例示的なシステム100は、本明細書に記載された例による並列エントロピー符号化または復号のために、以下に(たとえば、
図3および
図6で)記載される並列構造を使用することができる。並列コーディング構造およびインデックス付けは、上述されたシングルスレッド処理システムと比較すると、システム100の動作を改善することができる。
【0048】
[0064]システム100において、符号化デバイス104はソースデバイスの一部である場合があり、復号デバイス112は受信デバイスの一部である場合がある。ソースデバイスおよび/または受信デバイスは、モバイルまたは固定電話ハンドセット(たとえば、スマートフォン、セルラー電話など)、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイス、インターネットプロトコル(IP)カメラなどの電子デバイス、または他の任意の適切な電子デバイスを含む場合がある。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信のための1つまたは複数のワイヤレストランシーバを含む場合がある。本明細書に記載されたコーディング技法は、ストリーミングビデオ送信(たとえば、インターネットを介する)、テレビジョンの放送または送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途を含む、様々なマルチメディア用途におけるビデオコーディングに適用可能である。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオ放送、ゲーム、および/またはビデオテレフォニーなどの適用をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
【0049】
[0065]ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャを含む場合がある。ピクチャはまた、「フレーム」と呼ばれる場合がある。ピクチャまたはフレームは依然として、場合によっては、ビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部ではない静止画像であり得る。1つのピクチャが、SL、SCb、およびSCrと示された3つのサンプル配列を含む場合がある。SLはルーマサンプルの2次元配列であり、SCbはCbクロミナンスサンプルの2次元配列であり、SCrはCrクロミナンスサンプルの2次元配列である。クロミナンスサンプルはまた、本明細書において「クロマ」サンプルと呼ばれる場合がある。1つのピクセルが、ルーマ成分、Cb成分、およびCr成分を含むピクチャ内の位置を指し得る。他の例では、ピクチャはモノクロームである場合があり、ルーマサンプルの配列だけを含む場合がある。
【0050】
[0066]符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、符号化ビデオビットストリームを生成するためにビデオデータを符号化する。いくつかの例では、符号化ビデオビットストリーム(または「ビデオビットストリーム」もしくは「ビットストリーム」)は、一連の1つまたは複数のコード化ビデオシーケンスである。エンコーダエンジン106は、各ピクチャを区分化することによって、ピクチャのコード化表現を生成する。異なるパーティションが、ルーマサンプル配列およびクロマサンプル配列を含む場合がある。いくつかの例では、ルーマ配列およびクロマ配列は、予測ブロック(PB)にさらに分割され得る。PBは、インター予測またはイントラブロックコピー予測(利用可能なとき、または使用のために有効にされたとき)のために同じ動きパラメータを使用する、ルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリーム内でシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータはまた、動き情報とも呼ばれ得る。
【0051】
[0067]エントロピーコーディングの一部として、エンコーダエンジン106は、予測モードを使用して各PUを予測する。次いで、予測ユニットまたは予測ブロックは、残差(後述)を得るために元のビデオデータから減算される。予測モードは、シンタックスデータを使用してビットストリーム内部でシグナリングされる場合がある。予測モードは、イントラ予測(もしくは、イントラピクチャ予測)またはインター予測(もしくは、インターピクチャ予測)を含む場合がある。インターピクチャ予測またはイントラピクチャ予測を使用してピクチャエリアをコード化するかどうかの決定は、たとえば、CUレベルで行われる場合がある。
【0052】
[0068]次いで、符号化デバイス104は、変換および量子化を実行することができる。たとえば、予測に続いて、エンコーダエンジン106は、予測に対応する残差値を計算することができる。残差値は、コーディングされているピクセルの現在ブロックと、現在ブロックを予測するために使用される予測ブロック(たとえば、現在ブロックの予測されたバージョン)との間のピクセル差分値を備えることができる。たとえば、予測ブロックを生成した後に(たとえば、インター予測またはイントラ予測を使用して)、エンコーダエンジン106は、現在ブロックから予測ユニットによって生成された予測ブロックを減算することによって残差ブロックを生成することができる。残差ブロックは、現在ブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列または2次元配列)で表される場合がある。そのような例では、残差ブロックは、ピクセル値の2次元表現である。
【0053】
[0069]エンコーダエンジン106は、変換係数の量子化を実行することができる。量子化は、係数を表すために使用されるデータの量を低減させるために変換係数を量子化することによって、さらなる圧縮を提供する。たとえば、量子化は、係数の一部または全部に関連付けられたビット深度を低減することができる。一例では、nビット値を有する係数は、量子化中にmビット値に切り捨てられる場合があり、nはmよりも大きい。
【0054】
[0070]量子化が実行されると、コード化ビデオビットストリームは、量子化変換係数と、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)と、区分化情報と、他のシンタックスデータなどの任意の他の適切なデータとを含む。コード化ビデオビットストリームの異なる要素は、次いで、エンコーダエンジン106によってエントロピー符号化される場合がある。いくつかの例では、エンコーダエンジン106は、量子化変換係数を走査してエントロピー符号化され得るシリアル化ベクトルを生成するために、あらかじめ定義された走査順序を利用することができる。いくつかの例では、エンコーダエンジン106は適応型走査を実行することができる。ベクトル(たとえば、1次元ベクトル)を形成するために量子化変換係数を走査した後に、エンコーダエンジン106は、ベクトルをエントロピー符号化することができる。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分化エントロピーコーディング、または別の適切なエントロピー符号化技法を使用することができる。
【0055】
[0071]符号化デバイス104の出力部110は、符号化ビデオビットストリームデータを構成するユニットを、通信リンク120を介して受信デバイスの復号デバイス112へ送ることができる。復号デバイス112の入力部114は、そのユニットを受信することができる。通信リンク120は、ワイヤレスネットワーク、有線ネットワーク、または有線ネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含むことができる。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含む場合があり、任意の適切なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(登録商標)、無線周波数(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE(登録商標))、WiMax(登録商標)など)を含む場合がある。有線ネットワークは、任意の有線インターフェース(たとえば、ファイバ、イーサネット(登録商標)、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号線(DSL)など)を含む場合がある。有線および/またはワイヤレスのネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装される場合がある。符号化ビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信される場合がある。
【0056】
[0072]いくつかの例では、符号化デバイス104は、符号化ビデオビットストリームデータをストレージ108に記憶することができる。出力部110は、エンコーダエンジン106から、またはストレージ108から、符号化ビデオビットストリームデータを取得することができる。ストレージ108は、様々な分散された、またはローカルにアクセスされるデータ記憶媒体のいずれかを含む場合がある。たとえば、ストレージ108は、ハードドライブ、記憶ディスク、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化ビデオデータを記憶するための他の任意の適切なデジタル記憶媒体を含む場合がある。ストレージ108はまた、インター予測で使用するための参照ピクチャを記憶するための復号ピクチャバッファ(DPB)を含む場合がある。
【0057】
[0073]エンコーダエンジン106およびデコーダエンジン116(より詳細に以下に記載される)は、本明細書に記載された並列コーディング演算に応じて動作するように構成される場合があり、別個にエントロピーコーディング可能なパーセルがそれぞれ、インデックス内のパーセル詳細を使用して別個にコーディングおよび復号される。
【0058】
[0074]復号デバイス112の入力部114は、符号化ビデオビットストリームデータを受信し、そのビデオビットストリームデータをデコーダエンジン116に、または後のデコーダエンジン116による使用のためにストレージ118に、供給することができる。復号デバイス112の入力部114は、符号化ビデオビットストリームデータを受信し、そのビデオビットストリームデータをデコーダエンジン116に、または後のデコーダエンジン116による使用のためにストレージ118に、供給することができる。たとえば、ストレージ118は、インター予測で使用する参照ピクチャを記憶するためのDPBを含む場合がある。復号デバイス112を含む受信デバイスは、ストレージ108を介して復号されるべき、符号化ビデオデータを受信することができる。
【0059】
[0075]符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスへ送信される場合がある。デコーダエンジン116は、(たとえば、エントロピーデコーダを使用して)エントロピー復号し、符号化ビデオデータを構成する1つまたは複数のコード化ビデオシーケンスの要素を抽出することにより、符号化ビデオビットストリームデータを復号することができる。デコーダエンジン116は、次いで、符号化ビデオビットストリームデータを再スケーリングし、符号化ビデオビットストリームデータに対して逆変換を実行することができる。次いで、残差データがデコーダエンジン116の予測段階に渡される。次いで、デコーダエンジン116は、以下に記載されるように、データのパーセルに使用されるコーディング構造に応じて、ピクセルのブロックを予測する。
【0060】
[0076]復号デバイス112は、ビデオ宛先デバイス122に復号ビデオを出力することができ、ビデオ宛先デバイス122は、コンテンツの消費者に復号ビデオデータを表示するためのディスプレイまたは他の出力デバイスを含む場合がある。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部である場合がある。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部である場合がある。
【0061】
[0077]
図2は、参照ピクチャテーブルによって特定され得る参照ピクチャを参照ピクチャストレージ208に入れることを含む、フィルタユニット200の例示的な実装形態を示す図である。フィルタユニット200は、任意の符号化要素(たとえば、以下に記載される符号化要素310A~N)または復号要素(たとえば、以下に記載される復号要素340A~N)の一部とすることができ、したがって、本明細書に記載された例による並列エントロピーコーディングのために使用され得る。
【0062】
[0078]図示のフィルタユニット200は、デブロッキングフィルタ202、サンプル適応オフセット(SAO)フィルタ204、および一般フィルタ206を含むが、
図2に示されるものよりも少ないフィルタを含む場合がある、および/または追加のフィルタを含む場合がある。さらに、
図2に示された特定のフィルタは、異なる順序で実装される場合がある。他のループフィルタもまた(コーディングループ内またはコーディングループ後のいずれでも)、ピクセル遷移を滑らかにするために、またはそれとは別にビデオ品質を改善するために使用され得る。コーディングループにあるとき、所与のフレームまたはピクチャ内の復号ビデオブロックは、次いで、参照データを参照ピクチャストレージ208の一部として記憶する、復号ピクチャバッファ(DPB)に記憶される。DPB(たとえば、参照ピクチャストレージ208)は、復号ビデオを
図1のビデオ宛先デバイス122のディスプレイなどの表示デバイスに後で提示するために記憶する、追加のメモリの一部である場合も、それとは別個の場合もある。
【0063】
[0079]システム100およびフィルタユニット200がシングルスレッド処理システムである場合、これらは、圧縮およびコーディング性能を改善するための有意な予測を使用できる。しかし、複数のフィルタユニットを使用する本明細書に記載されたシステムは、インデキシングオーバーヘッドおよび並列コーディングハードウェア(たとえば、符号化デバイス104または復号デバイス112の複数のフィルタユニット200)という犠牲を払って、コーディング速度を大幅に向上することができる。並列コーディングの場合、デコーダは、エンコーダが特定の要素をコーディングしたときのエンコーダと同じ状態に到達するように構成される。したがって、ランダムアクセス(たとえば、ビデオストリームの別々の部分の並列処理)は、ビットストリームを分割すること、ならびに、エンコーダおよびデコーダの状態が既知の値にリセットされる場合に対応するアクセス位置(たとえば、エントリーポイント)を生成することによってのみ、ある程度達成され得る。そのようなエントリーポイントは、ビットストリームの後続の部分が別個にエントロピーコーディング可能になるビットストリーム内の場所を特定する。そのようなエントリーポイント、およびビットストリーム内のある程度規則的な位置を設定することによって、エントリーポイント間のデータは、ビットストリームのそのような別個にエントロピーコーディング可能なセクションになり、これらのセクションは、本明細書では、データパーセル、パーセル、または別個にエントロピーコーディング可能なパーセルと呼ばれる。そのようなパーセルの構造およびインデックス付けに関連するさらなる詳細が、以下で詳細に記載される。
【0064】
[0080]
図3は、本明細書に記載された例による、別個にエントロピーコーディング可能なパーセルの並列コーディングの態様を示す図である。
図3は、それぞれが別個にエントロピーコーディング可能なパーセルの並列符号化を実行するように構成された、複数のエンコーダユニット310A、310B、310C、および310Nを含む構造300を示す。バッファ320A、320B、320C、および320Nは、エンコーダユニットに対応し、記憶、送信、またはインデックス330を生成するために使用される任意の処理のために、データをバッファリングすることができる。各エンコーダユニットとバッファの対は、対応するパーセルを単独の並列処理動作中に出力し、これらのパーセルは、パーセル332A、332B、332C、および332Nとして図示されている。各エンコーダユニットは、所与のビデオデータのシーケンスに対して任意の数のパーセルを処理することができる。たとえば、ビデオデータの1つのシーケンスが10,000個のパーセルに分割され、1つの並列符号化システムが50個のエンコーダユニットを使用する場合、各エンコーダユニットは、平均200個の別個にエントロピーコーディング可能なパーセルを生成することができる。動作中、いくつかのエンコーダユニットがより長いか短いパーセルを符号化する場合、1つのユニットが、システムの構造に応じて、他の符号化ユニットよりも多いか少ないパーセルを符号化する場合がある。
【0065】
[0081]構造300は、圧縮データビットストリームがパーセル(たとえば、パーセル332A~Nを含む)に分割された状態で、並列エントロピー符号化および復号をサポートする。各パーセルのバイト数は、各パーセルの内部依存またはコーディング可能性に対応するために、ランダムまたは疑似ランダムである。シングルスレッドの分割がコーディング可能性を破ることがあり得る上述されたシングルスレッドコーディングと同様に、特定の分割がビデオデータのセグメントをコーディング不可能にし得るので(たとえば、分割が上述のようにエントリーポイントでない場合)、パーセルは単なる固定ビット数ではない。パーセルごとのランダム数または疑似ランダム数の符号化ビットの場合、符号化ビットは別々のメモリバッファに保存され、個別にエントロピーコーディング可能なパーセルの符号化が終了すると、パーセルのデータは、記憶または送信のために単一の圧縮データバイト配列に隣接してコピーされ得る。いくつかの例では、単一の圧縮データバイト配列以外の異なる構造は、個別にエントロピーコーディング可能なパーセルの完全性と、インデックス330によって特定されるパーセル間の関係とが維持される限り、使用され得る。
【0066】
[0082]パーセルインデックス330は、データが、並行して別個にコーディングされ得るパーセルにセグメント化されたときでも、パーセル間の関係を表すために、および圧縮データの完全性を維持するために使用される。データがストレージから復号されるとき、または送信の一部として受信されるとき、インデックス330の情報は、デコーダユニット340A、340B、340C、および340Nなどのデコーダユニットを使用してパーセルの復号を管理するために使用される。図示のように、エンコーダユニットは、特定のデコーダユニットにデータを送る(たとえば、エンコーダユニット310Aがパーセル332Aをデコーダユニット340Aに送る)。しかし、様々な例では、単一のエンコーダユニットからのパーセルは、任意の数の異なるデコーダユニットによって復号され得る(たとえば、エンコーダユニット310Bによって符号化された3つのパーセルは、たとえばデコーダユニット340A、340Cおよび340Nによって並行して復号され得る)。
【0067】
[0083]
図4は、符号化ビットストリーム400の態様を示す図であり、インデックス430が、本明細書に記載された例による、並列エントロピーコーディングのために別個にエントロピーコーディング可能なパーセルを分離するエントリーポイントを表している。
図4の符号化ビットストリーム400は、たとえば、上述された記憶または送信のために配置された
図3のパーセル332A~Nを含む場合があり、または、本明細書に記載された例による並列コーディングのためにコーディングされた任意のそのようなビデオデータであり得る。符号化ビットストリーム400は、パーセル440、441、442、および449を含む。ビデオデータのシーケンスから生成される符号化ビットストリームの他の例は、任意の数のパーセルを有し得る。各パーセルは、関連するエントリーポイントを有する。図示のように、エントリーポイント460はパーセル440に対応し、エントリーポイント461はパーセル441に対応し、エントリーポイント462はパーセル442に対応し、エントリーポイント469はパーセル449に対応する。エントリーポイント463は、パーセル442に続く、図示されていないパーセルに対応する。各エントリーポイントは、復号のための状態が、本明細書に記載された例により構成されたデコーダによって知られ得る、符号化ビットストリーム内の位置と関連付けられて、パーセルが、デコーダユニットによって並行して別個に復号可能になることができる。インデックス430は、いくつかの例において、各パーセルのバイト数、または等価的に各エントリーポイントの配列位置を含むデータ構造である。次いで、パーセルインデックス430データは、記憶または送信された符号化ビットストリーム400からのパーセルを特定するために、ならびに、符号化ビットストリーム400を生成するのに使用されたビデオデータのシーケンスを再度組み立てるために、使用され得る。
【0068】
[0084]パーセルインデックス430は、符号化ビットストリーム400を復号するのに必要であるので、インデックス430は、符号化ビットストリーム400のパーセルとともに保持される。いずれの復号も、別個に復号可能なパーセルに関連する情報を特定するために、インデックス430の復号から始まる。さらに、パーセルを効果的に特定するために、パーセルエントリーポイントを符号化するために使用されるビットの数は、そのパーセルを符号化するために必要なビットの総数に加えられる。したがって、インデックス430におけるパーセルの特定には、符号化を明らかにするために、または、パーセルごとのビットストリーム内のビット数および位置に対して、符号化に使用されるいずれのビットも同様に収容するために、符号化ビットストリーム内のエントリーポイントを使用する。いくつかの例では、効果的な並列化のために、1つのビデオビットストリームが、バイト数が比較的少ない多くのパーセルをもたらす場合がある。そのような例では、インデックスをコーディングするオーバーヘッドが、小さいパーセルサイズで予測を使用するための能力の制限に加えて、圧縮を低下させる可能性がある。たとえば、ハードウェア設計を簡素化し、コストを最小化するために、いくつかの例は、16~64バイトの範囲に限定されたパーセルサイズを有することができる。他の例では、他の閾値制限または閾値範囲が使用され得る。そのサイズのパーセルでは、パーセルあたり数バイトのオーバーヘッドが著しく悪い圧縮になる。
【0069】
[0085]本明細書に記載された例は、パーセルインデックス全体を符号化するために使用されるビット数を制限することによって、追加されるオーバーヘッドをどのように制限するかという技術的問題に対する技術的解決策を提供する。N個のパーセルを仮定すると、コーディングされるべき情報は、各パーセルによって使用されるランダムな数のバイトを含むシーケンスであり、以下で表される。
【0070】
【0071】
[0086]パーセルデータ復号はこれらの数に依存するので、復号は、その数が復号される前に開始することができず、その数をコーディングするために複雑さの低い方法を使用することが、復号するときのデバイス性能の改善を実現する。さらに、本明細書に記載された例は、多くの異なるシステム間の互換性の利益を可能にするために、任意のタイプの統計分布および任意の範囲の大きさに対して使用され得る、単一のコーディング方法を使用することができる。
【0072】
[0087]ユニバーサル符号語セットは、任意の大きさの整数に適用可能である。ユニバーサル符号語セットの中で、「exp-Golomb」符号としても知られているエリアスガンマ符号は、実装するのが簡単であり、許容可能なデバイス性能を許容するので、いくつかのビデオ圧縮規格に使用されている。正整数nをコーディングするためにエリアスガンマ符号が使うビット数nは、
【0073】
【0074】
である。
【0075】
[0088]エリアスデルタ符号は、
【0076】
【0077】
に等しい漸近的に小さいビット数で正整数をコーディングすることができる。
【0078】
[0089]しかし、実際には、この符合は、数ごとに2つの対数計算を使用するので、多数の整数をコーディングするのには一般に使用されない。
【0079】
[0090]ハフマンコーディングのような他のコーディング方法は、有限の整数のセットにしか適用され得ず、セット外の数を扱うための特別な方策(たとえば、オーバーフローを扱うための特別なコーディング定義)を必要とし、あらかじめ知られている確率分布にしか最適化され得ないので、実装するのがより複雑である。
【0080】
[0091]本明細書に記載された例は、広く使用されることもまた可能である入れ子式二分コーディングとして記載された動作を用いる。そのような動作は、上述の一般的なユニバーサル符号語セット使用と比較すると、数の統計、またはその大きさの範囲に関する仮定に依存することなく、デバイスの動作を改善することができる(たとえば、小さい数または非常に大きい数に対して等しく適切に機能する)。
【0081】
[0092]たとえば、ユニバーサル符号語セットの1つの基本的な制限事項は、ユニバーサル符号語セットが、コーディングされるべき整数についてのいかなる事前情報もなしで使用されるものであるということである。したがって、一般的なユニバーサル符号語構造が使用されるときには、数の大きさに関する情報を符号化するためにいくつかの追加のビットが必要とされ、その後に、その数のバイナリ表現のビットが続く。本明細書に記載された例は、一般的なユニバーサル符号語使用と比較すると、上述されたビデオデータパーセルが、多くの非負整数を含むデータセットであるという事実を利用することによって、デバイス動作をさらに改善する。より具体的には、本明細書に記載された例は、コーディングされるべきすべての数値によって共有されている大きさに関する情報の使用と、大きさの間のいくらかの類似性(たとえば、l1=1、l2=109のような極端な場合には、共通であると予想されない)とに基づく利益をもたらす。本明細書に記載された例から利益につながる条件を強化するために、閾値制限が、並列コーディングのために構成されたパーセルに対してコーディングシステムによって適用され得る。たとえば、いくつかの実装形態は、パーセル間のサイズ差に対する閾値制限(たとえば、32ビットの最小サイズおよび128ビットの最大サイズ、または16ビットの最小サイズおよび64ビットの最大サイズなど)を含むことができる。本明細書に記載された例において利益をもたらすための追加の情報使用は、例示的なコーディング演算が、あらかじめ定義されたバイナリ符号語のセットの代わりに、単純で効率的なアルゴリズムによって暗黙的に定義されることを含み、その動作は、符号化プロセス中の情報の蓄積を含む。
【0082】
[0093]それとともに、上記の特性は、オーバーヘッドが限られている並列コーディングによってコーディングデバイスの機能を改善するための動作を可能にする。上述のすべての特性を使用できるように、1つの例示的な例では、以下の単調なシーケンスが定義され、
【0083】
【0084】
[0094]ここで、
【0085】
【0086】
であり、
[0095]パーセルが開始するバイト位置のシーケンスを以下のように定義する。
【0087】
【0088】
[0096]シーケンスP中の整数を符号化することは、シーケンスL中の数を符号化することと等価である。
【0089】
[0097]次の値のコーディングを改善するために各値がコーディングされた後にいくらかの情報を収集するプロセスによって、シーケンスP中の整数は逐次にコーディングされ得る。この情報は、階層的な方法で効率的に収集され得る。上記で入れ子式二分コーディングと呼ばれる例示的なコーディング演算は、二分法の2つの入れ子式適用を使用する。
【0090】
[0098]外側二分列挙と呼ばれる二分法の第1の適用では、シーケンスPの要素が符号化される順序が、ツリーデータ構造によるコーディング情報のアグリゲーションとともに決定される。
【0091】
[0099]
図5Aは、本明細書に記載された例で使用するための二分動作を表すツリー構造の階層を示す。
図5Aは、特に、上述の二分法の第1の適用である外側二分列挙の態様を示す。外側二分列挙を含む二分探索は、2つのタイプの整数セットで行われる。1つの整数セットはインデックスについて開区間であり、1つの整数セットは位置について閉区間であり、これらは以下のように表され得る。
【0092】
【0093】
[0100]ここで、
【0094】
【0095】
[0101]および
【0096】
【0097】
である。
【0098】
[0102]
図5Aのツリー構造は、二分の間中の情報の蓄積を示す。
図5Aの各ボックス512、522、524、542、544、546、548、552、554、556、および558は、符号化ビットストリーム内の位置に関連したコード化ビットストリームのエントリーポイントと関連付けられている。ボックス内の各値が前順ツリー走査シーケンス(pre-order tree traversal sequence)に従ってコーディングされる場合、その値は、すべての値が決定されたときに2つの値の間に定義されるパーセルの数範囲に関する不確実性を低減するために、以前にコーディングされた値を使用することができ、したがって、より効率的なコーディングを行うことができる。ツリーの最上位階層にあるボックスは、コーディングされるべきより多くのビットを必要とするが、ボックスの数がツリーの深さとともに指数関数的に増加するので、オーバーヘッドは比較的小さい。値510は、各階層における値の数を示しており、この数は、第1の階層におけるボックス512の単一の値から開始し、階層ごとに2倍になる。
【0099】
[0103]外側二分列挙(outer bisection enumeration)の動作はまた、次のようにも考えられ得る。ビデオデータのシーケンスから開始して、ビデオデータのシーケンス内の位置を選択すること(たとえば、ビデオデータのシーケンスを二分すること)によって、シーケンスは2つのサブシーケンスに分割される。選択された位置は、符号化ビデオビットストリームのエントリーポイントと関連付けられる。第1の選択された位置は、
図5Aのツリー構造の第1の位置にある第1のボックス512と関連付けられる。次いで、2つのサブシーケンスは、第2の階層のボックス522および524に関連する2つの値を選択するために二分される。第2の階層の二分により、4つのサブシーケンスが得られ、これらは、次いで、ボックス542、544、546、および548の値を特定するために、同様に二分され得る。上記と同様に、値のそれぞれは、コード化ビデオビットストリームのエントリーポイントになるものと関連付けられる。このプロセスは、ビデオデータのシーケンスの個別にコーディング可能なパーセルを生成するために、ビデオデータのシーケンスのサブセクションの階層を二分して追加のシーケンス間の追加のエントリーポイントと、ビデオデータのシーケンスの2つのパーセル間の追加のエントリーポイントとによって定義される追加のサブシーケンスを生成することによって繰り返され、個別にコーディング可能なパーセルは、ビデオデータのシーケンスのエントリーポイントによって特定される。最終階層では、サブシーケンスが二分されたときに特定されたすべての点がエントリーポイントと関連付けられ、これらのポイント間のデータは、個別にコーディング可能なパーセルのデータである。二分動作は、エントリーポイントのデータ中の適切な点を特定するためのルールを使用することができる。上述されたように、二分位置は、データの特性に基づいて(たとえば、データ中のコーディング可能な境界に沿って)ではなく、一貫して分割されないセグメントの故に、最後にはランダムまたは疑似ランダムになる。疑似ランダム特性により、たとえば、1000ビット長の1つのシーケンスが20ビットのサブシーケンスと980ビットのシーケンスに二分されることになり得る。パーセルの最小シーケンス長が16ビットである場合、20ビットのサブシーケンスはそれ以上二分されず、そのツリーの分岐はその階層で止まり、980ビットのシーケンスはさらに二分される。各分岐は、関連するシーケンスがエントリーポイントに適した位置を含んでいない場合、またはそれ以上二分すると許容可能ビット長未満のシーケンスになる場合に、それ以上の二分を終了させることができる。他の例では、外側二分列挙を終わらせるための他のそのような基準が使用され得る。外側二分列挙が完全に終了すると、すべてのパーセルのデータが、パーセル間のデータ境界とともに知られる。
【0100】
[0104]
図5Aの各ボックスは、二分動作と関連付けられていると考えられ得、1つの位置が、ビデオデータの並列エントロピーコーディング可能なシーケンスとして符号化されたデータのエントリーポイントと関連付けられる。ボックス512は、ビデオデータの初期シーケンスの二分と関連付けられており、ボックス512と関連付けられた位置は、追加データがデータの最終サブシーケンスに追加された後にエントリーポイントになる(たとえば、すべてのボックスまたは二分位置の選択後に)。ボックス512より下の追加のボックスは、追加の階層中のデータのサブシーケンスの二分と関連付けられている。各位置が選択され、追加のサブシーケンスの階層が二分されるにつれて、データのサブシーケンスは、データの最終サブシーケンスが最終二分位置によって選択されるまで、小さくなる。位置(たとえば、
図5Aのすべてのボックスからの位置)の最終完全セットは、個々のパーセルになるビデオデータの完全セットからのデータのサブシーケンスを定義する。最終サブシーケンスのデータが個別にコーディング可能になる前に、追加情報(たとえば、最終的なサブシーケンスのビット数に関する情報)が、ビデオデータからの最終サブシーケンスデータを個別にエントロピーコーディング可能なパーセルにするために追加される。
【0101】
[0105]次いで、次の動作は、データをコーディングし、インデックスのパーセル情報(たとえば、コーディングオーバーヘッドを含むコード化ビデオビットストリーム内の境界、またはコード化ビットストリームのすべてのビットを含むコード化パーセルのビット長)を特定する際に、コーディングオーバーヘッドを明らかにする。
【0102】
[0106]上記を使用して、動作は、外側二分列挙からの値(たとえば、エントリーポイントおよびパーセル境界と関連付けられるべき未符号化データから特定された位置)で進行することができ、値間の各サブシーケンスのデータは、任意のオーバーヘッドデータとともに、パーセルとして符号化され得る。一例では、スタックデータ構造が、外側二分列挙(たとえば、前順ツリー転移(pre-order tree transferal))による値を用いて、上記と同じ表記を用いて記載された以下の動作で使用される。
【0103】
[0107]外側二分列挙によって決定されたパーセル数N、およびバイトの総数Sは、ユニバーサル符号語セット(たとえば、エリアスデルタ符号、または他の任意のそのような符号セット)を使用して符号化される。スタックが、セットをプッシュすることによってメモリ内で初期化される。
【0104】
【0105】
[0108]上述されたように。次いで、以下の動作が、スタックが空でない限り用いられる。
【0106】
[0109]スタックは、現在間隔セットを取得するためにポップされる。
【0107】
【0108】
[0110]新インデックスが以下のように定義され、
【0109】
【0110】
[0111]二分法は、
【0111】
【0112】
を符号化するために用いられる。
【0113】
[0112](imin,i)≠φであれば、セット(imin,i),[pmin,pi]がスタックにプッシュされ、(i,imax)≠φであれば、セット(i,imax),[pi,pmax]がスタックにプッシュされる。
【0114】
[0113]次いで、上記の式10に続く動作が、(imin,i)=φおよび(i,imax)=φになるまで繰り返される。この時点で、ビデオデータのシーケンス全体が、符号化ビデオビットストリームとして並行して復号され得る個別に復号可能なパーセルにコーディングされており、必要なすべての情報がインデックス用に利用可能である。
【0115】
[0114]上記の動作による一例では、pi∈[pmin,pmax]を符号化するために用いられる二分法は、次のように実行される。piおよびpmin,pmaxを所与として、変数を初期化する。
【0116】
【0117】
c≠aの間、以下の動作を繰り返す。c≦piであれば、ビット「1」を符号化し、a←cを設定する。c=aのとき、ビット「0」を符号化し、b←cを設定する。
【0118】
【0119】
を更新する。
【0120】
[0115]復号アルゴリズムは、上記の符号化動作と同様である。復号のために、piおよびpmin,pmaxを所与として、変数を初期化する。
【0121】
【0122】
c≠aの間、以下の動作を繰り返す。復号ビットが「1」であればa←cを設定し、そうでなければb←cを設定する。
【0123】
【0124】
を更新し、復号値pi=aを返す。
【0125】
[0116]上記の例は、本明細書に記載された実施形態によるコーディング演算の態様を示すが、他の例および実装形態も可能であることは明らかであろう。以下は、例示的な符号化実装形態の態様をさらに示す。
【0126】
【0127】
[0117]同様に、以下は例示的な復号実装形態の態様を示す。
【0128】
【0129】
[0118]上記の動作、または本明細書に記載された例による同様の動作は、並列符号化または復号を含むビデオ処理のためのデバイス性能を改善するためにエントロピーコーディングの並列化が使用される、データ圧縮に使用され得る。本明細書に記載された例は、上述された二分動作を含むオーバーヘッドおよびパーセル特定の構造の故に、同様のデバイスと比較して低減された処理リソースおよび電力消費での並列エントロピーコーディングを可能にする。この例は、高解像度ビデオデータの処理を改善するためのニューラルネットワークベースのビデオ処理コーデック、高フレームレートデータ、改善された色解像度、および改善されたダイナミックレンジビデオデータと連携した、低コストの並列符号化および復号を可能にし得る。ビデオ品質に関するそのような改善はビデオデータを増加させるので、上述されたシングルスレッドエントロピーコーディングのボトルネックは、並列コーディングと比較して性能を著しく損なうおそれがある。本明細書に記載された動作を用いる並列コーディングは、許容可能な電力消費および並列化に関連した改善されたデータスループットを伴う低オーバーヘッドおよび効率的な処理回路を用いて実行され得る。
【0130】
[0119]本明細書に記載された二分法ベースのコーディング例は、インデックス要素をコーディングするために約log2(li)実行ステップを必要とする。関数|log2(x)|が効率的に(たとえば、デバイスまたは処理システムの1クロックサイクルで、または少数のクロックサイクルで)計算され得るシステムでは、接頭符号のクラスを使用することが可能である。ハフマン符号またはゴロム符号などの接頭符号(または無接頭符号)は一般に、データシンボルの何らかの確率分布に対して最適化される。しかし、前述されたように、いくつかのシステムでは確率分布についての知識を前提としない。符号化されるべき数nがn∈{0,1,2,・・・,2B-1}のような場合、デバイスが、その数をBに等しい固定数のビットで効率的に符号化することができる。一般的な場合では、n∈{0,1,2,・・・,Np-1}のとき、数nは、いくつかの値については
【0131】
【0132】
ビットを使用して、残りの値については
【0133】
【0134】
ビットを使用してコーディングされ得る。
【0135】
[0120]いくつかの例は、二分法ベースのコーディング例の代わりに単純で効率的なシステム用の、値がどのようにコーディングされるかを指定する以下の方法を使用する。いくつかのそのような例は、可能な値のセット内の1番目の値および最後の値で、
【0136】
【0137】
ビットから
【0138】
【0139】
までの値をコーディングするために使用されるビットの数を逐次に増加させることによって動作する。以下の表1は、4から8までのN
pの整数値に対する接頭符号の例を示し、
図5B~5Fがこれらの符号のツリー表現を示している。
【0140】
【0141】
[0121]
図5Bは、本明細書に記載された例で使用され得る接頭符号の態様を示す。
図5Bは、N
p=4に対するコード値のツリー表現560である。開始位置561からn値位置562~565までのパスは、各コード値がどのようにして生成されるかを示す。n=0の符号では、開始位置561からn=0の位置561へのパスは、00の符号を与える。同様に、開始位置561からn=1の位置562、n=2の位置563、およびn=3の位置565へのパスはそれぞれ、01、10、および11である。
【0142】
[0122]
図5Cは、本明細書に記載された例で使用され得る接頭符号の態様を示す。
図5Cは、N
p=5の符号値のツリー表現568である。ツリー表現570と、開始位置560から位置563、564、および565へのパスとによって示されるように、値n=1、n=2、およびn=3に対する符号は、N
p=5に対して、Np=4に対するものと同じである。N
p=4には存在しない新しいn=4の位置572は001であり、n=0の位置571には、000の値に対する追加のビットがある。
【0143】
[0123]
図5Dは、本明細書に記載された例で使用され得る接頭符号の態様を示す。
図5Eは、本明細書に記載された例で使用され得る接頭符号の態様を示す。
図5Fは、本明細書に記載された例で使用され得る接頭符号の態様を示す。これらの図のそれぞれは、N
p=6~8の符号値を示している対応するツリー表現570、580、および590を示す。それぞれの増加するN
p値のツリー表現において、最下位の全分岐階層における最低値の位置は、下の階層における2つの値で置き換えられる。N
p=5からN
p=6まで、位置563は、その位置から分岐する2つの位置573および574に置き換えられる。N
p=6からN
p=7まで、位置564は、その位置から分岐する2つの位置575および576に置き換えられる。N
p=6からN
p=7まで、位置565は、その位置から分岐する2つの位置577および578に置き換えられる。図示されたツリーのそれぞれについて、初期位置561から各分岐の最下位階層位置まで分岐するパスは、対応するn値の符号値を与える。
【0144】
[0124]上で示された符号は、よく知られているカノニカルハフマン符号とは異なっており、コーディングされた値に合わせてビット数が増加する。カノニカルハフマン符号は、符号語およびそのビット数のリストを生成しなくても、符号化および復号がより容易である。しかしながら、示された符号は、以下の符号化および復号アルゴリズム記述によって示される接頭符号の同様に単純なセットを可能にする。
例示的な符号化アルゴリズムは、
1.n∈{0,1,2,・・・,Np-1}であるようなnおよびNpの値を入力する、
2.
【0145】
【0146】
およびM=2Bを計算する、
3.Bビットを使用してk=n mod Mを符号化する、
4.k+M<Npであれば、
a.
【0147】
【0148】
を1ビットで符号化する、
である。
対応する例示的な復号アルゴリズムは、
1.Npの値を入力する、
2.
【0149】
【0150】
およびM=2Bを計算する、
3.Bビットを使用してkを復号し、n=kとする、
4.k+M<Npであれば、
a.1ビットを復号し、その値が1であれば、n=k+Mとする、
5.値nを返す
である。
【0151】
[0125]次いで、本明細書に記載されたいくつかの例は、本明細書の他の部分に記載された二分法ベースのコーディングの代わりに、上述されたコーディングおよび復号インデックス要素を使用することができる。
【0152】
[0126]
図6は、本明細書に記載された例による、別個にエントロピーコーディング可能なパーセルの並列コーディングの態様を示す図である。
図6は、エントロピーコーディングの並列化のためのコーディングオーバーヘッドを低減するための追加の改善を含む、
図3の図と同様の図を示す。上述されたように、インデックスが、各パーセルのビット数および位置を使用するか、またはエントリーポイントを使用してパーセルおよびエントリーポイントを特定する(たとえば、そのそれぞれが他方のデータを特定するために使用され得、エントリーポイントがパーセルビットおよび位置から特定可能であり、パーセルビットおよび位置がエントリーポイントから特定可能である)。隣り合うパーセルは共通の境界を共有するので、単一のエントリーポイントが、2つのパーセルの位置を定義するために使用され得る。そのような例では、パーセルは、フォワードパーセルまたはバックワードパーセルのいずれかとして定義され得る。エンコーダユニット610およびバッファ620は、
図3のエンコーダユニットおよびバッファと同様に動作することができるが、
図4に記載されたように各パーセルの開始部または終了部で特定されるエントリーポイントではなく、パーセルの対は、パーセル間の共有境界と関連して特定され得、インデックス630のエントリーポイントは半分にされ得る。
【0153】
[0127]たとえば、図示のように、
図6は、フォワードパーセル632、633、および634と、バックワードパーセル642、643、および644とを含む。パーセルは、パーセル632と642の第1の対がエントリーポイント652で結合され、パーセル633と643の第2の対がエントリーポイント653で結合され、パーセル634と644の第3の対がエントリーポイント654で結合されるように、エントリーポイント652、653、および654において結合された対を形成する。フォワードパーセルおよびバックワードパーセルを、図示のように共有エントリーポイントを含む対として定義することにより、並列エントロピーコーディングでの双方向バイトパッキングが可能になり、双方向バイトパッキングなしのインデックス430と比較して、インデックス630のエントリーポイントの数が半分になっている。次いで、フォワードパーセルは、フォワードデコーダユニット662、663、および664によって復号され、バックワードパーセルは、バックワードデコーダユニット672、673、および674によって復号される。デコーダは、上述された実装形態で動作することができるが、フォワードデコーダが、復号の間中からバイトカウンタをインクリメントし、バックワードデコーダが、対応するパーセルを復号するためにバイトカウンタをデクリメントする。上記と同様に、パーセル対は別個に復号可能なままであり、デコーダユニットの特定の対によって復号される必要はない。いくつかの例では、デコーダは、フォワードパーセルまたはバックワードパーセルのいずれかを復号するように構成され得、他のユニットでは、デコーダは、
図6で示されるように、両方ではなく、フォワードパーセルまたはバックワードパーセルのいずれかを効率的に復号するようにカスタマイズされる。そのような例は、オーバーヘッドを低減すること、スループットを改善すること、および(たとえば、低減されたオーバーヘッドに関連した)電力消費を削減することによって、コーディングシステムとコーディングシステムのデバイスとの動作をさらに改善する。
【0154】
[0128]
図7は、本明細書に記載された例による、ビデオデータのシーケンスの別個にエントロピーコーディング可能なパーセルの並列コーディングで使用するためのファイル構造710を示す。ファイル構造710は、上述されたインデックス630と同様に、ファイルインデックス702とともにP個のパートを含む。
図7の例におけるパート構造720のパートは、B個のブロックを含み、ブロック構造730のブロックは、それぞれS個のセクションを含む。並列エントロピーコーディングのための例示的な構造は、上述されたパーセルと最小限のオーバーヘッドとで使用され得る統一階層構成を実現する。この構造は、ファイル構造710の任意のパート要素(たとえば、パート0、パート1、パートP-1など)におけるファイルのオープン動作およびクローズ動作、ならびに開始動作および停止動作のユーザ制御を可能にし得る。いくつかの実装形態では、たとえば、パート要素はビデオフレームに対して使用され得、パート構造720のブロック(たとえば、ファイル構造710のパート構造720を使用する任意のパート要素のブロック0、ブロック1、ブロックB-2など)は、ビデオコーデック関数呼出しと関連付けられ得る。メインブロックが1つのパートのスカラーを含むことができ、個々の非メインブロックがベクトルデータを含んでいる。いくつかの実装形態では、セクタ使用およびパーセル使用は、上述された並列エントロピーコーディング演算と組み合わせたニューラルネットワークコーディングを使用して自動化され得る。
【0155】
[0129]セクション構造740は、上述されたフォワードパーセルおよびバックワードパーセルを含むパーセル対の構造を含む。いくつかの状況では、セクションがフォワードパーセルまたはバックワードパーセルだけを含むことができるように、奇数のパーセルが存在する場合あるが、セクションの対構造は、
図6に関して上述されたようにバイトパッキングを可能にする。次いで、各フォワードパーセルは、フォワードパーセル構造750によって定義されたNf個のバイトを有することができ、各バックワードパーセルは、バックワードパーセル構造760によって定義されたNb個のバイトを有することができる。上述されたように、閾値がバイト数に対して置かれ得、いくつかの例では、閾値は、フォワードパーセルとバックワードパーセルに対して同じであることも異なることもあり得る。いずれの場合でも、閾値は、ビデオデータの規則的な二分割を可能にするために、ならびに、コーディングされるべきパーセルサイズの変動を制限することによってコーディングを単純化し、コーディングデバイスの動作を改善するために、所与のパーセルに対して許容可能なバイト数の上限と下限の両方を含むことができる。
[0130]
図8Aは、本明細書に記載された例による、並列エントロピーコーディングのための動作を使用してビデオを符号化するプロセス800の一例を示すフローチャートである。いくつかの例では、プロセス800は、アーキテクチャ1300によるSOC900またはデバイスなどの、メモリおよび1つまたは複数のプロセッサを備える装置によって実行される。他の例では、プロセス800は、処理回路によって実行されるとコーディング演算が行われる、記憶媒体中のコンピュータ可読命令として実装される。いくつかの例では、デバイスは、符号化デバイス104などの符号化デバイスを使用してプロセス800を実行する。いくつかの例では、エントロピー符号化の態様は、以下にさらに記載されるように、コーディングシステムによる複雑な広範囲の並列化のためのニューラルネットワークで実行され得る。
【0156】
[0131]ブロック802で、プロセス800は、ビデオデータのシーケンスを取得するための動作を含む。上述されたように、ビデオデータのシーケンスは、本明細書に記載された並列エントロピー符号化を使用して記憶または送信のために符号化されるべき任意のビデオデータであり得る。そのような並列コーディングは、シングルスレッドコーディングが、超高解像度ビデオ(たとえば8kビデオまたはより高い解像度)、高フレームレートビデオ(たとえば60フレーム/秒、120フレーム/秒、またはそれ以上)、より広い色解像度もしくは色域の形で増加したデータ、高いダイナミックレンジ、またはデータの高品質ストリーミングなどのボトルネックを作り出す場合に、特に利益をもたらすことができる。ビデオデータのシーケンスの並列コーディングはまた、人工知能分析または機械学習にも使用され得、機械が、標準時間表示に制約されない方法でビデオデータを分析する(たとえば、人間がビデオフレームを表示して2時間かけて見るのと比較して、コンピュータが2時間の映画を1秒で「見る」および/または処理することができる)。そのような並列エントロピーコーディングは、機械学習または人工知能システムが、シングルスレッドコーディングシステムよりもはるかに高い速度でビデオデータを復号および処理することを可能にし得る。
【0157】
[0132]ブロック804で、プロセス800は、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントと関連付けられた、ビデオデータのシーケンス内の位置を特定する動作を含む。いくつかの例では、エントリーポイントは、ビデオデータのシーケンスの二分列挙を実行することによって少なくとも部分的に特定される。いくつかの例では、二分列挙を実行することは、ビデオデータのシーケンスを、それらの位置のうちの初期位置を特定するために二分することを含む。その初期位置は、第1のエントリーポイントおよび初期位置によって分割されたサブシーケンスと関連付けられる。二分列挙を実行することは、位置の残りの部分を特定するために、サブシーケンスの階層を二分することをさらに含むことができる。他の例は、
図5B~5Fに関して上述された接頭符号などの接頭符号を使用することができる。
【0158】
[0133]いくつかの態様では、ブロック804に関連する動作は、個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連する情報を含むコーディング情報を決定することを含むことができる。いくつかの例は、コーディング情報を決定するためにビデオデータのシーケンスの外側二分列挙を実行することを含むことができる。そのような外側二分列挙の一例の詳細は、
図5Aに関して上述されている。いくつかの例では、ブロック804は、エントリーポイントのうちの第1のエントリーポイントを特定するためにビデオデータのシーケンスを二分する動作を含むことができ、この第1のエントリーポイントは、ビデオデータのシーケンスの2つのサブシーケンスと、個別にエントロピーコーディング可能なパーセルのうちの2つのパーセル間の第1の境界とを定義する。ブロック804はまた、追加のシーケンス間の追加のエントリーポイントと、ビデオデータのシーケンスの隣り合うパーセル間の追加のエントリーポイントとによって定義される追加のサブシーケンスを生成してビデオデータのシーケンスの個別にコーディング可能なパーセルを生成するために、ビデオデータのシーケンスのサブシーケンスの階層を繰返し二分することを含むこともでき、個別にコーディング可能なパーセルは、ビデオデータのシーケンスのエントリーポイントによって特定される。上述されたように、いくつかの例では、外側二分列挙は、個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差を閾値差未満に制限する。
【0159】
[0134]ブロック804の他の例では、動作は、個別にエントロピーコーディング可能なパーセルのセットを定義するための、(imin,imax)={imin+1,imin+2,・・・,imax-2,imax-1}による、Pビットの値を有するビデオデータのシーケンスの反復二分(repeated bisection)によって、パーセルの数Nを選択することができ、そのサイズは、合計がPビットの値になる[pmin,pmax]={pmin,pmin+1,・・・,pmax-1,pmax}である。そのような例では、各iは個別にエントロピーコーディング可能なパーセルであり、iminは、個別にエントロピーコーディング可能なパーセルのセット内の1番目の個別にエントロピーコーディング可能なパーセルであり、imaxは、個別にエントロピーコーディング可能なパーセルのセット内の最後の個別にエントロピーコーディング可能なパーセルである。同様に、そのような例では、各pは、個別にエントロピーコーディング可能なパーセルのうちの対応する個別にエントロピーコーディング可能なパーセルのビットのサイズであり、pminは、1番目の個別にエントロピーコーディング可能なパーセルのビットのサイズであり、pmaxは、最後の個別にエントロピーコーディング可能なパーセルのビットのサイズである。
【0160】
[0135]ブロック806で、プロセス800は、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成する動作を含む。いくつかの例では、そのような動作は、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に実装される。いくつかの態様では、ブロック804に関連する動作は、個別にエントロピーコーディング可能なパーセルのサイズを決定しながら、ビデオデータのシーケンスの情報を個別にエントロピーコーディング可能なパーセルとして並行して符号化する内側二分探索を実行することを含むことができる。
【0161】
[0136]ブロック806の一例では、ユニバーサル符号語セットを使用してパーセルの数N、およびバイトの総数Sを符号化するための動作が含まれ、ここで(imin,imax)=(0,N),[pmin,pmax]=[0,S]である。この動作ではさらに、セット(imin,imax)=(0,N)、[pmin,pmax]=[0,S]をスタックにプッシュすることによってメモリ内のスタックを初期化し、ビデオデータのストリームを符号化することができる。
【0162】
[0137]いくつかの例では、ブロック806でストリームを符号化することは、現在間隔セット(imin,imax)、[pmin,pmax]を取得するためにスタックを分析する動作と、新インデックス
【0163】
【0164】
を定義する動作と、pi∈[pmin,pmax]を符号化するために二分法を使用する動作と、(imin,i)≠φの場合にセット(imin,i),[pmin,pi]でスタックを更新する動作と、(i,imax)≠φである場合にはセット(i,imax)[pi,pmax]でスタックを更新する動作とを含む。これらの動作は、スタックが空になるまで(たとえば、ストリーム全体またはストリームの利用可能な部分が復号されるまで)繰り返される。
【0165】
[0138]ブロック806のいくつかのそのような例では、ユニバーサル符号語セットは、エリアスデルタ符号である。さらに、ブロック806のいくつかの例では、pi∈[pmin,pmax]を符号化するために二分法を使用する動作は、変数を初期化するためのa←pmin;b←pmax;
【0166】
【0167】
の動作を含む。次いで、c≠aの場合、以下の動作が繰り返される。c≦piの場合にビット「1」を符号化し、a←cとし、c>piの場合にビット「0」を符号化し、b←cとし、
【0168】
【0169】
を更新する。上記の繰返し動作は、c=aの場合に終了し、符号化が完了する。
【0170】
[0139]ブロック808で、プロセス800は、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成する動作を含む。インデックスは、エントリーポイントに関連する情報を使用して、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する。上述されたように、インデックスは、位置およびパーセル長データ、エントリーポイントデータ、または並列復号に使用されるべき符号化ビットストリームの構造を定義するためのそのようなデータの任意の組合せを使用して、様々に構造化され得る。
【0171】
[0140]
図8に関して上述されたようなブロック808のいくつかの例では、インデックスは、パーセルの対の単一のエントリーポイントと各パーセルのパーセルサイズとを含むパーセルの対として構造化され得る。そのような一例では、他のすべてのエントリーポイントはインデックス内で定義され、含まれていない(インデックス内にない)エントリーポイントは、含まれているエントリーポイントおよびパーセルサイズから導出され得る。そのような一例では、ブロック808は、個別にエントロピーコーディング可能なパーセルのパーセルをフォワードパーセルまたはバックワードパーセルとして定義するための動作を含み得、対応するフォワードパーセルと対応するバックワードパーセルとを含む対応するパーセル対が、インデックスの単一の共有エントリーポイントによって定義されている。いくつかのそのような例は、個別にエントロピーコーディング可能なパーセルの数が偶数であるときにインデックスがN/2個のエントリーポイントを含み、個別にエントロピーコーディング可能なパーセルの数が奇数であるときにインデックスが[(N-1)/2]+1個のエントリーポイントを含む場合に動作する。
【0172】
[0141]次いで、プロセス800のいくつかの例は、インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに、個別にエントロピーコーディング可能なパーセルを記憶することができ、各パートが複数のブロックを含み、各ブロックが複数のセクションを含み、各セクションが、対応するパーセル対の対応するフォワードパーセルと対応するバックワードパーセルとに対するフォワードパーセル構造とバックワードパーセル構造とを含む。
【0173】
[0142]プロセス800の他の例は、次いで、符号化データをメモリに保存すること、または符号化データを送信することができる。いくつかの例は、プロセス800が、インデックスと個別にエントロピーコーディング可能なパーセルとを含むファイルを送信するための動作を含む場合に動作する。
【0174】
[0143]さらに、プロセス800のいくつかの例では、個別にエントロピーコーディング可能なパーセルのサイズは、個別にエントロピーコーディング可能なパーセルのビットについての整数値である。プロセス800のいくつかの例では、インデックスは、符号化ビットストリーム中のビデオデータのシーケンスの符号化に続いて特定されたエントリーポイントを使用して、個別にエントロピーコーディング可能なパーセルを特定する。プロセス800のいくつかの例では、インデックスは、ビデオデータのシーケンスから生成された符号化されたビデオビットストリーム中の各パーセルのビット長および位置を特定することによって、個別にエントロピーコーディング可能なパーセルを特定する。
【0175】
[0144]
図8Bは、本明細書に記載された例による、並列エントロピーコーディングのための動作を使用してビデオを復号するプロセス850の一例を示すフローチャートである。プロセス850は、
図8Aの符号化プロセス800に対応する復号プロセスと考えられ得る。プロセス800についての上記と同様に、いくつかの例では、プロセス850は、アーキテクチャ1300によるSOC900またはデバイスなどの、メモリおよび1つまたは複数のプロセッサを備える装置によって実行される。他の例では、プロセス850は、処理回路によって実行されるとコーディング演算が行われる、記憶媒体中のコンピュータ可読命令として実装される。いくつかの例では、デバイスは、復号デバイス112などの復号デバイスを使用してプロセス850を実行する。いくつかの例では、エントロピー符号化の態様は、以下にさらに記載されるように、コーディングシステムによる複雑な広範囲の並列化のためのニューラルネットワークで実行され得る。
【0176】
[0145]ブロック852で、プロセス850は、インデックスを含む符号化ビデオデータのストリームを取得するための動作を含む。符号化ビデオデータは、ブロック806からのビデオデータのシーケンスとブロック808からのビデオデータとを含む、上述された方法800を使用して符号化されたデータであり得る。上述されたように、ビデオデータのシーケンスは、本明細書に記載された並列エントロピー符号化を使用して記憶または送信のために符号化されるべき任意のビデオデータであり得る。そのような並列コーディングは、シングルスレッドコーディングが、超高解像度ビデオ(たとえば8kビデオまたはより高い解像度)、高フレームレートビデオ(たとえば60フレーム/秒、120フレーム/秒、またはそれ以上)、より広い色解像度もしくは色域の形で増加したデータ、高いダイナミックレンジ、またはデータの高品質ストリーミングなどのボトルネックを作り出す場合に、特に利益をもたらすことができる。ビデオデータのシーケンスの並列コーディングはまた、人工知能分析または機械学習にも使用され得、機械が、標準時間表示に制約されない方法でビデオデータを分析する(たとえば、人間がビデオフレームを表示して2時間かけて見るのと比較して、コンピュータが2時間の映画を1秒で「見る」および/または処理することができる)。そのような並列エントロピーコーディングは、機械学習または人工知能システムが、シングルスレッドコーディングシステムよりもはるかに高い速度でビデオデータを復号および処理することを可能にし得る。
【0177】
[0146]ブロック854で、プロセス850は、インデックスから個別にエントロピーコーディング可能なパーセルのサイズを復号するための動作を含む。
【0178】
[0147]ブロック856で、プロセス850は、インデックスのエントリーポイントを使用して、符号化ビデオデータのストリームからのビデオデータのシーケンスの個別にエントロピーコーディング可能なパーセルを特定するための動作を含む。ブロック854の動作は、動作804の逆と考えられ得、符号化中にブロック804で特定された位置は、次いで、ブロック856で個別にエントロピーコーディング可能なパーセルを特定するために、ブロック854で特定されたパーセルサイズを使用して特定される。これらの動作は、ビデオデータの並列エントロピーコーディング可能なシーケンスの復号を可能にするための関連情報の特定を可能にするために、動作808からのインデックス値を使用する。
【0179】
[0148]ブロック858で、プロセス800は、個別にエントロピーコーディング可能なパーセルの復号サイズを使用して(たとえば、パーセルのビットサイズデータおよび/またはパーセルの境界におけるエントリーポイントデータを使用して)、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを並列に復号するための動作を含む。本明細書に記載されたように、ブロック858は、並列復号システムにおけるパーセルが、ビデオデータのシーケンス内の異なる位置からのパーセルを別個に復号することを可能にするための並列動作を含むことができる。ビデオデータのシーケンスのすべてのパーセルの復号に続いて、パーセルは次いで、記憶され得る、またはディスプレイに出力され得るビデオデータの完全なシーケンスを生成するように統合され得る。
【0180】
[0149]方法800および850で上述された二分列挙動作および二分探索動作に加えて、他の実装形態では、
図5B~5Fに記載された接頭符号を、上述された二分列挙動作および二分探索動作の代替として使用することができる。いずれの場合も、インデックス値は、本明細書に記載されたように、個別にエントロピーコーディング可能なパーセルを符号化および復号する際に使用される。
【0181】
[0150]いくつかの例では、本明細書に記載されたプロセス(たとえば、プロセス800、および/または本明細書に記載された他のプロセス)は、
図13に示されたコンピューティングデバイスアーキテクチャ1300を有するコンピューティングデバイスなどの、コンピューティングデバイスまたは装置によって実行される場合がある。一例では、プロセス800は、本明細書に記載された任意のアーキテクチャを実装するコンピューティングデバイスアーキテクチャ1300を有するコンピューティングデバイスによって実行され得る。いくつかの例では、コンピューティングデバイスは、モバイルデバイス(たとえば、携帯電話、タブレットコンピューティングデバイスなど)、ウェアラブルデバイス、エクステンデッドリアリティデバイス(たとえば、仮想現実(VR)デバイス、拡張現実(AR)デバイス、もしくは複合現実(MR)デバイス)、パーソナルコンピュータ、ラップトップコンピュータ、ビデオサーバ、テレビジョン、車両(もしくは車両のコンピューティングデバイス)、ロボティックデバイス、ならびに/または、プロセス800を含む、本明細書に記載されたプロセスを実行するリソース能力を有する任意の他のコンピューティングデバイスを含むことができる。
【0182】
[0151]いくつかの例では、本明細書に記載されたシステムおよび技法は、1つまたは複数の機械学習(ML)システムを使用して画像および/またはビデオコーディングを実行するために使用され得る。上述されたように、ビデオデータのシーケンスの並列コーディングはまた、人工知能分析または機械学習にも使用され得、機械が、標準時間表示に制約されない方法でビデオデータを分析する。ファイル(たとえば、上記のファイル構造710を使用するファイル)の並列復号は、可能最高速度でビデオファイルを分析するために、機械学習システムによって実行され得る。いくつかの例では、機械学習システムが、ビデオデータが復号され得るのと同程度に速く超高精細映画を「見る」および/または処理するように構成される場合に、並列エントロピーコーディングは、機械処理時間を大幅に改善することができる。そのような並列エントロピーコーディングは、機械学習または人工知能システムがビデオデータを、シングルスレッドコーディングシステムよりもはるかに高い速度で復号および処理することを可能にし得る。
【0183】
[0152]一般に、MLは人工知能(AI)のサブセットである。MLシステムは、明示的な命令を使用せずにパターンおよび推測に依存することによって様々なタスクを実行するためにコンピュータシステムが使用することができるアルゴリズムと統計モデルとを含むことができる。MLシステムの一例は、人工ニューロン(たとえば、ニューロンモデル)の相互接続されたグループを含む場合がある、(人工ニューラルネットワークとも呼ばれる)ニューラルネットワークである。ニューラルネットワークは、とりわけ、画像および/またはビデオのコーディング、画像解析および/またはコンピュータビジョンアプリケーション、インターネットプロトコル(IP)カメラ、モノのインターネット(IoT)デバイス、自律車両、サービスロボットなどの様々なアプリケーションおよび/またはデバイスに使用される場合がある。
【0184】
[0153]ニューラルネットワーク内の個々のノードは、入力データを取得し、データに対して単純な演算を実行することにより、生体ニューロンをエミュレートすることができる。入力データに対して実行された単純な演算の結果は、他のニューロンに選択的に渡される。重み値がネットワーク内の各々のベクトルおよびノードに関連付けられ、この値は、入力データがどのように出力データに関係するかを制約する。たとえば、各ノードの入力データは、対応する重み値によって乗算される場合があり、積は合計される場合がある。積の合計は任意選択のバイアスによって調整される場合があり、活性化関数が結果に適用され、ノードの出力信号または(活性化マップもしくは特徴マップと呼ばれることがある)「出力活性化」をもたらす。重み値は、最初に、ネットワークを介して訓練データの反復フローによって決定される場合がある(たとえば、重み値は、ネットワークが特定のクラスの典型的な入力データ特性によってそれらのクラスをどのように識別するべきかを学習する訓練フェーズ中に確立される)。
【0185】
[0154]とりわけ、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)、敵対的生成ネットワーク(GAN:generative adversarial network)、多層パーセプトロン(MLP)ニューラルネットワークなどの、異なるタイプのニューラルネットワークが存在する。たとえば、畳み込みニューラルネットワーク(CNN)は、フィードフォワード人工ニューラルネットワークのタイプである。畳み込みニューラルネットワークは、各々が受容野(たとえば、入力空間の空間的に局所化された領域)を有し、入力空間を集合的にタイリングする人工ニューロンの集合を含む場合がある。RNNは、レイヤの出力を節約し、この出力を、レイヤの結果を予測するのに役立つために入力にフィードバックするという原理で動作する。GANは、ニューラルネットワークモデルが合理的に元のデータセットからである可能性がある新しい合成出力を生成することができるように、入力データ内のパターンを学習することができる生成ニューラルネットワークの一形態である。GANは、合成された出力を生成する生成ニューラルネットワークと、信頼性について出力を評価する識別ニューラルネットワークとを含む、一緒に動作する2つのニューラルネットワークを含むことができる。MLPニューラルネットワークでは、データは入力レイヤに供給される場合があり、1つまたは複数の隠れレイヤがデータに抽象化レベルを提供する。次いで、抽象化されたデータに基づいて出力レイヤ上で予測が行われる場合がある。
【0186】
[0155](複数の隠れレイヤが存在するときに深層ニューラルネットワークと呼ばれる)階層型ニューラルネットワークアーキテクチャでは、人工ニューロンの第1のレイヤの出力は人工ニューロンの第2のレイヤへの入力になり、人工ニューロンの第2のレイヤの出力は人工ニューロンの第3のレイヤの入力になり、以下同様である。CNNは、たとえば、特徴の階層を認識するように訓練される場合がある。CNNアーキテクチャにおける計算は、1つまたは複数の計算チェーンにおいて構成され得る処理ノードの集団にわたって分散される場合がある。そのような多層化アーキテクチャは、一度に1つのレイヤを訓練される場合があり、逆伝搬を使用して微調整される場合がある。
【0187】
[0156]従来の圧縮方法は、逐次コーディングおよび計算用に設計されており、したがって、少数の独立したデータブロックだけを有する構造である。ニューラルネットワークベースの圧縮は、多数の独立したデータブロック(たとえば、データパーセル)を利用する、広範な並列計算およびコーディングを可能にすることができる。本明細書に記載された例は、多数のデータパーセルの効率的なインデックス付けを可能にする。そのようなインデックス付けがなければ、パーセルインデックスオーバーヘッド(たとえば、多数のパーセルへのインデックスを符号化するための余分なデータ量)は、全体的な圧縮を著しく低下させる。本明細書に記載された例は、ニューラルネットワークベースのコーディング(たとえば、ビデオ符号化および復号)の全体的な圧縮におけるそのような劣化を回避する。
【0188】
[0157]
図9は、本明細書に記載された機能のうちの1つまたは複数を実行するように構成された中央処理装置(CPU)902またはマルチコアCPUを含む場合があるシステムオンチップ(SOC)900の例示的な実装形態を示す。いくつかある情報の中で特に、パラメータまたは変数(たとえば、ニューラル信号およびシナプス荷重)、算出デバイスに関連付けられたシステムパラメータ(たとえば、重みを有するニューラルネットワーク)、遅延、周波数ビン情報、タスク情報は、ニューラル処理装置(NPU)908に関連付けられたメモリブロック、CPU902に関連付けられたメモリブロック、グラフィックス処理装置(GPU)904に関連付けられたメモリブロック、デジタル信号プロセッサ(DSP)906に関連付けられたメモリブロック、メモリブロック918に記憶される場合があり、および/または複数のブロックにわたって分散される場合がある。CPU902において実行される命令は、CPU902に関連付けられたプログラムメモリからロードされてもよく、メモリブロック918からロードされてもよい。
【0189】
[0158]SOC900はまた、GPU904、DSP906などの特定の機能に適合された追加の処理ブロックと、第5世代(5G)接続、第4世代ロングタームエボリューション(4G LTE(登録商標))接続、Wi-Fi(登録商標)接続、USB接続、Bluetooth(登録商標)接続などを含む場合がある接続ブロック910と、たとえば、ジェスチャを検出および認識することができるマルチメディアプロセッサ912とを含む場合がある。一実装形態では、NPUは、CPU902、DSP906、および/またはGPU904内に実装される。SOC900はまた、センサプロセッサ914、画像信号プロセッサ(ISP)916、および/または全地球測位システムを含む場合があるナビゲーションモジュール920を含む場合がある。
【0190】
[0159]いくつかの例では、SOC900はARM命令セットに基づく場合がある。本開示の一態様では、CPU902にロードされる命令は、入力値とフィルタ重みの乗算積に対応するルックアップテーブル(LUT)内の記憶された乗算結果を探索するためのコードを備えることができる。CPU902にロードされる命令はまた、乗算積のルックアップテーブルヒットが検出されたとき、乗算積の乗算演算中に乗算器を無効にするためのコードを備えることができる。さらに、CPU902にロードされる命令は、乗算積のルックアップテーブルミスが検出されたとき、入力値とフィルタ重みの算出された乗算積を記憶するためのコードを備えることができる。
【0191】
[0160]SOC900および/またはその構成要素は、本明細書で説明された本開示の態様に従って機械学習技法を使用して、(ビデオ符号化および/または復号とも呼ばれ、ビデオコーディングと総称される)ビデオ圧縮および/または解凍を実行するように構成される場合がある。ビデオ圧縮および/または解凍を実行するために深層学習アーキテクチャを使用することにより、本開示の態様は、デバイス上でのビデオ圧縮および/または解凍の効率を増大させることができる。たとえば、記載されたビデオコーディング技法を使用するデバイスは、機械学習ベースの技法を使用してより効率的にビデオを圧縮することができ、別のデバイスに圧縮されたビデオを送信することができ、他のデバイスは、本明細書に記載された機械学習ベースの技法を使用してより効率的に圧縮されたビデオを解凍することができる。
【0192】
[0161]上述されたように、ニューラルネットワークは機械学習システムの一例であり、入力レイヤと、1つまたは複数の隠れレイヤと、出力レイヤとを含むことができる。データは入力レイヤの入力ノードから提供され、処理は1つまたは複数の隠れレイヤの隠れノードによって実行され、出力は出力レイヤの出力ノードを介して生成される。深層学習ネットワークは、通常、複数の隠れレイヤを含む。ニューラルネットワークの各レイヤは、人工ニューロン(またはノード)を含むことができる特徴マップまたは活性化マップを含むことができる。特徴マップは、フィルタ、カーネルなどを含むことができる。ノードは、レイヤのうちの1つまたは複数のノードの重要度を示すために使用される1つまたは複数の重みを含むことができる。場合によっては、深層学習ネットワークは、一連の多くの隠れレイヤを有することができ、初期のレイヤは、入力の単純で低レベルの特性を決定するために使用され、後のレイヤは、より複雑で抽象的な特性の階層を構築する。
【0193】
[0162]深層学習アーキテクチャは特徴の階層を学習することができる。たとえば、視覚データが提示された場合、第1のレイヤは、入力ストリーム内のエッジなどの比較的単純な特徴を認識するように学習することができる。別の例では、聴覚データが提示された場合、第1のレイヤは、特定の周波数のスペクトル電力を認識するように学習することができる。第1のレイヤの出力を入力として取得する第2のレイヤは、視覚データの場合の単純な形状、または聴覚データの場合の音の組合せなどの特徴の組合せを認識するように学習することができる。たとえば、上位レイヤは、視覚データ内の複雑な形状、または聴覚データ内の単語を表すように学習することができる。さらに上位のレイヤは、共通の視覚オブジェクトまたは発話フレーズを認識するように学習することができる。
【0194】
[0163]深層学習アーキテクチャは、自然階層構造を有する問題に適用されたときに特にうまく実行することができる。たとえば、原動機付き車両の分類は、ホイール、フロントガラス、および他の特徴を認識するための最初の学習から恩恵を受けることができる。これらの特徴は、車、トラック、および飛行機を認識するために、異なる方法で上位レイヤにおいて組み合わされる場合がある。
【0195】
[0164]ニューラルネットワークは、様々な接続パターンを用いて設計される場合がある。フィードフォワードネットワークでは、情報が下位レイヤから上位レイヤに渡され、所与のレイヤにおける各ニューロンは、上位レイヤにおけるニューロンに伝える。上述されたように、フィードフォワードネットワークの連続するレイヤにおいて、階層表現が構築される場合がある。ニューラルネットワークはまた、再帰型接続または(トップダウンとも呼ばれる)フィードバック接続を有する場合がある。再帰型接続では、所与のレイヤにおけるニューロンからの出力は、同じレイヤにおける別のニューロンに伝えられる場合がある。再帰型アーキテクチャは、ニューラルネットワークに順次配信される入力データチャンクのうちの2つ以上にわたるパターンを認識する際に役立つ場合がある。所与のレイヤにおけるニューロンから下位レイヤにおけるニューロンへの接続は、フィードバック(またはトップダウン)接続と呼ばれる。高レベルの概念の認識が、入力の特定の低レベルの特徴を区別するのに役立つ場合があるとき、多くのフィードバック接続を有するネットワークが役立つ場合がある。
【0196】
[0165]ニューラルネットワークのレイヤ間の接続は、全結合または局所結合であり得る。
図10Aは、全結合ニューラルネットワーク1002の一例を示す。全結合ニューラルネットワーク1002では、第2のレイヤにおける各ニューロンが第1のレイヤにおけるあらゆるニューロンから入力を受け取るように、第1のレイヤにおけるニューロンはその出力を第2のレイヤにおけるあらゆるニューロンに通信することができる。
図10Bは、局所結合ニューラルネットワーク1004の一例を示す。局所結合ニューラルネットワーク1004では、第1のレイヤにおけるニューロンは、第2のレイヤにおける限られた数のニューロンに接続される場合がある。より一般的には、局所結合ニューラルネットワーク1004の局所結合レイヤは、レイヤにおける各ニューロンが同じまたは同様の接続パターンを有するように構成される場合があるが、異なる値を有する場合がある接続強度で構成される場合がある(たとえば、1010、1012、1014、および1016)。局所結合の接続パターンは、所与の領域内の上位レイヤニューロンが、ネットワークへの総入力のうちの制限された部分のプロパティに訓練を介して調節された入力を受け取るので、上位レイヤにおいて空間的に別個の受容野を生じる場合がある。
【0197】
[0166]局所結合ニューラルネットワークの一例は、畳み込みニューラルネットワークである。
図10Cは、畳み込みニューラルネットワーク1006の一例を示す。畳み込みニューラルネットワーク1006は、第2のレイヤにおける各ニューロンのための入力に関連付けられた接続強度が共有されるように構成される場合がある(たとえば、1008)。畳み込みニューラルネットワークは、入力の空間位置が有意味である問題に好適であり得る。畳み込みニューラルネットワーク1006は、本開示の態様による、ビデオ圧縮および/または解凍の1つまたは複数の態様を実行するために使用される場合がある。
【0198】
[0167]1つのタイプの畳み込みニューラルネットワークは、深層畳み込みネットワーク(DCN)である。
図10Dは、車載カメラなどの画像キャプチャデバイス1030から入力された画像1026から視覚特徴を認識するように設計されたDCN1000の詳細な例を示す。本例のDCN1000は、交通標識および交通標識上に提供された数字を識別するように訓練される場合がある。当然、DCN1000は、車線マーキングを識別すること、または交通信号を識別することなどの他のタスクのために訓練される場合がある。
【0199】
[0168]DCN1000は、教師あり学習を用いて訓練される場合がある。訓練中に、DCN1000は、速度制限標識の画像1026などの画像を提示される場合があり、次いで、出力1022を生成するために、フォワードパスが算出される場合がある。DCN1000は、特徴抽出セクションと分類セクションとを含む場合がある。画像1026を受信すると、畳み込みレイヤ1032は、特徴マップの第1のセット1018を生成するために、畳み込みカーネル(図示せず)を画像1026に適用することができる。一例として、畳み込みレイヤ1032用の畳み込みカーネルは、108×28特徴マップを生成する5×5カーネルであり得る。本例では、4つの異なる特徴マップが特徴マップの第1のセット1018において生成されるので、4つの異なる畳み込みカーネルが、畳み込みレイヤ1032において画像1026に適用された。畳み込みカーネルは、フィルタまたは畳み込みフィルタと呼ばれる場合もある。
【0200】
[0169]特徴マップの第1のセット1018は、特徴マップの第2のセット1020を生成するために、最大プーリングレイヤ(図示せず)によってサブサンプリングされる場合がある。最大プーリングレイヤは、特徴マップの第1のセット1018のサイズを削減する。すなわち、94×14などの特徴マップの第2のセット1020のサイズは、108×28などの特徴マップの第1のセット1018のサイズよりも小さい。削減されたサイズは、メモリ消費を削減しながら、後続のレイヤに同様の情報を提供する。特徴マップの第2のセット1020は、特徴マップの1つまたは複数の後続のセット(図示せず)を生成するために、1つまたは複数の後続の畳み込みレイヤ(図示せず)を介してさらに畳み込まれる場合がある。
【0201】
[0170]
図10Dの例では、特徴マップの第2のセット1020は、第1の特徴ベクトル1024を生成するために畳み込まれる。さらに、第1の特徴ベクトル1024は、第2の特徴ベクトル1028を生成するためにさらに畳み込まれる。第2の特徴ベクトル1028の各特徴は、「標識」、「60」、および「100」などの画像1026の可能な特徴に対応する数を含む場合がある。ソフトマックス関数(図示せず)が、第2の特徴ベクトル1028内の数を確率に変換することができる。したがって、DCN1000の出力1022は、画像1026が1つまたは複数の特徴を含む確率である。
【0202】
[0171]本例では、「標識」および「60」についての出力1022における確率は、「30」、「40」、「50」、「70」、「80」、「90」、および「100」などの出力1022の他のものの確率よりも高い。訓練の前に、DCN1000によって生成される出力1022は、不正確である可能性がある。したがって、出力1022とターゲット出力との間で誤差が計算される場合がある。ターゲット出力は、画像1026(たとえば、「標識」および「60」)のグランドトゥルースである。次いで、DCN1000の重みは、DCN1000の出力1022がターゲット出力とより密接に整合されるように調整される場合がある。
【0203】
[0172]重みを調整するために、学習アルゴリズムは、重みのための勾配ベクトルを算出することができる。勾配は、重みが調整された場合に誤差が増加または減少する量を示すことができる。最上レイヤにおいて、勾配は、最後から2番目のレイヤにおける活性化ニューロンと出力レイヤにおけるニューロンとを接続する重みの値に直接対応することができる。下位レイヤでは、勾配は、重みの値、および上位レイヤの算出された誤差勾配に依存する場合がある。次いで、重みは、誤差を低減するために調整される場合がある。重みを調整するこの方式は、それがニューラルネットワークを介する「バックワードパス」を伴うので、「逆伝搬」と呼ばれる場合がある。
【0204】
[0173]実際には、重みの誤差勾配は、計算された勾配が真の誤差勾配を近似するように、少数の例にわたって計算される場合がある。この近似方法は、確率的勾配降下法と呼ばれる場合がある。確率的勾配降下法は、システム全体の達成可能な誤差レートが減少しなくなるまで、または誤差レートがターゲットレベルに達するまで繰り返される場合がある。学習の後に、DCNは新しい画像を提示される場合があり、ネットワークを介するフォワードパスは、DCNの推論または予測と見なされ得る出力1022をもたらすことができる。
【0205】
[0174]深層信念ネットワーク(DBN)は、隠れノードの複数のレイヤを備える確率モデルである。DBNは、訓練データセットの階層表現を抽出するために使用される場合がある。DBNは、制限ボルツマンマシン(RBM)のレイヤを積層することによって取得される場合がある。RBMは、入力のセットにわたる確率分布を学習することができる人工ニューラルネットワークのタイプである。RBMは、各入力がそれに分類されるべきクラスに関する情報の不在下で確率分布を学習することができるので、RBMは教師なし学習においてしばしば使用される。ハイブリッド教師なしおよび教師ありパラダイムを使用して、DBNの下部RBMは、教師なし方式で訓練される場合があり、特徴抽出器として機能することができ、上部RBMは、(前のレイヤからの入力およびターゲットクラスの同時分布上で)教師あり方式で訓練される場合があり、分類器として機能することができる。
【0206】
[0175]深層畳み込みネットワーク(DCN)は、追加のプーリングレイヤおよびたとえば、正規化レイヤで構成された畳み込みネットワークのネットワークである。DCNは、多くのタスクに関して最先端の性能を実現している。DCNは、入力ターゲットと出力ターゲットの両方が、多くの標本について知られており、勾配降下法の使用によってネットワークの重みを修正するために使用される教師あり学習を使用して訓練され得る。
【0207】
[0176]DCNは、フィードフォワードネットワークであり得る。加えて、上述されたように、DCNの第1のレイヤにおけるニューロンから次の上位レイヤにおけるニューロンのグループへの接続は、第1のレイヤにおけるニューロンにわたって共有される。DCNのフィードフォワード接続および共有接続は、高速処理のために活用される場合がある。DCNの計算負担は、たとえば、再帰型接続またはフィードバック接続を備える同様のサイズのニューラルネットワークのそれよりもはるかに少ない場合がある。
【0208】
[0177]畳み込みネットワークの各レイヤの処理は、空間的に不変のテンプレートまたは基底投影と見なされる場合がある。入力が、カラー画像の赤色、緑色、および青色のチャネルなどの複数のチャネルに最初に分解された場合、その入力に関して訓練された畳み込みネットワークは、画像の軸に沿った2つの空間次元と、色情報をキャプチャする第3の次元とを有する3次元であると見なされる場合がある。畳み込み接続の出力は、後続のレイヤにおいて特徴マップを形成すると見なされる場合があり、特徴マップ(たとえば、1020)の各要素が、前のレイヤ(たとえば、特徴マップ1018)における様々なニューロンから、および複数のチャネルの各々から入力を受信する。特徴マップにおける値は、整流、max(0,x)などの非線形性を用いてさらに処理される場合がある。隣接するニューロンからの値はさらにプールされる場合があり、これはダウンサンプリングに対応し、さらなる局所不変性および次元削減を提供することができる。
【0209】
[0178]
図11は、深層畳み込みネットワーク1150の一例を示すブロック図である。深層畳み込みネットワーク1150は、接続および重みの共有に基づく複数の異なるタイプのレイヤを含む場合がある。
図11に示されたように、深層畳み込みネットワーク1150は、畳み込みブロック1154A、1154Bを含む。畳み込みブロック1154A、1154Bの各々は、畳み込みレイヤ(CONV)1156、正規化レイヤ(LNorm)1158、および最大プーリングレイヤ(MAX POOL)1160で構成される場合がある。
【0210】
[0179]畳み込みレイヤ1156は、1つまたは複数の畳み込みフィルタを含む場合があり、それらは、特徴マップを生成するために入力データ1152に適用される場合がある。2つの畳み込みブロック1154A、1154Bのみが示されているが、本開示はそのように限定しておらず、代わりに、設計上の選好に応じて、任意の数の畳み込みブロック(たとえば、ブロック1154A、1154B)が深層畳み込みネットワーク1150に含まれてもよい。正規化レイヤ1158は、畳み込みフィルタの出力を正規化することができる。たとえば、正規化レイヤ1158は、白色化または側方抑制を提供することができる。最大プーリングレイヤ1160は、局所不変性および次元削減のために、空間にわたってダウンサンプリングアグリゲーションを提供することができる。
【0211】
[0180]たとえば、深層畳み込みネットワークの並列フィルタバンクは、高性能および低電力消費を実現するために、SOC900のCPU902またはGPU904にロードされる場合がある。代替実施形態では、並列フィルタバンクは、SOC900のDSP906またはISP916にロードされてもよい。加えて、深層畳み込みネットワーク1150は、それぞれ、センサおよびナビゲーションに専用のセンサプロセッサ914およびナビゲーションモジュール920などの、SOC900上に存在する場合がある他の処理ブロックにアクセスすることができる。
【0212】
[0181]深層畳み込みネットワーク1150はまた、(「FC1」とラベル付けされた)レイヤ1162Aおよび(「FC2」とラベル付けされた)レイヤ1162Bなどの1つまたは複数の全結合レイヤを含む場合がある。深層畳み込みネットワーク1150は、ロジスティック回帰(LR)レイヤ1164をさらに含む場合がある。深層畳み込みネットワーク1150の各レイヤ1156、1158、1160、1162A、1162B、1164の間には、更新されるべき重み(図示せず)がある。レイヤ(たとえば、1156、1158、1160、1162A、1162B、1164)の各々の出力は、最初の畳み込みブロック1154Aにおいて供給された入力データ1152(たとえば、画像、オーディオ、ビデオ、センサデータ、および/または他の入力データ)から階層特徴表現を学習するために、深層畳み込みネットワーク1150内のレイヤ(たとえば、1156、1158、1160、1162A、1162B、1164)のうちの後続の1つの入力として機能することができる。深層畳み込みネットワーク1150の出力は、入力データ1152についての分類スコア1166である。分類スコア1166は、確率のセットであり得、ここで、各確率は、入力データが特徴のセットからの特徴を含む確率である。
【0213】
[0182]上述されたように、デジタルビデオデータは大量のデータを含むことができ、それは、通信ネットワークならびにビデオデータを処理し記憶するデバイスにかなりの負担をかける可能性がある。たとえば、圧縮されていないビデオコンテンツを記録することは、概して、記録されるビデオコンテンツの解像度が増大するにつれて大幅に増加する大きいファイルサイズをもたらす。1つの例示的な例では、1080p/24(たとえば、24フレーム毎秒でキャプチャされた幅が1920ピクセルで高さが1080ピクセルの解像度)で記録された圧縮されていないチャネル当たり16ビットのビデオは、フレーム当たり12.4メガバイトまたは毎秒297.6メガバイトを占有する場合がある。24フレーム毎秒において12K解像度で記録された圧縮されていないチャネル当たり16ビットのビデオは、フレーム当たり129.8メガバイトまたは毎秒1195.2メガバイトを占有する場合がある。
【0214】
[0183]ネットワーク帯域幅は、大きいビデオファイルが問題になる可能性がある別の制約である。たとえば、ビデオコンテンツは、しばしば、ワイヤレスネットワークを介して(たとえば、LTE、LTEアドバンスト、新無線(NR)、WiFi(登録商標)、Bluetooth、または他のワイヤレスネットワークを介して)配信され、消費者のインターネットトラフィックの大部分を構成する可能性がある。ワイヤレスネットワークにおける利用可能な帯域幅の量の進歩にもかかわらず、これらのネットワークにおいてビデオコンテンツを配信するために使用される帯域幅の量を削減することが依然として望ましい場合がある。
【0215】
[0184]圧縮されていないビデオコンテンツは、物理記憶用のかなりのメモリと送信用のかなりの帯域幅とを要する場合がある大きいファイルをもたらす可能性があるので、そのようなビデオコンテンツを圧縮し、次いで解凍するためにビデオコーディング技法が利用され得る。
【0216】
[0185]ビデオコンテンツのサイズ、したがってビデオコンテンツを記憶するために要するストレージの量、およびビデオコンテンツを配信する際に要する帯域幅の量を削減するために、とりわけ、HEVC、AVC、MPEG、VVCなどの特定のビデオコーディング規格に従って、様々なビデオコーディング技法が実行され得る。ビデオコーディングは、しばしば、ビデオ画像またはシーケンス内に存在する冗長構成を利用するインター予測またはイントラ予測などの予測方法を使用する。ビデオコーディング技法の共通の目標は、ビデオ品質の劣化を回避または最小化しながら、より低いビットレートを使用する形式にビデオデータを圧縮することである。ビデオサービスに対する需要が高まり、新しいビデオサービスが利用可能になるにつれて、より良いコーディング効率、性能、およびレート制御を有するコーディング技法が必要とされる。
【0217】
[0186]概して、符号化デバイスは、符号化ビデオビットストリームを生成するためにビデオコーディング規格に従ってビデオデータを符号化する。いくつかの例では、符号化ビデオビットストリーム(または「ビデオビットストリーム」または「ビットストリーム」)は、一連の1つまたは複数のコード化ビデオシーケンスである。符号化デバイスは、各ピクチャを複数のスライスに区分化することによってピクチャのコード化表現を生成することができる。スライスは、スライス内の情報が、同じピクチャ内の他のスライスからのデータへの依存関係なしにコード化されるように、他のスライスから独立している。スライスは、独立しているスライスセグメントを含む1つまたは複数のスライスセグメントと、存在する場合、前のスライスセグメントに依存する1つまたは複数の依存しているスライスセグメントとを含む。HEVCでは、スライスは、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB)に区分化される。ルーマサンプルのCTBおよびクロマサンプルの1つまたは複数のCTBは、サンプル用のシンタックスとともに、コーディングツリーユニット(CTU)と呼ばれる。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれる場合もある。CTUは、HEVC符号化のための基本処理単位である。CTUは、様々なサイズの複数のコーディングユニット(CU)に分割され得る。CUは、コーディングブロック(CB)と呼ばれるルーマおよびクロマのサンプル配列を含んでいる。
【0218】
[0187]ルーマCBおよびクロマCBは、予測ブロック(PB)にさらに分割され得る。PBは、(利用可能なとき、または使用のために有効にされたとき)インター予測またはイントラブロックコピー(IBC)予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリーム内でシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは動き情報と呼ばれる場合もある。CBはまた、1つまたは複数の変換ブロック(TB)に区分化され得る。TBは、予測残差信号をコーディングするために残差変換(たとえば、場合によっては、同じ2次元変換)が適用される色成分のサンプルの正方形ブロックを表す。変換ユニット(TU)は、ルーマサンプルおよびクロマサンプルのTBと、対応するシンタックス要素とを表す。変換コーディングが以下でより詳細に記載される。
【0219】
[0188]変換はTUを使用して実行される場合がある。TUは、所与のCU内のPUのサイズに基づいてサイズ決定される場合がある。TUは、PUと同じサイズであるか、またはPUよりも小さい場合がある。いくつかの例では、CUに対応する残差サンプルは、残差4分木(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割される場合がある。RQTのリーフノードはTUに対応することができる。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換される場合がある。変換係数は、次いで、符号化デバイスによって量子化される場合がある。
【0220】
[0189]ビデオデータのピクチャがCUに区分化されると、符号化デバイスは予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは、次いで、(以下に記載される)残差を得るために元のビデオデータから減算される。CUごとに、シンタックスデータを使用してビットストリーム内で予測モードがシグナリングされる場合がある。予測モードは、イントラ予測(もしくはイントラピクチャ予測)またはインター予測(もしくはインターピクチャ予測)を含む場合がある。イントラ予測は、ピクチャ内の空間的に隣接するサンプル間の相関関係を利用する。たとえば、イントラ予測を使用して、各PUは、たとえば、PUに関する平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、隣接データから外挿するための方向予測、または任意の他の適切なタイプの予測を使用して、同じピクチャ内の隣接する画像データから予測される。インター予測は、画像サンプルのブロックについての動き補償予測を導出するためにピクチャ間の時間的な相関関係を使用する。たとえば、インター予測を使用して、各PUは、(出力順序で現在ピクチャの前または後の)1つまたは複数の参照ピクチャ内の画像データからの動き補償予測を使用して予測される。インターピクチャ予測を使用してピクチャエリアをコード化するべきか、イントラピクチャ予測を使用してピクチャエリアをコード化するべきかの決定は、たとえば、CUレベルにおいて行われる場合がある。
【0221】
[0190]イントラ予測および/またはインター予測を使用して予測を実行した後に、符号化デバイスは、変換と量子化とを実行することができる。たとえば、予測の後に、符号化デバイスは、PUに対応する残差値を計算することができる。残差値は、コーディングされているピクセルの現在ブロック(PU)と、現在ブロックを予測するために使用される予測ブロック(たとえば、現在ブロックの予測されたバージョン)との間のピクセル差分値を備えることができる。たとえば、予測ブロックを生成した(たとえば、インター予測またはイントラ予測を発行した)後に、符号化デバイスは、現在ブロックから予測ユニットによって生成された予測ブロックを減算することによって残差ブロックを生成することができる。残差ブロックは、現在ブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列または2次元配列)で表される場合がある。そのような例では、残差ブロックはピクセル値の2次元表現である。
【0222】
[0191]予測が実行された後に残存している場合があるいずれの残差データも、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の適切な変換関数、またはそれらの任意の組合せに基づく場合があるブロック変換を使用して変換される。場合によっては、1つまたは複数のブロック変換(たとえば、サイズ112×112、16×16、8×8、12×12、または他の適切なサイズ)が各CUにおける残差データに適用される場合がある。いくつかの実施形態では、TUは、符号化デバイスによって実装される変換プロセスおよび量子化プロセスに使用される場合がある。1つまたは複数のPUを有する所与のCUはまた、1つまたは複数のTUを含む場合がある。以下でさらに詳細に記載されるように、残差値は、ブロック変換を使用して変換係数に変換される場合があり、次いで、エントロピーコーディング用のシリアル化変換係数を生成するために、TUを使用して量子化および走査される場合がある。
【0223】
[0192]符号化デバイスは変換係数の量子化を実行することができる。量子化は、係数を表すために使用されるデータの量を低減するために変換係数を量子化することによってさらなる圧縮を提供する。たとえば、量子化は、係数の一部または全部に関連付けられたビット深度を低減することができる。一例では、nビット値を有する係数は、量子化中にmビット値に切り捨てられる場合があり、nはmよりも大きい。
【0224】
[0193]量子化が実行されると、コード化ビデオビットストリームは、量子化変換係数と、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)と、区分化情報と、他のシンタックスデータなどの任意の他の適切なデータとを含む。コード化ビデオビットストリームの異なる要素は、次いで、符号化デバイスによってエントロピー符号化される場合がある。いくつかの例では、符号化デバイスは、量子化変換係数を走査してエントロピー符号化され得るシリアル化ベクトルを生成するために、あらかじめ定義された走査順序を利用することができる。いくつかの例では、符号化デバイスは適応型走査を実行することができる。ベクトル(たとえば、1次元ベクトル)を形成するために量子化変換係数を走査した後に、符号化デバイスは、ベクトルをエントロピー符号化することができる。たとえば、符号化デバイスは、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分化エントロピーコーディング、または別の適切なエントロピー符号化技法を使用することができる。
【0225】
[0194]符号化デバイスは、符号化ビデオビットストリームを記憶することができ、および/または復号デバイスを含むことができる受信デバイスに通信リンクを介して符号化ビデオビットストリームデータを送ることができる。符号化デバイスは、(たとえば、エントロピーデコーダを使用して)エントロピー復号し、符号化ビデオデータを構成する1つまたは複数のコード化ビデオシーケンスの要素を抽出することにより、符号化ビデオビットストリームデータを復号することができる。復号デバイスは、次いで、符号化ビデオビットストリームデータを再スケーリングし、符号化ビデオビットストリームデータに対して逆変換を実行することができる。次いで、残差データが復号デバイスの予測段階に渡される。復号デバイスは、次いで、イントラ予測、インター予測、IBC、および/または他のタイプの予測を使用してピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、予測は逆変換の出力(残差データ)に加算される。復号デバイスは、ビデオ宛先デバイスに復号ビデオを出力することができ、ビデオ宛先デバイスは、コンテンツの消費者に復号ビデオデータを表示するためのディスプレイまたは他の出力デバイスを含む場合がある。
【0226】
[0195]本開示の例示的な態様は、以下を含む。
【0227】
[0196]態様1.ビデオデータを符号化するための装置であって、
メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、この1つまたは複数のプロセッサが、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、このインデックスが、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、を行うように構成される、装置。
【0228】
[0197]態様2A.インデックスが、ビデオデータのシーケンスの可能な値のセット内の1番目の値および最後の値で、
【0229】
【0230】
ビットから
【0231】
【0232】
までの値をコーディングするために使用されるビットの数を逐次に増加させることによって生成される、態様1に記載の装置。
【0233】
[0198]態様2B.エントリーポイントが、ビデオデータのシーケンスの二分列挙を実行することによって少なくとも部分的に特定される、態様1に記載の装置。
【0234】
[0199]態様3.ビデオデータの並列エントロピーコーディング可能なシーケンスが、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、態様2Bに記載の装置。
【0235】
[0200]態様4.二分列挙を実行するために、1つまたは複数のプロセッサが、ビデオデータのシーケンスを、それらの位置のうちの初期位置を特定するために二分することと、ここにおいて、この初期位置が、第1のエントリーポイントと、初期位置で分割されたサブシーケンスとに関連付けられる、サブシーケンスの階層を、それらの位置のうちの残りの部分を特定するために二分することと、を行うように構成される、態様3に記載の装置。
【0236】
[0201]態様5.個別にエントロピーコーディング可能なパーセルが、位置によって決定されたビデオデータのシーケンスからの対応するデータと、個別にエントロピーコーディング可能なパーセルに関する情報とを含む、態様3に記載の装置。
【0237】
[0202]態様6.個別にエントロピーコーディング可能なパーセルに関する情報が、ビデオデータのシーケンスからの対応するデータのバイナリ表現の大きさに関する情報である、態様5に記載の装置。
【0238】
[0203]態様7.個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満になる、態様3に記載の装置。
【0239】
[0204]態様8.並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、その数のパーセルのパーセルサイズが合計で、並列エントロピーコーディング可能なシーケンスのサイズになる、態様3に記載の装置。
【0240】
[0205]態様9.ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、ある数のパーセルと、その数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、スタックが空になるまで以下の動作、すなわち、現在間隔セットを取得するためにスタックを解析し、現在間隔セットの平均としてパーセルの新インデックスを定義することによってパーセルを選択し、パーセルのビットを、現在間隔セットの平均を使用して符号化するために二分法を使用し、パーセルが1番目のパーセルでない場合には1番目のパーセルからそのパーセルまでのセットでスタックを更新し、ならびに、使用するパーセルが最後のパーセルでない場合にはそのパーセルから最後のパーセルまでのセットでスタックを更新すること、を行うことによって、少なくとも部分的にビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、を行うように、構成される、態様8に記載の装置。
【0241】
[0206]態様10.スタックが、ユニバーサル符号語セットでさらに初期化される、態様9に記載の装置。
【0242】
[0207]態様11.二分法を使用してパーセルのビットを符号化するために、1つまたは複数のプロセッサが、第1の変数を最小パーセルサイズに、第2の変数を最大パーセルサイズに、第3の変数を最小パーセルサイズと最大パーセルサイズの平均に初期化することと、パーセルのバイナリ表現の大きさの値にアクセスすることと、第3の変数がその値以下である場合には第1のビットを符号化することと、第3の変数がその値よりも大きい場合には第2のビットを符号化することと、第3の変数を第1の変数と第2の変数の新たな平均に更新することと、を行うように、構成される、態様9に記載の装置。
【0243】
[0208]態様12.1つまたは複数のプロセッサが、個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、ここにおいて、対応するパーセル対が、インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、態様3に記載の装置。
【0244】
[0209]態様13.インデックスが、個別にエントロピーコーディング可能なパーセルの数が偶数である場合にはN/2個のエントリーポイントを含み、インデックスが、個別にエントロピーコーディング可能なパーセルの数が奇数である場合には[(N-1)/2]+1個のエントリーポイントを含む、態様11に記載の装置。
【0245】
[0210]態様14.1つまたは複数のプロセッサが、インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションが、対応するパーセル対のうちの対応するフォワードパーセルと対応するバックワードパーセルとのフォワードパーセル構造とバックワードパーセル構造とを含む、態様11に記載の装置。
【0246】
[0211]態様15.1つまたは複数のプロセッサが、インデックスと個別にエントロピーコーディング可能なパーセルとを含むファイルを送信するようにさらに構成される、態様13に記載の装置。
【0247】
[0212]態様16.インデックスが、符号化ビットストリーム中のビデオデータのシーケンスの符号化に続いて特定されたエントリーポイントを使用して、個別にエントロピーコーディング可能なパーセルを特定する、態様3に記載の装置。
【0248】
[0213]態様17.インデックスが、ビデオデータのシーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、個別にエントロピーコーディング可能なパーセルを特定する、態様3に記載の装置。
【0249】
[0214]態様18.1つまたは複数のプロセッサに結合された、ならびに、インデックスと個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータのシーケンスを送信するように構成された、送信機をさらに備える、態様3に記載の装置。
【0250】
[0215]態様19.1つまたは複数のプロセッサに結合された、ならびに、ビデオデータのシーケンスの画像を表示するように構成された、ディスプレイをさらに備える、態様3に記載の装置。
【0251】
[0216]態様20.コンピュータ実装の方法であって、
ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、このインデックスが、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、を備える、コンピュータ実装の方法。
【0252】
[0217]態様21.エントリーポイントが、ビデオデータのシーケンスの二分列挙を実行することによって少なくとも部分的に特定され、ここにおいて、ビデオデータの並列エントロピーコーディング可能なシーケンスが、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、態様20に記載のコンピュータ実装の方法。
【0253】
[0218]態様22.二分列挙を実行するために、1つまたは複数のプロセッサが、ビデオデータのシーケンスを、それらの位置のうちの初期位置を特定するために二分することと、ここにおいて、この初期位置が、第1のエントリーポイントと、初期位置で分割されたサブシーケンスとに関連付けられる、
サブシーケンスの階層を、それらの位置のうちの残りの部分を特定するために二分することと、を行うように構成される、態様21に記載のコンピュータ実装の方法。
【0254】
[0219]態様23.個別にエントロピーコーディング可能なパーセルが、位置によって決定されたビデオデータのシーケンスからの対応するデータと、個別にエントロピーコーディング可能なパーセルに関する情報とを含む、態様21に記載のコンピュータ実装の方法。
【0255】
[0220]態様24.個別にエントロピーコーディング可能なパーセルに関する情報が、ビデオデータのシーケンスからの対応するデータのバイナリ表現の大きさに関する情報である、態様21に記載のコンピュータ実装の方法。
【0256】
[0221]態様25.並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、その数のパーセルのパーセルサイズが合計で、並列エントロピーコーディング可能なシーケンスのサイズになる、態様21に記載のコンピュータ実装の方法。
【0257】
[0222]態様26.ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、ある数のパーセルと、その数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、スタックが空になるまで以下の動作を実行することによって、すなわち、現在間隔セットを取得するためにスタックを解析し、現在間隔セットの平均としてパーセルの新インデックスを定義することによってパーセルを選択し、パーセルのビットを、現在間隔セットの平均を使用して符号化するために二分法を使用し、パーセルが1番目のパーセルでない場合には1番目のパーセルからそのパーセルまでのセットでスタックを更新し、ならびに、使用するパーセルが最後のパーセルでない場合にはそのパーセルから最後のパーセルまでのセットでスタックを更新することによって、少なくとも部分的にビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、を行うように、構成される、態様25に記載のコンピュータ実装の方法。
【0258】
[0223]態様27.二分法を使用してパーセルのビットを符号化するために、1つまたは複数のプロセッサが、
第1の変数を最小パーセルサイズに、第2の変数を最大パーセルサイズに、第3の変数を最小パーセルサイズと最大パーセルサイズの平均に初期化することと、パーセルのバイナリ表現の大きさの値にアクセスすることと、第3の変数がその値以下である場合には第1のビットを符号化することと、第3の変数がその値よりも大きい場合には第2のビットを符号化することと、第3の変数を第1の変数と第2の変数の新たな平均に更新することと、を行うように、構成される、態様25に記載のコンピュータ実装の方法。
【0259】
[0224]態様28.インデックスと個別にエントロピーコーディング可能なパーセルとを含むファイルを送信することをさらに含む、態様27のコンピュータ実装の方法。
【0260】
[0225]態様29.ビデオデータを復号するための装置であって、
メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、この1つまたは複数のプロセッサが、インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスが、インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、個別にエントロピーコーディング可能なパーセルに関連するデータのインデックスを復号することと、そのインデックスからデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを特定することと、
インデックスから復号されたデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを並列に復号することと、を行うように、構成される、装置。
【0261】
[0226]態様30.コンピュータ実装の方法であって、インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスが、インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、個別にエントロピーコーディング可能なパーセルに関連するデータのインデックスを復号することと、そのインデックスからデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを特定することと、インデックスから復号されたデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを並列に復号することと、を備える、コンピュータ実装の方法。
【0262】
[0227]態様31.ビデオデータを符号化するための装置であって、ビデオデータのシーケンスを取得するための手段と、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定するための手段と、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するための手段と、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成するための手段と、このインデックスが、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、を備える装置
[0228]態様32.ビデオデータのシーケンスの二分列挙を実行するための手段をさらに備える、態様31に記載の装置。
【0263】
[0229]態様33.ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するための手段を、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行するための手段とともにさらに備える、態様32に記載の装置。
【0264】
[0230]態様34.上記の態様1~33による任意の動作を実行するための手段をさらに備える、態様32に記載の装置。
【0265】
[0231]態様35.1つまたは複数のプロセッサによって実行されるとデバイスに上記の態様1~33のいずれかの動作を実行させる命令を備える、非一時的コンピュータ可読媒体。
【0266】
[0232]
図12は、ビデオ符号化を実行するように構成されたデバイス1202と復号システム1210とを含むシステム1200を示す。デバイス1202は、カメラ1207および記憶媒体1214(たとえば、データストレージデバイス)に結合される。いくつかの実装形態では、カメラ1207は、システム1210によって符号化するためにプロセッサ1204に画像データ1208(たとえば、ビデオデータストリーム)を提供するように構成される。いくつかの実装形態では、デバイス1202は、複数のカメラ(たとえば、デュアルカメラシステム、3つのカメラ、または他の数のカメラ)に結合され得、および/またはそれらを含むことができる。場合によっては、デバイス1202は、マイクロフォンならびに/または他の入力デバイス(たとえば、キーボード、マウス、タッチスクリーンおよび/もしくはタッチパッドなどのタッチ入力デバイス、ならびに/または他の入力デバイス)に結合され得る。いくつかの例では、カメラ1207、記憶媒体1214、マイクロフォン、および/または他の入力デバイスは、デバイス1202の一部であり得る。
【0267】
[0233]デバイス1202はまた、1つもしくは複数のワイヤレスネットワーク、1つもしくは複数の有線ネットワーク、またはそれらの組合せなどの伝送媒体1218を介して、第2のデバイス1290に結合される。たとえば、伝送媒体1218は、ワイヤレスネットワーク、有線ネットワーク、または有線ネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含むことができる。伝送媒体1218は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどのパケットベースネットワークの一部を形成することができる。伝送媒体1218は、ルータ、スイッチ、基地局、またはソースデバイスから受信デバイスへの通信を容易にするために有用であり得る任意の他の機器を含む場合がある。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含む場合があり、任意の適切なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi、無線周波数(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE)、WiMax(登録商標)など)を含む場合がある。有線ネットワークは、任意の有線インターフェース(たとえば、ファイバ、イーサネット(登録商標)、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号線(DSL)など)を含む場合がある。有線および/またはワイヤレスのネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装される場合がある。符号化ビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信される場合がある。
【0268】
[0234]デバイス1202は、メモリ1206、第1のインターフェース(「I/F1」)1212、および第2のインターフェース(「I/F2」)1216に結合された(本明細書では「プロセッサ」と呼ばれる)1つまたは複数のプロセッサ1204を含む。プロセッサ1204は、カメラ1207から、メモリ1206から、および/または記憶媒体1214から画像データ1208を受け取るように構成される。プロセッサ1204は、第1のインターフェース1212を介して(たとえば、メモリバスを介して)記憶媒体1214に結合され、第2のインターフェース1216(たとえば、ネットワークインターフェースデバイス、ワイヤレストランシーバおよびアンテナ、1つもしくは複数の他のネットワークインターフェースデバイス、またはそれらの組合せ)を介して伝送媒体1218に結合される。
【0269】
[0235]プロセッサ1204はシステム1210を含む。システム1210は、エンコーダ部分1262とデコーダ部分1266とを含む。いくつかの実装形態では、システム1210は、1つまたは複数のオートエンコーダを含むことができる。エンコーダ部分1262は、入力データ1270を受け取り、入力データ1270に少なくとも部分的に基づいて出力データ1274を生成するために入力データ1270を処理するように構成される。
【0270】
[0236]いくつかの実装形態では、システム1210のエンコーダ部分1262は、出力データ1274を生成するために入力データ1270の不可逆圧縮を実行するように構成され、その結果、出力データ1274は入力データ1270よりも少ないビットを有する。エンコーダ部分1262は、任意の前の表現(たとえば、1つまたは複数の前に復元されたフレーム)に基づいて、動き補償を使用せずに入力データ1270(たとえば、画像またはビデオフレーム)を圧縮するように訓練され得る。たとえば、エンコーダ部分1262は、ビデオフレームを、そのビデオフレームからのビデオデータのみを使用し、前に復元されたフレームのいかなるデータも使用せずに圧縮することができる。エンコーダ部分1262によって処理されるビデオフレームは、本明細書ではイントラ予測フレーム(Iフレーム)と呼ばれ得る。
【0271】
[0237]いくつかの実装形態では、システム1210のエンコーダ部分1262は、記載されたように、別個にエントロピーコーディング可能なパーセル内の前の表現に基づいて、動き補償を使用して入力データ1270(たとえば、ビデオフレーム)を圧縮するように訓練され得る。たとえば、エンコーダ部分1262は、そのビデオフレームからのビデオデータを使用して、ならびに、前に復元されたフレームのデータ、またはフレームの一部分からのデータ、または上述された並行して処理され得る単一のパーセルの一部である他のデータを使用して、ビデオフレームを圧縮することができる。エンコーダ部分1262によって処理されるビデオフレームは、本明細書ではイントラ予測フレーム(Pフレーム)と呼ばれ得る。動き補償は、前に復元されたフレームからのピクセルが残差情報とともに現在フレーム内の新しい位置にどのように移動するかを記述することにより、現在フレームのデータを決定するために使用され得る。
【0272】
[0238]図示されたように、システム1210のエンコーダ部分1262は、ニューラルネットワーク1263と量子化器1264とを含むことができる。ニューラルネットワーク1263は、1つもしくは複数の畳み込みニューラルネットワーク(CNN)、1つもしくは複数の全結合ニューラルネットワーク、1つもしくは複数のゲート付き再帰型ユニット(GRU)、1つもしくは複数の長短期記憶(LSTM)ネットワーク、1つもしくは複数のConvRNN、1つもしくは複数のConvGRU、1つもしくは複数のConvLSTM、1つもしくは複数のGAN、それらの任意の組合せ、および/または中間データ1272を生成する他のタイプのニューラルネットワークアーキテクチャを含むことができる。中間データ1272は量子化器1264への入力である。
【0273】
[0239]量子化器1264は、出力データ1274を生成するために中間データ1272の量子化と、場合によってはエントロピーコーディングとを実行するように構成される。出力データ1274は、量子化(および場合によってはエントロピーコード化)データを含むことができる。量子化器1264によって実行される量子化演算は、中間データ1272から、量子化コード(またはシステム1210によって生成された量子化コードを表すデータ)の生成をもたらすことができる。量子化コード(または量子化コードを表すデータ)はまた、(zと表記された)ラテントコードまたはラテントと呼ばれ得る。ラテントに適用されるエントロピーモデルは、本明細書では「プライア」と呼ばれ得る。いくつかの例では、量子化および/またはエントロピーコーディング演算は、既存のビデオコーディング規格に従ってビデオデータを符号化および/または復号するときに実行される既存の量子化およびエントロピーコーディング演算を使用して実行され得る。いくつかの例では、量子化および/またはエントロピーコーディング演算は、ビデオデータの別個にエントロピーコーディング可能なパーセルを特定するための二分動作の後にシステム1210によって行われ得る。1つの例示的な例では、システム1210は、教師あり訓練を使用して訓練され得、訓練中に残差データが入力として使用され、量子化コードおよびエントロピーコードが既知の出力(ラベル)として使用される。
【0274】
[0240]システム1210のデコーダ部分1266は、(たとえば、量子化器1264から直接、および/または記憶媒体1214から)出力データ1274を受け取るように構成される。デコーダ部分1266は、出力データ1274に少なくとも部分的に基づいて入力データ1270の表現1276を生成するために、出力データ1274を処理することができる。いくつかの例では、システム1210のデコーダ部分1266は、1つもしくは複数のCNN、1つもしくは複数の全結合ニューラルネットワーク、1つもしくは複数のGRU、1つもしくは複数の長短期記憶(LSTM)ネットワーク、1つもしくは複数のConvRNN、1つもしくは複数のConvGRU、1つもしくは複数のConvLSTM、1つもしくは複数のGAN、それらの任意の組合せ、および/または他のタイプのニューラルネットワークアーキテクチャを含む場合があるニューラルネットワーク1268を含む。
【0275】
[0241]プロセッサ1204は、伝送媒体1218または記憶媒体4112のうちの少なくとも1つに出力データ1274を送るように構成される。たとえば、出力データ1274は、復元データとして入力データ1270の表現1276を生成するためにデコーダ部分1266による後の検索および復号(または復元)のために記憶媒体1214において記憶される場合がある。復元データは、出力データ1274を生成するために符号化/圧縮されたビデオデータの再生用などの様々な目的に使用され得る。いくつかの実装形態では、出力データ1274は、復元データとして入力データ1270の表現1276を生成するために、(たとえば、デバイス1202内の、第2のデバイス1290内の、または別のデバイス内の)デコーダ部分1266に一致する別のデコーダデバイスにおいて復号される場合がある。たとえば、第2のデバイス1290は、デコーダ部分1266に一致する(または実質的に一致する)デコーダを含む場合があり、出力データ1274は、伝送媒体1218を介して第2のデバイス1290に送信される場合がある。第2のデバイス1290は、復元データとして入力データ1270の表現1276を生成するために、出力データ1274を処理することができる。
【0276】
[0242]システム1200の構成要素は、本明細書に記載された様々な動作を実行するために、1つもしくは複数のプログラマブル電子回路(たとえば、マイクロプロセッサ、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)、および/または他の適切な電子回路)を含むことができる、電子回路もしくは他の電子ハードウェアを含むことができ、および/またはそれらを使用して実装され得、ならびに/あるいは、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組合せを含むことができ、および/またはそれらを使用して実装され得る。
【0277】
[0243]システム1200はいくつかの構成要素を含むように示されているが、システム1200が
図12に示された構成要素よりも多いかまたは少ない構成要素を含むことができることを当業者は諒解されよう。たとえば、システム1200はまた、入力デバイスと出力デバイス(図示せず)とを含むコンピューティングデバイスを含むことができるか、またはその一部であり得る。いくつかの実装形態では、システム1200はまた、1つもしくは複数のメモリデバイス(たとえば、1つもしくは複数のランダムアクセスメモリ(RAM)構成要素、読取り専用メモリ(ROM)構成要素、キャッシュメモリ構成要素、バッファ構成要素、データベース構成要素、および/もしくは他のメモリデバイス)、1つもしくは複数のメモリデバイスと通信している、および/またはそれらに電気的に接続された1つもしくは複数の処理デバイス(たとえば、1つもしくは複数のCPU、GPU、および/もしくは他の処理デバイス)、ワイヤレス通信を実行するための(たとえば、ワイヤレスインターフェースごとに1つもしくは複数のトランシーバとベースバンドプロセッサとを含む)1つもしくは複数のワイヤレスインターフェース、1つもしくは複数のハードウェア接続を介した通信を実行するための1つもしくは複数の有線インターフェース(たとえば、ユニバーサルシリアルバス(USB)入力などのシリアルインターフェース、ライトニングコネクタ、および/もしくは他の有線インターフェース)、ならびに/または
図12に示されていない他の構成要素を含むコンピューティングデバイスを含む場合があるか、もしくはその一部であり得る。
【0278】
[0244]いくつかの実装形態では、システム1200は、コンピューティングデバイスによって局所的に実装され、および/またはコンピューティングデバイスに含まれ得る。たとえば、コンピューティングデバイスは、モバイルデバイス、パーソナルコンピュータ、タブレットコンピュータ、仮想現実(VR)デバイス(たとえば、ヘッドマウントディスプレイ(HMD)もしくは他のVRデバイス)、拡張現実(AR)デバイス(たとえば、HMD、ARグラス、もしくは他のARデバイス)、ウェアラブルデバイス、(たとえば、サービスとしてのソフトウェア(SaaS)システムもしくは他のサーバベースシステム内の)サーバ、テレビジョン、および/または本明細書に記載された技法を実行するリソース能力を有する任意の他のコンピューティングデバイスを含むことができる。
【0279】
[0245]一例では、システム1210は、プロセッサ1204に結合され、プロセッサ1204によって実行可能な命令を記憶するように構成されたメモリ1206と、アンテナおよびプロセッサ1204に結合され、リモートデバイスに出力データ1274を送信するように動作可能なワイヤレストランシーバとを含むポータブル電子デバイスに組み込まれ得る。
【0280】
[0246]いくつかの例では、本明細書に記載されたシステムおよび技法は、畳み込み(たとえば、CNN)を使用する他のエンコーダ-デコーダサブネットワークと、並行コーディングのための別個にエントロピーコーディング可能なパーセル構造と互換性がある、ニューラルネットワークベースのコーディングシステムの入力における正規化段階の結合とに使用され得る。
【0281】
[0247]場合によっては、コンピューティングデバイスまたは装置は、1つもしくは複数の入力デバイス、1つもしくは複数の出力デバイス、1つもしくは複数のプロセッサ、1つもしくは複数のマイクロプロセッサ、1つもしくは複数のマイクロコンピュータ、1つもしくは複数の送信機、受信機、もしくは(たとえば、トランシーバと呼ばれる)組み合わされた送信機-受信機、1つもしくは複数のカメラ、1つもしくは複数のセンサ、および/または本明細書に記載されたプロセスのステップを実行するように構成された他の構成要素などの様々な構成要素を含む場合がある。いくつかの例では、コンピューティングデバイスは、ディスプレイ、データを通信および/もしくは受信するように構成されたネットワークインターフェース、それらの任意の組合せ、ならびに/または他の構成要素を含む場合がある。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信および/または受信するように構成される場合がある。
【0282】
[0248]コンピューティングデバイスの構成要素は、回路内に実装され得る。たとえば、構成要素は、本明細書に記載された様々な動作を実行するために、1つまたは複数のプログラマブル電子回路(たとえば、マイクロプロセッサ、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)、ニューラル処理装置(NPU)、および/または他の適切な電子回路)を含むことができる、電子回路もしくは他の電子ハードウェアを含むことができ、および/またはそれらを使用して実装され得、ならびに/あるいは、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組合せを含むことができ、および/またはそれらを使用して実装され得る。
【0283】
[0249]プロセス800および850は論理流れ図として示され、それらの動作は、ハードウェア、コンピュータ命令、またはそれらの組合せにおいて実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実行するか、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が記載される順序は限定として解釈されるものではなく、任意の数の記載された動作は、プロセスを実装するために任意の順序で、および/または並行して組み合わされ得る。
【0284】
[0250]さらに、(プロセス800、プロセス850、および/または本明細書に記載された他のプロセスを含む)本明細書に記載されたプロセスは、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実行される場合があり、1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで一括して実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実装される場合がある。上述されたように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶される場合がある。コンピュータ可読記憶媒体または機械可読記憶媒体は、非一時的であり得る。
【0285】
[0251]
図13は、本明細書に記載された様々な技法を実装することができる例示的なコンピューティングデバイスの例示的なコンピューティングデバイスアーキテクチャ1300を示す。いくつかの例では、コンピューティングデバイスは、モバイルデバイス、ウェアラブルデバイス、エクステンデッドリアリティデバイス(たとえば、仮想現実(VR)デバイス、拡張現実(AR)デバイス、もしくは複合現実(MR)デバイス)、パーソナルコンピュータ、ラップトップコンピュータ、ビデオサーバ、車両(もしくは車両のコンピューティングデバイス)、または他のデバイスを含むことができる。たとえば、コンピューティングデバイスアーキテクチャ1300は、
図6のシステムを実装することができる。コンピューティングデバイスアーキテクチャ1300の構成要素は、バスなどの接続1305を使用して互いに電気通信しているように図示されている。例示的なコンピューティングデバイスアーキテクチャ1300は、処理ユニット(CPUまたはプロセッサ)1310と、読取り専用メモリ(ROM)1320およびランダムアクセスメモリ(RAM)1325などのコンピューティングデバイスメモリ1315を含む様々なコンピューティングデバイス構成要素をプロセッサ1310に結合するコンピューティングデバイス接続1305とを含む。
【0286】
[0252]コンピューティングデバイスアーキテクチャ1300は、プロセッサ1310と直接接続された、プロセッサ1310に極めて近接した、またはプロセッサ1310の一部として統合された高速メモリのキャッシュを含むことができる。コンピューティングデバイスアーキテクチャ1300は、プロセッサ1310による迅速なアクセスのために、メモリ1315および/またはストレージデバイス1330からキャッシュ1312にデータをコピーすることができる。このようにして、キャッシュは、データを待つ間のプロセッサ1310の遅延を回避する性能の向上を提供することができる。これらおよび他のモジュールは、様々なアクションを実行するためにプロセッサ1310を制御することができるか、またはプロセッサ1310を制御するように構成され得る。他のコンピューティングデバイスメモリ1315も、使用のために利用可能であり得る。メモリ1315は、異なる性能特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ1310は、任意の汎用プロセッサ、プロセッサ1310を制御するように構成された、ストレージデバイス1330に記憶されたサービス1 1332、サービス2 1334、およびサービス3 1336などのハードウェアまたはソフトウェアサービス、ならびにソフトウェア命令がプロセッサ設計に組み込まれる専用プロセッサを含むことができる。プロセッサ1310は、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含んでいる自給式システムであり得る。マルチコアプロセッサは、対称であっても、非対称であってもよい。
【0287】
[0253]コンピューティングデバイスアーキテクチャ1300とのユーザ対話を可能にするために、入力デバイス1345は、音声用のマイクロフォン、ジェスチャまたはグラフィカル入力用のタッチ式スクリーン、キーボード、マウス、動き入力、音声などの、任意の数の入力機構を表すことができる。出力デバイス1335も、ディスプレイ、プロジェクタ、テレビジョン、スピーカデバイスなどの、当業者に知られたいくつかの出力機構のうちの1つまたは複数であり得る。いくつかの事例では、マルチモーダルコンピューティングデバイスは、ユーザがコンピューティングデバイスアーキテクチャ1300と通信するために複数のタイプの入力を提供することを可能にすることができる。通信インターフェース1340は、概して、ユーザ入力とコンピューティングデバイス出力とを統制および管理することができる。任意の特定のハードウェア構成上で動作することに対する制限はなく、したがって、本明細書での基本的な特徴は、改善されたハードウェア構成またはファームウェア構成が開発されるにつれて、それらで容易に代用されてもよい。
【0288】
[0254]ストレージデバイス1330は不揮発性メモリであり、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)1325、読取り専用メモリ(ROM)1320、およびそれらのハイブリッドなどの、コンピュータによってアクセス可能なデータを記憶することができる、ハードディスクまたは他のタイプのコンピュータ可読媒体であり得る。ストレージデバイス1330は、プロセッサ1310を制御するためのサービス1332、1334、1336を含むことができる。他のハードウェアモジュールまたはソフトウェアモジュールが考えられる。ストレージデバイス1330は、コンピューティングデバイス接続1305に接続され得る。一態様では、特定の機能を実行するハードウェアモジュールは、その機能を実行するために、プロセッサ1310、接続1305、出力デバイス1335などの必要なハードウェア構成要素とともに、コンピュータ可読媒体に記憶されたソフトウェア構成要素を含むことができる。
【0289】
[0255]本開示の態様は、1つまたは複数のアクティブ深度検知システムを含むか、またはそれに結合された(セキュリティシステム、スマートフォン、タブレット、ラップトップコンピュータ、車両、ドローン、または他のデバイスなどの)任意の適切な電子デバイスに適用可能である。1つの光プロジェクタを有するか、またはそれに結合されたデバイスに関して以下に記載されるが、本開示の態様は、任意の数の光プロジェクタを有するデバイスに適用可能であり、したがって、特定のデバイスに限定されない。
【0290】
[0256]「デバイス」という用語は、(1つのスマートフォン、1つのコントローラ、1つの処理システムなどの)1つまたは特定の数の物理オブジェクトに限定されない。本明細書で使用されるデバイスは、本開示の少なくともいくつかの部分を実装することができる1つまたは複数の部分を有する任意の電子デバイスであり得る。以下の説明および例は、本開示の様々な態様を記載するために「デバイス」という用語を使用するが、「デバイス」という用語は、特定の構成、タイプ、またはオブジェクトの数に限定されない。さらに、「システム」という用語は、複数の構成要素または特定の実施形態に限定されない。たとえば、システムは、1つまたは複数のプリント回路基板または他の基板上に実装される場合があり、可動または静的な構成要素を有する場合がある。本明細書の説明および例は、本開示の様々な態様を記載するために「システム」という用語を使用するが、「システム」という用語は、特定の構成、タイプ、またはオブジェクトの数に限定されない。
【0291】
[0257]本明細書で提供される実施形態および例の完全な理解を提供するために、上記の説明で具体的な詳細が提供されている。しかしながら、実施形態はこれらの具体的な詳細なしに実践され得ることが当業者によって理解されよう。説明を明確にするために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェアで具現された方法におけるステップもしくはルーチン、またはハードウェアとソフトウェアの組合せを備える機能ブロックを含む、個々の機能ブロックを含むものとして提示される場合がある。図に示された、および/または本明細書に記載された構成要素以外のさらなる構成要素が使用されてもよい。たとえば、回路、システム、ネットワーク、プロセス、および他の構成要素は、不要な詳細で実施形態を不明瞭にしないためにブロック図の形態で構成要素として示される場合がある。他の事例では、実施形態を不明瞭にすることを回避するために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不要な詳細なしに示される場合がある。
【0292】
[0258]個々の実施形態は、フローチャート、流れ図、データフロー図、構造図、またはブロック図として描写されたプロセスまたは方法として上述されている場合がある。フローチャートは動作を逐次プロセスとして記載する場合があるが、動作の多くは並行してまたは同時に実行され得る。加えて、動作の順序は並べ替えられてもよい。プロセスの動作が完了したときにプロセスは終了するが、図に含まれない追加のステップを有する可能性がある。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応するとき、その終了は、呼出し関数またはメイン関数への関数のリターンに対応することができる。
【0293】
[0259]上述された例によるプロセスおよび方法は、記憶されるかまたはさもなければコンピュータ可読媒体から利用可能であるコンピュータ実行可能命令を使用して実装され得る。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、または処理デバイスにある機能または機能のグループを実行させるか、またはさもなければそれらを実行するように構成する、命令とデータとを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、たとえば、バイナリ、アセンブリ言語などの中間フォーマット命令、ファームウェア、ソースコードなどであり得る。
【0294】
[0260]「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルのストレージデバイス、光ストレージデバイス、ならびに命令および/またはデータを記憶、含有、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データがそこに記憶され得、ワイヤレスに、または有線接続を介して伝搬する搬送波および/または一時的電子信号を含まない非一時的媒体を含む場合がある。非一時的媒体の例には、限定はしないが、とりわけ、磁気ディスクまたは磁気テープ、フラッシュメモリなどの光記憶媒体、メモリまたはメモリデバイス、磁気ディスクまたは光学ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク接続されたストレージデバイス、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)、それらの任意の適切な組合せが含まれ得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表すことができるコードおよび/または機械実行可能命令をその上に記憶している場合がある。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツをパスおよび/または受信することにより、別のコードセグメントまたはハードウェア回路に結合される場合がある。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介してパス、転送、または送信される場合がある。
【0295】
[0261]いくつかの実施形態では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含んでいるケーブルまたはワイヤレス信号を含むことができる。しかしながら、述べられるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号自体などの媒体を明確に除外する。
【0296】
[0262]これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードに実装されると、必要なタスクを実行するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶される場合がある。プロセッサが必要なタスクを実行することができる。フォームファクタの典型的な例には、ラップトップ、スマートフォン、携帯電話、タブレットデバイス、または他のスモールフォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどが含まれる。本明細書に記載された機能はまた、周辺機器またはアドインカード内で具現化され得る。そのような機能はまた、さらなる例として、単一のデバイス内で実行する異なるチップまたは異なるプロセスの間の回路基板上に実装され得る。
【0297】
[0263]命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示に記載された機能を提供するための例示的な手段である。
【0298】
[0264]上記の説明では、本出願の態様がその特定の実施形態を参照して記載されているが、本出願はそれに限定されないことを当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に記載されているが、従来技術によって限定される場合を除き、本発明の概念は、場合によっては様々に具現化および採用される場合があり、添付の特許請求の範囲は、そのような変形形態を含むように解釈されるものであることを理解されたい。上述された適用例の様々な特徴および態様は、個々にまたは一緒に使用されてもよい。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書に記載されたもの以外に、任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定的ではなく例示的と見なされるべきである。説明の目的で、方法は特定の順序で記載された。代替の実施形態では、方法は、記載された順序とは異なる順序で実行されてもよいことを諒解されたい。
【0299】
[0265]本明細書で使用される、より小さい(「<」)およびより大きい(「>」)というシンボルまたは用語は、本明細書の範囲から逸脱することなく、それぞれ、より小さいかまたはそれに等しい(「≦」)およびより大きいかまたはそれに等しい(「≧」)というシンボルと置き換えられ得ることを当業者は諒解されよう。
【0300】
[0266]構成要素が特定の動作を実行する「ように構成される」ものとして記載される場合、そのような構成は、たとえば、その動作を実行するように電子回路もしくは他のハードウェアを設計することにより、その動作を実行するようにプログラム可能な電子回路(たとえば、マイクロプロセッサ、もしくは他の適切な電子回路)をプログラムすることにより、またはそれらの任意の組合せで達成され得る。
【0301】
[0267]「に結合された」という句は、直接的または間接的のいずれかで別の構成要素に物理的に接続された任意の構成要素、ならびに/あるいは直接的または間接的のいずれかで別の構成要素と通信している(たとえば、有線もしくはワイヤレス接続、および/または他の適切な通信インターフェースを介して他の構成要素に接続された)任意の構成要素を指す。
【0302】
[0268]セット「のうちの少なくとも1つ」、および/またはセットのうちの「1つもしくは複数」を列挙するクレームの文言または他の文言は、(任意の組合せの)セットのうちの1つのメンバーまたはセットのうちの複数のメンバーがクレームを満たすことを示す。たとえば、「AおよびBのうちの少なくとも1つ」または「AもしくはBのうちの少なくとも1つ」を列挙するクレームの文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」または「A、B、もしくはCのうちの少なくとも1つ」を列挙するクレームの文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セットの「うちの少なくとも1つ」および/またはセットのうちの「1つもしくは複数」という文言は、セット内に列挙された項目にそのセットを限定しない。たとえば、「AおよびBのうちの少なくとも1つ」または「AもしくはBのうちの少なくとも1つ」を列挙するクレームの文言は、A、B、またはAおよびBを意味することができ、さらに、AおよびBのセット内に列挙されていない項目を含むことができる。
【0303】
[0269]本明細書に開示された実施形態に関して記載された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装される場合がある。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上述されている。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、記載された機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本出願の範囲からの逸脱を生じるものと解釈されるべきではない。
【0304】
[0270]本明細書に記載された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せで実装される場合がある。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイス内のアプリケーションを含む複数の用途を有する集積回路デバイスなどの様々なデバイスのいずれかに実装される場合がある。モジュールまたは構成要素として記載された任意の特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別個に実装される場合がある。ソフトウェアに実装された場合、技法は、実行されると、上述された方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって少なくとも部分的に実現される場合がある。コンピュータ可読データ記憶媒体は、パッケージング材料を含む場合があるコンピュータプログラム製品の一部を形成することができる。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、FLASH(登録商標)メモリ、磁気または光学データ記憶媒体などのメモリまたはデータ記憶媒体を備えることができる。技法は、追加または代替として、伝搬信号または電波などの、命令またはデータ構造の形式でプログラムコードを搬送または通信し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって少なくとも部分的に実現される場合がある。
【0305】
[0271]プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサを含む場合があるプロセッサによって実行される場合がある。そのようなプロセッサは、本開示に記載された技法のうちのいずれかを実行するように構成される場合がある。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合がある。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書に記載された技法の実装に適切な任意の他の構造もしくは装置のいずれかを指すことができる。
【0306】
[0272]本開示の例示的な態様は、以下の通りである。
【0307】
[0273]態様1:ビデオデータを符号化するための装置であって、
メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、この1つまたは複数のプロセッサが、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、このインデックスが、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、を行うように構成される、装置。
【0308】
[0274]態様2:エントリーポイントが、ビデオデータのシーケンスの二分列挙を実行することによって少なくとも部分的に特定される、請求項1に記載の装置。
【0309】
[0275]態様3:ビデオデータの並列エントロピーコーディング可能なシーケンスが、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、請求項2に記載の装置。
【0310】
[0276]態様4:二分列挙を実行するために、1つまたは複数のプロセッサが、ビデオデータのシーケンスを、それらの位置のうちの初期位置を特定するために二分することと、ここにおいて、この初期位置が、第1のエントリーポイントと、初期位置で分割されたサブシーケンスとに関連付けられる、サブシーケンスの階層を、それらの位置のうちの残りの部分を特定するために二分することと、を行うように構成される、請求項3に記載の装置。
【0311】
[0277]態様5:個別にエントロピーコーディング可能なパーセルが、位置によって決定されたビデオデータのシーケンスからの対応するデータと、個別にエントロピーコーディング可能なパーセルに関する情報とを含む、請求項3または4に記載の装置。
【0312】
[0278]態様6:個別にエントロピーコーディング可能なパーセルに関する情報が、ビデオデータのシーケンスからの対応するデータのバイナリ表現の大きさに関する情報である、請求項5に記載の装置。
【0313】
[0279]態様7:個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満になる、請求項1~6のいずれか1項に記載の装置。
【0314】
[0280]態様8:並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、その数のパーセルのパーセルサイズが合計で、並列エントロピーコーディング可能なシーケンスのサイズになる、請求項1~7のいずれか1項に記載の装置。
【0315】
[0281]態様9:ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、ある数のパーセルと、その数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、スタックが空になるまで以下の動作、すなわち、現在間隔セットを取得するためにスタックを解析し、現在間隔セットの平均としてパーセルの新インデックスを定義することによってパーセルを選択し、パーセルのビットを、現在間隔セットの平均を使用して符号化するために二分法を使用し、パーセルが1番目のパーセルでない場合には1番目のパーセルからそのパーセルまでのセットでスタックを更新し、ならびに、使用するパーセルが最後のパーセルでない場合にはそのパーセルから最後のパーセルまでのセットでスタックを更新することを行うことによって、少なくとも部分的にビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、を行うように、構成される、請求項8に記載の装置。
【0316】
[0282]態様10:スタックが、ユニバーサル符号語セットでさらに初期化される、請求項9に記載の装置。
【0317】
[0283]態様11:二分法を使用してパーセルのビットを符号化するために、1つまたは複数のプロセッサが、第1の変数を最小パーセルサイズに、第2の変数を最大パーセルサイズに、第3の変数を最小パーセルサイズと最大パーセルサイズの平均に初期化することと、パーセルのバイナリ表現の大きさの値にアクセスすることと、第3の変数がその値以下である場合には第1のビットを符号化することと、第3の変数がその値よりも大きい場合には第2のビットを符号化することと、第3の変数を第1の変数と第2の変数の新たな平均に更新することとを行うように、構成される、請求項9または10のいずれか1項に記載の装置。
【0318】
[0284]態様12:1つまたは複数のプロセッサが、個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、ここにおいて、対応するパーセル対が、インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、請求項1~11のいずれか1項に記載の装置。
【0319】
[0285]態様13:インデックスが、個別にエントロピーコーディング可能なパーセルの数が偶数である場合にはN/2個のエントリーポイントを含み、インデックスが、個別にエントロピーコーディング可能なパーセルの数が奇数である場合には[(N-1)/2]+1個のエントリーポイントを含む、請求項12に記載の装置。
【0320】
[0286]態様14:1つまたは複数のプロセッサが、インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションが、対応するパーセル対のうちの対応するフォワードパーセルと対応するバックワードパーセルとのフォワードパーセル構造とバックワードパーセル構造とを含む、請求項12または13のいずれか1項に記載の装置。
【0321】
[0287]態様15:1つまたは複数のプロセッサが、インデックスと個別にエントロピーコーディング可能なパーセルとを含むファイルを送信するようにさらに構成される、請求項14に記載の装置。
【0322】
[0288]態様16:インデックスが、符号化ビットストリーム中のビデオデータのシーケンスの符号化に続いて特定されたエントリーポイントを使用して、個別にエントロピーコーディング可能なパーセルを特定する、請求項1~15のいずれか1項に記載の装置。
【0323】
[0289]態様17:インデックスが、ビデオデータのシーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、個別にエントロピーコーディング可能なパーセルを特定する、請求項1~16のいずれか1項に記載の装置。
【0324】
[0290]態様18:1つまたは複数のプロセッサに結合された、ならびに、インデックスと個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータのシーケンスを送信するように構成された、送信機をさらに備える、請求項1~17のいずれか1項に記載の装置。
【0325】
[0291]態様19:1つまたは複数のプロセッサに結合された、ならびに、ビデオデータのシーケンスの画像を表示するように構成された、ディスプレイをさらに備える、請求項1~18のいずれか1項に記載の装置。
【0326】
[0292]態様20:ビデオデータを符号化する方法であって、ビデオデータのシーケンスを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータのシーケンス内の位置を特定することと、ビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、ビデオデータの並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、このインデックスが、ビデオデータの並列エントロピーコーディング可能なシーケンス内の個別にエントロピーコーディング可能なパーセルを特定する、を備える方法。
【0327】
[0293]態様21:エントリーポイントが、ビデオデータのシーケンスの二分列挙を実行することによって少なくとも部分的に特定される、請求項20に記載の装置。
【0328】
[0294]態様22:ビデオデータの並列エントロピーコーディング可能なシーケンスが、個別にエントロピーコーディング可能なパーセルを生成するための位置によって決定されたビデオデータのシーケンスからのデータを含む個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、請求項21に記載の装置。
【0329】
[0295]態様23:二分列挙を実行するために、1つまたは複数のプロセッサが、ビデオデータのシーケンスを、それらの位置のうちの初期位置を特定するために二分することと、ここにおいて、この初期位置が、第1のエントリーポイントと、初期位置で分割されたサブシーケンスとに関連付けられる、サブシーケンスの階層を、それらの位置のうちの残りの部分を特定するために二分することと、を行うように構成される、請求項22に記載の装置。
【0330】
[0296]態様24:個別にエントロピーコーディング可能なパーセルが、位置によって決定されたビデオデータのシーケンスからの対応するデータと、個別にエントロピーコーディング可能なパーセルに関する情報とを含む、請求項22または23のいずれか1項に記載の装置。
【0331】
[0297]態様25:個別にエントロピーコーディング可能なパーセルに関する情報が、ビデオデータのシーケンスからの対応するデータのバイナリ表現の大きさに関する情報である、請求項24に記載の装置。
【0332】
[0298]態様26:個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満になる、請求項20~25のいずれか1項に記載の装置。
【0333】
[0299]態様27:並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、その数のパーセルのパーセルサイズが合計で、並列エントロピーコーディング可能なシーケンスのサイズになる、請求項20~26のいずれか1項に記載の装置。
【0334】
[0300]態様28:ビデオデータの並列エントロピーコーディング可能なシーケンスを生成するために、1つまたは複数のプロセッサが、ある数のパーセルと、その数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、スタックが空になるまで以下の動作を実行することによって、すなわち、現在間隔セットを取得するためにスタックを解析し、現在間隔セットの平均としてパーセルの新インデックスを定義することによってパーセルを選択し、パーセルのビットを、現在間隔セットの平均を使用して符号化するために二分法を使用し、パーセルが1番目のパーセルでない場合には1番目のパーセルからそのパーセルまでのセットでスタックを更新し、ならびに、使用するパーセルが最後のパーセルでない場合にはそのパーセルから最後のパーセルまでのセットでスタックを更新することによって、少なくとも部分的にビデオデータの並列エントロピーコーディング可能なシーケンスを生成することと、を行うように、構成される、請求項27に記載に記載の装置。
【0335】
[0301]態様29:スタックが、ユニバーサル符号語セットでさらに初期化される、請求項28に記載の装置。
【0336】
[0302]態様30:二分法を使用してパーセルのビットを符号化するために、1つまたは複数のプロセッサが、第1の変数を最小パーセルサイズに、第2の変数を最大パーセルサイズに、第3の変数を最小パーセルサイズと最大パーセルサイズの平均に初期化することと、パーセルのバイナリ表現の大きさの値にアクセスすることと、第3の変数がその値以下である場合には第1のビットを符号化することと、第3の変数がその値よりも大きい場合には第2のビットを符号化することと、第3の変数を第1の変数と第2の変数の新たな平均に更新することと、を行うように、構成される、請求項28または29のいずれか1項に記載の装置。
【0337】
[0303]態様31:1つまたは複数のプロセッサが、個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、ここにおいて、対応するパーセル対が、インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、請求項20~30のいずれか1項に記載の装置。
【0338】
[0304]態様32:インデックスが、個別にエントロピーコーディング可能なパーセルの数が偶数である場合にはN/2個のエントリーポイントを含み、インデックスが、個別にエントロピーコーディング可能なパーセルの数が奇数である場合には[(N-1)/2]+1個のエントリーポイントを含む、請求項31に記載の装置。
【0339】
[0305]態様33:1つまたは複数のプロセッサが、インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションが、対応するパーセル対のうちの対応するフォワードパーセルと対応するバックワードパーセルとのフォワードパーセル構造とバックワードパーセル構造とを含む、請求項31または32のいずれか1項に記載の装置。
【0340】
[0306]態様34:1つまたは複数のプロセッサが、インデックスと個別にエントロピーコーディング可能なパーセルとを含むファイルを送信するようにさらに構成される、請求項33に記載の装置。
【0341】
[0307]態様35:インデックスが、符号化ビットストリーム中のビデオデータのシーケンスの符号化に続いて特定されたエントリーポイントを使用して、個別にエントロピーコーディング可能なパーセルを特定する、請求項20~34のいずれか1項に記載の装置。
【0342】
[0308]態様36:インデックスが、ビデオデータのシーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、個別にエントロピーコーディング可能なパーセルを特定する、請求項20~35のいずれか1項に記載の装置。
【0343】
[0309]態様37:1つまたは複数のプロセッサに結合された、ならびに、インデックスと個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータのシーケンスを送信するように構成された、送信機をさらに備える、請求項20~36のいずれか1項に記載の装置。
【0344】
[0310]態様38:1つまたは複数のプロセッサに結合された、ならびに、ビデオデータのシーケンスの画像を表示するように構成された、ディスプレイをさらに備える、請求項20~37のいずれか1項に記載の装置。
【0345】
[0311]態様39:1つまたは複数のプロセッサによって実行されると、その1つまたは複数のプロセッサに態様1~38のいずれかによる動作を実行させる命令が記憶された非一時的コンピュータ可読媒体、
[0312]態様40:態様1から38のいずれかに記載の動作を実行するための手段を備える、ビデオデータを符号化するための装置。
【0346】
[0313]態様41:ビデオデータを復号するための装置であって、メモリと、メモリに結合された1つまたは複数のプロセッサとを備え、この1つまたは複数のプロセッサが、インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスが、インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、個別にエントロピーコーディング可能なパーセルに関連するデータのインデックスを復号することと、そのインデックスからデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを特定することと、インデックスから復号されたデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを並列に復号することと、を行うように、構成される、装置。
【0347】
[0314]態様42:コンピュータ実装の方法であって、インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの並列エントロピーコーディング可能なシーケンスが、インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、個別にエントロピーコーディング可能なパーセルに関連するデータのインデックスを復号することと、そのインデックスからデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを特定することと、インデックスから復号されたデータを使用して、符号化ビデオデータのストリームからの個別にエントロピーコーディング可能なパーセルを並列に復号することとを備える、コンピュータ実装の方法。
【0348】
[0315]態様43:1つまたは複数のプロセッサによって実行されると、その1つまたは複数のプロセッサに態様1~38、41、および42のいずれかに記載の動作を実行させる命令が記憶された非一時的コンピュータ可読媒体。
【0349】
[0316]態様44:態様1~38、41、および42のいずれかに記載の動作を実行するための手段を備える、ビデオデータを符号化するための装置。
【手続補正書】
【提出日】2023-07-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ビデオデータを符号化するための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
ビデオデータのシーケンスを取得することと、
ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータの前記シーケンス内の位置を特定することと、
前記メモリ内のスタックを初期化することと、前記スタックは、ある数のパーセルと、前記数のパーセルの対応するデータのある大きさのバイナリ表現とを含む、
前記数のパーセルの各パーセルについて、各パーセルの対応するインデックスを定義することによって前記スタックからパーセルを逐次に選択し、前記数のパーセルの各パーセルをそれぞれのエントロピーコーディングされたパーセルとして符号化し、各それぞれのエントロピーコーディングされたパーセルに基づいて前記スタックを更新することと、
各それぞれのエントロピーコーディングされたパーセルを使用して、ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、前記インデックスは、
前記数のパーセルの各パーセルの各対応するインデックス値を使用してビデオデータの前記並列エントロピーコーディング可能なシーケンス内の前記個別にエントロピーコーディング可能なパーセルを特定する、
を行うように構成される、装置。
【請求項2】
前記エントリーポイントは、ビデオデータの前記シーケンスの二分列挙を実行することによって少なくとも部分的に特定される、請求項1に記載の装置。
【請求項3】
ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記個別にエントロピーコーディング可能なパーセルを生成するための前記位置によって決定されたビデオデータの前記シーケンスからのデータを含む前記個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、請求項2に記載の装置。
【請求項4】
前記二分列挙を実行するために、前記1つまたは複数のプロセッサは、
前記位置のうちの初期位置を特定するために、ビデオデータの前記シーケンスを二分することと、ここにおいて、前記初期位置は、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、
前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、
を行うように構成される、請求項3に記載の装置。
【請求項5】
前記個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータの前記シーケンスからの対応するデータと、前記個別にエントロピーコーディング可能なパーセルに関する前記情報とを含む、請求項3に記載の装置。
【請求項6】
前記個別にエントロピーコーディング可能なパーセルに関する前記情報は、ビデオデータの前記シーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である、請求項5に記載の装置。
【請求項7】
前記個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満である、請求項
3に記載の装置。
【請求項8】
前記並列エントロピーコーディング可能なシーケンスを生成するために、前記1つまたは複数のプロセッサは、
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、前記数のパーセルのパーセルサイズは合計で、前記並列エントロピーコーディング可能なシーケンスのサイズになる、請求項
3に記載の装置。
【請求項9】
前記1つまたは複数のプロセッサは
、
現在間隔セットの平均として前記パーセルの新インデックスを定義することによって
前記数のパーセルのうちのパーセルを選択することと、
前記パーセルのビットを前記現在間隔セットの前記平均を使用して符号化するために二分法を使用することと、
前記パーセルが前記1番目のパーセルでない場合には、前記1番目のパーセルから前記パーセルまでのセットで前記スタックを更新することと、
前記パーセルが前記最後のパーセルでない場合には、前記パーセルから前記最後のパーセルまでのセットで前記スタックを更新することと
、
を行うように構成される、請求項8に記載の装置。
【請求項10】
前記スタックは、ユニバーサル符号語セットでさらに初期化される、請求項9に記載の装置。
【請求項11】
二分法を使用して前記パーセルの前記ビットを符号化するために、前記1つまたは複数のプロセッサは、
第1の変数を前記最小パーセルサイズに、第2の変数を前記最大パーセルサイズに、第3の変数を前記最小パーセルサイズと前記最大パーセルサイズの平均に初期化することと、
前記パーセルのバイナリ表現の大きさの値にアクセスすることと、
前記第3の変数が前記値以下である場合には第1のビットを符号化することと、
前記第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、
前記第3の変数を前記第1の変数と前記第2の変数の新たな平均に更新することと、
を行うように構成される、請求項9に記載の装置。
【請求項12】
前記1つまたは複数のプロセッサは、
前記個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、
対応するパーセル対は、前記インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、請求項
3に記載の装置。
【請求項13】
前記インデックスは、前記個別にエントロピーコーディング可能なパーセルの数が偶数である場合にはN/2個のエントリーポイントを含み、前記インデックスが、前記個別にエントロピーコーディング可能なパーセルの前記数が奇数である場合には[(N-1)/2]+1個のエントリーポイントを含む、請求項12に記載の装置。
【請求項14】
前記1つまたは複数のプロセッサは、
前記インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化された前記メモリに、前記個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、
各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションは、前記対応するパーセル対のうちの
前記対応するフォワードパーセルと前記対応するバックワードパーセルのためのフォワードパーセル構造とバックワードパーセル構造とを含む、請求項12に記載の装置。
【請求項15】
前記1つまたは複数のプロセッサは、前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを含む前記ファイルを送信するようにさらに構成される、請求項14に記載の装置。
【請求項16】
前記インデックスは、符号化ビットストリーム中のビデオデータの前記シーケンスの符号化に続いて特定される前記エントリーポイントを使用して、前記個別にエントロピーコーディング可能なパーセルを特定する、請求項
3に記載の装置。
【請求項17】
前記インデックスは、ビデオデータの前記シーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、前記個別にエントロピーコーディング可能なパーセルを特定する、請求項
3に記載の装置。
【請求項18】
前記1つまたは複数のプロセッサに結合された送信機をさらに備え、前記送信機は、前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータの前記シーケンスを送信するように構成される、請求項
3に記載の装置。
【請求項19】
前記1つまたは複数のプロセッサに結合されたディスプレイをさらに備え、前記ディスプレイは、ビデオデータの前記シーケンスの画像を表示するように構成される、請求項
3に記載の装置。
【請求項20】
コンピュータに実装される方法であって、
ビデオデータのシーケンスを取得することと、
ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータの前記シーケンス内の位置を特定することと、
メモリ内のスタックを初期化することと、前記スタックは、ある数のパーセルと、前記数のパーセルの対応するデータのある大きさのバイナリ表現とを含む、
前記数のパーセルの各パーセルについて、各パーセルの対応するインデックスを定義することによって前記スタックからパーセルを逐次に選択し、前記数のパーセルの各パーセルをそれぞれのエントロピーコーディングされたパーセルとして符号化し、各それぞれのエントロピーコーディングされたパーセルに基づいて前記スタックを更新することと、
各それぞれのエントロピーコーディングされたパーセルを使用して、ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、前記インデックスは、
前記数のパーセルの各パーセルの各対応するインデックス値を使用してビデオデータの前記並列エントロピーコーディング可能なシーケンス内の前記個別にエントロピーコーディング可能なパーセルを特定する、
を備える、コンピュータに実装される方法。
【請求項21】
前記エントリーポイントは、ビデオデータの前記シーケンスの二分列挙を実行することによって少なくとも部分的に特定され、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記個別にエントロピーコーディング可能なパーセルを生成するための前記位置によって決定されたビデオデータの前記シーケンスからのデータを含む前記個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、
請求項20に記載のコンピュータに実装される方法。
【請求項22】
前記二分列挙を実行することは、
前記位置のうちの初期位置を特定するために、ビデオデータの前記シーケンスを二分することと、ここにおいて、前記初期位置は、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、
前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、
を
含む、請求項21に記載のコンピュータに実装される方法。
【請求項23】
前記個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータの前記シーケンスからの対応するデータと、前記個別にエントロピーコーディング可能なパーセルに関する前記情報とを含む、請求項21に記載のコンピュータに実装される方法。
【請求項24】
前記個別にエントロピーコーディング可能なパーセルに関する前記情報は、ビデオデータの前記シーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である、請求項
21に記載のコンピュータに実装される方法。
【請求項25】
前記並列エントロピーコーディング可能なシーケンスを生成することは、
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定すること、
を
含み、
前記数のパーセルのパーセルサイズは合計で、前記並列エントロピーコーディング可能なシーケンスのサイズになる、請求項
21に記載のコンピュータに実装される方法。
【請求項26】
現在間隔セットの平均として前記パーセルの新インデックスを定義することによって
前記数のパーセルのうちのパーセルを選択することと、
前記パーセルのビットを前記現在間隔セットの前記平均を使用して符号化するために二分法を使用することと、
前記パーセルが前記1番目のパーセルでない場合には、前記1番目のパーセルから前記パーセルまでのセットで前記スタックを更新することと、
前記パーセルが前記最後のパーセルでない場合には、前記パーセルから前記最後のパーセルまでのセットで前記スタックを更新することと
、
をさらに備える、請求項25に記載のコンピュータ
に実装
される方法。
【請求項27】
前記パーセルの前記ビットを符号化するために二分法を使用することは、
第1の変数を前記最小パーセルサイズに、第2の変数を前記最大パーセルサイズに、第3の変数を前記最小パーセルサイズと前記最大パーセルサイズの平均に初期化することと、
前記パーセルのバイナリ表現の大きさの値にアクセスすることと、
前記第3の変数が前記値以下である場合には第1のビットを符号化することと、
前記第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、
前記第3の変数を前記第1の変数と前記第2の変数の新たな平均に更新することと、
を
含む、請求項
26に記載のコンピュータ
に実装
される方法。
【請求項28】
前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを含むファイルを送信することをさらに備える、請求項27に記載のコンピュータに実装される方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0349
【補正方法】変更
【補正の内容】
【0349】
[0316]態様44:態様1~38、41、および42のいずれかに記載の動作を実行するための手段を備える、ビデオデータを符号化するための装置。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを符号化するための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
ビデオデータのシーケンスを取得することと、
ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータの前記シーケンス内の位置を特定することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、前記インデックスは、ビデオデータの前記並列エントロピーコーディング可能なシーケンス内の前記個別にエントロピーコーディング可能なパーセルを特定する、
を行うように構成される、装置。
[C2]
前記エントリーポイントは、ビデオデータの前記シーケンスの二分列挙を実行することによって少なくとも部分的に特定される、C1に記載の装置。
[C3]
ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記個別にエントロピーコーディング可能なパーセルを生成するための前記位置によって決定されたビデオデータの前記シーケンスからのデータを含む前記個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、C2に記載の装置。
[C4]
前記二分列挙を実行するために、前記1つまたは複数のプロセッサは、
前記位置のうちの初期位置を特定するために、ビデオデータの前記シーケンスを二分することと、ここにおいて、前記初期位置は、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、
前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、
を行うように構成される、C3に記載の装置。
[C5]
前記個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータの前記シーケンスからの対応するデータと、前記個別にエントロピーコーディング可能なパーセルに関する前記情報とを含む、C3に記載の装置。
[C6]
前記個別にエントロピーコーディング可能なパーセルに関する前記情報は、ビデオデータの前記シーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である、C5に記載の装置。
[C7]
前記個別にエントロピーコーディング可能なパーセルのうちの最大のパーセルと最小のパーセルとの差が閾値差未満である、C1に記載の装置。
[C8]
前記並列エントロピーコーディング可能なシーケンスを生成するために、前記1つまたは複数のプロセッサは、
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定するように構成され、ここにおいて、前記数のパーセルのパーセルサイズは合計で、前記並列エントロピーコーディング可能なシーケンスのサイズになる、C1に記載の装置。
[C9]
ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成するために、前記1つまたは複数のプロセッサは、
ある数のパーセルと、前記数のパーセルの対応するデータのある大きさのバイナリ表現とを含む前記メモリ内のスタックを初期化することと、
前記スタックが空になるまで以下の動作、すなわち
現在間隔セットを取得するために前記スタックを解析することと、
前記現在間隔セットの平均として前記パーセルの新インデックスを定義することによってパーセルを選択することと、
前記パーセルのビットを前記現在間隔セットの前記平均を使用して符号化するために二分法を使用することと、
前記パーセルが前記1番目のパーセルでない場合には、前記1番目のパーセルから前記パーセルまでのセットで前記スタックを更新することと、
前記パーセルが前記最後のパーセルでない場合には、前記パーセルから前記最後のパーセルまでのセットで前記スタックを更新することと、
を行うことによって、少なくとも部分的にビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
を行うように構成される、C8に記載の装置。
[C10]
前記スタックは、ユニバーサル符号語セットでさらに初期化される、C9に記載の装置。
[C11]
二分法を使用して前記パーセルの前記ビットを符号化するために、前記1つまたは複数のプロセッサは、
第1の変数を前記最小パーセルサイズに、第2の変数を前記最大パーセルサイズに、第3の変数を前記最小パーセルサイズと前記最大パーセルサイズの平均に初期化することと、
前記パーセルのバイナリ表現の大きさの値にアクセスすることと、
前記第3の変数が前記値以下である場合には第1のビットを符号化することと、
前記第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、
前記第3の変数を前記第1の変数と前記第2の変数の新たな平均に更新することと、
を行うように構成される、C9に記載の装置。
[C12]
前記1つまたは複数のプロセッサは、
前記個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義するようにさらに構成され、
対応するパーセル対は、前記インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、C1に記載の装置。
[C13]
前記インデックスは、前記個別にエントロピーコーディング可能なパーセルの数が偶数である場合にはN/2個のエントリーポイントを含み、前記インデックスが、前記個別にエントロピーコーディング可能なパーセルの前記数が奇数である場合には[(N-1)/2]+1個のエントリーポイントを含む、C12に記載の装置。
[C14]
前記1つまたは複数のプロセッサは、
前記インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化された前記メモリに、前記個別にエントロピーコーディング可能なパーセルを記憶するようにさらに構成され、
各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションは、前記対応するパーセル対のうちの対応するフォワードパーセルと前記対応するバックワードパーセルのためのフォワードパーセル構造とバックワードパーセル構造とを含む、C12に記載の装置。
[C15]
前記1つまたは複数のプロセッサは、前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを含む前記ファイルを送信するようにさらに構成される、C14に記載の装置。
[C16]
前記インデックスは、符号化ビットストリーム中のビデオデータの前記シーケンスの符号化に続いて特定される前記エントリーポイントを使用して、前記個別にエントロピーコーディング可能なパーセルを特定する、C1に記載の装置。
[C17]
前記インデックスは、ビデオデータの前記シーケンスから生成された、符号化ビデオビットストリーム中の各パーセルのビット長および位置を特定することを含めて、前記個別にエントロピーコーディング可能なパーセルを特定する、C1に記載の装置。
[C18]
前記1つまたは複数のプロセッサに結合された送信機をさらに備え、前記送信機は、前記インデックスと前記個別にエントロピーコーディング可能なパーセルとを使用してエントロピー符号化されたビデオデータの前記シーケンスを送信するように構成される、C1に記載の装置。
[C19]
前記1つまたは複数のプロセッサに結合されたディスプレイをさらに備え、前記ディスプレイは、ビデオデータの前記シーケンスの画像を表示するように構成される、C1に記載の装置。
[C20]
コンピュータに実装される方法であって、
ビデオデータのシーケンスを取得することと、
ビデオデータの並列エントロピーコーディング可能なシーケンスの個別にエントロピーコーディング可能なパーセルのエントリーポイントに関連するビデオデータの前記シーケンス内の位置を特定することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスのインデックスを生成することと、前記インデックスは、ビデオデータの前記並列エントロピーコーディング可能なシーケンス内の前記個別にエントロピーコーディング可能なパーセルを特定する、
を備える、コンピュータに実装される方法。
[C21]
前記エントリーポイントは、ビデオデータの前記シーケンスの二分列挙を実行することによって少なくとも部分的に特定され、
ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記個別にエントロピーコーディング可能なパーセルを生成するための前記位置によって決定されたビデオデータの前記シーケンスからのデータを含む前記個別にエントロピーコーディング可能なパーセルに関連する情報を符号化する二分探索を実行することによって、少なくとも部分的に生成される、
C20に記載のコンピュータに実装される方法。
[C22]
前記位置のうちの初期位置を特定するために、ビデオデータの前記シーケンスを二分することと、ここにおいて、前記初期位置は、第1のエントリーポイントと、前記初期位置で分割されたサブシーケンスとに関連付けられる、
前記位置のうちの残りの部分を特定するために、サブシーケンスの階層を二分することと、
をさらに備える、C21に記載のコンピュータに実装される方法。
[C23]
前記個別にエントロピーコーディング可能なパーセルは、前記位置によって決定されたビデオデータの前記シーケンスからの対応するデータと、前記個別にエントロピーコーディング可能なパーセルに関する前記情報とを含む、C21に記載のコンピュータに実装される方法。
[C24]
前記個別にエントロピーコーディング可能なパーセルに関する前記情報は、ビデオデータの前記シーケンスからの前記対応するデータのバイナリ表現の大きさに関する情報である、C23に記載のコンピュータに実装される方法。
[C25]
最小パーセルサイズと最大パーセルサイズの間のサイズを有する1番目のパーセルから最後のパーセルまでの個別にエントロピーコーディング可能なパーセルのセットを定義するために、パーセルの数を特定すること、
をさらに備え、
前記数のパーセルのパーセルサイズは合計で、前記並列エントロピーコーディング可能なシーケンスのサイズになる、C20に記載のコンピュータに実装される方法。
[C26]
ある数のパーセルと、その数のパーセルの対応するデータのある大きさのバイナリ表現とを含むメモリ内のスタックを初期化することと、
前記スタックが空になるまで以下の動作、すなわち、
現在間隔セットを取得するために前記スタックを解析することと、
前記現在間隔セットの平均として前記パーセルの新インデックスを定義することによってパーセルを選択することと、
前記パーセルのビットを前記現在間隔セットの前記平均を使用して符号化するために二分法を使用することと、
前記パーセルが前記1番目のパーセルでない場合には、前記1番目のパーセルから前記パーセルまでのセットで前記スタックを更新することと、
前記パーセルが前記最後のパーセルでない場合には、前記パーセルから前記最後のパーセルまでのセットで前記スタックを更新することと、
を行うことによって、少なくとも部分的にビデオデータの前記並列エントロピーコーディング可能なシーケンスを生成することと、
をさらに備える、C25に記載のコンピュータ実装の方法。
[C27]
第1の変数を前記最小パーセルサイズに、第2の変数を前記最大パーセルサイズに、第3の変数を前記最小パーセルサイズと前記最大パーセルサイズの平均に初期化することと、
前記パーセルのバイナリ表現の大きさの値にアクセスすることと、
前記第3の変数が前記値以下である場合には第1のビットを符号化することと、
前記第3の変数が前記値よりも大きい場合には第2のビットを符号化することと、
前記第3の変数を前記第1の変数と前記第2の変数の新たな平均に更新することと、
をさらに備える、C25に記載のコンピュータ実装の方法。
[C28]
前記個別にエントロピーコーディング可能なパーセルのうちの複数のパーセルをフォワードパーセルまたはバックワードパーセルとして定義することと、ここにおいて、対応するパーセル対は、前記インデックス内の単一の共有エントリーポイントを使用して定義された対応するフォワードパーセルおよび対応するバックワードパーセルを含む、
前記インデックスおよび複数のパートを含むファイル構造を有するファイルとして構造化されたメモリに、前記個別にエントロピーコーディング可能なパーセルを記憶することと、
各パートは複数のブロックを含み、各ブロックは複数のセクションを含み、各セクションは、前記対応するパーセル対のうちの前記対応するフォワードパーセルと前記対応するバックワードパーセルのためのフォワードパーセル構造とバックワードパーセル構造とを含む、
をさらに備える、C20に記載のコンピュータ実装の方法。
[C29]
ビデオデータを復号するための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサは、
インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、
前記個別にエントロピーコーディング可能なパーセルに関連するデータの前記インデックスを復号することと、
前記インデックスから前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを特定することと、
前記インデックスから復号された前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを並列に復号することと、
を行うように構成される、装置。
[C30]
コンピュータに実装される方法であって、
インデックスと、ビデオデータの並列エントロピーコーディング可能なシーケンスとを含む符号化ビデオデータのストリームを取得することと、ビデオデータの前記並列エントロピーコーディング可能なシーケンスは、前記インデックスを使用して特定可能な個別にエントロピーコーディング可能なパーセルを含む、
前記個別にエントロピーコーディング可能なパーセルに関連するデータの前記インデックスを復号することと、
前記インデックスから前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを特定することと、
前記インデックスから復号された前記データを使用して、符号化ビデオデータの前記ストリームからの前記個別にエントロピーコーディング可能なパーセルを並列に復号することと、
を備える、コンピュータに実装される方法。
【国際調査報告】