本開示の実施形態は、特に、V-PCCユニット、V-PCCビデオデータユニットおよびV-PCC非ビデオデータユニットの定義、符号化された点群シーケンスのV-PCCユニットにおける、各属性、形状または占有率の符号化ビデオシーケンスのビデオ符号化層(VCL)ネットワーク抽象化層(NAL)ユニットおよび非VCL NALユニットのカプセル化および伝送方法、パラメータセットの順序およびアクティブ化プロセス、パラメータセット拡張メカニズム、およびその他の機能という、ビデオベースの点群圧縮(V-PCC)ハイレベルシンタックス(HLS)の改善を提案する。
本開示の一実施形態によれば、V-PCC CDテキストにおけるシーケンスパラメータセット(SPS)は、属性、形状および占有率の符号化されたビデオストリームのSPSと区別するために、V-PCCシーケンスパラメータセット(VSPS)と呼ばれ得る。
この開示は、V-PCC HLSのためのV-PCCユニットおよびパラメータセット設計を提案する。現在のV-PCC CD研究テキストでは、属性、形状および占有率の前記符号化されたビデオストリームのVCL-NALユニットおよび非VCL NALユニット(例えば、シーケンスパラメータセットおよびピクチャパラメータセット)をどのように実行するかと、V-PCCの前記パラメータ(例えば、V-PCCシーケンスパラメータセット、フレームパラメータセット、ジオメトリパラメータセットおよび占有率パラメータセット)をどのようにアクティブ化および/または参照するかは不明である。
本開示の一実施形態によれば、「V-PCCユニット」、「V-PCCビデオデータユニット(VDU)」および「V-PCC非ビデオデータユニット(NDU)」という用語は、以下のように使用され得る。「V-PCCユニット」は、V-PCCビデオデータユニット(VDU)またはV-PCC非ビデオデータユニット(NDU)を指し得る。「V-PCCユニット」は、従うべきデータのタイプとそのデータを含むバイトとの表示を含むシンタックス構造を指し得る。「V-PCC非ビデオデータユニット(NDU)」は、パラメータセットまたはメタデータを含むV-PCCユニットを指し得る。「V-PCCビデオデータユニット(VDU)」は、ビデオ符号化規格(例えば、AVCまたはHEVC)によって符号化された、符号化ビデオデータ(例えば、VCL NALユニット)を含むV-PCCユニットを指し得る。このように、VDUとNDUはそれぞれ、VCL NALユニットと非VCL NALユニットの同様の役割を含む。
本開示は、以下のVCL/非VCL NALユニットのカプセル化および伝送方法を提供する。
NDUは、V-PCCで指定されたパラメータセットとメタデータ、および他のビデオ符号化規格(例えば、AVCまたはHEVC)で指定された非VCLNALユニットを伝送する。VDUは、同じフレームに属する1つ以上のVCL NALユニットを含み得る。「vpcc_unit_type」が1に等しいNDUは、占有率、ジオメトリまたは属性用の1つ以上のSPSローバイトシーケンスペイロード(RBSP)を含み得る。「vpcc_unit_type」が3に等しいNDUは、占有率、ジオメトリまたは属性用の1つ以上のPPS RBSPを含み得る。
図1は、本開示の一実施形態による例示的なプロセスのフローチャートである。例えば、図1は、パラメータセットの構文解析およびアクティブ化のフローチャートである。
図1に示されるように、本開示のプロセスは、符号化された点群シーケンスに関連付けられたパラメータセットを構文解析すること(ブロック110)を含み得る。図1にさらに示されるように、プロセスは、従属パラメータセットを識別すること(ブロック12)を含み得る。図1にさらに示されるように、プロセスは、従属パラメータセットがパッチレベルのパラメータセットであるか否かを識別すること(ブロック130)を含み得る。従属パラメータセットがパッチレベルのパラメータセット(ブロック130-YES)場合、プロセスは、パッチレベルのパラメータセットをアクティブ化すること(ブロック140)を含み得る。従属パラメータセットがパッチレベルのパラメータセットでない場合、プロセスは、フレームレベルのパラメータセットをアクティブ化すること(ブロック150)を含み得る。
V-PCCユニットレベルでは、フレームパラメータセット(FPS)は、V-PCCユニットレベルでVSPS、SPS、PPS、およびその他のパラメータセットをアクティブ化するために使用するために再利用される。潜在的に、FPSは、フレームレベルの分割情報(例えば、タイル)を含み得る。フレームパラメータセット(FPS)は、V-PCCビデオデータユニット(VDU)によってアクティブ化され、1つ以上のVDUによって参照される。
V-PCCユニットレベルでは、V-PCCシーケンスパラメータセット(VSPS)は、FPSによってアクティブ化され、1つ以上のFPSによって参照される。アクティブ化されたVSPSは、符号化された点群シーケンス(CPCS)全体でアクティブなままである。
V-PCCユニットレベルでは、符号化ビデオシーケンス(CVS)のピクチャパラメータセット(PPS)は、FPSによってアクティブ化され、同じCVS内の1つ以上のFPSおよびVCLNALユニットによって参照される。
V-PCCユニットレベルでは、CVSのシーケンスパラメータセット(SPS)は、同じCVS内のPPSによってアクティブ化され、同じCVS内の1つ以上のFPSおよびVCL NALユニットによって参照される。
V-PCCユニットレベルでは、必要に応じて、占有パラメータセット(OPS)とジオメトリパラメータセット(GPS)がFPSによってアクティブ化される。
パッチシーケンスレベルでは、パッチレベルのパラメータセット(例えば、属性パッチパラメータセット、形状パッチパラメータセットなど)およびパッチフレームパラメータは、「patch_frame_layer_unit」によってアクティブ化され、それぞれ1つ以上の「patch_frame_layer_units」によって参照される。
パッチシーケンスレベルでは、ジオメトリフレームパラメータセットは、形状パッチパラメータセットによってアクティブ化され、1つ以上の形状パッチパラメータセットによって参照される。
パッチシーケンスレベルでは、属性フレームパラメータセットは、属性パッチパラメータセットによってアクティブ化され、1つ以上の属性パッチパラメータセットによって参照される。
パッチシーケンスレベルでは、パッチシーケンスパラメータセット(PSPS)は、パッチフレームパラメータ、ジオメトリフレームパラメータ、または属性パッチパラメータセットによってアクティブ化される。アクティブ化されたPSPSは、符号化された点群シーケンス(CPCS)全体でアクティブなままである。
この項は、V-PCCシーケンスパラメータセット(VSPS)、シーケンスパラメータセット(SPS)、フレームパラメータセット(FPS)、ピクチャパラメータセット(PPS)、占有パラメータセット(OPS)、ジオメトリパラメータセット(GPS)および属性パラメータセット(APS)のアクティブ化プロセスを指定する。
VSPS、SPS、FPS、PPS、OPS、GPSおよびAPSメカニズムは、頻繁に変更されない情報の送信を、符号化ビデオデータの送信から分離する。一部のアプリケーションでは、パラメータは「帯域外」で伝達され得る。
FPSは、V-PCCビデオデータユニットが参照できるパラメータを含み得る。各FPSは、デコードプロセスの操作の開始時に最初はアクティブではないと見なされる。最大で、デコードプロセスの操作中の任意の時点で1つのFPSがアクティブであると見なされ、任意の特定のPPSをアクティブ化すると、以前にアクティブだったFPSが非アクティブになる。FPS(「fps_frame_parameter_set_id」の特定の値を有する)がアクティブでなく、V-PCCビデオユニット(「fps_frame_parameter_set_id」値と等しい「vdu_frame_parameter_set_id」の値を使用)によって参照される場合、フレームに対してアクティブされる。このFPSは、別のフレームの別のFPSのアクティブ化によって非アクティブ化されるまで、アクティブFPSと呼ばれる。「fps_frame_parameter_set_id」の特定の値を有するFPSは、アクティブ化の前にデコードプロセスで利用可能であり、V-PCC非ビデオデータユニットに含まれるかまたは外部手段を介して提供される。符号化フレームのアクティブFPSの「fps_frame_parameter_set_id」の値を含む全てのFPS NALユニットは、符号化フレームの最後のV-PCCビデオユニットの後にあり、別の符号化フレームの最初のV-PCCビデオユニットの前にある場合を除き、符号化フレームのアクティブFPSのコンテンツと同じコンテンツを有するものとする。
VSPS RBSPは、1つ以上のFPSが参照できるパラメータを含む。各VSPSは、デコードプロセスの操作の開始時に最初はアクティブでないと見なされる。最大で、デコードプロセスの操作中の任意の時点で1つのVSPSがアクティブであると見なされ、任意の特定のVSPSをアクティブ化すると、以前にアクティブだったVSPSが非アクティブ化される。
VSPS(「vsps_vpcc_seq_parameter_set_id」の特定の値を有する)がまだアクティブでなく、且つFPS(「fps_vpcc_seq_parameter_set_id」が「vsps_vpcc_seq_parameter_set_id value」と等しい)のアクティブ化によって参照される場合、VSPSがアクティブ化される。このVSPSは、別のVSPSのアクティブ化によって非アクティブ化されるまで、アクティブVSPSと呼ばれる。「vsps_vpcc_seq_parameter_set_id」の特定の値を有するVSPSは、アクティブ化の前にデコードプロセスで利用可能であり、少なくとも1つのV-PCC非ビデオユニットに含まれるかまたは外部手段を介して提供される。アクティブ化されたVSPSは、符号化された点群シーケンス(CPCS)全体でアクティブなままである。
「vpcc_unit_type」が3に等しいV-PCC非ビデオデータユニットは、1つ以上の「pps_pic_parameter_set_ids」と対応する1つ以上のPPS NALユニットを含む。「pps_pic_parameter_set_id[i]」の値は、V-PCC非ビデオデータユニットに含まれるi番目のPPS NALユニットの値と等しい。PPSは、1つ以上のFPSで参照できるパラメータを含む。各PPSは、デコードプロセスの操作の開始時に最初はアクティブでないと見なされる。
最大で、デコードプロセスの操作中の任意の時点で1つのPPSがアクティブであると見なされ、任意の特定のPPSをアクティブ化すると、以前にアクティブだったPPSが非アクティブになる。FPSがアクティブで、且つ「vpcc_unit_type」が3に等しいV-PCC非ビデオデータユニットに含まれる「pps_attribute_type[i]」および「pps_attribute_index[i]」の特定の値に関連付けられたi番目のPPSがFPS(ここで、「fps_attribute_type[j]」、「fps_attribute_index[j]」および「fps_pic_parameter_set_id[j]」の値は、「pps_attribute_type[i]」、「pps_attribute_index[i]」および「pps_pic_parameter_set_id[i]」の値と同じである)によって参照される場合、i番目のPPSは、フレームのV-PCCビデオデータユニットに対してアクティブ化される。このPPSは、別のフレームの別のPPSのアクティブ化によって非アクティブ化されるまで、アクティブPPSと呼ばれる。「pps_pic_parameter_set_id」の特定の値を有するPPSは、アクティブ化の前にデコードプロセスで利用可能であり、V-PCC非ビデオデータユニットに含まれるかまたは外部手段を介して提供される。符号化フレームのアクティブPPSの「pps_pic_parameter_set_id」の値を含む全てのPPS NALユニットは、符号化フレームの最後のV-PCCビデオユニットの後にあり、別の符号化フレームの最初のV-PCCビデオユニットの前にある場合を除き、符号化フレームのアクティブFPSのコンテンツと同じコンテンツを有するものとする。
「vpcc_unit_type」が1に等しいV-PCC非ビデオデータユニットは、1つ以上の「sps_pic_parameter_set_ids」と対応する1つ以上のSPS NALユニットを含む。「sps_seq_parameter_set_id[i]」の値は、V-PCC非ビデオデータユニットに含まれるi番目のSPS NALユニットの値と等しい。SPSは、「vpcc_unit_type」が1に等しいV-PCC非ビデオデータユニットに含まれる1つ以上のPPSによって参照できるパラメータを含む。各SPSは、デコードプロセスの操作の開始時に最初はアクティブでないと見なされる。最大で、デコードプロセスの操作中の任意の時点で1つのSPSがアクティブであると見なされ、任意の特定のSPSをアクティブ化すると、以前にアクティブだったSPSが非アクティブ化される。SPS(「sps_seq_parameter_set_id」の特定の値を有する)がまだアクティブでなく、且つPPS(「pps_seq_parameter_set_id」が「sps_seq_parameter_set_id」の値と等しい)のアクティブ化によって参照される場合、SPSがアクティブ化される。このSPSは、別のSPSのアクティブ化によって非アクティブ化されるまで、アクティブSPSと呼ばれる。「sps_seq_parameter_set_id」の特定の値を有するSPSは、アクティブ化の前にデコードプロセスで利用可能であり、少なくとも1つのV-PCC非ビデオデータユニットに含まれるかまたは外部手段を介して提供される。アクティブ化されたSPSは、符号化された点群シーケンス(CPCS)全体でアクティブなままである。符号化フレームのアクティブFPSの「fps_frame_parameter_set_id」の値を含む全てのFPS NALユニットは、符号化フレームの最後のV-PCCビデオユニットの後にあり、別の符号化フレームの最初のV-PCCビデオユニットの前にある場合を除き、符号化フレームのアクティブFPSのコンテンツと同じコンテンツを有するものとする。
APS RBSPは、1つ以上のFPSが参照できるパラメータを含む。各APSは、デコードプロセスの操作の開始時に最初はアクティブでないと見なされる。最大で、デコードプロセスの操作中の任意の時点で1つのAPSがアクティブであると見なされ、任意の特定のAPSをアクティブ化すると、以前にアクティブだったPPSが非アクティブになる。FPSがアクティブで、且つvpccユニットヘッダの「attribute_type」および「attribute_index」の特定の値に関連付けられたAPSが、FPS(「fps_attribute_type[j]」、「fps_attribute_index[j]」および「fps_attribute_parameter_set_id[j]」の値は、「attribute_type」、「attribute_index」および「aps_attribute_parameter_set_id」の値と等しい)によって参照される場合、APSがアクティブ化される。このAPSは、別のAPSのアクティブ化によって非アクティブ化されるまで、アクティブAPSと呼ばれる。「aps_attribute_parameter_set_id」の特定の値を有するAPSは、アクティブ化の前にデコードプロセスで利用可能であり、V-PCC非ビデオデータユニットに含まれるかまたは外部手段を介して提供される。符号化フレームのアクティブAPSの「aps_attribute_parameter_set_id」の値を含む全てのAPS V-PCC非ビデオユニットは、符号化フレームの最後のV-PCCビデオユニットの後にあり、別の符号化フレームの最初のV-PCCビデオユニットの前にある場合を除き、符号化フレームのアクティブFPSのコンテンツと同じコンテンツを有するものとする。
OPS RBSPは、1つ以上のFPSによって参照できるパラメータを含む。各OPSは、デコードプロセスの操作の開始時に最初はアクティブでないと見なされる。最大で、デコードプロセスの操作中の任意の時点で1つのOPSがアクティブであると見なされ、任意の特定のOPSをアクティブ化すると、以前にアクティブだったOPSが非アクティブになる。FPSがアクティブで、且つOPSがFPS(「fps_occupancy_parameter_set_id」の値が「ops_occupancy_parameter_set_id」の値と等しい)によって参照される場合、OPSがアクティブ化される。このOPSは、別のOPSのアクティブ化によって非アクティブ化されるまで、アクティブOPSと呼ばれる。「ops_occupancy_parameter_set_id」の特定の値を有するOPSは、アクティブ化の前にデコードプロセスで利用可能であり、V-PCC非ビデオデータユニットに含まれるかまたは外部手段を介して提供される。符号化フレームのアクティブPPSの「ops_occupancy_parameter_set_id」の値を含む全てのOPS V-PCC非ビデオユニットは、符号化フレームの最後のV-PCCビデオユニットの後にあり、別の符号化フレームの最初のV-PCCビデオユニットの前にある場合を除き、符号化フレームのアクティブFPSのコンテンツと同じコンテンツを有するものとする。
GPS RBSPは、1つ以上のFPSが参照できるパラメータを含む。各GPSは、デコードプロセスの操作の開始時に最初はアクティブでないと見なされる。最大で、デコードプロセスの操作中の任意の時点で1つのGPSがアクティブであると見なされ、任意の特定のOPSをアクティブ化すると、以前にアクティブだったGPSが非アクティブになる。FPSがアクティブで、且つGPSがFPS(「fps_geometry_parameter_set_id」の値が「gps_geometry_parameter_set_id」の値と等しい場合)によって参照される場合、GPSがアクティブ化される。このGPSは、別のGPSのアクティブ化によって非アクティブ化されるまで、アクティブGPSと呼ばれる。「gps_geometry_parameter_set_id」の特定の値を有するGPSは、アクティブ化の前にデコードプロセスで利用可能であり、V-PCC非ビデオデータユニットに含まれるかまたは外部手段を介して提供される。符号化フレームのアクティブGPSの「gps_geometry_parameter_set_id」の値を含む全てのGPS V-PCC非ビデオユニットは、符号化フレームの最後のV-PCCビデオユニットの後にあり、別の符号化フレームの最初のV-PCCビデオユニットの前にある場合を除き、符号化フレームのアクティブGPSのコンテンツと同じコンテンツを有するものとする。
本開示の一実施形態は、HEVCのものと同様に、様々なパラメータセットのシンタックスに付加された拡張シンタックスを含む。一実施形態は、以下の表5に示されるように、コーデック依存パラメータを搬送するためのコーデック固有の拡張を含む。
一実施形態によれば、「more_rbsp_data()」は次のように指定される。パラメータセットにそれ以上のデータがない場合、戻り値「more_rbsp_data()」はFALSEに等しい。
それ以外の場合、RBSPデータは、1に等しい最後の(最下位、右端)ビットを検索する。rbsp_trailing_bits( )のシンタックス構造の最初のビット(rbsp_stop_one_bit)であるこのビットの位置を考えると、rbsp_trailing_bits( )のシンタックス構造の前にRBSPにさらに多くのデータがある場合、「more_rbsp_data( )」の戻り値はTRUEと等しくなる。それ以外の場合、more_rbsp_data ( )の戻り値はFALSEと等しい。
図2は、本開示の実施形態による通信システム(200)の簡略されたブロック図を示している。システム(200)は、ネットワーク(250)を介して相互接続される少なくとも2つの端末(210~220)を含み得る。データの単方向送信の場合、第1の端末(210)は、ネットワーク(250)を介して他の端末(220)に送信するためにビデオデータをローカル位置で符号化し得る。第2の端末(220)は、ネットワーク(250)から他の端末の符号化ビデオデータを受信し、符号化されたデータをデコードし、復元されたビデオデータを表示することができる。単方向のデータ送信は、メディア供給アプリケーションなどで一般的である。
図2は、例えば、ビデオ会議中に発生し得る符号化ビデオの双方向送信をサポートするように提供される第2の端末のペア(230,240)を示している。データの双方向送信の場合、各端末(230,240)は、ネットワーク(250)を介して他の端末に送信するためにローカル位置でキャプチャされたビデオデータを符号化し得る。各端末(230,240)はまた、他の端末によって送信された符号化ビデオデータを受信することができ、符号化されたデータをデコードすることができ、復元されたビデオデータをローカル表示デバイスに表示することができる。
図2において、端末(210~240)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示されているが、本開示の原理はこれに制限されることはない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレイヤー、および/または専用のビデオ会議設備における用途を見出す。ネットワーク(250)は、例えば有線および/または無線通信ネットワークを含む、端末(210~240)間で符号化ビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(250)は、回線交換および/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。本議論の目的のために、ネットワーク(250)のアーキテクチャおよびトポロジーは、以下で本明細書において説明されない限り、本開示の操作にとって重要でないかもしれない。
図3は、開示された主題の適用の例として、ストリーミング環境におけるビデオエンコーダおよびデコーダの配置を示している。開示された主題は、例えば、ビデオ会議、デジタルTV、および、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶など、を含む他のビデオ対応アプリケーションに等しく適用可能である。
ストリーミングシステムは、例えば、非圧縮ビデオサンプルストリーム(302)を作成し得るデジタルカメラなどのビデオソース(301)を含むことができるキャプチャサブシステム(313)を含み得る。エンコードされたビデオビットストリームと比較して高データ量を強調するために太線で示されたサンプルストリーム(302)は、カメラ(301)に結合されたエンコーダ(303)によって処理されることができる。以下でより詳細に説明されるように、エンコーダ(303)は開示された主題の態様を可能にするか或いは実施するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。エンコードされたビデオビットストリーム(304)は、サンプルストリームと比較して、より低いデータ量を強調するために細線で示され、将来使うためにストリーミングサーバ(305)に記憶されることができる。1つ以上のストリーミングクライアント(306,308)は、ストリーミングサーバ(305)にアクセスして、エンコードされたビデオビットストリーム(304)のコピー(307,309)を検索することができる。クライアント(306)は、エンコードされたビデオビットストリーム(307)の入り方向コピーをデコードし、ディスプレイ(312)または他のレンダリングデバイス(示されていない)でレンダリングできる出方向ビデオサンプルストリーム(311)を作成するデコーダ(310)を含むことができる。一部のストリーミングシステムでは、ビデオビットストリーム(304,307,309)は、特定のビデオ符号化/圧縮規格に従ってエンコードされることができる。これらの規格の例には、ITU-T勧告H.265を含む。開発中のビデオ符号化規格は、非公式にVersatile Video CodingまたはVVCとして知られてる。開示された主題は、VVCの文脈に使用され得る。
図4は、本開示の実施形態によるビデオデコーダ(310)の機能ブロック図であり得る。
受信機(410)は、デコーダ(310)によるデコード対象となる1つ以上のコーデックビデオシーケンスを受信し得る。同一または別の実施形態では、一度に1つの符号化ビデオシーケンスを受信してもよく、各符号化ビデオシーケンスのデコードは、他の符号化ビデオシーケンスから独立している。符号化ビデオシーケンスは、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得るチャネル(412)から受信されることができる。受信機(410)は、それぞれの使用エンティティ(示されていない)に転送され得る他のデータ、例えば、符号化オーディオデータおよび/または補助データストリームとともに、エンコードされたビデオデータを受信し得る。受信機(410)は、符号化ビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対抗するために、バッファメモリ(415)は、受信機(410)とエントロピーデコーダ/パーサ(420)(以降、「パーサ」)との間に結合されてもよい。受信機(410)が十分な帯域幅および可制御性を有する記憶/転送装置から、または同一同期ネットワークからデータを受信する際に、バッファメモリ(415)は必要とされないことがあり、または小さくされることがある。インターネットなどのベストエフォートパケットネットワークで使用するために、比較的大きくされることができ、有利には適応サイズであることができるバッファメモリ(415)が必要とされることがある。
ビデオデコーダ(310)は、エントロピー符号化ビデオシーケンスからシンボル(421)を再構築するパーサ(420)を含み得る。これらのシンボルのカテゴリには、デコーダ(310)の操作を管理するために使用される情報、および、デコーダの不可欠な部分ではないが、図3に示されように、デコーダに結合されることができるディスプレイ(312)のようなレンダリングデバイスを制御する潜在的情報が含まれる。レンダリングデバイスの制御情報は、補足強化情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(示されていない)の形態であってよい。パーサ(420)は、受信された符号化ビデオシーケンスを構文解析/エントロピーデコードすることができる。符号化ビデオシーケンスの符号化は、ビデオ符号化技術または規格に合わせることができ、可変長符号化、ハフマン符号化、文脈感受性を有するもしくは有さない算術符号化などを含む当業者によく知られる原理に従うことができる。パーサ(420)は、グループに対応する少なくとも1つのパラメータに基づいて、符号化ビデオシーケンスからビデオデコーダ内の画素のサブグループのうちの少なくとも1つのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャ群(GOP)、ピクチャ、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。エントロピーデコーダ/パーサは、符号化ビデオシーケンスから変換係数、量子化パラメータ値、動きベクトルなどのような情報をも抽出することができる。
パーサ(420)は、シンボル(421)を作成するために、バッファメモリ(415)から受信されたビデオシーケンスに対してエントロピーデコード/構文解析操作を実行することができる。
シンボル(421)の再構築は、符号化ビデオピクチャまたはその一部(インターおよびイントラピクチャ、インターおよびイントラブロックなど)のタイプ、および他の要因に応じて、複数の異なるユニットを含み得る。どのユニットが、どのように関与するかは、符号化ビデオシーケンスからパーサ(420)によって構文解析されたサブグループ制御情報によって制御されることができる。パーサ(420)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために示されていない。
既に述べた機能ブロックに加えて、デコーダ310は、以下で説明されるように、概念的にいくつかの機能ユニットに細分されることができる。商業的な制約の下で実際の実施操作にあたっては、これらのユニットの多くは互いに密接に相互作用し、少なくとも一部は互いに統合することができる。しかしながら、開示された主題の説明の目的で、以下の機能ユニットへの概念的な細分は、適切に行われる。
第1のユニットは、スケーラ/逆変換ユニット(451)であり得る。スケーラ/逆変換ユニット(451)は、量子化された変換係数を、使用する変換、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報とともに、シンボル(421)としてパーサ(420)から受信することができる。これは、アグリゲータ(455)に入力可能なサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(451)の出力サンプルは、イントラ符号化ブロック、すなわち、予め再構築されたピクチャからの予測情報を使用していないが、現在ピクチャの予め再構築された部分からの予測情報を使用できるブロックに関係し得る。このような予測情報は、イントラピクチャ予測ユニット(452)によって提供されることができる。場合によっては、イントラピクチャ予測ユニット(452)は、現在の(一部再構築された)ピクチャ(456)から取り出された周囲の既に再構築された情報を用いて、再構築中のブロックの同じサイズおよび形状のブロックを生成する。アグリゲータ(455)は、場合によっては、サンプルごとに、イントラ予測ユニット(452)が生成した予測情報を、スケーラ/逆変換ユニット(451)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(451)の出力サンプルは、インター符号化されたブロック、および潜在的に動き補償されたブロックに関係し得る。このような場合、動き補償予測ユニット(453)は、参照ピクチャバッファ(457)にアクセスして、予測に使用されるサンプルを取り出すことができる。取り出されたサンプルをブロックに関係するシンボル(421)に従って動き補償した後、これらのサンプルは、出力サンプル情報を生成するように、アグリゲータ(455)によってスケーラ/逆変換ユニットの出力に追加されることができる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニットが予測サンプルを取り出す参照ピクチャバッファ内のアドレスは、動きベクトルによって制御されることができ、例えばX、Y、および参照ピクチャ成分を有し得るシンボル(421)の形態で動き補償予測ユニットに利用可能な動きベクトルによって制御されることができる。動き補償は、サブサンプル正確な動きベクトルが使用中であるときに参照ピクチャバッファから取り出されたサンプル値の補間、動きベクトル予測メカニズムなどをも含むことができる。
アグリゲータ(455)の出力サンプルは、ループフィルタユニット(454)において様々なループフィルタリング技術を受けられる。ビデオ圧縮技術は、符号化されたビデオビットストリームに含まれるパラメータによって制御され、パーサ(420)からのシンボル(421)としてループフィルタユニット(454)に利用可能とされたループ内フィルタ技術を含むことができるが、符号化ピクチャまたは符号化ビデオシーケンスの(デコード順で)前の部分のデコード中に取得されたメタ情報に応答することができるとともに、予め再構築されループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(454)の出力は、レンダリングデバイス(312)へ出力されることができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(534)に記憶されることができるサンプルストリームであり得る。
特定の符号化ピクチャは、完全に再構築されると、将来の予測のために参照ピクチャとして使用されることができる。符号化ピクチャが完全に再構築され、該符号化ピクチャが(例えば、パーサ(420)によって)参照ピクチャとして識別されると、現在参照ピクチャ(454)は、参照ピクチャバッファ(457)の一部となり得、次の符号化ピクチャの再構築を開始する前に新しい現在ピクチャメモリを再割当てすることができる。
ビデオデコーダ420は、ITU-T Rec.H.265などの規格で文書化され得る所定のビデオ圧縮技術に従って、デコード操作を実行し得る。符号化ビデオシーケンスが、ビデオ圧縮技術ドキュメントまたは規格、特にその中のプロファイルドキュメントに指定されたようにビデオ圧縮技術または規格の構文に準拠しているという意味で、符号化ビデオシーケンスは、使用されているビデオ圧縮技術ドキュメントまたは規格によって指定されるシンタックスに準拠し得る。符号化ビデオシーケンスの複雑さがビデオ圧縮技術または規格のレベルで定義される範囲内にあることも、コンプライアンスに必要である。場合によっては、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えば、1秒あたりのメガサンプルで測定される)、最大参照ピクチャサイズなどがレベルによって制限される。レベルによって設定された制限は、場合によっては、符号化ビデオシーケンスでシグナリングされたHRDバッファ管理のための仮想参照デコーダ(HRD)仕様およびメタデータによってさらに制限され得る。
一実施形態では、受信機(410)は、エンコードされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、符号化ビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードし、および/または、元のビデオデータをより正確に再構築するためにビデオデコーダ(420)によって使用され得る。追加のデータは、例えば、時間的、空間的、またはSNRエンハンスメントレイヤ、冗長スライス、冗長ピクチャ、前方向誤り訂正コードなどの形態にされることができる。
図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)であり得るデジタルビデオサンプルストリームの形態で提供し得る。メディア供給システムでは、ビデオソース(303)は、事前に準備されたビデオを記憶する記憶装置であり得る。ビデオ会議システムでは、ビデオソース(301)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラを含み得る。ビデオデータは、順番に見たときに動きを与える複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間アレイとして編成されてもよく、各画素は、使用中のサンプリング構造、色空間などに応じて1つ以上のサンプルを含むことができる。当業者は、画素とサンプルとの間の関係を容易に理解することができる。以下の説明では、サンプルを中心に説明する。
一実施形態によれば、エンコーダ(303)は、リアルタイムでまたはアプリケーションが要求する任意の他の時間制約の下でソースビデオシーケンスのピクチャを符号化し、符号化ビデオシーケンス(543)に圧縮することができる。適切な符号化速度を実施することは、コントローラ(550)の機能の1つである。コントローラは、以下で説明される他の機能ユニットを制御し、これらのユニットに機能的に結合されている。分かりやすくするために、カップリングは示されていない。コントローラによって設定されるパラメータは、レート制御関連パラメータ(例えば、ピクチャスキップ、量子化器、レート歪み最適化技法のラムダ値)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(550)の他の機能が特定のシステム設計に対して最適化されたエンコーダ(303)に関係し得るので、当業者はそれらを容易に識別することができる。
一部のビデオエンコーダは、当業者が「符号化ループ」として容易に認識するもので動作する。過度に簡略化した説明として、符号化ループは、(符号化対象となる入力ピクチャおよび参照ピクチャに基づいてシンボルを作成する役割を担う)ビデオエンコーダ(530)(以降、「ソースコーダ」)のエンコード部分と、シンボルを再構築して、サンプルデータを作成するエンコーダ(303)に埋め込まれた(ローカル)デコーダ(533)から構成されることができ、ここで、前記サンプルデータは(リモート)デコーダにより作成してもよい(シンボルと符号化されたビデオビットストリーム間の如何なる圧縮は、開示された主題で考慮されるビデオ圧縮技術では可逆であるためである)。再構築されたサンプルストリームは、参照ピクチャメモリ(534)に入力される。シンボルストリームのデコードにより、デコーダの位置(ローカルまたはリモート)に関係なくビット正確な結果が得られるため、参照ピクチャバッファのコンテンツもローカルエンコーダとリモートエンコーダとの間でビットが正確である。言い換えれば、エンコーダの予測部分は、参照ピクチャサンプルとして、デコード中に予測を使用するときにデコーダが「見る」のと全く同じサンプル値を「見る」。参照ピクチャの同期性の該基本原理(および、例えば、チャネルエラーに起因して同期性を維持できない場合に生じるドリフト)は、当業者によく知られている。
「ローカル」デコーダ(533)の動作は、前文で図4に関連して既に詳細に説明された、「リモート」デコーダ(310)の動作と同様であり得る。しかしながら、図4も簡単に参照し、シンボルが利用可能であり、エントロピーコーダ(545)およびパーサ(420)による符号化ビデオシーケンスへのシンボルのエンコード/デコードは可逆であり得るので、デコーダ(310)のエントロピーデコード部分(チャネル(412)、受信機(410)、バッファメモリ(415)、およびパーサ(420)を含む)は、ローカルデコーダ(533)では完全に実施されない場合がある。
この時点で観察できたのは、デコーダに存在する構文解析/エントロピーデコード以外の任意のデコーダ技術も、対応するエンコーダに実質的に同一の機能形式で必ず存在する必要がある。このため、開示された主題は、デコーダ操作に焦点を合わせている。エンコーダ技術の説明は、包括的に説明されたデコーダ技術の逆であるため、省略できる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
その操作の一部として、ソースコーダ(530)は、「参照フレーム」として指定されたビデオシーケンスからの1つ以上の予め符号化されたフレームを参照して入力フレームを予測的に符号化する動き補償予測符号化を実行してもよい。このようにして、符号化エンジン(532)は、入力フレームの画素ブロックと、入力フレームへの予測基準として選択され得る参照フレームの画素ブロックとの間の差異を符号化する。
ローカルビデオデコーダ(533)は、ソースコーダ(530)によって作成されたシンボルに基づいて、参照フレームとして指定され得るフレームの符号化ビデオデータをデコードし得る。符号化エンジン(532)の操作は、有利には非可逆プロセスであり得る。符号化ビデオデータがビデオデコーダ(図5に示されていない)でデコードされ得るとき、再構築されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(533)は、ビデオデコーダによって参照フレームに対して実行され得るデコードプロセスを再現し、再構築された参照フレームを参照ピクチャキャッシュ(534)に記憶させることができる。このようにして、エンコーダ(303)は、遠端ビデオデコーダによって取得される再構築された参照フレームと共通するコンテンツ(送信エラー無し)を有する再構築された参照フレームのコピーをローカルに記憶し得る。
予測器(535)は、符号化エンジン(532)の予測検索を実行することができる。すなわち、符号化対象となる新しいフレームについて、予測器(535)は、(候補の参照画素ブロックとしての)サンプルデータ、または、参照ピクチャの動きベクトル、ブロック形状など、新しいピクチャの適切な予測基準として機能し得る特定のメタデータを参照ピクチャメモリ(534)で検索することができる。予測器(535)は、適切な予測基準を見つけるために、サンプルブロックに対して画素ブロックごとに操作することができる。場合によっては、予測器(535)で取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(534)に記憶された複数の参照ピクチャから引き出された予測基準を有してもよい。
コントローラ(550)は、例えば、ビデオデータをエンコードするために使用されるパラメータおよびサブグループパラメータの設定を含む、ビデオコーダ(530)の符号化操作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(545)においてエントロピー符号化を受けられる。エントロピーコーダは、例えば、ハフマン符号化、可変長符号化、算術符号化など、当業者に知られている技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化ビデオシーケンスに変換することができる。
送信機(540)は、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る通信チャネル(560)を介した送信の準備のために、エントロピーコーダ(545)によって作成された符号化ビデオシーケンスをバッファリングすることができる。送信機(540)は、ビデオコーダ(530)からの符号化ビデオデータを、送信されるべき他のデータ、例えば、符号化オーディオデータおよび/または補助データストリーム(ソースは示されていない)とマージすることができる。
コントローラ(550)は、エンコーダ(303)の操作を管理することができる。符号化中、コントローラ(550)は、各符号化ピクチャに特定の符号化されたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得る符号化技法に影響を及ぼし得る。例えば、ピクチャは、多くの場合、以下のフレームタイプの1つとして割り当てられる。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のいかなるフレームを使用せずに符号化およびデコードされ得るものであり得る。一部のビデオコーデックは、例えば、インディペンデントデコーダリフレッシュピクチャなど、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャのそれらの変形およびそれらのそれぞれの用途および特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大1つの動きベクトルおよび参照インデックスを使用したイントラ予測またはインター予測により符号化およびデコードされ得るものであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大2つの動きベクトルおよび参照インデックスを使用したイントラ予測またはインター予測により符号化および復号され得るものであり得る。同様に、多重予測ピクチャは、単数のブロックの再構築のために2つを超えた参照ピクチャおよび関連メタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8、または16×16サンプルのブロック)に空間的に細分され、ブロック単位で符号化され得る。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割り当てによって決定された他の(既に符号化された)ブロックを参照して予測的に符号化され得る。例えば、Iピクチャのブロックは、非予測的に符号化されてもよく、或いは、同一のピクチャの既に符号化されたブロック(空間予測またはイントラ予測)を参照して予測的に符号化されてもよい。Pピクチャの画素ブロックは、1つの予め符号化された参照ピクチャを参照して、空間予測または時間予測を介して非予測的に符号化され得る。Bピクチャのブロックは、1つまたは2つの予め符号化された参照ピクチャを参照して、空間予測または時間予測を介して非予測的に符号化され得る。
ビデオコーダ(530)は、ITU-T Rec.H.265などの予め設定されたビデオ符号化技術または規格に従って、符号化操作を実行することができる。この操作において、ビデオコーダ(530)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測符号化操作を含む、様々な圧縮操作を実行することができる。したがって、符号化ビデオデータは、使用されているビデオ符号化技術または規格によって指定されたシンタックスに準拠する場合がある。
一実施形態では、送信機(540)は、エンコードされたビデオとともに追加のデータを送信することができる。ビデオコーダ(530)は、このようなデータを符号化ビデオシーケンスの一部として含み得る。追加のデータは、時間的/空間的/SNRエンハンスメントレイヤ、冗長ピクチャやスライスなどの他の形態での冗長データ、補助強化情報(SEI)メッセージ、ビジュアルユーザビリティ情報(VUI)パラメータセットフラグメントなどを含み得る。
図6は、開示された主題の特定の実施形態を実施することに適したコンピュータシステム600を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、またはそのようなメカニズムを施されて、コンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、または解釈、マイクロコード実行などによって実行されることができる命令を含むコードを作成する任意の適切な機械コードまたはコンピュータ言語を用いて符号化されることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータまたはそのコンポーネント上で実行されることができる。
コンピュータシステム600について図6に示されるコンポーネントは、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関していかなる限定を示唆することも意図しない。コンポーネントの構成は、コンピュータシステム600の例示的な実施形態で示されるコンポーネントのうちのいずれか1つまたは組み合わせに関する任意の依存性または必要性を有するとして解釈されるべきではない。
コンピュータシステム600は、特定のヒューマンインターフェース入力デバイスを含み得る。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(示されていない)によって、1人以上のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、静止画像カメラから取得される写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係しない特定のメディアをキャプチャすることにも使用できる。
入力ヒューマンインターフェースデバイスは、キーボード601、マウス602、トラックパッド603、タッチスクリーン610、データグローブ604、ジョイスティック605、マイクロフォン606、スキャナ607、カメラ608(それぞれ1つのみ示されている)のうちの1つ以上を含み得る
コンピュータシステム600は、特定のヒューマンインターフェース出力デバイスをも含み得る。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音声、光、および嗅覚/味覚を介して1人以上のユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン610、データグローブ604、またはジョイスティック605による触覚フィードバックがあるが、入力デバイスとして機能しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(スピーカ609、ヘッドホン(示されていない)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン610(それぞれタッチスクリーン入力能力を有するかもしくは有せず、それぞれ触覚フィードバック能力を有するかもしくは有しない。それらの一部は、ステレオグラフィック出力などの手段を介して、2次元の視覚出力または3次元以上の出力を出力することができる)、仮想現実眼鏡(示されていない)、ホログラフィックディスプレおよびスモークタンク(示されていない)など)、およびプリンタ(示されていない)を含み得る。
コンピュータシステム600は、人間がアクセス可能な記憶装置およびそれらの関連する媒体、例えば、CD/DVDなどの媒体621付きのCD/DVD ROM/RW620を含む光学媒体、サムドライブ622、リムーバブルハードドライブまたはソリッドステートドライブ623、テープやフロッピーディスクなどの従来の磁気媒体(示されていない)、セキュリティドングルなどの専用のROM/ASIC/PLD基底のデバイス(示されていない)などをも含むことができる。
ここで開示された主題に関連して使用される「コンピュータ読取可能な媒体」という用語は、送信媒体、搬送波、または他の一時的な信号を包含しないことをも当業者が理解するべきである。
コンピュータシステム600は、1つ以上の通信ネットワーク(655)へのインターフェースをさらに含むことができる。ネットワーク(655)は、例えば、無線、有線、光学的であり得る。ネットワーク(655)は、さらに、ローカル、広域、大都市圏、車両用および産業用、リアルタイム、遅延耐性などであり得る。ネットワーク(655)の例は、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上放送TVを含むTV有線または無線広域デジタルネットワーク、CANBusを含む車両用や産業用などを含む。特定のネットワーク(655)は、一般に、特定の汎用データポートまたは周辺バス(649)(例えば、コンピュータシステム600のUSBポートなど)に接続された外部ネットワークインターフェースアダプター(654)を必要とする。他のものは一般に、以下で説明するようにシステムバスに接続されることにより、コンピューターシステム600のコアに統合される(例えば、PCコンピューターシステムへのイーサネットインターフェースまたはスマートフォンコンピューターシステムへのセルラーネットワークインターフェース)。これらのネットワーク(655)のいずれかを用いて、コンピュータシステム600は、他のエンティティと通信することができる。このような通信は、単方向、受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向、例えばローカルまたはワイドエリアデジタルネットワークを用いる他のコンピュータシステムへの送信であり得る。特定のプロトコルおよびプロトコルスタックを上述したこれらのネットワーク(655)およびネットワークインターフェース(654)のそれぞれで使用することができる。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶装置、およびネットワークインターフェース(654)は、コンピュータシステム600のコア640に接続されることができる。
コア640は、1つ以上の中央処理装置(CPU)641、グラフィックスプロセッシングユニット(GPU)642、フィールドプログラマブルゲートエリア(FPGA)643の形態での専用プログラマブル処理ユニット、特定のタスクのためのハードウェアアクセラレータ644などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)645、ランダムアクセスメモリ646、非ユーザアクセス可能な内部ハードドライブ、SSDなどの内部大容量記憶装置647とともに、システムバス648を介して接続されてもよい。一部のコンピュータシステムでは、システムバス648は、1つ以上の物理プラグの形態でアクセスでき、追加のCPU、GPUなどによる拡張を可能にする。周辺機器は、コアのシステムバス648に直接、または周辺バス649またはグラフィックアダプタ650を介して接続されることができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU641、GPU642、FPGA643、およびアクセラレータ644は、組み合わせて、前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM645またはRAM646に記憶されることができる。推移データはRAM646にも記憶できるが、永続データは、例えば、内部大容量ストレージ647に記憶されることができる。1つ以上のCPU641、GPU642、大容量ストレージ647、ROM645、RAM646などと密接に関連付けることができるキャッシュメモリを使用することにより、任意のメモリデバイスへの高速保存および検索が可能になる。
コンピュータ読取可能な媒体は、様々なコンピュータ実施操作を実行するためのコンピュータコードを備えることができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであり得るか、もしくは、それらは、コンピュータソフトウェア技術の当業者に周知であって利用可能な種類のものであり得る。
限定ではなく、一例として、アーキテクチャ、特にコア640を有するコンピュータシステム600は、一つまたは複数の有形のコンピュータ読取可能な媒体に組み込まれたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果としての機能性を提供することができる。このようなコンピュータ読取可能な媒体は、以上で紹介したようにユーザがアクセス可能な大容量ストレージ、および、コア内部大容量ストレージ647またはROM645などの非一時的な性質を持つコア640の特定のストレージに関連付けられた媒体であり得る。本開示の様々な実施形態を実行するソフトウェアは、このようなデバイスに記憶され、コア640によって実行されることができる。コンピュータ読取可能な媒体は、特定の必要に応じて、1つ以上のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア640、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM646に記憶されたデータ構造を定義すること、および、ソフトウェアで定義されたプロセスに従ってこのようなデータ構造を変更することを含む、ここで説明する特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または、代替として、コンピュータシステムは、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行するためにソフトウェアの代わりにまたは一緒に動作することができる回路(例えば、アクセラレータ644)に有線接続されたまたは組み込まれたロジックの結果としての機能性を提供することができる。ソフトウェアへの言及は、必要に応じて、ロジックを含むことができ、その逆も同様である。コンピュータ読取可能な媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはその両方を含むことができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを含む。
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に含まれる変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書では明示的に示されていないか、または記載されていないが、本開示の原理を具現化し、その思想および範囲内に含まれる様々なシステムおよび方法を考案できることが理解されよう。