解決すべき問題
既存のビデオ符号化シンタックスは、ランダムアクセスポイント、ランダムアクセスピクチャタイプ、およびNALユニットヘッダといったハイレベルシンタックス構造におけるリーディング(leading)ピクチャタイプを識別する、容易に識別可能/解析可能なシンタックス要素を欠いている。
図2は、一つの実施形態に従った、通信システム(200)の簡略化されたブロックダイヤグラムを示している。システム(200)は、ネットワーク(250)を介して相互接続された少なくとも2つの端末(210-220)を含み得る。データの一方向(unidirectional)伝送について、第1端末(210)は、ネットワーク(250)を介した他方の端末(220)に対する送信のために、ローカル位置でビデオデータを符号化し得る。第2端末(220)は、ネットワーク(250)から他方の端末の符号化ビデオデータを受信し、符号化データを復号し、そして、回復されたビデオデータを表示することができる。一方向データ伝送は、媒体提供アプリケーション、等において一般的であり得る。
図2は、例えば、ビデオ会議の最中に発生し得る符号化ビデオの双方向伝送をサポートするために提供される端末の第2ペア(230、240)を示している。データの双方向伝送のために、各端末(230、240)は、ネットワーク(250)を介した他方の端末に対する送信のために、ローカル位置でキャプチャされたビデオデータを符号化し得る。各端末(230、240)は、また、他方の端末によって送信された符号化ビデオデータを受信し、符号化データを復号し、そして、回復されたビデオデータをローカルディスプレイ装置に表示することができる。
図2においては、端末(210-240)が、サーバ、パーソナルコンピュータ、およびスマートフォンとして示され得るが、本開示の原理は、そのように限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、及び/又は、専用のビデオ会議装置を用いたアプリケーションを見出す。ネットワーク(250)は、例えば、有線、及び/又は、無線通信ネットワークを含む、端末(210-240)間で符号化ビデオデータを伝達する任意の数のネットワークを表している。通信ネットワーク(250)は、回線交換(circuit-switched)及び/又はパケット交換(packet-switched)チャネルにおいてデータを交換することができる。代表的なネットワークは、通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は、インターネットを含んでいる。本説明の目的のために、ネットワーク(250)のアーキテクチャおよびトポロジーは、以下に説明されなければ、本開示のオペレーションにとって重要ではない。
図3は、開示される技術的事項のためのアプリケーションの一つの例として、ストリーミング環境におけるビデオエンコーダおよびデコーダの配置を示している。開示される技術的事項は、例えば、ビデオ会議、デジタルTV、CD、DVD、メモリスティックなどを含むデジタルメディアにおける圧縮ビデオのストレージ、等を含む、他のビデオ可能化アプリケーションに対して同様に適用可能である。
ストリーミングシステムは、キャプチャサブシステム(313)を含んでよく、例えば非圧縮ビデオサンプルストリーム(302)を生成する、ビデオソース(301)、例えばデジタルカメラ、を含み得る。このサンプルストリーム(302)は、符号化ビデオビットストリームと比較したときに、大きなデータボリュームを強調するように太い線として示されており、カメラ(301)に結合されたエンコーダ(303)によって処理され得る。エンコーダ(303)は、以下により詳細に説明されるように、開示される技術的事項の態様を可能にし、または、実装するために、ハードウェア、ソフトウェア、または、それらの組み合わせを含むことができる。符号化ビデオビットストリーム(304)は、サンプルストリームと比較したときに、より小さいデータボリュームを強調するように細い線として示されており、将来の使用のためにストリーミングサーバ(305)において保管され得る。1つ以上のストリーミングクライアント(306、308)は、符号化ビデオビットストリーム(304)のコピー(307、309)を取り出す(retrieve)ために、ストリーミングサーバ(305)にアクセスすることができる。クライアント(306)は、符号化ビデオビットストリーム(307)の入力コピーをデコードし、そして、ディスプレイ(312)または他のレンダリング装置(図示なし)上でレンダリング可能な出力ビデオサンプルストリーム(311)を生成する、ビデオデコーダ(310)を含み得る。いくつかのストリーミングシステムにおいて、ビデオビットストリーム(304、307、309)は、所定のビデオ符号化/圧縮標準に従って、符号化され得る。これらの標準の例は、ITU-T Recommendation H.265を含んでいる。開発中のビデオ符号化標準は、汎用ビデオ符号化(Versatile Video Coding)、またはVVCとして非公式に知られている。開示される技術的事項は、VVCのコンテキストにおいて使用され得る。
図4は、本開示の一つの実施形態に従った、ビデオデコーダ(310)の機能ブロックダイヤグラムであり得る。
受信器(410)は、デコーダ(310)によって復号されるべき1つ以上のコーデックビデオシーケンスを受信することができる。同一または別の実施形態においては、一度に1つの符号化ビデオシーケンスであり、各符号化ビデオシーケンスの復号は、他の符号化ビデオシーケンスから独立している。符号化ビデオシーケンスは、符号化ビデオデータを保管するストレージ装置に対するハードウェア/ソフトウェアリンクであり得る、チャネル(412)から受信することができる。受信器(410)は、符号化ビデオデータを、他のデータ、例えば、符号化オーディオデータ及び/又は補助的なデータストリーム、と共に受信することができ、データは、それぞれのエンティティ(図示なし)を使用して転送され得る。受信器(410)は、符号化ビデオシーケンスを他のデータから分離することができる。ネットワークジッタを除去しようと努めるために、バッファメモリ(415)が、受信器(410)とエントロピーデコーダ/パーサ(420)(以降、「パーサ(“parser”)」)との間に結合され得る。受信器(410)が、十分な帯域幅および制御可能性を有する保管/転送装置から、または、アイソシンクロナス(isosynchronous)ネットワークからデータを受信している場合に、バッファ(415)は、必要とされないか、または、小さくてよい。インターネットといったベストエフォートパケットネットワークでの使用のために、バッファ(415)は、必要とされ、比較的大きく、そして、有利に適応サイズであり得る。
ビデオデコーダ(310)は、エントロピー符号化ビデオシーケンスからシンボル(421)を再構成するためのパーサ(420)を含み得る。これらのシンボルのカテゴリは、デコーダ(310)のオペレーションを管理するために使用される情報、および、図3に示されるように、デコーダの不可欠な部分ではないが、デコーダに接続され得るディスプレイ(312)といったレンダリング装置を制御する潜在的な情報を含む。レンダリング装置に対する制御情報は、補足拡張情報(SEI messages)またはビデオユーザビリティ情報(Video Usability Information、VUI)パラメータセットフラグメント(図示なし)の形式であり得る。パーサ(420)は、受信した符号化ビデオシーケンスを解析/エントロピー復号(entropy-decode)し得る。符号化ビデオシーケンスの符号化は、ビデオ符号化技術または標準に従うことができ、そして、可変長符号化、ハフマン(Huffman)符号化、コンテキスト感度を伴う又は伴わない算術符号化、等を含む、当業者にとってよく知られた原理に従うことができる。パーサ(420)は、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内のピクセルのサブグループのうち少なくとも1つに対するサブグループパラメータのセットを、符号化ビデオシーケンスから抽出し得る。サブグループは、画像グループ(Groups of Pictures、GOP)、画像、タイル、スライス、マクロブロック、符号化ユニット(Coding Unit、CU)、ブロック、変換ユニット(Transform Unit、TU)、予測ユニット(Prediction Unit、PU)、等を含み得る。エントロピーデコーダ/パーサは、また、変換係数、量子化パラメータ値、動きベクトル(motion vector)、等といった符号化ビデオシーケンス情報から抽出することができる。
パーサ(420)は、シンボル(421)を生成するために、バッファ(415)から受信したビデオシーケンスについてエントロピー復号/解析オペレーションを実行することができる。
シンボル(421)の再構成は、符号化ビデオ画像またはその部分のタイプ(画像間および画像内、ブロック間およびブロック内、といったもの)および他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットが、どのように関与するかは、パーサ(420)によって符号化ビデオシーケンスからシンタックス解析されたサブグループ制御情報によって制御され得る。パーサ(420)と以下の複数ユニットとの間におけるそうしたサブグループ制御情報のフローは、明確化のために図示されていない。
上述の機能ブロックの他に、デコーダ310は、概念的には、以下に説明されるように、いくつかの機能ユニットへと細分(subdivided)され得る。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは、相互に密接に相互作用し、かつ、少なくとも部分的に相互に統合され得る。しかしながら、開示される技術的事項を説明する目的のために、以下の機能ユニットへと概念的に細分化することが適切である。
第1ユニットは、スケーラ/逆変換ユニット(451)である。スケーラ/逆変換ユニット(451)は、パーサ(420)から、シンボル(421)として、量子化された変換係数、並びに、使用する変換、ブロックサイズ、量子化係数、量子化スケーリング行列(scaling matrices)、等を含む、制御情報を受信する。そのユニットは、アグリゲータ(aggregator)(455)へと入力可能な、サンプル値を含むブロックを出力することがでる。
場合によって、スケーラ/逆変換(451)の出力サンプルは、イントラ(intra)符号化ブロックに属することができる。すなわち、以前に再構成された画像からの予測情報を使用していないが、現在の画像の以前に再構成された部分からの予測情報を使用することができるブロックである。そうした予測情報は、イントラ画像予測ユニット(452)によって提供され得る。場合によって、イントラ画像予測ユニット(452)は、現在の(部分的に再構成された)画像(456)からフェッチ(fetched)された、周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。アグリゲータ(455)は、場合によって、サンプル毎に、イントラ予測ユニット(452)が生成した予測情報を、スケーラ/逆変換ユニット(451)によって提供される出力サンプル情報に追加する。
他の場合に、スケーラ/逆変換ユニット(451)の出力サンプルは、インター(inter)符号化され、かつ、潜在的に動き補償(motion compensated)されたブロックに属することができる。そうした場合、動き補償予測ユニット(453)は、予測のために使用されるサンプルをフェッチするために参照画像(reference picture)メモリ(457)にアクセスすることができる。ブロックに属しているシンボル(421)に従ってフェッチされたサンプルを動き補償した後で、これらのサンプルは、アグリゲータ(455)によって、スケーラ/逆変換ユニットの出力に加えられて(この場合には、残留サンプルまたは残留信号と呼ばれる)、出力サンプル情報を生成することができる。動き補償ユニットが予測サンプルをフェッチする参照画像メモリ形態の中のアドレスは、例えば、X、Y、および参照画像コンポーネントを有し得るシンボル(421)の形態で、動き補償ユニットに利用可能な、動きベクトルによって制御され得る。動き補償は、また、サブサンプルの正確な動きベクトルが使用されているときに参照画像メモリからフェッチされるサンプル値の補間、動きベクトル予測メカニズム、等も含み得る。
アグリゲータ(455)の出力サンプルは、ループフィルタユニット(456)内の種々のループフィルタリング技術の対象となり得る。ビデオ圧縮技術は、ループ内(in-loop)フィルタ技術を含み得る。ループ内フィルタ技術は、符号化ビデオビットストリーム内に含まれるパラメータによって制御され、かつ、パーサ(420)からのシンボル(421)としてループフィルタユニット(456)に利用可能にされるが、また、符号化画像または符号化ビデオシーケンスの(復号順で)以前の部分の復号の最中に獲得されたメタ情報にも応答することができ、並びに、以前に再構成され、かつ、ループフィルタされたサンプル値にも応答することができる。
ループフィルタユニット(456)の出力は、レンダリング装置(312)に出力され、並びに、将来の画像間予測に使用するために参照画像メモリ内に保管され得るサンプルストリームであり得る。
所定の符号化画像は、一旦、完全に再構成されると、将来予測のための参照画像として使用され得る。一旦、符号化画像が完全に再構成され、かつ、(例えば、パーサ(420)によって)符号化画像が参照画像として識別されると、現在の参照画像(456)は、参照画像バッファ(457)の一部となり、そして、新たな(fresh)現在の画像メモリが、次の符号化画像の再構成を開始する前に再割当てされ得る。
ビデオデコーダ420は、ITU-T Rec. H.265といった、標準において文書化され得る既定のビデオ圧縮技術に従って、復号オペレーションを実行することができる。符号化ビデオシーケンスは、ビデオ圧縮技術文書または標準において、そして、特には、その中のプロファイル文書において規定されるように、ビデオ圧縮技術または標準のシンタックスに従うという意味で、使用されているビデオ圧縮技術または標準によって規定されるシンタックスに準拠し得る。また、コンプライアンスのために必要なことは、符号化ビデオシーケンスの複雑性が、ビデオ圧縮技術または標準のレベルによって定義される範囲内にあることである。場合によって、レベルは、最大画像サイズ、最大フレームレート、最大再構成サンプルレート(例えば、メガサンプル毎秒で測定される)、最大参照画像サイズ、等を制限する。レベルによって設定された制限は、場合によっては仮想基準デコーダ(Hypothetical Reference Decoder、HRD)仕様、および、符号化ビデオシーケンスで信号化されたHRDバッファのメタデータを通して、さらに制限され得る。
一つの実施形態において、受信器(410)は、符号化ビデオと共に追加の(冗長な)データを受信し得る。追加データは、符号化ビデオシーケンスの一部として含まれ得る。追加データは、データを適切に復号するため、かつ/あるいは、オリジナルのビデオデータをより正確に再構成するために、ビデオデコーダ(420)によって使用され得る。追加データは、例えば、時間的、空間的、またはSNR強化層、冗長スライス、冗長画像、前方誤り訂正(forward error correction)コード、等の形態であり得る。
図5は、本開示の一つの実施形態に従った、ビデオエンコーダ(303)の機能ブロック図であり得る。
エンコーダ(303)は、エンコーダ(303)によって符号化されるビデオ画像をキャプチャすることができるビデオソース(301)(エンコーダの一部ではない)からビデオサンプルを受信することができる。
ビデオソース(301)は、デジタルビデオサンプルストリームの形態で、エンコーダ(303)によって符号化されるソースビデオシーケンスを提供することができ、形態は、任意の適切なビット深さ(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 Y CrCB、RGB、...)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得る。メディア配信(media serving)システムにおいて、ビデオソース(301)は、以前に準備されたビデオを保管しているストレージ装置であり得る。ビデオ会議システムにおいて、ビデオソース(303)は、ビデオシーケンスとしてローカル画像情報をキャプチャするカメラであり得る。ビデオデータは、シーケンスで見たときに、動きを伝える複数の個々の画像として提供されてよい。画像自体は、ピクセルの空間的アレイとして構成されてよく、ここで、各ピクセルは、使用中のサンプリング構造、色空間、等に応じて、1つ以上のサンプルを含むことができる。当業者であれば、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てている。
一つの実施形態に従って、エンコーダ(303)は、リアルタイムで、または、アプリケーションによって要求される任意の他の時間の制約下で、ソースビデオシーケンスの画像を符号化ビデオシーケンス(543)へと符号化および圧縮することができる。適切な符号化速度を実施することは、コントローラ(550)の一つの機能である。コントローラは、以下に説明されるように、他の機能ユニットを制御し、そして、これらのユニットに機能的に結合されている。結合は、明確化のために示されていない。コントローラによって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、...)、ピクチャサイズ、グループピクチャ(GOP)レイアウト、最大動きベクトル検索範囲、等を含み得る。当業者であれば、コントローラ(550)の他の機能を容易に識別することができる。それらは、所定のシステム設計のために最適化されたビデオエンコーダ(303)に関連し得るからである。
いくつかのビデオエンコーダは、「符号化ループ(“coding loop”)」として当業者が容易に認識できるものにおいて動作する。過度に単純化された説明として、符号化ループは、エンコーダ(530)の符号化部分(以下、「ソースコーダ(“source coder”)」)(符号化されるべき入力ピクチャ、および参照画像に基づいてシンボルを生成する責任を負う)、および、サンプルデータを生成するためにシンボルを再構成するエンコーダ(303)内に埋め込まれた(ローカル)デコーダ(533)で構成され、(リモート)デコーダも、また、(開示される技術的事項において考慮されたビデオ圧縮技術において、シンボルと符号化ビデオビットストリームとの間の任意の圧縮が可逆(lossless)なように)生成するだろう。再構成されたサンプルストリームは、参照画像メモリ(534)に対する入力である。シンボルストリームの復号は、デコーダ位置(ローカルまたはリモート)に依存しないビットパーフェクト(bit-exact)な結果をもたらすので、参照画像バッファのコンテンツも、また、ローカルエンコーダとリモートエンコーダの間でビットパーフェクトである。別の言葉で言えば、エンコーダの予測部分は、デコーダが、復号の最中に予測を使用するときに「見る(”see”)」のと全く同一のサンプル値を参照画像サンプルとして「見る」。参照画像同期性に係るこの基本原理(および、例えば、チャンネルエラーのために、同期性を維持することができない場合に結果として生じるドリフト)は、当業者にとって周知である。
「ローカル(“local”)」デコーダ(533)のオペレーションは、「リモート(“remote”)」デコーダ(310)と同じであり得る。これは、図4と関連して既に上記に詳述されている。しかしながら、図4を、また、簡単に参照すると、シンボルが利用可能であり、かつ、エントロピー符号化器(545)およびパーサ(420)による符号化ビデオシーケンスに対するシンボルの符号化/復号が可逆であり得るので、チャネル(412)、受信器(410)、バッファ(415)、およびパーサ(420)を含む、デコーダ(310)のエントロピー復号部分は、ローカルデコーダ(533)内に完全には実装されないことがある。
この時点で行うことができる観察は、デコーダ内に存在する解析/エントロピー復号を除く任意のデコーダ技術も、また、対応するエンコーダ内に、実質的に同一な機能的形態で存在する必要があることである。この理由のために、開示される技術的事項はデコーダのオペレーションに焦点を当てる。エンコーダ技術の説明は、包括的に記述されたデコーダ技術の逆であるため、省略することができる。所定の分野においてだけ、より詳細な説明が必要であり、そして、以下に提供されている。
そのオペレーションの一部として、ソースコーダ(530)は、動き補償予測符号化(motion compensated predictive coding)を実行することができ、それは、「参照フレーム(“reference frame”)」として指定されたビデオシーケンスからの1つ以上の以前に符号化されたフレーム(previously coded-frames)に関して入力フレームを予測的に符号化するものである。このようにして、符号化エンジン(532)は、入力フレームのピクセルブロックと、入力フレームに対する予測リファレンス(prediction reference)として選択され得る参照フレームのピクセルブロックとの間の差異を符号化する。
ローカルビデオデコーダ(533)は、ソースコーダ(530)によって生成されたシンボルに基づいて、参照フレームとして指定され得るフレームの符号化ビデオデータを復号することができる。符号化エンジン(532)のオペレーションは、有利なことに、不可逆プロセスであり得る。符号化ビデオデータがビデオデコーダ(図5に図示なし)で復号され得る場合、再構成されたビデオシーケンスは、典型的には、いくつかのエラーを伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(533)は、ビデオデコーダによって参照フレーム上で実行され、かつ、再構成された参照フレームを参照画像キャッシュ(534)に保管させ得る、復号プロセスを複製する。このようにして、エンコーダ(303)は、遠端(far-end)ビデオデコーダによって獲得される再構成された参照フレームとして共通のコンテンツを有する再構成された参照フレームのコピーを、ローカルに保管することができる(伝送エラーなく)。
予測器(535)は、符号化エンジン(532)のために予測サーチを実行することができる。すなわち、符号化されるべき新しいフレームについて、予測器(535)は、新しいピクチャに対する適切な予測リファレンスとして役立ち得る、(候補参照ピクセルブロックとしての)サンプルデータ、または、参照画像動画ベクトル、ブロック形状、等といった、所定のメタデータについて、参照画像メモリ(534)を検索することができる。予測器(535)は、適切な予測リファレンスを見出すために、サンプルブロック-ピクセルブロック毎に動作し得る。場合によっては、予測器(535)によって獲得される検索結果によって決定されるように、入力ピクチャは、参照画像メモリ(534)に保管された複数の参照画像から引き出された予測リファレンスを有することができる。
コントローラ(550)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ビデオコーダ(530)の符号化オペレーションを管理することができる。
全ての前述した機能ユニットの出力は、エントロピー符号化器(545)においてエントロピー符号化を受け得る。エントロピー符号化器は、例えば、ハフマン符号化、可変長符号化、算術符号化、等として、当業者に知られた技術に従って、シンボルを可逆に圧縮することによって、種々の機能ユニットにより生成されたシンボルを符号化ビデオシーケンスへと変換する。
送信器(540)は、エントロピー符号化器(545)によって生成されると、符号化ビデオシーケンスをバッファし、通信チャネル(560)を介した送信のために準備することができる。通信チャネルは、符号化ビデオデータを保管するストレージ装置に対するハードウェア/ソフトウェアリンクであってよい。送信器(540)は、ビデオコーダ(530)からの符号化ビデオデータを、送信される他のデータ、例えば、符号化オーディオデータ及び/又は補助的なデータストリーム(ソースは示されない)とマージすることができる。
コントローラ(550)は、エンコーダ(303)のオペレーションを管理することができる。符号化の最中に、コントローラ(550)は、各符号化画像に対して、所定の符号化画像タイプを割り当てることができ、これは、それぞれの画像に適用され得る符号化技術に影響を及ぼし得る。例えば、ピクチャは、しばしば、次のフレームタイプの1つとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内のあらゆる他のフレームを使用しないで、符号化され、かつ、復号され得るものであり得る。いくつかのビデオコーデック(codec)は、例えば、独立デコーダ・リフレッシュ・ピクチャ(Independent Decoder Refresh Pictures)を含む、異なるタイプのイントラピクチャを許容する。当業者であれば、Iピクチャのこれらの変形例、並びに、それらのそれぞれのアプリケーションおよび機能を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用して、イントラ予測またはインター予測を用いて符号化および復号され得るものであり得る。
双方向予測ピクチャ(Bi-directionally Predictive Picture)(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用して、イントラ予測またはインター予測を用いて符号化および復号され得るものであり得る。同様に、複数の予測画像は、単一のブロックの再構成のために、2つ以上の参照画像および関連するメタデータを使用することができる。
ソース画像は、一般に、複数のサンプルブロック(例えば、4×4、8×8、4×8、または16×16のサンプルそれぞれのブロック)へと空間的に細分され、そして、ブロック毎に符号化される。ブロックは、ブロックそれぞれの画像に適用される符号化割り当てによって決定されるように、(既に符号化された)他のブロックを参照して予測的に符号化され得る。例えば、Iピクチャのブロックは、非予測的に符号化されてよく、または、それらは、同じ画像の既に符号化されたブロックを参照して予測的に符号化され得る(空間予測またはイントラ予測)。Pピクチャのピクセルブロックは、1つの以前に符号化された参照画像を参照して、非予測的に、空間的予測を介して、または、時間的予測を介して、符号化され得る。Bピクチャのブロックは、1つ又は2つの以前に符号化された参照画像を参照して、非予測的に、空間的予測を介して、または、時間的予測を介して符号化され得る。
ビデオコーダ(303)は、ITU-T Rec. H.265といった、既定のビデオ符号化技術または標準に従って、符号化オペレーションを実行することができる。そのオペレーションにおいて、ビデオコーダ(303)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測符号化オペレーションを含む、種々の圧縮オペレーションを実行することができる。符号化ビデオデータは、従って、使用されているビデオ符号化技術または標準によって指定されたシンタックスに適合し得る。
一つの実施形態において、送信器(540)は、符号化ビデオと共に追加データを送信することができる。ビデオコーダ(530)は、符号化ビデオシーケンスの一部として、そうしたデータを含み得る。追加データは、時間的/空間的/SNR強化層、冗長画ピクチャおよびスライスといった他の形式の冗長データ、補足拡張情報(SEI)メッセージ、ビデオユーザビリティ情報(VUI)パラメータセットフラグメント、等を含み得る。
図7は、種々のタイプのランダムアクセスメカニズム、および、それらの関連する画像タイプを示している。特には、クリーン・ランダムアクセス(Clean Random Access)画像(701)、ランダムアクセス・スキップリーディング(Random Access Skipped Leading)画像(702)、ランダムアクセス・復号可能リーディング(Random Access Decodable Leading)画像(703)が示されている。これらの種々のランダムアクセス画像タイプからの非ランダムアクセス画像に対する可能な予測関係も、また、示されている。一つの例として、RASLピクチャ(701)は、B15、B16、およびB17としてラベル付けされ、RADLピクチャ703は、B18およびB19としてラベル付けされ、そして、CRAピクチャ701は、I20およびB21としてラベル付けされ得る。この例において、指定(designation)Bは、以前に復号されたピクチャと関連する動き補償された差異情報を含む、Bピクチャを示し得る。そして、指定Iは、他の画像とは独立して符号化される、Iピクチャを示し得る。この指定に続く番号は、ピクチャの順序を示すことができる。
瞬時復号リフレッシュ(Instantaneous Decoding Refresh、IDR)画像(図示なし)がランダムアクセスのために使用され得る。復号順序においてIDRに続くピクチャは、IDR画像の以前に復号されたピクチャを参照しないことがある。この制限は、より低い符号化効率を結果として生じ得る。
クリーン・ランダムアクセス(CRA)ピクチャ(701)は、復号順序においてはCRAピクチャに続くが、出力順序においてはリーディングピクチャを許容することによって、CRAピクチャの前に復号された参照画像をランダムアクセスするために使用され得る。CRAは、インター予測のためにオープンGOP構造を利用し得るので、IDRよりも良好な符号化効率を提供し得る。破損リンクアクセス(Broken Link Access、BLA)ピクチャ(図示なし)は、破損リンクを有するCRAピクチャであり得る。これは、復号の順序において後に続くいくつかのピクチャが、ビットストリームの生成において実行された詳細不明のオペレーションのせいで、重大な視覚的アーチファクトを含む可能性があることが示される、ビットストリーム内の位置である。
ランダムアクセス・スキップリーディング(RASL)ピクチャ(702)は、このCRAピクチャからのランダムアクセスが発生したときには、いくつかの関連する参照画像がビットストリーム内に存在しないことがあるため、正しく復号されないことがあり得る。ランダムアクセス・復号可能リーディングピクチャ(RADL)(703)は、このCRAピクチャからランダムアクセスが発生したときには、CRAピクチャの以前の参照画像をRADLピクチャが参照として使用しなくてよいため、正しく復号され得る。
上述のように、所定のビデオ符号化技術または標準は、少なくとも5つの異なるタイプのランダムアクセスメカニズムおよび関連する画像タイプを含む。H.265といった所定の関連技術に従って、これらの画像タイプそれぞれは、以下に説明される、NALユニットタイプフィールドにおけるナンバリングスペース(numbering space)を必要とし得る。このフィールドにおけるナンバリングスペースは、符号化効率の点で貴重であり、かつ、高価である。従って、符号化効率の観点からは、ナンバリングスペースの使用の削減が望ましい。
図6を参照すると、一つの実施形態における、NALユニットヘッダ(601)の例が示されている。NALユニットタイプ(602)の予め定義された値は、NALユニット内に含まれる現在のピクチャが、ランダムアクセスポイントピクチャまたはリーディングピクチャとして識別されることを示し得る。NALユニットタイプ値は、例えば、所定の長さ、ここでは5ビット(603)、の符号なし整数(unsigned integer)として符号化され得る。これらの5ビットの単一の組み合わせは、ビデオ圧縮技術または標準においてIRAP_NUT(IRAP Nal Unit Type)として表示され得る。NALユニットタイプフィールドで必要なナンバリングスペースは、これにより、例えば、(H.265のように)5つのエントリーから、例えば、2つのエントリーへ削減され得る。一方はIDR、他方はIRAP_NUTである。
図8を参照すると、一つの実施形態において、シーケンスパラメータセットといった適切なハイレベルシンタックス構造におけるフラグ RA派生フラグ(RA-derivation-flag)は、後述するように、イントラ・ランダムアクセスポイント(IRAP)タイプ(IDR、CRA、またはBLA)もしくはリーディングピクチャタイプ(RASLまたはRADL)が、NALユニットヘッダ、タイルグループヘッダ、またはスライスヘッダにおける明示的な信号(signaling)によって示されるか、もしくは、符号化ビデオシーケンス開始指示またはピクチャ順序カウントを含む他の情報から暗黙的に導出されるか、を示すことができる。一つの例として、フラグ(802)は、デコーディングパラメータセット(801)またはシーケンスパラメータセットに含まれ得る。ra_derivation-flagが暗黙的な導出を示す場合に、NUT値は他の目的のために再利用され得る。
一つの実施形態において、パラメータセットといった適切なハイレベルシンタックス構造におけるフラグ leading_pic_type_derivation_flag(803)は、リーディングピクチャタイプ(RASLまたはRADL)が、スライスヘッダまたはタイルグループヘッダといった、画像またはその一部と関連する適切なハイレベルシンタックス構造に存在し得るフラグによって明示的に識別されるか、もしくは、関連するIRAPタイプ、ピクチャ順序カウント(Picture Order Count、POC)値、または参照画像セット(RPS)情報によって暗黙的に識別されるか、を示すことができる。
以下に説明されるのは、上記フラグ信号の一方、または、場合によっては、両方が有効にするとき、または、上記フラグが存在せず、フラグの値が暗黙的に所定の値に等しいと推定されるときに使用され得る、所定の導出/包含(implication)メカニズムである。
一つの実施形態において、IRAP NALユニットの前に復号されたNALユニットが符号化ビデオシーケンスの終端を(例えば、EOS NALユニットによって)識別する場合に、(IRAP_NUTに等しいNUTを有するNALユニットによって示される)IRAPピクチャは、IDRピクチャまたはBLAピクチャとして処理され得る。IRAP NALユニットの前に復号されたNALユニットが符号化ビデオシーケンスの終端と等価(equivalent)でない場合に、IRAPピクチャは、CRAピクチャとして処理され得る。このことは、CRAとIDR/BLAとの間を異ならせるためにコードポイントを無駄にする必要がないことを意味する。CVSの終端から、異なることが暗示され得るからである。
一つの実施形態において、NALユニットタイプの値(例えば、IRAP_NUT)は、NALユニット内に含まれる現在のピクチャがリーディングピクチャとして識別されることを示し得る。リーディングピクチャは、ランダムアクセスピクチャの後に復号されてよいが、ランダムアクセスピクチャの前に表示されてよい。(必ずしも新規であるとは限らない)
一つの実施形態において、リーディングピクチャタイプ(RASLまたはRADL)は、関連するIRAPタイプを解釈(interpreting)することによって暗黙的に識別され得る。例えば、関連するIRAPタイプがCRAまたはBLAである場合に、リーディングピクチャはRASL画像として処理されてよいが、関連するIRAPタイプがIDRである場合に、リーディングピクチャは、RADLとして処理され得る。このことは、デコーダが状態を維持すること、そして、特には、どのIRAPピクチャが以前に復号されたか、を必要とし得る。
一つの実施形態において、リーディングピクチャタイプ(RASLまたはRADL)は、NALユニットヘッダ、スライスヘッダ、タイルグループヘッダ、パラメータセット、または、あらゆる他の適切なハイレベルシンタックス構造において存在し得る、追加フラグによって示され得る。リーディングピクチャ及びそのタイプの識別は、次の場合に必要または有用であることが確認されている。(a)ビットストリームがCRAピクチャで始まる。(b)CRAピクチャがランダムアクセスされる。すなわち、復号がCRAピクチャから開始する。(c)CRAピクチャで始まるピクチャのシーケンスが、符号化画像の別のシーケンスの後でスプライス(spliced)され、そして、これらの2つのシーケンスの間にEOS NALユニットが挿入される。(d)ファイルライタは、入力としてCRAピクチャを含むビットストリームを取得し、そして、同期サンプル表示(sync sample indications)、SAPサンプルのグループ化、及び/又は、is_leading表示を用いてISOBMFFファイルを作成する。
一つの実施形態においては、リーディングピクチャタイプを示すために、NUTのナンバリングスペース内にリーディングピクチャタイプが割り当てられていない。代わりに、リーディングピクチャタイプは、関連するIRAPピクチャと次の画像との間のPOC値から、復号順に導出され得る。具体的には、IRAPピクチャの後に復号され、かつ、IRAPピクチャのPOC値よりも小さいPOC値を有する、非IRAPピクチャは、リーディングピクチャとして識別され得る。IRAPピクチャの後に復号され、かつ、IRAPピクチャのPOC値よりも大きいPOC値を有する、非IRAPピクチャは、後続ピクチャ(trailing picture)として識別され得る。
一つの実施形態において、IRAP NALユニットの前に復号されたNALユニットが、符号化ビデオシーケンスの終端と等価である場合に、デコーダ内部状態 CvsStartFlagは、1に等しく設定され得る。CvsStartFlagが1に等しい場合に、IRAPピクチャは、IDRまたはBLAピクチャとして処理されてよく、そして、IRAPピクチャと関連する全てのリーディングピクチャは、RADLピクチャとして処理され得る。CvsStartFlagが1に等しいとき、IRAP NALユニットのNALユニットタイプがCRAと等しい場合に、HandleCraAsCvsStartFlagは、1に等しく設定され得る。
一つの実施形態において、変数HandleCraAsCvsStartFlagを現在のピクチャの値に設定するようにビットストリームを復号することなくデコーダ状態を変更するために、所定の外部手段が利用可能である場合に、変数 HandleCraAsCvsStartFlagは、外部手段によって提供される値に等しく設定されてよく、そして、変数 NoIncorrectPicOutputFlag(NoRaslOutputFlagとして参照され得るもの)は、HandleCraAsCvsStartFlagに等しく設定されてよい。
一つの実施形態において、変数 HandleCraAsCvsStartFlagが1に等しい場合に、CRAピクチャと関連する全てのリーディングピクチャは、復号することなく破棄され得る。
一つの実施形態において、変数 NoIncorrectPicOutputFlagが1に等しい場合に、CRAピクチャと関連する全てのRASLピクチャは、復号することなく破棄され得る。
図9は、ビデオ復号のために現在のネットワーク抽象化層(NAL)ユニットを再構成するための例示的プロセス900のフローチャートである。いくつかの実装において、図9の1つ以上のプロセスブロックは、デコーダ310によって実行され得る。いくつかの実装において、図9の1つ以上のプロセスブロックは、エンコーダ303といった、デコーダ310から離れた、または、デコーダ310を含む、別のデバイスまたはデバイスのグループによって実行され得る。
図9に示されるように、プロセス900は、現在のNALユニットが、イントラ・ランダムアクセス・ピクチャ(IRAP)NALユニット(ブロックE10まで)であると決定することを含み得る。
図9にさらに示されるように、プロセス900は、現在のNALユニットの直前に復号された以前のNALユニットが、符号化ビデオシーケンス(CVS)の終端を示すか否かを決定することを含み得る(ブロック920)。
図9にさらに示されるように、プロセス900は、以前のNALユニットがCVSの終端を示していると決定することに基づいて、現在のNALユニットを、瞬時復号リフレッシュ(IDR)NALユニットまたは破損リンクアクセス(BLA)NALユニットの中からの1つとして復号すること、および、復号された現在のNALユニットを再構築することを含み得る(ブロック930)。
図9にさらに示されるように、プロセス900は、以前のNALユニットがCVSの終端を示していないと決定することに基づいて、現在のNALユニットを、クリーン・ランダムアクセス(CRA)NALユニットとして復号すること、および、復号された現在のNALユニットを再構築することを含み得る(ブロック940)。
一つの実施形態において、プロセス900は、さらに、現在のNALユニットのヘッダに基づいて、現在のNALユニットをIDR NALユニットまたはBLA NALユニットとして、復号するか否かを決定することを含み得る。
一つの実施形態において、現在のNALユニットのNALユニットタイプは、IRAP NALユニットタイプであり得る。
一つの実施形態において、以前のNALユニットのNALユニットタイプは、CVS エンドオブストリーム(End of Stream、EOS)NALユニットタイプであり得る。
一つの実施形態において、プロセス900は、さらに、以前のNALユニットがCVSの終端を示していると決定することに基づいて、第1フラグを設定することを含み得る。
一つの実施形態において、プロセス900は、さらに、設定されている第1フラグに基づいて、現在のNALユニットと関連するリーディングピクチャを、ランダムアクセス・復号可能リーディング(RADL)ピクチャとして処理することを含み得る。
一つの実施形態において、プロセス900は、さらに、第1フラグがセットされている間に、現在のNALユニットのNALユニットタイプがCRA NALユニットタイプであることに基づいて、第2フラグを設定することを含み得る。
一つの実施形態において、プロセス900は、さらに、外部信号に基づいて第2フラグを設定すること、および、第2フラグに対応する第3フラグを設定することを含み得る。
一つの実施形態において、プロセス900は、さらに、設定されている第3フラグに基づいて、RASL画像を復号することなく、現在のNALユニットと関連するランダムアクセス・スキップリーディング(RASL)ピクチャを破棄することを含み得る。
一つの実施形態において、プロセス900は、さらに、設定されている第2フラグに基づいて、リーディングピクチャを復号することなく、現在のNALユニットと関連するリーディングピクチャを廃棄することを含み得る。
図9は、プロセス900の例示的なブロックを示しているが、いくつかの実装において、プロセス900は、図9に示されているものよりも、追加のブロック、より少ないブロック、異なるブロック、または、異なる配置のブロックを含み得る。追加的または代替的に、プロセス900のブロックのうち2つ以上は、並行して実施されてよい。
さらに、提案される方法は、処理回路(例えば、1つ以上のプロセッサまたは1つ以上の集積回路)によって実施され得る。一つの例において、1つ以上のプロセッサは、提案された方法の1つ以上を実行するために、非一時的なコンピュータで読取り可能な媒体に保管されたプログラムを実行する。
上述のネットワーク抽象化ユニットヘッダにおける画像参照のための技術は、コンピュータで読取り可能な命令を使用してコンピュータソフトウェアとして実装され、そして、1つ以上のコンピュータで読取り可能な媒体に物理的に保管され得る。例えば、図10は、開示される技術的事項のうち所定の実施形態を実施するために適したコンピュータシステム1000を示している。
コンピュータソフトウェアは、命令を含むコードを作成するために、アセンブリ、コンパイル、リンク、または同様のメカニズムの対象となり得る、任意の適切な機械コードまたはコンピュータ言語を使用して符号化され得る。命令は、コンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)、等によって、直接的に、または、解釈(interpretation)、マイクロコード実行、等を通して実行され得る。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム装置、モノのインターネット、等を含む、種々のタイプのコンピュータ又はそのコンポーネント上で実行され得る。
コンピュータシステム1000について図10において示されるコンポーネントは、本質的に例示的なものであり、そして、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能性の範囲に関していなかる制限も示唆するようには意図されていない。また、コンポーネントの構成は、コンピュータシステム1000の例示的な実施形態において示されるコンポーネントのうち任意の1つ又は組み合わせに関するいかなる従属性または要件も有するものとして解釈されるべきではない。
コンピュータシステム1000は、所定のヒューマンインターフェイス入力装置を含み得る。そうしたヒューマンインターフェイス入力装置は、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、オーディオ入力(例えば、音声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示なし)を通じて、一人以上の人間ユーザによる入力に対して応答し得る。ヒューマンインターフェイス装置は、また、オーディオ(例えば、音声、音楽、雰囲気の音)、画像(例えば、スキャン画像、静止画像カメラから獲得する写真画像)、ビデオ(例えば、2次元ビデオ、立体画像を含む3次元ビデオ)といった、人間による意識的な入力に必ずしも直接的に関係しない所定の媒体をキャプチャするためにも使用され得る。
入力ヒューマンインターフェイス装置は、キーボード1001、マウス1002、トラックパッド1003、タッチスクリーン1010、データグローブ1204、ジョイスティック1005、マイクロホン1006、スキャナ1007、カメラ1008のうちの1つ以上(それぞれ1つだけが描かれている)を含み得る。
コンピュータシステム1000は、また、所定のヒューマンインターフェイス出力装置を含み得る。そうしたヒューマンインターフェイス出力装置は、例えば、触覚出力、音、光、および、嗅覚/味覚を通して、一人以上の人間ユーザの感覚を刺激することができる。そうしたヒューマンインターフェイス出力装置は、触覚出力装置(例えば、タッチスクリーン1010、データグローブ1204、または、ジョイスティック1005による触覚フィードバック、しかし、入力装置として機能しない触覚フィードバック装置も、また、存在し得る)、オーディオ出力装置(例えば、スピーカー1009、ヘッドフォン(図示なし))、視覚出力装置(ブラウン管(CRT)スクリーン、液晶ディスプレイ(LCD)スクリーン、プラズマスクリーン、有機発光ダイオード(OLED)スクリーンを含むスクリーン1010であり、各々がタッチスクリーン入力機能を有するか又は有さない、各々が触覚フィードバック機能を有するか又は有さず、-これらのいくつかは、立体画像出力といった手段を介して、2次元の視覚出力または3次元以上の出力をアウトプットすることができ、仮想現実メガネ(図示なし)、ホログラフィックディスプレイおよびスモークタンク(図示なし)、といったもの)、および、プリンタ(図示なし)を含み得る。
コンピュータシステム1000は、また、人間がアクセス可能なストレージ装置、および、それらの関連媒体を含み得る。CD/DVD等の媒体1021を用いるCD/DVD ROM/RW 1020を含む光媒体、サムドライブ(thumb drive)1022、リムーバブルハードドライブまたはソリッドステートドライブ1023、テープおよびフロッピー(登録商標)ディスクといったレガシー磁気媒体、セキュリティドングル(図示なし)といった特殊化されたROM/ASIC/PLDベースの装置、等といったものである。
当業者であれば、また、ここで開示されている技術的事項に関連して使用される用語「コンピュータで読取り可能な媒体(“computer readable media”)」は、伝送媒体、搬送波、または、他の一時的な信号を包含しないことも理解すべきである。
コンピュータシステム1000は、また、1つ以上の通信ネットワークに対するインターフェイスを含み得る。ネットワークは、例えば、無線、有線、光であり得る。ネットワークは、さらに、ローカル、ワイドエリア、メトロポリタン、車両および工業、リアルタイム、遅延耐性(delay-tolerant)、等であり得る。ネットワークの例は、イーサネット、無線LAN、移動通信のためのグローバルシステム(GSM)、第3世代(3G)、第4世代(4G)、第5世代(5G)、ロングターム・エボリューション(LTE)、等を含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および、地上波放送テレビを含む、有線または無線のワイドエリアデジタルネットワーク、CANBusを含む車両および工業、等を含み得る。所定のネットワークは、一般に、所定の汎用データポートまたはペリフェラルバス(1049)に取り付けられる外部ネットワーク・インターフェイスアダプタを必要とする。例えば、コンピュータシステム1000のユニバーサルシリアルバス(USB)ポート、といったものであり、他のものは、一般に、以下に説明されるシステムバスに取り付けることによって、コンピュータシステム1000のコアに組み込まれる(例えば、PCコンピュータシステムへのイーサネット・インターフェイス、または、スマートフォン・コンピュータシステムへのセルラーネットワーク・インターフェイス)。一つの例として、ネットワーク1055は、ネットワークインターフェイス1054を使用してペリフェラルバス1049に接続され得る。これらのネットワークのいずれかを使用して、コンピュータシステム1000は、他のエンティティと通信することができる。そうした通信は、一方向性(uni-directional)、受信専用(例えば、放送テレビ)、一方向性送信専用(例えば、所定のCANバス装置へのCANバス)、もしくは、例えば、ローカルまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムへの、双方向性(bi-directional)であり得る。所定のプロトコルおよびプロトコルスタックは、上述のように、それらのネットワークおよびネットワークインターフェイスの各々で使用され得る。
上述のヒューマンインターフェイス装置、人間がアクセス可能なストレージ装置、および、ネットワークインターフェイスは、コンピュータシステム1000のコア1040に取り付けられ得る。
コア1040は、1つ以上の中央処理装置(CPU)1041、グラフィックス処理装置(GPU)1042、フィールドプログラマブルゲートアレイ(FPGA)1043の形態で特殊化されたプログラマブル処理装置、所定のタスクのためのハードウェアアクセラレータ1044、等を含み得る。これらの装置は、リードオンリーメモリ(ROM)1045、ランダムアクセスメモリ(RAM)1046、内部非ユーザアクセス可能ハードドライブ、ソリッドステートドライブ(SSD)、等といった内部大容量ストレージ装置1047と共に、システムバス1248を通じて接続され得る。いくつかのコンピュータシステムにおいて、システムバス1248は、追加のCPU、GPU、等による拡張を可能にするために、1つ以上の物理的プラグの形態でアクセス可能であり得る。ペリフェラル装置は、コアのシステムバス1248に直接的に取り付けられても、または、ペリフェラルバス1049を通じて取り付けられてもよい。ペリフェラルバスのアーキテクチャは、ペリフェラルコンポーネントインターコネクト(PCI)、USB、等を含む。
CPU 1041、GPU 1042、FPGA 1043、およびアクセラレータ1044は、組み合わせて、上述のコンピュータコードを構成することができる所定の命令を実行することができる。そのコンピュータコードは、ROM 1045またはRAM 1046に保管することができる。過渡的データは、また、RAM 1046に保管することができ、一方で、永久的データは、例えば、内部大容量ストレージ装置1047に保管することができる。メモリデバイスのいずれかへの高速保管および検索が、1つ以上のCPU 1041、GPU 1042、大容量ストレージ装置1047、ROM 1045、RAM 1046、等と密接に関連付けされ得る、キャッシュメモリの使用を通じて、可能にされ得る。
コンピュータで読取り可能な媒体は、種々のコンピュータ実装オペレーションを実行するためのコンピュータコードをその上に有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築され得るか、または、それらは、コンピュータソフトウェア技術の当業者にとって周知かつ入手可能な種類のものであり得る。
一つの例として、そして、限定するものではなく、アーキテクチャ1000を有するコンピュータシステム、および、具体的にはコア1040は、1つ以上の有形なコンピュータで読取り可能な媒体において具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ、等を含む)の結果として機能性を提供することができる。そうしたコンピュータで読取り可能な媒体は、上述のようにユーザがアクセス可能な大容量ストレージ装置、並びに、コア内部大容量ストレージ装置1047またはROM 1045といった、非一時的な性質のコア1040に係る所定のストレージ装置であり得る。本開示の様々な実施形態を実装するソフトウェアは、そうした装置において保管され、そして、コア1040によって実行され得る。コンピュータで読取り可能な媒体は、特定的なニーズに応じて、1つ以上のメモリデバイスまたはチップを含み得る。ソフトウェアは、コア1040、および、具体的には、その中のプロセッサ(CPU、GPU、FPG、等を含む)に、ここにおいて説明された特定のプロセスまたは特定のプロセスに係る特定の部分を実行させ得る。RAM 1046に保管されたデータ構造を定義すること、および、ソフトウェアによって定義されたプロセスに従ってそうしたデータ構造を修正することを含むものである。追加して、または代替として、コンピュータシステムは、回路(例えば、アクセラレータ1044)において配線された、または、他の方法で具現化されたロジックの結果として機能性を提供することができる。回路は、ここにおいて説明される特定のプロセスまたは特定のプロセスの特定的な部分を実行するために、ソフトウェアの代わりに、または、一緒に動作することができる。ソフトウェアへの参照は、ロジックを含み、そして、適切な場合には、その逆もまた同様である。コンピュータで読取り可能な媒体への参照は、実行のためのソフトウェアを保管する回路(集積回路(IC)といったもの)、実行のためのロジックを具体化する回路、または、適切な場合には、その両方を含むことができる。本開示は、ハードウェアおよびソフトウェアの任意の適切な組み合わせを包含するものである。
本開示は、いくつかの例示的な実施形態を説明してきたが、変更、置換、および様々な代替等価物が存在し、それらは本開示の範囲内にある。このように、当業者であれば、ここにおいて明示的に示され、または、説明されていなくても、本開示の原理を具体化し、かつ、従って、本開示の精神および範囲内にある多くのシステムおよび方法を考案することができることが、正しく理解されるだろう。