(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】クラウドワークフローにおけるタイムアウト及び完了データ入力のシグナリング
(51)【国際特許分類】
H04N 19/42 20140101AFI20231219BHJP
H04N 21/438 20110101ALI20231219BHJP
【FI】
H04N19/42
H04N21/438
(21)【出願番号】P 2022529902
(86)(22)【出願日】2021-05-06
(86)【国際出願番号】 US2021031027
(87)【国際公開番号】W WO2021262328
(87)【国際公開日】2021-12-30
【審査請求日】2022-05-23
(32)【優先日】2020-06-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-04-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】岩井 健二
(56)【参考文献】
【文献】米国特許第9430280(US,B1)
【文献】米国特許出願公開第2019/0028691(US,A1)
【文献】米国特許出願公開第2016/0036886(US,A1)
【文献】米国特許出願公開第2011/0145392(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
H04N 21/00 - 21/858
(57)【特許請求の範囲】
【請求項1】
コンピュータが実行する、ネットワークベースのメディア処理(NBMP)の方法であって、
NBMPにおけるタスク及びワークフローのうちの少なくとも1つの入力を取得するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記入力のタイムアウトを設定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つが、前記タイムアウトに等しい期間、前記入力のデータの欠如を監視したか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つが、前記タイムアウトに等しい前記期間、前記入力のデータの欠如を監視したことに応じて、前記入力の更なるデータが利用できないと判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つの、前記入力を含む複数の入力のそれぞれに対する識別子及びポート名の少なくとも1つを判定し、そして対応する入力ポート及び出力ポートのうちの少なくとも1つの対応するポート名及びストリーム識別子の少なくとも1つを判定することによって、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記複数の入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記複数の入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定したことに基づいて、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記複数の入力を、前記1つ又は複数の関数の前記入力及び前記出力のうちの前記少なくとも1つにそれぞれ関連付けるステップと、
前記入力の更なるデータが利用できないと判定したことに基づいて、NBMPにおける前記タスク及び前記ワークフローのうちの前記少なくとも1つに更新を適用するステップと、
前記更新に基づいて、NBMPにおける前記タスク及び前記ワークフローのうちの前記少なくとも1つを処理するステップと、を含む方法。
【請求項2】
前記タスク及び前記ワークフローのうちの前記少なくとも1つ
が実行状態に設定されているか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つ
が前記実行状態に設定されていると判定した場合、前記タスク及び前記ワークフローのうちの前記少なくとも1つが、前記タイムアウトに等しい期間、前記入力のデータの欠如を監視したか否かに基づいて、
前記タスク及び前記ワークフローのうちの前記少なくとも1つについて、前記実行状態からアイドル状態に
設定の変更
をするか否かを判定するステップと、を更に含む、請求項1に記載の方法。
【請求項3】
前記入力が特定の表示を含むか否かを判定するステップと、
前記入力が前記特定の表示を含むと判定したことに応じて、前記入力の更なるデータが利用できないと判定するステップと、を更に含む、請求項1に記載の方法。
【請求項4】
前記特定の表示は、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記入力と共に含まれている入力完了フラグを含む、請求項3に記載の方法。
【請求項5】
前記特定の表示は、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記入力と共に提供されたメタデータに含まれている、請求項3に記載の方法。
【請求項6】
前記タスク及び前記ワークフローのうちの前記少なくとも1つの、前記入力を含む前記複数の入力を取得するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つ
が実行状態に設定されているか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つのすべての前記入力が、前記タイムアウトに等しい前記期間、すべての前記入力のデータの欠如を監視したか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つが前記実行状態に設定されていると判定した場合、前記タスク及び前記ワークフローのうちの前記少なくとも1つが、すべての前記入力の前記タイムアウトに等しい期間、前記入力のデータの欠如を監視したか否かに基づいて、
前記タスク及び前記ワークフローのうちの前記少なくとも1つについて、前記実行状態からアイドル状態に
設定の変更
をするか否かを判定するステップと、を更に含む、請求項3に記載の方法。
【請求項7】
前記タスク及び前記ワークフローのうちの前記少なくとも1つのすべての前記入力が、前記タイムアウトに等しい前記期間、すべての前記入力のデータの欠如を監視したか否かを判定するステップは、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記入力の少なくとも1つが、タイムアウト表示及び完了表示のいずれかを示すか否かを判定することを含む、請求項6に記載の方法。
【請求項8】
請求項1~7のいずれか1項に記載の方法を実行する、装置。
【請求項9】
コンピュータにネットワークベースのメディア処理(NBMP)のプロセスを実行させるコンピュータプログラムであって、前記プロセスは、
NBMPにおけるタスク及びワークフローのうちの少なくとも1つの入力を取得するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記入力のタイムアウトを設定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つが、前記タイムアウトに等しい期間、前記入力のデータの欠如を監視したか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つが、前記タイムアウトに等しい前記期間、前記入力のデータの欠如を監視したことに応じて、前記入力の更なるデータが利用できないと判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つの、前記入力を含む複数の入力のそれぞれに対する識別子及びポート名の少なくとも1つを判定し、そして対応する入力ポート及び出力ポートのうちの少なくとも1つの対応するポート名及びストリーム識別子の少なくとも1つを判定することによって、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記複数の入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定するステップと、
前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記複数の入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定したことに基づいて、前記タスク及び前記ワークフローのうちの前記少なくとも1つの前記複数の入力を、前記1つ又は複数の関数の前記入力及び前記出力のうちの前記少なくとも1つにそれぞれ関連付けるステップと、
前記入力の更なるデータが利用できないと判定したことに基づいて、NBMPにおける前記タスク及び前記ワークフローのうちの前記少なくとも1つに更新を適用するステップと、
前記更新に基づいて、NBMPにおける前記タスク及び前記ワークフローのうちの前記少なくとも1つを処理するステップとを含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2020年6月24日に出願された米国仮出願第63/043,660号、2020年10月5日に出願された米国仮出願第63/087,755号、及び2021年4月19日に出願された米国出願第17/233,788号の優先権を主張するものであり、これらは、参照により全体が本出願に明示的に組み込まれる。
【0002】
1.技術分野
本開示は、ネットワークベースのメディア処理(NBMP)ワークフローとその関数の入力及び出力との関連付け、並びにクラウドワークフローにおける入力データのタイムアウト又は入力データの完了のシグナリングを対象とする。
【背景技術】
【0003】
2.従来技術の説明
MPEG NBMPプロジェクトは、クラウド上でメディアを処理するという概念を開発した。しかしながら、現在のNBMP設計には、異なるネットワークエンティティ、MPE、ソース、又はシンク間でワークフローを分割する品質を測定する能力がないという技術的な問題がある。
【0004】
NBMP国際仕様案は、メディア処理効率の向上、メディアサービスの高速かつ低コストの展開、及びパブリッククラウドサービス、プライベートクラウドサービス又はハイブリッドクラウドサービスの活用による大規模な展開を提供する能力の大きな可能性を示す。
【0005】
NBMP仕様でタスク及びワークフローのアイドル状態と実行状態が定義されている場合でも、そのような仕様には変更がどのように発生するかが欠けている。したがって、タスク又はワークフローの各入力の状態を定義し、その状態を変更するための条件を特定できないという技術的な問題がある。したがって、タスク又はワークフローは、その入力内のデータが完了しているか否かを判定することができず、また、タスク又はワークフローには、データが停止しているか否かを判定するためのルールがない。
【0006】
更に、ネットワークとクラウドプラットフォームを使用して様々なアプリケーションを実行できる場合でも、NBMP規格では、ワークフローの入力と出力をその関数の入力と出力に1対1でマッピングせずに、必要とされる処理を定義するワークフロー記述が定義されている。
【0007】
現在のNBMPワークフロー記述は、可能なワークフロー有向非巡回グラフ(DAG)を含むワークフローの詳細な説明を提供することができるが、そのような記述には、ワークフロー入力と出力記述を個々の関数の入力又は出力に関連付けることが欠けている。
【0008】
更に、ワークフローのどの入力が特定の関数インスタンスの入力に関連付けられているか、ワークフローのどの出力が特定の関数インスタンスの出力に関連付けられているかが明確でない場合がある。これは、接続マップが関数間の接続のみを定義し、関数インスタンスとワークフローの入力/出力との間の接続を定義していないという事実によるものである。
【0009】
ワークフローの入力/出力がすべての最初又は最後の関数の中で異なる場合、ワークフローマネージャは、すべての入力/出力間の各入力/出力の一意性により、関連付けを見つけることができる。ただし、ワークフローに同じ記述を有する複数の入力/出力(ストリームidのみが異なる)が含まれている場合、ワークフローの入力/出力に対して適切な関数入力/出力を識別するには曖昧さがある。
【0010】
言い換えれば、上記の他の技術的問題の中で、ワークフロー入力と出力を特定の関数入力と出力に割り当てることには曖昧さがある。
【発明の概要】
【課題を解決するための手段】
【0011】
1つ又は複数の異なる技術的問題に対処するために、本開示は、例示的な実施形態による、1つ又は複数のビューポートマージン更新に関して没入型ビデオを配信しながら、ネットワークオーバーヘッド及びサーバ計算オーバーヘッドを削減するための技術的解決策を提供する。
【0012】
方法と、コンピュータプログラムコードを記憶するように構成されたメモリ、及びコンピュータプログラムコードにアクセスし、コンピュータプログラムコードの指示に従って動作するように構成された1つ又は複数のプロセッサを含む装置とが含まれる。コンピュータプログラムコードは、少なくとも1つのプロセッサに、NBMPにおけるタスク及びワークフローのうちの少なくとも1つの入力を取得させるように構成された取得コードと、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの入力のタイムアウトを設定させるように構成された設定コードと、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、入力のデータの欠如を監視したか否かを判定させるように構成され、それにより、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、入力のデータの欠如を監視したことに応じて、入力の更なるデータが利用できないと判定させるように更に構成された判定コードと、少なくとも1つのプロセッサに、入力の更なるデータが利用できないと判定したことに基づいて、NBMPにおけるタスク及びワークフローのうちの少なくとも1つに更新を適用させるように構成された適用コードと、少なくとも1つのプロセッサに、更新に基づいて、NBMPにおけるタスク及びワークフローのうちの少なくとも1つを処理させるように構成された処理コードとを含む。
【0013】
例示的な実施形態によれば、判定コードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの状態が実行状態に設定されているか否かを判定させるように更に構成され、判定コードは、状態が実行状態に設定されていると判定した場合、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、入力のデータの欠如を監視したか否かに基づいて、状態を実行状態からアイドル状態に変更するか否かを判定させるように更に構成される。
【0014】
例示的な実施形態によれば、判定コードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの入力が、関数の入力及び出力のうちの少なくとも1つに関連付けられるか否かを判定させるように更に構成され、コンピュータプログラムコードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの入力が、関数の入力及び出力のうちの少なくとも1つに関連付けられると判定したことに応じて、タスク及びワークフローのうちの少なくとも1つの入力を関数の入力及び出力のうちの少なくとも1つに関連付けさせるように構成された関連付けコードを更に含む。
【0015】
例示的な実施形態によれば、判定コードは、少なくとも1つのプロセッサに、入力が表示を含むか否かを判定させるように更に構成され、また、判定コードは、少なくとも1つのプロセッサに、入力が表示を含むと判定したことに応じて、入力の更なるデータが利用できないと判定させるように更に構成される。
【0016】
例示的な実施形態によれば、表示は、タスク及びワークフローのうちの少なくとも1つの入力と共に含まれている入力完了フラグを含む。
【0017】
例示的な実施形態によれば、表示は、タスク及びワークフローのうちの少なくとも1つの入力と共に提供されたメタデータに含まれている。
【0018】
例示的な実施形態によれば、取得コードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの、入力を含む複数の入力を取得させるように更に構成され、判定コードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの状態が実行状態に設定されているか否かを判定させるように更に構成され、判定コードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つのすべての入力が、タイムアウトに等しい期間、すべての入力のデータの欠如を監視したか否かを判定させるように更に構成され、判定コードは、状態が実行状態に設定されていると判定した場合、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つが、すべての入力のタイムアウトに等しい期間、入力のデータの欠如を監視したか否かに基づいて、状態を実行状態からアイドル状態に変更するか否かを判定させるように更に構成される。
【0019】
例示的な実施形態によれば、タスク及びワークフローのうちの少なくとも1つのすべての入力が、タイムアウトに等しい期間、すべての入力のデータの欠如を監視したか否かを判定するステップは、タスク及びワークフローのうちの少なくとも1つの入力の少なくとも1つが、タイムアウト表示及び完了表示のいずれかを示すか否かを判定することを含む。
【0020】
例示的な実施形態によれば、判定コードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定させるように更に構成され、コンピュータプログラムコードは、少なくとも1つのプロセッサに、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定したことに基づいて、タスク及びワークフローのうちの少なくとも1つの入力を、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けさせるように構成された関連付けコードを更に含む。
【0021】
例示的な実施形態によれば、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定するステップは、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれに対する識別子及びポート名の少なくとも1つを判定し、そして対応する入力ポート及び出力ポートのうちの少なくとも1つの対応するポート名及びストリーム識別子の少なくとも1つを判定することを含む。
【0022】
開示された主題の更なる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう。
【図面の簡単な説明】
【0023】
【
図3】実施形態によるデコーダに関する簡略ブロック図である。
【
図4】実施形態によるエンコーダに関する簡略ブロック図である。
【
図5】実施形態によるエンコーダに関する簡略ブロック図である。
【
図6】実施形態によるエンコーダに関する簡略状態図である。
【
図7】実施形態によるピクチャに関する簡略ブロック図である。
【
図8】実施形態によるエンコーダに関する簡略ブロック図である。
【
図9】実施形態による簡略化されたフローチャートである。
【発明を実施するための形態】
【0024】
以下で説明する提案された特徴は、個別に使用することも、任意の順序で組み合わせて使用することもできる。更に、実施形態は、処理回路(例えば、1つ又は複数のプロセッサ又は1つ又は複数の集積回路)によって実装されてもよい。一例では、1つ又は複数のプロセッサは、非一時的なコンピュータ可読媒体に記憶されたプログラムを実行する。
【0025】
図1は、本開示の一実施形態による通信システム100の簡略ブロック図を示す。通信システム100は、ネットワーク105を介して相互接続された少なくとも2つの端末102及び103を含むことができる。データの一方向送信の場合、第1の端末103は、ネットワーク105を介して他方の端末102に送信するために、ローカル位置でビデオデータを符号化することができる。第2の端末102は、ネットワーク105から他方の端末の符号化ビデオデータを受信し、そして符号化データをデコードして復元されたビデオデータを表示することができる。一方向データ送信は、メディアサービングアプリケーションなどにおいて一般的である可能性がある。
【0026】
図1は、例えば、ビデオ会議中に発生する可能性のある符号化ビデオの双方向送信をサポートするために提供される第2の対の端末101及び104を示す。データの双方向送信の場合、各端末101及び104は、ネットワーク105を介して他方の端末に送信するために、ローカル位置でキャプチャされたビデオデータを符号化することができる。各端末101及び104はまた、他方の端末によって送信された符号化ビデオデータを受信し、符号化データをデコードし、そしてローカルディスプレイデバイスで復元されたビデオデータを表示することができる。
【0027】
図1において、端末101、102、103及び104は、サーバ、パーソナルコンピュータ、及びスマートフォンとして示され得るが、本開示の原理は、そのように限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤー、及び/又は専用ビデオ会議装置に適用することができる。ネットワーク105は、例えば、有線及び/又は無線通信ネットワークを含めて、端末101、102、103及び104の間で符号化ビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク105は、回線交換チャネル及び/又はパケット交換チャネルでデータを交換することができる。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク、及び/又はインターネットが含まれる。本議論の目的のために、ネットワーク105のアーキテクチャ及びトポロジーは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない可能性がある。
【0028】
図2は、開示された主題の適用の一例として、ストリーミング環境におけるビデオエンコーダ及びデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTV、CD、DVD、メモリースティックなどを含むデジタル媒体への圧縮ビデオの保存などを含めて、他のビデオ対応アプリケーションにも同様に適用可能である。
【0029】
ストリーミングシステムは、例えば、非圧縮ビデオサンプルストリーム213を作成するビデオソース201、例えばデジタルカメラを含むことができるキャプチャサブシステム203を含み得る。そのサンプルストリーム213は、エンコードされたビデオビットストリームと比較した場合、高いデータ量として強調されてもよく、またカメラ201に結合されたエンコーダ202によって処理することができる。エンコーダ202は、以下でより詳細に説明されるように、開示された主題の態様を可能にするか又は実施するために、ハードウェア、ソフトウェア、又はそれらの組み合わせを含むことができる。エンコードされたビデオビットストリーム204は、サンプルストリームと比較した場合に、より低いデータ量として強調されてもよく、また将来の使用のためにストリーミングサーバ205に記憶することができる。1つ又は複数のストリーミングクライアント212及び207は、ストリーミングサーバ205にアクセスして、エンコードされたビデオビットストリーム204のコピー208及び206を検索することができる。クライアント212は、エンコードされたビデオビットストリーム208の着信コピーをデコードし、そしてディスプレイ209又は他のレンダリングデバイス(図示せず)上にレンダリングされ得る発信ビデオサンプルストリーム210を作成するビデオデコーダ211を含むことができる。一部のストリーミングシステムでは、ビデオビットストリーム204、206及び208は、特定のビデオコーディング/圧縮規格に従ってエンコードすることができる。これらの規格の例は、上記に記載されており、本明細書で更に説明される。
【0030】
図3は、本発明の一実施形態によるビデオデコーダ300の機能ブロック図であり得る。
【0031】
受信機302は、デコーダ300によってデコードされるべき1つ又は複数の符号化ビデオシーケンスを、同じ又は別の実施形態では、一度に1つの符号化ビデオシーケンスで受信することができ、ここで、各符号化ビデオシーケンスのデコードは他の符号化ビデオシーケンスから独立している。符号化ビデオシーケンスは、チャネル301から受信されてもよく、チャネルは、エンコードされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであり得る。受信機302は、エンコードされたビデオデータを、他のデータ、例えば、符号化オーディオデータ及び/又は補助データストリームと共に受信することができ、これらのデータは、それぞれの使用エンティティ(図示せず)に転送され得る。受信機302は、符号化ビデオシーケンスを他のデータから分離することができる。ネットワークジッターに対処するために、バッファメモリ303は、受信機302とエントロピーデコーダ/パーサ304(以降、「パーサ」)との間に結合されてもよい。受信機302が十分な帯域幅及び可制御性を有するストア/フォワードデバイスから、又は等同期ネットワークからデータを受信しているとき、バッファ303は使用されなくてもよく、又は小さくてもよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファ303が必要とされる場合があり、それは、比較的大きくてもよく、有利には適応可能なサイズであってもよい。
【0032】
ビデオデコーダ300は、エントロピー符号化ビデオシーケンスからシンボル313を再構成するためのパーサ304を含んでもよい。これらのシンボルのカテゴリには、デコーダ300の動作を管理するために使用される情報と、デコーダの不可欠な部分ではないがデコーダに結合することができるディスプレイ312などのレンダリングデバイスを制御するための潜在的な情報とが含まれる。レンダリングデバイス用の制御情報は、例えば、補足強化情報(SEI)メッセージ又はビデオユーザビリティ情報パラメータセットフラグメント(図示せず)の形式であってもよい。パーサ304は、受信した符号化ビデオシーケンスを解析/エントロピーデコードすることができる。符号化ビデオシーケンスのコーディングは、ビデオコーディング技術又は規格に従うことができ、また、可変長コーディング、ハフマンコーディング、コンテキスト感度を伴う又は伴わない算術コーディングなどを含めて、当業者に周知の原理に従うことができる。パーサ304は、グループに対応する少なくとも1つのパラメータに基づいて、符号化ビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループの少なくとも1つ用のサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。エントロピーデコーダ/パーサはまた、符号化ビデオシーケンス情報から変換係数、量子化器パラメータ値、動きベクトルなどを抽出することができる。
【0033】
パーサ304は、バッファ303から受信したビデオシーケンスに対してエントロピーデコード/解析動作を実行して、シンボル313を作成することができる。パーサ304は、エンコードされたデータを受信し、そして特定のシンボル313を選択的にデコードすることができる。更に、パーサ304は、特定のシンボル313が動き補償予測ユニット306、スケーラ/逆変換ユニット305、イントラ予測ユニット307、又はループフィルタ311に提供されるか否かを判定することができる。
【0034】
シンボル313の再構成には、符号化ビデオピクチャ又はその一部(例えば、インターピクチャ及びイントラピクチャ、インターブロック及びイントラブロック)のタイプ、及び他の要因に応じて、複数の異なるユニットが関与する可能性がある。どのユニットが関与するか、及びどのように関与するかは、パーサ304によって符号化ビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ304と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、分かりやすくするために示されていない。
【0035】
既に述べた機能ブロックのほか、デコーダ300は、以下に説明されるように、概念的にいくつかの機能ユニットに再分割することができる。商業的制約の下で動作する実際の実装では、これらのユニットの多くは互いに密接に相互作用し、また少なくとも部分的に互いに統合することができる。しかしながら、開示された主題を説明する目的では、以下の機能ユニットへの概念的な再分割が適切である。
【0036】
第1のユニットは、スケーラ/逆変換ユニット305である。スケーラ/逆変換ユニット305は、パーサ304から、量子化された変換係数、並びに使用する変換、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報をシンボル313として受信する。 それは、アグリゲータ310に入力することができるサンプル値を含むブロックを出力することができる。
【0037】
場合によっては、スケーラ/逆変換ユニット305の出力サンプルは、イントラ符号化ブロック、即ち、以前に再構成されたピクチャからの予測情報を使用しないが、現在ピクチャの以前に再構成された部分からの予測情報を使用できるブロックに関連する可能性がある。そのような予測情報は、イントラピクチャ予測ユニット307によって提供することができる。場合によっては、イントラピクチャ予測ユニット307は、現在の(部分的に再構成された)ピクチャ309からフェッチされた周囲の既に再構成された情報を用いて、再構成中のブロックと同じサイズ及び形状のブロックを生成する。アグリゲータ310は、場合によっては、サンプルごとに、イントラ予測ユニット307が生成した予測情報を、スケーラ/逆変換ユニット305によって提供された出力サンプル情報に追加する。
【0038】
他の場合には、スケーラ/逆変換ユニット305の出力サンプルは、インター符号化され、潜在的に動き補償されたブロックに関連する可能性がある。そのような場合、動き補償予測ユニット306は、参照ピクチャメモリ308にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル313に従ってフェッチされたサンプルを動き補償した後、アグリゲータ310によってこれらのサンプルをスケーラ/逆変換ユニットの出力に追加して(この場合、残差サンプル又は残差信号と呼ばれる)、出力サンプル情報を生成することができる。動き補償ユニットが予測サンプルをフェッチする参照ピクチャメモリ内のアドレスは、動きベクトルによって制御することができ、動きベクトルは、例えば、X、Y、及び参照ピクチャ成分を有することができるシンボル313の形式で動き補償ユニットに利用可能である。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリからフェッチされたサンプル値の補間、動きベクトル予測メカニズムなどを含むことができる。
【0039】
アグリゲータ310の出力サンプルは、ループフィルタユニット311において様々なループフィルタリング技術を受けることができる。ビデオ圧縮技術は、インループフィルタ技術を含むことができ、これは、符号化ビデオビットストリームに含まれているパラメータによって制御され、パーサ304からのシンボル313としてループフィルタユニット311に利用可能にされるが、符号化ピクチャ又は符号化ビデオシーケンスの前の(デコード順の)部分のデコード中に得られたメタ情報に応答するだけでなく、以前に再構成及びループフィルタリングされたサンプル値に応答することもできる。
【0040】
ループフィルタユニット311の出力は、レンダリングデバイス312に出力され得るだけでなく、将来のインターピクチャ予測に使用するために参照ピクチャメモリに記憶され得るサンプルストリームであり得る。
【0041】
特定の符号化ピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用することができる。符号化ピクチャが完全に再構成され、また符号化ピクチャが参照ピクチャとして識別されると(例えば、パーサ304によって)、現在の参照ピクチャ309は参照ピクチャバッファ208の一部になることができ、そして次の符号化ピクチャの再構成を開始する前に、新しい現在ピクチャメモリを再割り当てすることができる。
【0042】
ビデオデコーダ300は、ITU-T Rec.H.265などの規格に文書化され得る所定のビデオ圧縮技術に従ってデコード動作を実行することができる。符号化ビデオシーケンスは、ビデオ圧縮技術文書又は規格、特にその中のプロファイル文書で指定されているように、ビデオ圧縮技術又は規格の構文に準拠するという意味で、使用されているビデオ圧縮技術又は規格によって指定された構文に準拠することができる。また、準拠のために、符号化ビデオシーケンスの複雑さは、ビデオ圧縮技術又は規格のレベルによって定義された範囲内であることも必要である。場合によっては、レベルによって、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、1秒あたりのメガサンプルで測定)、最大参照ピクチャサイズなどが制限される。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様及び符号化ビデオシーケンスで通知されるHRDバッファ管理用のメタデータによって更に制限されることがある。
【0043】
一実施形態では、受信機302は、エンコードされたビデオと共に追加の(冗長)データを受信することができる。追加のデータは、符号化ビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコードするため、及び/又は元のビデオデータをより正確に再構成するために、ビデオデコーダ300によって使用され得る。追加のデータは、例えば、時間的、空間的、又は信号対雑音比(SNR)強化層、冗長スライス、冗長ピクチャ、前方誤り訂正コードなどの形式であり得る。
【0044】
図4は、本開示の一実施形態によるビデオエンコーダ400の機能ブロック図であり得る。
【0045】
ビデオエンコーダ400は、エンコーダ400によって符号化されるべきビデオ画像をキャプチャすることができるビデオソース401(エンコーダの一部ではない)からビデオサンプルを受信することができる。
【0046】
ビデオソース401は、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット…)、任意の色空間(例えば、BT.601 Y CrCB、RGB…)、及び任意の適切なサンプリング構造(例えば、Y CrCB 4:2:0、Y CrCB 4:4:4)であり得るデジタルビデオサンプルストリームの形式で、エンコーダ(400)によって符号化されるべきソースビデオシーケンスを提供することができる。メディアサービングシステムでは、ビデオソース401は、以前に準備されたビデオを記憶する記憶装置であってもよい。ビデオ会議システムでは、ビデオソース401は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであってもよい。ビデオデータは、順番に見たときに動きを与える複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、ピクセルの空間配列として編成することができ、各ピクセルは、使用中のサンプリング構造、色空間などに応じて、1つ又は複数のサンプルを含むことができる。当業者は、ピクセルとサンプルとの間の関係を容易に理解することができる。以下の説明では、サンプルに焦点を当てる。
【0047】
一実施形態によれば、エンコーダ400は、リアルタイムで、又はアプリケーションによって必要とされる他の任意の時間制約の下で、ソースビデオシーケンスのピクチャを符号化し、符号化ビデオシーケンス410に圧縮することができる。適切なコーディング速度を適用することは、コントローラ402の1つの機能である。コントローラは、以下に説明されるように他の機能ユニットを制御し、またこれらのユニットに機能的に結合される。分かりやすくするために、結合は示されていない。コントローラによって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値…)、ピクチャサイズ、ピクチャグループ(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。当業者は、特定のシステム設計用に最適化されたビデオエンコーダ400に関係する可能性があるため、コントローラ402の他の機能を容易に特定することができる。
【0048】
一部のビデオエンコーダは、当業者が「コーディングループ」として容易に認識できるもので動作する。過度に単純化された説明として、コーディングループは、エンコーダ402(以降、「ソースコーダ」)のエンコーディング部分(符号化されるべき入力ピクチャ及び参照ピクチャに基づいてシンボルを作成する役割を果たす)と、シンボルを再構成してサンプルデータを作成するエンコーダ400に埋め込まれた(ローカル)デコーダ406とから構成することができ、(シンボルと符号化ビデオビットストリームとの間の圧縮が、開示された主題で検討されているビデオ圧縮技術において可逆であるため)(リモート)デコーダもそのサンプルデータを作成する。その再構成されたサンプルストリームは、参照ピクチャメモリ405に入力される。シンボルストリームのデコードにより、デコーダの位置(ローカル又はリモート)に関係なくビットエグザクト結果が得られるため、参照ピクチャバッファのコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビットエグザクトである。言い換えれば、エンコーダの予測部分は、デコード中に予測を使用するときにデコーダが「見る」のとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(及び、例えばチャネルエラーのために同期性を維持できない場合、結果として生じるドリフト)のこの基本原理は、当業者に知られている。
【0049】
「ローカル」デコーダ406の動作は、「リモート」デコーダ300の動作と同じであってもよく、これは、
図3に関連して上記で既に詳細に説明されている。しかし、
図4も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ408及びパーサ304による符号化ビデオシーケンスへのシンボルのエンコード/デコードは可逆であり得るため、チャネル301、受信機302、バッファ303、及びパーサ304を含むデコーダ300のエントロピーデコード部分は、ローカルデコーダ406に完全に実装されていない可能性がある。
【0050】
この時点で行うことができる観察は、デコーダに存在する解析/エントロピーデコードを除くいかなるデコーダ技術も、対応するエンコーダ内に実質的に同一の機能形態で存在する必要があるということである。エンコーダ技術の説明は、それらが包括的に説明されているデコーダ技術の逆である可能性があるため、省略することができる。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
【0051】
その動作の一部として、ソースコーダ403は、動き補償予測コーディングを実行することができ、これは、「参照フレーム」として指定されたビデオシーケンスからの1つ又は複数の以前に符号化されたフレームを参照して入力フレームを予測的に符号化する。このようにして、コーディングエンジン407は、入力フレームのピクセルブロックと、入力フレームへの予測参照として選択され得る参照フレームのピクセルブロックとの間の差分を符号化する。
【0052】
ローカルビデオデコーダ406は、ソースコーダ403によって作成されたシンボルに基づいて、参照フレームとして指定され得るフレームの符号化ビデオデータをデコードすることができる。コーディングエンジン407の動作は、有利には、非可逆プロセスであり得る。符号化ビデオデータがビデオデコーダ(
図4には示されていない)でデコードされ得る場合、再構成されたビデオシーケンスは、通常、いくつかのエラーを伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ406は、参照フレームに対してビデオデコーダによって実行され得るデコードプロセスを複製し、再構成された参照フレームを参照ピクチャキャッシュ405に記憶させることができる。このようにして、エンコーダ400は、遠端ビデオデコーダによって取得される再構成された参照フレームとして共通の内容を有する再構成された参照フレームのコピーをローカルに記憶することができる(送信エラーがない)。
【0053】
予測器404は、コーディングエンジン407のために予測検索を実行することができる。即ち、符号化されるべき新しいフレームについて、予測器404は、参照ピクチャメモリ405を検索して、サンプルデータ(候補参照ピクセルブロックとして)又は参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを探すことができ、それらは、新しいピクチャに対する適切な予測参照として役立つことができる。予測器404は、適切な予測参照を見つけるために、ピクセルブロックごとにサンプルブロックで動作することができる。場合によっては、予測器404によって得られた検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ405に記憶された複数の参照ピクチャから抽出された予測参照を有してもよい。
【0054】
コントローラ402は、例えば、ビデオデータをエンコードするために使用されるパラメータ及びサブグループパラメータの設定を含めて、ビデオコーダ403のコーディング動作を管理することができる。
【0055】
前述のすべての機能ユニットの出力は、エントロピーコーダ408においてエントロピーコーディングを受けてもよい。エントロピーコーダは、例えばハフマンコーディング、可変長コーディング、算術コーディングなどとして当業者に知られている技術に従ってシンボルを可逆的に圧縮することによって、様々な機能ユニットによって生成されたシンボルを符号化ビデオシーケンスに変換する。
【0056】
送信機409は、エントロピーコーダ408によって作成された符号化ビデオシーケンスをバッファリングして、通信チャネル411を介した送信に備えることができ、通信チャネルは、エンコードされたビデオデータを記憶する記憶装置へのソフトウェア/ハードウェアリンクであり得る。送信機409は、ビデオコーダ403からの符号化ビデオデータを、送信されるべき他のデータ、例えば、符号化オーディオデータ及び/又は補助データストリーム(ソースは示されていない)とマージすることができる。
【0057】
コントローラ402は、エンコーダ400の動作を管理することができる。コーディング中に、コントローラ402は、各符号化ピクチャに特定の符号化ピクチャタイプを割り当てることができ、この符号化ピクチャタイプは、それぞれのピクチャに適用され得るコーディング技術に影響を与える可能性がある。例えば、ピクチャは、次のフレームタイプのいずれかとして割り当てられることが多い。
【0058】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のフレームを使用することなく符号化及びデコードされ得るものであり得る。一部のビデオコーデックでは、例えば、独立デコーダリフレッシュピクチャを含めて、様々なタイプのイントラピクチャが可能である。当業者は、Iピクチャのそれらの変形並びにそれらのそれぞれの用途及び特徴を知っている。
【0059】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大で1つの動きベクトル及び参照インデックスを使用するイントラ予測又はインター予測を用いて符号化及びデコードされ得るものであり得る。
【0060】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大で2つの動きベクトル及び参照インデックスを使用するイントラ予測又はインター予測を用いて符号化及びデコードされ得るものであり得る。同様に、複数の予測ピクチャは、単一のブロックの再構成のために3つ以上の参照ピクチャ及び関連するメタデータを使用することができる。
【0061】
ソースピクチャは、一般に、空間的に複数のサンプルブロック(例えば、それぞれ4x4、8x8、4x8、又は16x16サンプルのブロック)に再分割され、ブロックごとに符号化されてもよい。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定された他の(既に符号化された)ブロックを参照して予測的に符号化されてもよい。例えば、Iピクチャのブロックは、非予測的に符号化されてもよく、又はそれらは、同じピクチャの既に符号化されたブロックを参照して予測的に符号化されてもよい(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、以前に符号化された1つの参照ピクチャを参照して、空間予測を介して、又は時間予測を介して非予測的に符号化されてもよい。Bピクチャのブロックは、以前に符号化された1つ又は2つの参照ピクチャを参照して、空間予測を介して、又は時間予測を介して、非予測的に符号化されてもよい。
【0062】
ビデオコーダ400は、ITU-T Rec.H.265などの所定のビデオコーディング技術又は規格に従ってコーディング動作を実行することができる。その動作において、ビデオコーダ400は、入力ビデオシーケンスにおける時間的及び空間的冗長性を利用する予測コーディング動作を含めて、様々な圧縮動作を実行することができる。したがって、符号化ビデオデータは、使用されているビデオコーディング技術又は規格によって指定された構文に準拠することができる。
【0063】
一実施形態では、送信機409は、エンコードされたビデオと共に追加のデータを送信することができる。ビデオコーダ403は、符号化ビデオシーケンスの一部としてそのようなデータを含むことができる。追加データは、時間/空間/SNR強化層、冗長ピクチャ及びスライスなどの他の形式の冗長データ、補足強化情報(SEI)メッセージ、ビジュアルユーザビリティ情報(VUI)パラメータセットフラグメントなどを含むことができる。
【0064】
図5は、本明細書の実施形態によるMPEGネットワークベースのメディア処理(NBMP)アーキテクチャ500を示し、これは、クラウド処理に関して実装されてもよく、これにより、異なるネットワークエンティティ、MPE、ソース、又はシンク間でワークフローを分割する品質を決定して利用することができ、したがって、以下に説明されるようにパブリッククラウドサービス、プライベートクラウドサービス又はハイブリッドクラウドサービスを活用することができる。NBMPアーキテクチャ500は、NBMPワークフローAPI及びワークフロー記述511をNBMPワークフローマネージャ513に提供するNBMPソース501を含む。NBMPワークフローマネージャ513は、関数発見API及び関数記述512を関数リポジトリ503と通信することができ、関数リポジトリ503はまた、関数発見API及び関数記述502をNBMPソース501と通信することができる。
【0065】
更に、
図5では、NBMPワークフローマネージャは、NBMPタスクAPI及び現在のタスクの状態と構成を報告するタスクなどを、ランタイム構成/ストリーム/イベントバインディングエンティティとして動作し得るメディア処理エンティティ(MPE)505と通信することができる。例えば、メディアソース504は、1つ又は複数のメディアフロー514を、MPE505の1つ又は複数のタスク521及び522に提供することができ、これらはまた、複数のメディアフロー514に対してそれぞれ並列化されてもよい。MPE505は、1つ又は複数のメディアフロー515をメディアシンク506と通信することができる。
【0066】
更に、
図5において、NBMPソース501、NBMPワークフローマネージャ513、関数リポジトリ503及びMPE505の間の通信は、制御フローと見なされてもよく、メディアソース504、MPE505、及びメディアシンク506の間の通信は、データフローと見なされてもよい。
【0067】
例示的な実施形態によれば、ワークフロー記述511の入力及び出力は、入力及び出力記述子によって記述され、例示的な実施形態によれば、ワークフローの関数インスタンス間の相互接続は、処理記述子の接続マップ配列において定義されてもよく、それにより、対応するオブジェクトが以下の表1~表3に示される。
【表1】
【表2】
【表3】
【0068】
例示的な実施形態によれば、オブジェクトfrom及びtoは、表4に定義されている。
【表4】
【0069】
図6は、例示的な実施形態によるタスクライフサイクル状態
図600を示す。例えば、インスタンス化状態601に対してonInstantiation信号611を受信することができる。インスタンス化状態601は、onTaskConfiguration信号612によってアイドル状態602に移行することができ、アイドル状態602は、onReset信号617によってインスタンス化状態601に戻ることができる。アイドル状態602は、onTaskConfiguration信号613によってループすることもでき、またonStart信号614によって実行状態603に移行することもできる。実行状態603は、onTaskConfiguration信号615によってループすることができ、またonStop信号及び/又はonCompletion信号616によってアイドル状態602に移行することができる。実行状態603はまた、onError信号623によってエラー状態604に移行することができ、またエラー状態604は、それぞれonErrorHandling信号624、onReset信号625、及びonTermination信号626によってアイドル状態602、インスタンス化状態601、及び破壊状態605に移行することができる。更に、実行状態603、アイドル状態602、及びインスタンス化状態601はそれぞれ、onTermination信号621、onTermination信号622、及びonTermination信号611によって破壊状態605に移行することができる。
【0070】
例示的な実施形態によれば、onStop信号及びonCompletion信号を追加することもできる。例えば、onStop信号は、メディアデータ又はメタデータがMPE505に到着するのを停止するとき、例えば、タスク521及び/又はタスク522が、その状態を実行状態603からアイドル状態602に移行させなければならないことを示すことができる。更に、例えば、onCompletion信号は、MPE505などで処理が完了すると、タスク521及び/又はタスク522が、その状態を実行状態603からアイドル状態602に移行させなければならないことを示すことができる。例示的な実施形態によれば、そのような特徴は、MPE505に提供されるだけでなく、少なくともそれらの状態、実行状態603とアイドル状態602との間の移行もワークフローマネージャ513に提供されてもよい。
【0071】
例示的な実施形態によれば、NBMP入力記述子及びパラメータは、以下の表5~表7に関して説明されるようなタイムアウトパラメータを用いて(例えば、入力記述子へのタイムアウトの例示的な追加によって)提供及び拡張することができる。
【表5】
【表6】
【0072】
タイムアウトパラメータは、実施形態によれば、表7のように定義することができる。
【表7】
【0073】
図7は、入力i1並びに複数の出力o1、o2、o3、及びo4を有するワークフロー記述子700の例示的な実施形態を示すが、そのような入力及び出力の数は、実施形態に応じて変更されてもよい。同様に、
図8は、出力t1、t2、t3、及びt4をそれぞれ有する複数のタスクT1、T2、T3、及び別のT3に分割された入力I1を有するタスクT0を有するタスク
図800の例示的な実施形態を示すが、そのような入力及び出力の数は、実施形態に応じて変更されてもよい。しかしながら、ワークフロー記述子700及びタスク
図800を見ると、(o1、o2、o3、o4)と(t1、t2、t3、t4)との間の関連付けについての記述の欠如に関する技術的問題がある。したがって、実施形態は、以下の表8及び表9に提供される情報を参照し、それらに依拠することができる。
【表8】
【0074】
実施形態によれば、オブジェクトfrom及びtoは、表9に定義されており、表3に以前に提供された定義を置き換えることができる。
【表9】
【0075】
図9は、例示的な実施形態による簡略化されたフローチャート900を示す。S901において、入力情報及び出力情報を受信する。
【0076】
S902において、インスタンスを取得する。例えば、タスク及びワークフローのいずれか1つ又は複数の1つ又は複数の入力及び/又は出力を取得することができる。
【0077】
S903において、マッピングする。
図7及び
図8に関して説明した例の中の関数インスタンス間の接続を定義することができるが、技術的問題として、ワークフローのどの入力が特定の関数インスタンスの入力に関連付けられているか、ワークフローのどの出力が特定の関数インスタンスの出力に関連付けられているかが明確でない場合がある。これは、接続マップが関数間の接続のみを定義し、関数インスタンスとワークフローの入力/出力との間の接続を定義していないという事実が原因である可能性がある。ワークフロー入力/出力がすべての最初又は最後の関数の中で異なる場合、ワークフローマネージャ513は、すべての入力/出力間の各入力/出力の一意性により、関連付けを見つけることができるが、ワークフローに同じ記述(ストリームidのみが異なる)を有する複数の入力/出力が含まれている場合、ワークフローの入力/出力に対して適切な関数入力/出力を識別するには曖昧さがある。言い換えれば、ワークフロー入力と出力を特定の関数入力と出力に割り当てることには曖昧さがある。そのような場合の例が
図7及び
図8に示されており、これは、本明細書の技術的解決策により解決される。
【0078】
例えば、S903において、実施形態は、接続マップにワークフロー入力/出力を含め、即ち、接続マップは、ワークフローのすべての入力及び出力を含むものとする。例えば、port-nameを関数idとして使用し、stream-idをインスタンスとして使用することができる。更に、例えば、以下のテキストなどを表8に含めることができる。
connection-mapオブジェクトの配列は、メディアワークフローDAG、即ち、グラフ内の異なるタスク間の接続情報を記述する。DAGのエッジを表すこの配列の各要素は、表8に定義されており、表3の定義を置き換えることができる。
【0079】
更に、例示的な実施形態によれば、表8はまた、一般記述子のすべての入力ポートと出力ポートを、それぞれ「from」と「to」オブジェクトの形式で含む必要があり(入力ポートごとに1つの「from」オブジェクト、出力ポートごとに1つの「to」オブジェクト)、例えば、対応する各ワークフロー入力/出力の「id」と「port-name」は、一般記述子の対応する入力ポート/出力ポートの対応する「port-name」と「stream-id」に設定する必要がある。そのような接続の場合、フロー制御パラメータ、併置フラグ、及び他のパラメータは無視されてもよく、そのような例示的な実施形態では、そこに含まれないことに留意されたい。
【0080】
したがって、S903において、タスク及びワークフローのうちの少なくとも1つの入力が、関数の入力及び出力のうちの少なくとも1つに関連付けられるか否かを判定し、タスク及びワークフローのうちの少なくとも1つの入力が、関数の入力及び出力のうちの少なくとも1つに関連付けられると判定したことに応じて、タスク及びワークフローのうちの少なくとも1つの入力を、関数の入力及び出力のうちの少なくとも1つに関連付ける。これはまた、タスク及びワークフローのうちの少なくとも1つの、前記入力を含む複数の入力を取得することに関してであってもよく、それにより、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定し、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定したことに基づいて、タスク及びワークフローのうちの少なくとも1つの入力を、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付ける。例えば、例示的な実施形態によれば、そのような判定は、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれが、1つ又は複数の関数の入力及び出力のうちの少なくとも1つにそれぞれ関連付けられるか否かを判定することを含み、これは、タスク及びワークフローのうちの少なくとも1つの入力のそれぞれに対する識別子及びポート名の少なくとも1つを判定し、そして対応する入力ポート及び出力ポートのうちの少なくとも1つの対応するポート名及びストリーム識別子の少なくとも1つを判定することを含む。
【0081】
S904において、例えば、タスク及びワークフローのうちの少なくとも1つの入力のいずれかのタイムアウトを設定する。S904及びS903の特徴は、並列に又は順番に実装されてもよく、したがって、本明細書では、各ワークフロー入力及び出力を、関連する個々の関数の入力及び出力に関連付けるための方法が開示されており、ここで、ワークフローの各入力又は出力は、接続マップグラフを用いて、ワークフローの関数インスタンス/タスクの入力又は出力の1つに接続され、各入力及び出力は明確に識別することができ、これは、上記の技術的問題に対する技術的解決策を表す。
【0082】
S905において、1つ又は複数のタスクなどの動作を実行する。しかしながら、追加の技術的問題として、タスク又はワークフローは、その入力内のデータが完了しているか否かを判定することができない可能性がある。したがって、「onStop、メディアデータ又はメタデータの到着が停止すると、タスクはその状態を実行状態からアイドル状態に移行させなければならない」などのNBMP仕様のステートメントは、タスク又はワークフローにデータが停止しているか否かを判定するためのルールがない可能性があるため、技術的に不十分である可能性がある。
【0083】
したがって、例示的な実施形態によれば、タスク又はワークフローが入力の到着が停止したか否かを認識するなどの問題に対する技術的解決策があり、各入力に対して、「Timeout:入力でデータが受信されない場合、入力データが完了したと見なされる時間間隔」及び「Complete:「true」に設定されている場合、この入力にそれ以上のデータが到着せず、入力データが完了したと見なされることを意味する入力フラグ」という追加の2つのパラメータが定義され、したがって、タイムアウトパラメータは、S904において、ワークフローの入力に対してNBMPソースによって設定されるか、又はタスクの入力に対してワークフローマネージャによって設定されてもよい。次に、ワークフロー又はタスクは入力を監視し、タイムアウトの期間中にデータが到着しなくなるとすぐに、データが停止したと結論付けることができる。
【0084】
S906において、1つ又は複数のフラグが受信されたか否かを考慮し、受信されなかった場合、処理は、そのような1つ又は複数のフラグをチェックし続けることができる。したがって、S906において、完了した入力において、入力用のフラグがあるか否かを考慮することができ、メディアソース又は接続タスクにデータがない場合、このフラグを「true」に設定し、それにより、ワークフロー又はタスクはこの入力の追加データを受信しないことを認識する。したがって、上記の表6では、追加されたNBMP入力記述子及びパラメータは、タイムアウトパラメータを用いて拡張されたため、技術的な利点がある。したがって、各メディア又はメタデータ入力に対して、各関数が入力パラメータを定義することができるように、入力用の完了フラグがあり得り、パラメータ「complete flag」は、「true」に設定されると、入力が完了しており、即ち、この入力に追加のデータが受信されないように定義されてもよい。S907において、アイドル状態が存在するか否かを考慮し、存在しない場合、処理は、そのような状態をチェックし続けることができる。S908において、状態を変更するか否かを考慮し、変更しない場合、処理は、その状態を変更するか否かを続けることができる。S909において、処理を終了するか否かを考慮し、終了しない場合、処理を継続することができる。S910において、そのような処理を終了し、次に、S901に進んで入力及び出力のいずれかが更に受信されるのを待つ。したがって、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、入力のデータの欠如を監視したか否かを判定し、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、入力のデータの欠如を監視したことに応じて、入力の更なるデータが利用できないと判定し、タスク及びワークフローのうちの少なくとも1つの状態が実行状態に設定されているか否かを判定し、状態が実行状態に設定されていると判定した場合、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、入力のデータの欠如を監視したか否かに基づいて、状態を実行状態からアイドル状態に変更するか否かを判定する。また、入力が表示を含むか否かを判定し、入力が表示を含むと判定したことに応じて、入力の更なるデータが利用できないと判定する。そのような表示は、タスク及びワークフローのうちの少なくとも1つの入力と共に含まれている入力完了フラグを含んでもよく、又は、タスク及びワークフローのうちの少なくとも1つの入力と共に提供されたメタデータとして提供されてもよい。
【0085】
更に、S906及びS907のいずれかで判定されたタイムアウトパラメータ及び完了フラグに基づいて、
図6に示すような状態の変更によって、更に拡張することができ、例えば、S908において「onStop、すべてのメディアデータ又はメタデータの到着が停止すると(すべての入力でタイムアウト値又は「true」に設定された完了フラグ、あるいはこれら2つの任意の組み合わせを監視し、受信した入力の処理を完了することによって)、実行状態からアイドル状態に移行すべきである」など、及び「onCompletion、処理が完了すると(すべての入力でタイムアウト値又は「true」に設定された完了フラグ、あるいはこれら2つの任意の組み合わせを監視し、受信した入力の処理を完了することによって)、実行状態からアイドル状態に移行すべきである」などのいずれかが存在するか否かを考慮する。例示的な実施形態によれば、本明細書におけるそのようなステートメントは、タスク及びワークフローの両方を含めて、タスク及びワークフローのいずれかに適用することができる。したがって、S901において、タスク及びワークフローの少なくとも1つの、前記入力を含む複数の入力を取得することに関して、S906及びS907のいずれかに応答して、又はS908において独立して、例えば、S907でタスク及びワークフローのうちの少なくとも1つのすべての入力が、タイムアウトに等しい期間、すべての入力のデータの欠如を監視したか否かを追加的に判定することに関して、タスク及びワークフローのうちの少なくとも1つの状態が実行状態に設定されているか否かを判定することができ、そして、S908で状態が実行状態に設定されていると判定した場合、タスク及びワークフローのうちの少なくとも1つが、S906及びS907のいずれかの結果に基づくすべての入力のタイムアウトに等しい期間、入力のデータの欠如を監視したか否かに基づいて、状態を実行状態からアイドル状態に変更するか否かを判定することができる。例えば、タスク及びワークフローのうちの少なくとも1つが、タイムアウトに等しい期間、すべての入力のデータの欠如を監視したか否かを判定することは、タスク及びワークフローのうちの少なくとも1つの入力の少なくとも1つが、S907におけるタイムアウト表示及び/又はS906における完了表示のいずれかを示すか否かを判定することによって行うことができる。
【0086】
したがって、タスク又はワークフローの各入力に対してタイムアウトを設定する方法により、タスク又はワークフローが、タイムアウトに等しい期間、その対応する入力でデータを監視しなかった場合、タスク又はワークフローは、その入力に利用可能なデータがそれ以上ないと結論づけることができ、メディア、メタデータ、又は他の任意の入力に対する入力の入力完了フラグを使用して、追加の入力データが利用可能でないことを通知する方法により、データ送信エンティティは、この入力にデータが送信されないことをタスク又はワークフローに通知することができ、それによりタスク又はワークフローは、これ以上のデータが到着しないと結論づけることができ、すべての入力のタイムアウト及びそのすべての入力のすべての完了フラグの監視に基づいて、タスク又はワークフローの状態を実行状態からアイドル状態に変更する方法により、すべてのタスク又はワークフローの入力がタイムアウト又は完了状態のいずれか場合、タスク又はワークフローはその状態を実行状態からアイドル状態に変更する必要があり、これらの方法を提供するこのような特徴には技術的な利点があり、そうでなければ、これらの方法は、本明細書の実施形態によって記載されるように有利に解決されるそのような技術的問題を考慮すると、少なくともNBMP実装などでは、利用できなかったであろう。
【0087】
したがって、上記のS906~S909に関する任意の更新に基づいて、S905において、入力の更なるデータが利用できないと判定したことに基づいて、NBMPにおけるタスク及びワークフローのうちの少なくとも1つに更新を適用することができ、それにより、NBMPにおけるタスク及びワークフローのうちの少なくとも1つの処理は更新に基づいて進む。
【0088】
上記の技術は、コンピュータ可読命令を使用し、かつ1つ又は複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実装することができる。例えば、
図10は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム1000を示す。
【0089】
コンピュータソフトウェアは、任意の適切な機械語又はコンピュータ言語を使用して符号化することができ、これらは、アセンブリ、コンパイル、リンク、又は同様のメカニズムを受けて、コンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって直接、又は解釈、マイクロコード実行などを通じて実行できる命令を含むコードを作成することができる。
【0090】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム装置、モノのインターネット装置などを含めて、様々なタイプのコンピュータ又はその構成要素上で実行することができる。
【0091】
コンピュータシステム1000について
図10に示されている構成要素は、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用範囲又は機能に関するいかなる限定も示唆することを意図するものではない。また、構成要素の構成は、コンピュータシステム1000の例示的な実施形態に示されている構成要素のいずれか1つ又は組み合わせに関連する依存性又は要件を有すると解釈されるべきではない。
【0092】
コンピュータシステム1000は、特定のヒューマンインターフェース入力デバイスを含むことができる。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(声、拍手など)、視覚入力(ジェスチャーなど)、嗅覚入力(図示せず)を介して、1人以上の人間ユーザによる入力に応答することができる。ヒューマンインターフェースデバイスはまた、オーディオ(音声、音楽、周囲音など)、画像(走査画像、静止画像カメラから取得した写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定のメディアをキャプチャするために使用することができる。
【0093】
入力ヒューマンインターフェースデバイスは、キーボード1001、マウス1002、トラックパッド1003、タッチスクリーン1010、ジョイスティック1005、マイクロフォン1006、スキャナ1008、及びカメラ1007のうちの1つ以上を含むことができる(それぞれのうちの1つのみを示す)。
【0094】
コンピュータシステム1000はまた、特定のヒューマンインターフェース出力デバイスを含むことができる。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、及び匂い/味覚を通じて、1人以上の人間ユーザの感覚を刺激することができる。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン1010、又はジョイスティック1005による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(スピーカ1009、ヘッドフォン(図示せず)など)、視覚出力デバイス(それぞれがタッチスクリーン入力機能を有する又は有せず、それぞれが触覚フィードバック機能を有する又は有せず、一部がステレオグラフィック出力などの手段を介して2次元視覚出力又は3次元以上の出力を出力することができる、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン1010、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)など)、及びプリンタ(図示せず)を含むことができる。
【0095】
コンピュータシステム1000はまた、人間がアクセス可能な記憶装置、及びCD/DVD1011付きのCD/DVD ROM/RW1020を含む光学媒体又は同様の媒体、サムドライブ1022、リムーバブルハードドライブ又はソリッドステートドライブ1023、テープ及びフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの特殊なROM/ASIC/PLDベースのデバイス(図示せず)などの関連する媒体を含むことができる。
【0096】
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、又は他の一時的な信号を包含しないことを理解すべきである。
【0097】
コンピュータシステム1000はまた、1つ又は複数の通信ネットワーク1098へのインターフェース1099を含むことができる。ネットワーク1098は、例えば、無線、有線、光であり得る。ネットワーク1098は更に、ローカル、広域、メトロポリタン、自動車及び産業用、リアルタイム、遅延耐性などであり得る。ネットワーク1098の例としては、イーサネットなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、地上波放送TVを含むTV有線又は無線広域デジタルネットワーク、CANBusを含む自動車及び産業用ネットワークなどが挙げられる。特定のネットワーク1098では一般に、特定の汎用データポート又は周辺バス(1050及び1051)(例えば、コンピュータシステム1000のUSBポートなど)に接続された外部ネットワークインターフェースアダプタが必要であり、他のネットワークは、一般に、以下に説明されるように、システムバスに接続することによってコンピュータシステム1000のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワーク1098のいずれかを使用して、コンピュータシステム1000は他のエンティティと通信することができる。そのような通信は、例えば、ローカル又は広域デジタルネットワークを使用する他のコンピュータシステムへの一方向、受信のみ(例えば、放送TV)、一方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、又は双方向であり得る。上記のように、特定のプロトコル及びプロトコルスタックをこれらのネットワーク及びネットワークインターフェースのそれぞれで使用することができる。
【0098】
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶装置、及びネットワークインターフェースは、コンピュータシステム1000のコア1040に接続することができる。
【0099】
コア1040は、1つ又は複数の中央処理装置(CPU)1041、グラフィック処理装置(GPU)1042、グラフィックアダプタ1017、フィールドプログラマブルゲートエリア(FPGA)の形態の特殊なプログラマブルプロセッシングユニット1043、特定のタスク用のハードウェアアクセラレータ1044などを含むことができる。これらのデバイスは、読み取り専用メモリ(ROM)1045、ランダムアクセスメモリ1046、ユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量記憶装置1047と共に、システムバス1048を介して接続されてもよい。一部のコンピュータシステムでは、システムバス1048は、追加のCPU、GPUなどによる拡張を可能にするために、1つ又は複数の物理プラグの形態でアクセス可能である。周辺機器は、コアのシステムバス1048に直接接続することも、周辺バス1051を介して接続することもできる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
【0100】
CPU1041、GPU1042、FPGA1043、及びアクセラレータ1044は、特定の命令を実行することができ、これらの命令は、組み合わせて前述のコンピュータコードを構成することができる。そのコンピュータコードは、ROM1045又はRAM1046に記憶することができる。移行データはRAM1046に記憶することもできるが、永久データは、例えば内部大容量記憶装置1047に記憶することができる。1つ又は複数のCPU1041、GPU1042、大容量記憶装置1047、ROM1045、RAM1046などと密接に関連付けることができるキャッシュメモリを使用することで、任意のメモリデバイスへの高速記憶及び検索を可能にすることができる。
【0101】
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものであってもよく、又はそれらは、コンピュータソフトウェア技術の当業者によく知られ、利用可能な種類のものであってもよい。
【0102】
限定ではなく、一例として、アーキテクチャ1000、具体的にはコア1040を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)が1つ又は複数の有形のコンピュータ可読媒体に具体化されたソフトウェアを実行する結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上記で紹介したユーザがアクセス可能な大容量記憶装置に関連付けられた媒体、及びコア内部大容量記憶装置1047又はROM1045などの非一時的な性質を有するコア1040の特定の記憶装置であり得る。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア1040によって実行され得る。コンピュータ可読媒体は、特定の必要に応じて、1つ又は複数のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア1040、特にその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM1046に記憶されたデータ構造を定義すること、及びソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含めて、本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。更に又は代替として、コンピュータシステムは、ソフトウェアの代わりに又はソフトウェアと共に動作して本明細書に記載の特定のプロセス又は特定のプロセスの特定の部分を実行することができる回路(例えば、アクセラレータ1044)に配線され、又は他の方法で具体化された論理の結果として機能を提供することができる。ソフトウェアへの言及は、論理を包含することができ、必要に応じてその逆も同様である。コンピュータ可読媒体への言及は、実行用のソフトウェアを記憶する回路(集積回路(IC)など)、実行用の論理を具体化する回路、又は必要に応じてその両方を包含することができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組み合わせを包含する。
【0103】
本開示は、いくつかの例示的な実施形態を説明してきたが、本開示の範囲内にある変更、変形、及び様々な置換同等物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、本開示の原理を具体化し、したがってその精神及び範囲内にある多数のシステム及び方法を考案することができることが理解されるであろう。
【符号の説明】
【0104】
100 通信システム
101、102、103、104 端末
105 ネットワーク