IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・アメリカ・エルエルシーの特許一覧

特許7574435ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム
<>
  • 特許-ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム 図1
  • 特許-ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム 図2
  • 特許-ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム 図3
  • 特許-ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム 図4
  • 特許-ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-18
(45)【発行日】2024-10-28
(54)【発明の名称】ワークフローをスケジュールするための方法、システムおよびコンピュータプログラム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20241021BHJP
【FI】
G06F9/48 300H
【請求項の数】 12
(21)【出願番号】P 2023521786
(86)(22)【出願日】2022-03-28
(65)【公表番号】
(43)【公表日】2023-10-26
(86)【国際出願番号】 US2022022117
(87)【国際公開番号】W WO2023282942
(87)【国際公開日】2023-01-12
【審査請求日】2023-04-10
(31)【優先権主張番号】63/218,809
(32)【優先日】2021-07-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/704,688
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2021/0004273(US,A1)
【文献】特表2016-507121(JP,A)
【文献】米国特許出願公開第2016/0234267(US,A1)
【文献】西田 圭介 Keisuke Nishida,WEB+DB PRESS plusシリーズ [増補改訂]ビッグデータを支える技術 ラップトップ1台で学ぶデータ基盤のしくみ 第2版 ,第2版,日本,株式会社技術評論社 片岡 巌,2021年02月25日,第5章 192-233頁,CSDB 単行本 2022-00928-001、ISBN: 978-4-297-11952-2
【文献】藤倉 俊幸 TOSHIYUKI FUJIKURA,TECH I リアルタイム/マルチタスクシステムの徹底研究 Vol.15 ,第15巻 Interface増刊,日本,CQ出版株式会社 蒲生 良治,2003年01月01日,第16,17章 165~198頁,CSDB 単行本 2004-00165-001
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
メディア処理ワークフローマネージャを実装する少なくとも1つのプロセッサによって実施される方法であって、
メディア処理ワークフローをスケジュールするためのスキームモードを示す情報を受信するステップと、
前記情報に基づいて前記スキームモードを取得するステップと、
ディアを処理するために、前記情報に示される前記スキームモードに従って実行されるべき前記メディア処理ワークフローのタスクをスケジュールするステップと
を含み、
前記情報に示される前記スキームモードは、
前記メディア処理ワークフローへの入力に対して、前記メディア処理ワークフローの各タスクが、1度に実行される必要があることを示す第1のスキームモード、
前記メディア処理ワークフローへの入力に対して、前記メディア処理ワークフローの各タスクが、所定の期間にわたって実行される必要があることを示す第2のスキームモード、
前記メディア処理ワークフローの各タスクへの入力が利用可能である場合でも、タスクをアイドル状態に留まらせる一時停止状態をトリガできることを示す第3のスキームモード、または
所定のスケジュールに従って前記メディア処理ワークフローの各タスクが開始される必要があることを示す第4のスキームモードであって、前記所定のスケジュールは前記タスクを実行するためのタイムスロットを含む、第4のスキームモード
である、方法。
【請求項2】
前記情報に示される前記スキームモードは前記第1のスキームモードである、
請求項1に記載の方法。
【請求項3】
前記情報に示される前記スキームモードは前記第2のスキームモードである、
請求項1に記載の方法。
【請求項4】
各タスクの前記所定の期間を示す追加情報を受信するステップをさらに含み、
前記メディア処理ワークフローの前記タスクをスケジュールする前記ステップは、前記追加情報に基づいて前記メディア処理ワークフローの前記タスクをスケジュールすることを含む、請求項3に記載の方法。
【請求項5】
前記情報に示される前記スキームモードは前記第3のスキームモードである、
請求項1に記載の方法。
【請求項6】
始イベントもしくは停止イベントを示す追加情報を受信すること、または
前記開始イベントもしくは前記停止イベントを生成すること
によって取得するステップをさらに含み、
前記メディア処理ワークフローの前記タスクをスケジュールする前記ステップは、前記メディア処理ワークフローの前記タスクのうち、取得された前記開始イベントに基づいて開始されるべき、または取得された前記停止イベントに基づいて停止されるべき少なくとも1つをスケジュールすることを含む、請求項5に記載の方法。
【請求項7】
前記メディア処理ワークフローの前記タスクをスケジュールする前記ステップは、前記メディア処理ワークフローの前記タスクのうちの少なくとも1つの状態を一時停止状態に変更することを含む、請求項5に記載の方法。
【請求項8】
前記情報に示される前記スキームモードは前記第4のスキームモードである、
請求項1に記載の方法。
【請求項9】
前記メディア処理ワークフローの少なくとも1つのタスクのスケジューリングモードを示す追加情報を受信するステップをさらに含み、
前記スケジューリングモードは、
前記所定のスケジュール内の前記少なくとも1つのタスクのタイムスロットが前記メディア処理ワークフローマネージャに明示的にシグナリングされることを示す第1のスケジューリングモード、または
メディア処理ワークフローマネージャが、開始、終了、増分、および継続期間に基づく計算によってタイムスロットを取得することを示す第2のスケジューリングモード
のうちの1つである、請求項8に記載の方法。
【請求項10】
前記メディア処理ワークフローマネージャが前記スキームモードをサポートするかを示す情報を送信するステップ
をさらに含む、請求項1~9のいずれか一項に記載の方法。
【請求項11】
コンピュータ・プログラム・コードを記憶するように構成された少なくとも1つのメモリと、
前記コンピュータ・プログラム・コードにアクセスし、前記コンピュータ・プログラム・コードによって命令されるように動作するように構成された少なくとも1つのプロセッサであって、前記コンピュータ・プログラム・コードは、請求項1~10のいずれか一項に記載の方法を前記少なくとも1つのプロセッサに実装させるためのコードを含む、システム。
【請求項12】
請求項1~10のいずれか一項に記載の方法を少なくとも1つのプロセッサに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年7月6日に出願された米国仮特許出願第63/218,809号の優先権を主張し、この特許の開示内容は、参照することによってその全体が本明細書に組み込まれる。
【0002】
本開示の実施形態は、クラウドプラットフォーム上でワークフローまたはワークフローの一部をスケジュールするための様々なスキームのセットに関する。
【背景技術】
【0003】
ネットワークおよびクラウドプラットフォームは、様々なアプリケーションを実行するために使用される。ネットワークベースのメディア処理(NBMP)規格は、クラウドプラットフォーム上でワークフローを定義、インスタンス化、および実行するための仕様を定義する。しかしながら、既存の規格は、ワークフローまたはその一部をスケジュールするための方法を定義していない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
いくつかのユースケースでは、ワークフローは、各時間において、部分単位で、タスクごとに、またはタスクのグループで実行することができる。そのようなアプリケーションでは、リアルタイム処理は要件ではない場合があり、ワークフローに割り当てられた計算リソースが限られているなどの理由で、またはクラウド上のピークトラフィック時間を回避するために、ワークフローをスケジュールする必要がある場合がある。
【課題を解決するための手段】
【0005】
本開示の実施形態は、上記の問題および/またはその他の問題を解決する。
【0006】
実施形態によれば、メディア処理ワークフローマネージャを実装する少なくとも1つのプロセッサによって実施される方法が提供される。本方法は、メディア処理ワークフローをスケジュールするためのスキームモードを示す情報を受信するステップと、情報に基づいてスキームモードを取得するステップと、情報に示されるスキームモードに従ってメディアを処理するために、実行されるべきメディア処理ワークフローのタスクをスケジュールするステップとを含み、情報に示されるスキームモードは、メディア処理ワークフローの各タスクがタスクの入力の全体に対して1回実行される第1のスキームモード、メディア処理ワークフローの各タスクがタスクの入力の所定の期間もしくはタスクの出力の所定の期間にわたって実行される第2のスキームモード、メディア処理ワークフローの各タスクが開始イベントに基づいて開始されるか、もしくは停止イベントに基づいて停止される第3のスキームモード、または所定のスケジュールに従ってメディア処理ワークフローの各タスクが開始される第4のスキームモードであって、所定のスケジュールはタスクを実行するためのタイムスロットを含む、第4のスキームモードである。
【0007】
1つまたは複数の実施形態によれば、情報に示されるスキームモードは第1のスキームモードである。
【0008】
1つまたは複数の実施形態によれば、情報に示されるスキームモードは第2のスキームモードである。
【0009】
1つまたは複数の実施形態によれば、各タスクの入力の所定の期間または各タスクの出力の所定の期間を示す追加情報を受信するステップをさらに含み、メディア処理ワークフローのタスクをスケジュールするステップは、追加情報に基づいてメディア処理ワークフローのタスクをスケジュールすることを含む。
【0010】
1つまたは複数の実施形態によれば、情報に示されるスキームモードは第3のスキームモードである。
【0011】
1つまたは複数の実施形態によれば、本方法はさらに、開始イベントまたは停止イベントを、開始イベントもしくは停止イベントを示す追加情報を受信すること、または開始イベントもしくは停止イベントを生成することによって取得するステップをさらに含み、メディア処理ワークフローのタスクをスケジュールするステップは、メディア処理ワークフローのタスクのうち、取得された開始イベントに基づいて開始されるべき、または取得された停止イベントに基づいて停止されるべき少なくとも1つをスケジュールすることを含む。
【0012】
1つまたは複数の実施形態によれば、メディア処理ワークフローのタスクをスケジュールするステップは、メディア処理ワークフローのタスクのうちの少なくとも1つの状態を一時停止状態に変更することを含む。
【0013】
1つまたは複数の実施形態によれば、情報に示されるスキームモードは第4のスキームモードである。
【0014】
1つまたは複数の実施形態によれば、本方法は、メディア処理ワークフローの少なくとも1つのタスクのスケジューリングモードを示す追加情報を受信するステップをさらに含み、スケジューリングモードは、所定のスケジュール内の少なくとも1つのタスクのタイムスロットがメディア処理ワークフローマネージャに明示的にシグナリングされることを示す第1のスケジューリングモード、またはメディア処理ワークフローマネージャが推論によってタイムスロットを取得することを示す第2のスケジューリングモードのうちの1つである。
【0015】
1つまたは複数の実施形態によれば、本方法は、メディア処理ワークフローマネージャがスキームモードをサポートするかを示す情報を送信するステップをさらに含む。
【0016】
実施形態によれば、システムが提供される。システムは、コンピュータ・プログラム・コードを記憶するように構成された少なくとも1つのメモリと、コンピュータ・プログラム・コードにアクセスし、コンピュータ・プログラム・コードによって命令されるように動作するように構成された少なくとも1つのプロセッサであって、コンピュータ・プログラム・コードは、少なくとも1つのプロセッサによって実装されるメディア処理ワークフローマネージャに、メディア処理ワークフローをスケジュールするためのスキームモードを取得させるように構成された取得コードであって、スキームモードはスキームモードを示す受信情報に基づいて取得される、取得コードと、メディア処理ワークフローマネージャに、受信情報に示されるスキームモードに従ってメディアを処理するために、実行されるべきメディア処理ワークフローのタスクをスケジュールさせるように構成されたスケジューリングコードとを含む、少なくとも1つのプロセッサとを備え、受信情報に示されるスキームモードは、メディア処理ワークフローの各タスクが、タスクの入力の全体に対して1回実行される第1のスキームモード、メディア処理ワークフローの各タスクが、タスクの入力の所定の期間もしくはタスクの出力の所定の期間にわたって実行される第2のスキームモード、メディア処理ワークフローの各タスクが開始イベントに基づいて開始されるか、もしくは停止イベントに基づいて停止される第3のスキームモード、または所定のスケジュールに従ってメディア処理ワークフローの各タスクが開始される第4のスキームモードであって、所定のスケジュールはタスクを実行するためのタイムスロットを含む、第4のスキームモードである。
【0017】
1つまたは複数の実施形態によれば、受信情報に示されるスキームモードは第1のスキームモードである。
【0018】
1つまたは複数の実施形態によれば、受信情報に示されるスキームモードは第2のスキームモードである。
【0019】
1つまたは複数の実施形態によれば、スケジューリングコードは、メディア処理ワークフローマネージャに、各タスクの入力の所定の期間または各タスクの出力の所定の期間を示す追加の受信情報に基づいて、メディア処理ワークフローのタスクをスケジュールさせるようにさらに構成される。
【0020】
1つまたは複数の実施形態によれば、受信情報に示されるスキームモードは第3のスキームモードである。
【0021】
1つまたは複数の実施形態によれば、開始イベントまたは停止イベントは、メディア処理ワークフローマネージャによって取得される。
【0022】
1つまたは複数の実施形態によれば、スケジューリングコードは、メディア処理ワークフローマネージャに、メディア処理ワークフローのタスクのうちの少なくとも1つの状態を一時停止状態に変更させるようにさらに構成される。
【0023】
1つまたは複数の実施形態によれば、受信情報に示されるスキームモードは第4のスキームモードである。
【0024】
1つまたは複数の実施形態によれば、スケジューリングコードは、メディア処理ワークフローマネージャに、メディア処理ワークフローマネージャが受信した追加情報が示すスケジューリングモードに従って、実行されるべきメディア処理ワークフローの少なくとも1つのタスクをスケジュールさせるようにさらに構成され、スケジューリングモードは、所定のスケジュール内の少なくとも1つのタスクのタイムスロットがメディア処理ワークフローマネージャに明示的にシグナリングされることを示す第1のスケジューリングモード、またはメディア処理ワークフローマネージャが推論によってタイムスロットを取得することを示す第2のスケジューリングモードのうちの1つである。
【0025】
実施形態によれば、コンピュータコードを記憶する非一時的コンピュータ可読媒体が提供される。コンピュータコードは、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、メディア処理ワークフローマネージャであって、メディア処理ワークフローをスケジュールするためのスキームモードであって、スキームモードを示す受信情報に基づいて取得される、スキームモードを取得し、受信情報に示されるスキームモードに従ってメディアを処理するために、実行されるべきメディア処理ワークフローのタスクをスケジュールする、メディア処理ワークフローマネージャを実装させ、受信情報に示されるスキームモードは、メディア処理ワークフローの各タスクが、タスクの入力の全体に対して1回実行される第1のスキームモード、メディア処理ワークフローの各タスクが、タスクの入力の所定の期間もしくはタスクの出力の所定の期間にわたって実行される第2のスキームモード、メディア処理ワークフローの各タスクが開始イベントに基づいて開始されるか、もしくは停止イベントに基づいて停止される第3のスキームモード、または所定のスケジュールに従ってメディア処理ワークフローの各タスクが開始される第4のスキームモードであって、所定のスケジュールは、タスクを実行するためのタイムスロットを含む、第4のスキームモードである。
【0026】
開示された主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになるであろう。
【図面の簡単な説明】
【0027】
図1】実施形態による、本明細書に記載される方法、装置、およびシステムが実装され得る環境の図である。
図2図1の1つまたは複数のデバイスの例示的な構成要素のブロック図である。
図3】実施形態によるNBMPシステムのブロック図である。
図4】実施形態による例示的なNBMPワークフローの図である。
図5】実施形態によるコンピュータコードのブロック図である。
【発明を実施するための形態】
【0028】
図1は、実施形態による、本明細書に記載される方法、装置、およびシステムが実装され得る環境100の図である。図1に示されるように、環境100は、ユーザデバイス110と、プラットフォーム120と、ネットワーク130とを含むことができる。環境100のデバイスは、有線接続、無線接続、または有線接続と無線接続との組み合わせを介して相互接続することができる。
【0029】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信、生成、記憶、処理、および/または提供することが可能な1つまたは複数のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマートグラスもしくはスマートウォッチなど)、または同様のデバイスを含んでもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、かつ/または情報をプラットフォームに送信することができる。
【0030】
プラットフォーム120は、本明細書の他の箇所に記載されるような1つまたは複数のデバイスを含む。いくつかの実装形態では、プラットフォーム120は、クラウドサーバまたはクラウドサーバ群を含むことができる。いくつかの実装形態では、プラットフォーム120は、特定の必要に応じてソフトウェアコンポーネントがスワップインまたはスワップアウトすることができるようにモジュール式に設計することができる。そのため、プラットフォーム120は、異なる用途向けに、容易に、および/または迅速に再構成することができる。
【0031】
いくつかの実装形態では、図示されるように、プラットフォーム120は、クラウドコンピューティング環境122内でホストされてもよい。特に、本明細書に記載された実装形態は、クラウドコンピューティング環境122内でホストされるものとしてプラットフォーム120を記載するが、いくつかの実装形態では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部に実装されてもよい)、または部分的にクラウドベースであってもよい。
【0032】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含む。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステム(複数可)および/またはデバイス(複数可)の物理的位置および構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない、計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供することができる。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「コンピューティングリソース124」と総称され、なおかつ個別に「コンピューティングリソース124」と呼ばれる)を含むことができる。
【0033】
コンピューティングリソース124は、1つまたは複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、または他のタイプの計算デバイスおよび/もしくは通信デバイスを含む。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120をホストすることができる。クラウドリソースは、コンピューティングリソース124内で実行されるコンピューティングインスタンス、コンピューティングリソース124内に設けられるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含むことができる。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、または有線接続と無線接続との組合せを介して他のコンピューティングリソース124と通信することができる。
【0034】
図1にさらに示されるように、コンピューティングリソース124は、1つまたは複数のアプリケーション(「APP」)124-1、1つまたは複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つまたは複数のハイパーバイザ(「HYP」)124-4などのクラウドリソースのグループを含む。
【0035】
アプリケーション124-1は、ユーザデバイス110および/もしくはプラットフォーム120に提供することができる、またはユーザデバイス110および/もしくはプラットフォーム120によってアクセスすることができる1つまたは複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールして実行する必要性を排除することができる。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェア、および/またはクラウドコンピューティング環境122を介して提供することができる他の任意のソフトウェアを含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つまたは複数の他のアプリケーション124-1との間で情報を送受信することができる。
【0036】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装形態を含む。仮想マシン124-2は、仮想マシン124-2による用途および任意の実マシンとの対応関係の程度に応じて、システム仮想マシンまたは処理仮想マシンのいずれかとすることができる。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供することができる。処理仮想マシンは、単一のプログラムを実行し、単一の処理をサポートすることができる。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)の代わりに実行し、さらにデータ管理、同期、または長期データ転送などのクラウドコンピューティング環境122の基盤を管理することができる。
【0037】
仮想化ストレージ124-3は、コンピューティングリソース124のストレージシステムまたはデバイス内で仮想化技法を使用する1つもしくは複数のストレージシステムおよび/または1つもしくは複数のデバイスを含む。いくつかの実装形態では、ストレージシステムを背景に、仮想化のタイプは、ブロックの仮想化およびファイルの仮想化を含んでもよい。ブロックの仮想化は、当該ストレージシステムが物理ストレージであるか異種構造であるかに関係なくアクセスすることができるように、物理ストレージから論理ストレージを抽出する(または分離する)ことを指すことができる。これらを分離することにより、ストレージシステムの管理者がエンドユーザのストレージを管理する方法に柔軟性をもたらすことができる。ファイルの仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に記憶されている場所との間の依存関係を排除することができる。これにより、ストレージ使用の最適化、サーバ統合、および/またはスムーズなファイル移行の実施を可能にすることができる。
【0038】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲスト・オペレーティング・システム」)をコンピューティングリソース124などのホストコンピュータ上で同時に実行することを可能にするハードウェア仮想化技法を提供することができる。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲスト・オペレーティング・システムに提示し、ゲスト・オペレーティング・システムの実行を管理することができる。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共有することができる。
【0039】
ネットワーク130は、1つまたは複数の有線および/または無線のネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングターム・エボリューション(LTE)・ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公的地域モバイルネットワーク(PLMN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、電話ネットワーク(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アド・ホック・ネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、および/またはそれらもしくは他のタイプのネットワークの組合せを含んでもよい。
【0040】
図1に示されるデバイスおよびネットワークの数および配置は、一例として提供されている。実際には、図1に示すものに比べて、追加のデバイスおよび/もしくはネットワーク、少ないデバイスおよび/もしくはネットワーク、異なるデバイスおよび/もしくはネットワーク、または異なる配置のデバイスおよび/もしくはネットワークがあってもよい。さらに、図1に示される2つ以上のデバイスは、単一のデバイス内に実装されてもよく、または図1に示される単一のデバイスは、複数の分散型デバイスとして実装されてもよい。追加または代替として、環境100のデバイスのセット(例えば、1つまたは複数のデバイス)は、環境100のデバイスの別のセットによって実施されるものとして記載された1つまたは複数の機能を実施してもよい。
【0041】
図2は、図1の1つまたは複数のデバイスの例示的な構成要素のブロック図である。デバイス200は、ユーザデバイス110および/またはプラットフォーム120に対応することができる。図2に示されるように、デバイス200は、バス210と、プロセッサ220と、メモリ230と、記憶構成要素240と、入力構成要素250と、出力構成要素260と、通信インターフェース270とを含むことができる。
【0042】
バス210は、デバイス200の構成要素間の通信を可能にする構成要素を含む。プロセッサ220は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組合せに実装される。プロセッサ220は、中央処理装置(CPU)、グラフィック処理装置(GPU)、加速処理装置(accelerated processing unit:APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、または別のタイプの処理構成要素である。いくつかの実装形態では、プロセッサ220は、機能を実施するようにプログラムすることができる1つまたは複数のプロセッサを含む。メモリ230は、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、ならびに/またはプロセッサ220が使用するための情報および/もしくは命令を記憶する別のタイプの動的もしくは静的なストレージデバイス(例えば、フラッシュメモリ、磁気メモリ、および/もしくは光メモリ)を含む。
【0043】
記憶構成要素240は、デバイス200の動作および使用に関連する情報および/またはソフトウェアを記憶する。例えば、記憶構成要素240は、対応するドライブとともに、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/もしくはソリッド・ステート・ディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、ならびに/または別のタイプの非一時的コンピュータ可読媒体を含んでもよい。
【0044】
入力構成要素250は、デバイス200がユーザ入力(例えば、タッチ・スクリーン・ディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)などを介して情報を受信することを可能にする構成要素を含む。追加または代替として、入力構成要素250は、情報を検知するためのセンサ(例えば、全地球測位システム(GPS)構成要素、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含んでもよい。出力構成要素260は、デバイス200(例えば、ディスプレイ、スピーカ、および/または1つもしくは複数の発光ダイオード(LED))からの出力情報を提供する構成要素を含む。
【0045】
通信インターフェース270は、デバイス200が有線接続、無線接続、または有線接続と無線接続の組合せなどを介して他のデバイスと通信することを可能にする、トランシーバのような構成要素(例えば、トランシーバならびに/または別個の受信機および送信機)を含む。通信インターフェース270は、デバイス200が別のデバイスから情報を受信し、かつ/または別のデバイスに情報を提供できるようにすることができる。例えば、通信インターフェース270は、イーサネットインターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数(RF)インターフェース、ユニバーサル・シリアル・バス(USB)・インターフェース、Wi-Fiインターフェース、セルラー・ネットワーク・インターフェースなどを含んでもよい。
【0046】
デバイス200は、本明細書に記載された1つまたは複数のプロセスを実施することができる。デバイス200は、プロセッサ220がメモリ230および/または記憶構成要素240などの非一時的コンピュータ可読媒体によって記憶されたソフトウェア命令を実行したことに応答して、これらのプロセスを実施することができる。コンピュータ可読媒体は、本明細書では非一時的メモリデバイスと定義されている。メモリデバイスは、単一の物理ストレージデバイス内のメモリ空間、または複数の物理ストレージデバイスにわたって広がるメモリ空間を含む。
【0047】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェース270を介して別のデバイスから、メモリ230および/または記憶構成要素240に読み込むことができる。メモリ230および/または記憶構成要素240に記憶されたソフトウェア命令は、実行されると、本明細書に記載された1つまたは複数のプロセスをプロセッサ220に実施させることができる。追加または代替として、本明細書に記載された1つまたは複数のプロセスを実施するために、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤード回路が使用されてもよい。よって、本明細書に記載される実装形態は、ハードウェア回路とソフトウェアのいかなる特定の組み合わせにも限定されない。
【0048】
図2に示される構成要素の数および配置は、一例として提供されている。実際には、デバイス200は、図2に示される構成要素に対して、追加の構成要素、少ない構成要素、異なる構成要素、または異なる配置の構成要素を備えてもよい。追加または代替として、デバイス200の構成要素のセット(例えば、1つまたは複数の構成要素)は、デバイス200の構成要素の別のセットによって実施されるものとして記載された1つまたは複数の機能を実施してもよい。
【0049】
本開示の一実施形態では、NBMPシステム300が提供される。図3を参照すると、NBMPシステム300は、NBMPソース310と、NBMPワークフローマネージャ320と、機能リポジトリ330と、1つまたは複数のメディア処理エンティティ350と、メディアソース360と、メディアシンク370とを含む。
【0050】
NBMPソース310は、サードパーティエンティティ380から命令を受信することができ、NBMPワークフローAPI 392を介してNBMPワークフローマネージャ320と通信することができ、機能発見API 391を介して機能リポジトリ330と通信することができる。例えば、NBMPソース310は、ワークフロー記述文書(複数可)(WDD)をNBMPワークフローマネージャ320に送信することができ、機能リポジトリ330に記憶された機能の機能記述を読み出すことができ、機能は、機能リポジトリ330のメモリに記憶されたメディア処理機能、例えば、メディアデコーディング、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンディング、後処理、およびエンコーディングの機能などである。NBMPソース310は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPソース310の機能を実施させるように構成されたコードを記憶するメモリとを含むことができるか、またはそれらによって実装することができる。
【0051】
NBMPソース310は、それぞれがいくつかのパラメータを有し得るいくつかの記述子を含み得るワークフロー記述文書を送信することによって、1つまたは複数のメディア処理エンティティ350によって実施されるべきタスク352を含むワークフローを作成するように、NBMPワークフローマネージャ320に要求することができる。
【0052】
例えば、NBMPソース310は、機能リポジトリ330に記憶された機能を選択することができ、入力および出力データ、必要な機能、およびワークフローの要件などの記述詳細のための様々な記述子を含むワークフロー記述文書をNBMPワークフローマネージャ320に送信することができる。ワークフロー記述文書は、タスク記述のセットと、メディア処理エンティティ350のうちの1つまたは複数によって実施されるべきタスク352の入力および出力の接続マップとを含むことができる。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信したとき、NBMPワークフローマネージャ320は、機能名に基づいてタスクをインスタンス化し、接続マップに従ってタスクを接続することによってワークフローを作成することができる。
【0053】
代替または追加として、NBMPソース310は、キーワードのセットを使用してワークフローを作成するようにNBMPワークフローマネージャ320に要求してもよい。例えば、NBMPソース310は、機能リポジトリ330に記憶された適切な機能を見つけるためにNBMPワークフローマネージャ320が使用し得るキーワードのセットを含み得るワークフロー記述文書をNBMPワークフローマネージャ320に送信することができる。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信したとき、NBMPワークフローマネージャ320は、ワークフロー記述文書の処理記述子内に指定され得るキーワードを使用して適切な機能を検索することによって、ワークフローを作成することができ、ワークフロー記述文書内の他の記述子を使用してタスクを提供し、それらを接続してワークフローを作成することができる。
【0054】
NBMPワークフローマネージャ320は、機能発見API 391と同じかまたは異なるAPIであり得る機能発見API 393を介して機能リポジトリ330と通信することができ、NBMPタスクAPI 394を介してメディア処理エンティティ350のうちの1つまたは複数と通信することができる。NBMPワークフローマネージャ320はまた、メディア処理エンティティ(MPE)API 396を介してメディア処理エンティティ350のうちの1つまたは複数と通信することができる。NBMPワークフローマネージャ320は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPワークフローマネージャ320の機能を実施させるように構成されたコードを記憶するメモリとを含むことができるか、またはそれらによって実装することができる。
【0055】
NBMPワークフローマネージャ320は、NBMPタスクAPI 394を使用して、1つまたは複数のメディア処理エンティティ350によって実施可能なワークフローの1つまたは複数のタスク352をセットアップし、コンフィギュレーションし、管理し、および監視することができる。一実施形態では、NBMPワークフローマネージャ320は、NBMPタスクAPI 394を使用してタスク352を更新および破棄することができる。ワークフローのタスク352をコンフィギュレーションし、管理し、および監視するために、NBMPワークフローマネージャ320は、要求などのメッセージをメディア処理エンティティ350のうちの1つまたは複数に送信することができ、各メッセージは、それぞれがいくつかのパラメータを有する、いくつかの記述子を有することができる。タスク352はそれぞれ、メディア処理機能354と、メディア処理機能354のためのコンフィギュレーション353とを含むことができる。
【0056】
一実施形態では、タスクのリストを含まない(例えば、タスクのリストの代わりにキーワードのリストを含む)ワークフロー記述文書をNBMPソース310から受信した後、NBMPワークフローマネージャ320は、現在のワークフローのタスク352として実行する適切な機能を見つけるために、機能発見API 393を介して、機能リポジトリ330を検索するため、ワークフロー記述文書内のタスクの記述に基づいてタスクを選択することができる。例えば、NBMPワークフローマネージャ320は、ワークフロー記述文書内で提供されたキーワードに基づいてタスクを選択することができる。NBMPソース310によって提供されるキーワードまたはタスク記述のセットを使用して適切な機能が識別された後、NBMPワークフローマネージャ320は、NBMPタスクAPI 394を使用してワークフローの選択されたタスクをコンフィギュレーションすることができる。例えば、NBMPワークフローマネージャ320は、NBMPソースから受信した情報からコンフィギュレーションデータを抽出し、コンフィギュレーションデータに基づいてタスク352をコンフィギュレーションすることができる。
【0057】
1つまたは複数のメディア処理エンティティ350は、メディアソース360からメディアコンテンツを受信し、NBMPワークフローマネージャ320によって作成された、タスク352を含むワークフローに従ってメディアコンテンツを処理し、処理されたメディアコンテンツをメディアシンク370に出力するように構成することができる。1つまたは複数のメディア処理エンティティ350はそれぞれ、少なくとも1つのプロセッサと、少なくともプロセッサにメディア処理エンティティ350の機能を実施させるように構成されたコードを記憶するメモリとを含むか、またはそれらによって実装することができる。
【0058】
メディアソース360は、メディアを記憶するメモリを含むことができ、そして、NBMPソース310と統合されても、またはNBMPソース310と別個であってもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知することができ、メディアソース360は、ワークフローが準備されたという通知に基づいて、メディアコンテンツをメディア処理エンティティ350のうちの1つまたは複数に送信することができる。
【0059】
メディアシンク370は、少なくとも1つのプロセッサと、1つまたは複数のメディア処理エンティティ350によって処理されるメディアを表示するように構成された少なくとも1つのディスプレイとを含むか、またはそれらによって実装することができる。
【0060】
サードパーティエンティティ380は、少なくとも1つのプロセッサと、少なくともプロセッサにサードパーティエンティティ380の機能を実施させるように構成されたコードを記憶するメモリとを含むことができるか、またはそれらによって実装することができる。
【0061】
上述されるように、NBMPソース310からNBMPワークフローマネージャ320へのメッセージ(例えば、ワークフローの作成を要求するためのワークフロー記述文書)、およびNBMPワークフローマネージャ320から1つまたは複数のメディア処理エンティティ350への(例えば、ワークフローを実施させるための)メッセージは、それぞれがいくつかのパラメータを有し得るいくつかの記述子を含むことができる。場合によっては、APIを使用するNBMPシステム300のコンポーネントのいずれかの間の通信は、各々がいくつかのパラメータを有し得るいくつかの記述子を含むことができる。
【0062】
本開示の実施形態は、ワークフローまたはその一部の実行をスケジュールするためのスケジューリングスキームを定義する。本開示の実施形態は、これらのスキームのいずれかを使用してワークフローのスケジューリングをサポートするためにNBMP規格を拡張する。
【0063】
図4を参照して、NBMPワークフローの非限定的な例が以下に記載される。実施形態によれば、NBMPワークフローマネージャ320は、1つまたは複数のタスク(例えば、タスク401~408)を含むNBMPワークフロー400を作成および管理することができる。例えば、図4に示すように、タスク401~408は、様々な入力410に関連付けられてもよく、様々な出力420を提供するように構成されてもよい。図4の左端の入力410(例えば、タスク401~402の入力)は、NBMPワークフロー400の入力である。図4の右端の出力420(例えば、タスク406~408の出力)は、NBMPワークフロー400の出力である。
【0064】
実施形態によれば、ワークフローのタスクは、1つまたは複数のメディア処理エンティティ350、メディアソース360および/またはメディアシンク370において実装することができる。実施形態では、メディアソース360はソースデバイス/プラットフォームであってもよく、1つまたは複数のメディア処理エンティティ350はクラウドノード/エッジネットワークであってもよく、メディアシンク370はシンクデバイス/プラットフォームであってもよい。
【0065】
本開示の実施形態は、各タスクについて以下のスキームを実装することができる。
1.順序による:各タスクはその入力全体に対して1回実行され、次に次のタスクが実行される。
2.期間別:ワークフロー内の各タスクは、入力/出力の1つの期間、例えば1分間の入力または5分間の出力(複数可)が消費/生成されるように実行される。
3.イベント別:各タスクは開始イベントで実行され、停止イベントで停止する。
4.タイムスロット別:各タスクは特定のスケジュールに従って開始する。
【0066】
上記のスキームは、タスクのグループ(またはタスクグループ)に対して実行することができる。スキーム2~4は、ワークフロー全体に対して実行することができる。スキームについて、以下でより詳細に記載する。
【0067】
[スキーム1:順序による]
順序スキームモードでは、NBMPワークフローマネージャ320は、各タスクを一度に実行する必要がある場合がある。したがって、NBMPワークフローマネージャ320は、ワークフローの入力(複数可)を有するタスクから開始し、そのようなタスクの出力を生成し、それらをバッファリングし、次いでワークフローの出力に向かって波が移動するような方式(a moving wave fashion)で、次のタスクを開始する必要がある場合がある。実施形態によれば、そのようなスキームには2つの可能性がある:
1.NBMPクライアントが、実施すべきタスクの順序を定義する、
2.NBMPワークフローマネージャ320が順序を推論する。
【0068】
いずれの場合も、NBMPワークフローマネージャ320は、タスクの出力ごとにバッファ/ストレージを追加することによってワークフローを再構成することができる。NBMPワークフローマネージャ320は、これらのバッファ/ストレージの最大サイズに関する情報を有するか、またはNBMPワークフローマネージャ320がバッファ/ストレージのサイズを推定するように各入力サイズを取得することができる。
【0069】
実施形態によれば、「complete」入力において「true」フラグを受信するすべてのタスクは、そのタスクが完了したことを知り、次のタスクの時刻であることを示すNBMPワークフローマネージャ320のイベントを生成することができるので、「complete」入力は有用である場合がある。
【0070】
実施形態によれば、順序スキームまたは他のスキームを実装する際に、NBMPクライアントは、スキームモード(例えば、順序スキーム)、およびワークフロー内の各出力のためのストレージの最大サイズまたは入力の最大サイズをシグナリングする情報を、(例えば、NBMPワークフローマネージャ320に)送信することができる。実施形態によれば、NBMPクライアントはまた、タスクの順序をシグナリングする情報を送信することができる。実施形態によれば、NBMPクライアントは、NBMPソース310であってもよい。
【0071】
実施形態によれば、順序スキームまたは他のスキームを実装する際に、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320のケイパビリティをシグナリングする情報を、(例えば、NBMPクライアントに)送信することができる。例えば、そのような情報は、(a)NBMPワークフローマネージャ320がスキームモードをサポートするか、(b)NBMPワークフローマネージャ320がタスクの順序を導出できるか、および/または(c)NBMPワークフローマネージャ320が入力サイズから必要なバッファサイズを導出できるかを示すことができる。
【0072】
実施形態によれば、(例えば、NBMPクライアントから)要求を受信すると、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320が要求を実施することができるかを、(例えば、NBMPクライアントに)確認応答することができる。実施形態によれば、要求は、スケジュールを実施する要求であってもよい。
【0073】
[スキーム2:期間別]
期間スキームモードでは、NBMPワークフローマネージャ320は、入力または出力の特定の期間にわたって各タスクを実行する必要がある場合がある。したがって、NBMPワークフローマネージャ320は、ワークフローの入力(複数可)を有するタスクから開始し、その期間の間、そのようなタスクの出力を生成し、それらをバッファリングし、次いでワークフローの出力(複数可)に向かって波が移動するような方式で、次のタスクを開始する必要がある場合がある。実施形態によれば、期間別スキームには少なくとも2つの可能性がある:
1.NBMPクライアントが、実施すべきタスクの順序を定義する、
2.NBMPワークフローマネージャ320が順序を推論する。
【0074】
いずれの場合も、NBMPワークフローマネージャ320は、タスクの出力ごとにバッファ/ストレージを追加することによってワークフローを再構成することができる。NBMPワークフローマネージャ320は、特定の期間の間、これらのバッファ/ストレージの最大サイズに関する情報を有するか、またはNBMPワークフローマネージャ320がバッファ/ストレージのサイズを推定するように各入力サイズを取得することができる。
【0075】
実施形態によれば、期間スキームまたは他のスキームを実装する際に、NBMPクライアントは、スキームモード(例えば、期間別スキーム)、入力(複数可)の期間または出力(複数可)の所要期間、必要および/または提供される場合のタスクの順序、およびワークフロー内の各出力のためのストレージの最大サイズまたは入力の最大サイズをシグナリングする情報を、(例えば、NBMPワークフローマネージャ320に)送信することができる。
【0076】
実施形態によれば、期間スキームまたは他のスキームを実装する際に、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320のケイパビリティをシグナリングする情報を、(例えば、NBMPクライアントに)送信することができる。例えば、そのような情報は、(a)NBMPワークフローマネージャ320がスキームモードをサポートするか、(b)NBMPワークフローマネージャ320がタスクの順序を導出できるか、(c)NBMPワークフローマネージャ320が入力サイズから必要なバッファサイズを導出できるか、および/または(d)NBMPワークフローマネージャ320が出力(複数可)の所与の期間の生成に必要な入力の期間を導出できるかを示すことができる。
【0077】
実施形態によれば、(例えば、NBMPクライアントから)要求を受信すると、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320が要求を実施することができるかを、(例えば、NBMPクライアントに)確認応答することができる。実施形態によれば、要求は、タスクを実施する要求であってもよい。
【0078】
[スキーム3:イベント別]
イベントスキームモードでは、各タスクの開始および停止をイベントでトリガすることができる。イベントは、NBMPワークフローマネージャ320によって発行することができる。任意のタスクが「run」状態を有するので、NBMPワークフローマネージャ320は、タスクの状態を「run」に変更することによってタスクを開始することができる。タスクを一時停止するために、NBMPワークフローマネージャ320は、タスクの状態を「idle」に変更することができる。しかしながら、「idle」の状態は、入力の欠如と、NBMPワークフローマネージャ320による「idle」に留まる要求とを区別しない。本開示の実施形態は、「paused」という新しい状態を実装することによってこの問題を解決することができる。実施形態によれば、NBMPワークフローマネージャ320は、タスクの状態を「run」から「paused」に変更することができる。「paused」状態では、入力が利用可能であってもタスクはアイドル状態に留まる。
【0079】
実施形態によれば、NBMPワークフローマネージャ320は、自身の内部ロジックに基づいてイベントをスケジュールすることができ、またはNBMPクライアントからイベントを受信することができる。イベントスキームモードでは、各タスクの出力バッファ/ストレージを管理することができるため、本開示の実施形態は以下を含むことができる:
1.イベントがNBMPクライアントによって駆動される場合、NBMPクライアントが、中間バッファ/ストレージの最大サイズを定義する。
2.NBMPワークフローマネージャ320が自身のイベントをスケジュールする場合、NBMPワークフローマネージャ320が最大サイズを推測する。
【0080】
実施形態によれば、イベントスキームまたは他のスキームを実装する際に、イベント(複数可)がNBMPクライアントによって駆動される場合、またはNBMPワークフローマネージャ320が独自のイベントスキームを開始することになる場合、NBMPクライアントは、スキームモード(例えば、イベントスキーム)をシグナリングする情報を、(例えば、NBMPワークフローマネージャ320に)送信することができ、イベント(複数可)がNBMPクライアントによって駆動される場合、ワークフロー内の各出力のストレージの最大量を送信することができる。
【0081】
実施形態によれば、イベントスキームまたは他のスキームを実装する際に、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320のケイパビリティをシグナリングする情報を、(例えば、NBMPクライアントに)送信することができる。例えば、そのような情報は、(a)NBMPワークフローマネージャ320がスキームモードをサポートするか、および(b)NBMPワークフローマネージャ320がワークフロー(例えば、NBMPクライアント)駆動イベントをサポートするかを示すことができる。
【0082】
実施形態によれば、(例えば、NBMPクライアントから)要求を受信すると、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320が要求を実施することができるかを、(例えば、NBMPクライアントに)確認応答することができる。実施形態によれば、要求は、タスクを実施する要求であってもよい。
【0083】
実施形態によれば、イベントスキームまたは他のスキームを実装する際に、タスク(またはタスクを実装する少なくとも1つのプロセッサ)は、タスクが「paused」状態をサポートするか、および/またはタスクが「run」状態から「paused」状態に変更され得るかを、(例えば、NBMPクライアントおよび/またはNBMPワークフローマネージャ320に)送信することができる。
【0084】
[スキーム4:タイムスロット別]
タイムスロットスキームモードでは、NBMPクライアントは、各タスクのスケジュールをNBMPワークフローマネージャ320に提供することができ、NBMPワークフローマネージャ320は、スケジュールに従って(例えば、スケジュール内の所与のタイムスロットに従って)各タスクを実行することができる。
【0085】
実施形態によれば、中間バッファ/ストレージを割り当てる必要がある場合があるので、NBMPクライアントはバッファのサイズを定義する場合がある。
【0086】
実施形態によれば、タイムスロットスキームまたは他のスキームを実装する際に、NBMPクライアントは、スキームモード(例えば、タイムスロットスキーム)、各タスクのスケジューリングモード、およびワークフロー内の各出力のためのストレージの最大サイズまたは入力の最大サイズをシグナリングする情報を、(例えば、NBMPワークフローマネージャ320に)送信することができる。実施形態によれば、各タスクのスケジューリングモードは、「explicit」または「indexed」として示すことができる。「explicit」のスケジューリングモードは、スケジュールが正確な時間を有することを示す。「indexed」のスケジューリングモードは、開始、終了、増分、および/または継続期間スキーム(例えば、「for」ループ)がタスク(複数可)のタイムスロットを示すために使用されることを示す。
【0087】
実施形態によれば、タイムスロットスキームまたは他のスキームを実装する際に、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320のケイパビリティをシグナリングする情報を、(例えば、NBMPクライアントに)送信することができる。例えば、そのような情報は、(a)NBMPワークフローマネージャ320がスキームモードをサポートするか、および(b)NBMPワークフローマネージャ320がスケジューリングモード(複数可)(例えば、明示的モードおよび/またはインデックス付きモード)をサポートするかを示すことができる。
【0088】
実施形態によれば、(例えば、NBMPクライアントから)要求を受信すると、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320が要求を実施することができるかを、(例えば、NBMPクライアントに)確認応答することができる。実施形態によれば、要求は、タスクを実施する要求であってもよい。
【0089】
[NBMPにおける実装]
実施形態によれば、ワークフローのスケジューリングに対処するために、スケール記述子をNBMPに実装することができる。
【0090】
スケール記述子は、以下の表1に示すパラメータを含むことができる。
【0091】
【表1】
【0092】
「timeslot」オブジェクトは、以下の表2に示すパラメータを含むことができる。
【0093】
【表2】
【0094】
「explicit」オブジェクトは、以下の表3に示すパラメータを含むことができる。
【0095】
【表3】
【0096】
実施形態によれば、スケール記述子は、以下の表4に示すスケールパラメータを含むことができる。
【0097】
【表4A】
【表4B】
【0098】
実施形態によれば、NBMPクライアントは、以下の機能のためのワークフロー記述文書(WDD)の更新呼び出しに、スケール記述子を含めることができる:(a)WDDにスケール記述子を含めることによってワークフローマネージャ320のケイパビリティを取得する機能であって、「status」パラメータは「capabilities」に等しい値を有する、機能、(b)WDDにスケール記述子を含めることによって、ワークフローをスケジュールする機能、(c)タスク記述文書(TDD)にスケール記述子を含めることによって、タスクをスケジュールする機能、(d)タスクグループオブジェクトにスケール記述子を含めることによって、タスクのグループをスケジュールする機能、(e)スケール記述子を含む要求を送信することによって上記のいずれかのスケジューリングを検討する機能であって、「status」パラメータは「consider」に等しい値を有し、NBMPワークフローマネージャ320がスケジュールを管理するように要求された場合にNBMPワークフローマネージャ320がスケジュールを管理できるかを確認する、機能。
【0099】
実施形態によれば、上記の機能(および/または他の機能)を実施するために、NBMPクライアントは、WDDを取得(例えば、作成または更新)し、次いで、スケール記述子を含むWDDおよび/またはTDDをNBMPワークフローマネージャ320に送信することができる。実施形態によれば、NBMPワークフローマネージャ320は、例えば、受信したWDDおよび/またはTDDのスケール記述子に含まれるパラメータの値に基づいて、そのケイパビリティをNBMPクライアントに送信する、ワークフローをスケジュールする、タスクをスケジュールする、タスクのグループをスケジュールする、またはスケジュールを管理できるかをNBMPクライアントに示すなどの機能を実施することができる。例えば、NBMPワークフローマネージャ320は、ワークフローの範囲内のスケジュール要求のID、スケジュール要求の記述、スケジュール要求のタイプ、実行順序のタスクIDのリスト、入力/出力の期間、タイムスケール、処理される入力/出力セグメントの数、io-flag、タスク(複数可)の実行モード、スケジュール要求のステータス、タイムスロットモード、タスク(複数可)のタイムスロットの状態時間、タスク(複数可)のタイムスロットの終了時間、次の開始時間までの時間増分、および/または時間増分の期間を取得し、それらに基づいてその機能(例えば、ワークフローのスケジューリング/管理)を実施することができる。
【0100】
実施形態によれば、クラウドプラットフォーム上でワークフロー全体の一部を実行するための様々なスケジューリングスキームを記述することを含む方法を提供することができる。スケジューリングスキームは、タスクの特定の順序によるスケジューリング、期間が制限されたタスクの順序によるスケジューリング、イベントによるスケジューリング、または各タスクの明示的もしくは暗黙的な特定のスケジューリングによるスケジューリングのモードを含むことができる。様々なスケジューリングスキームは、スケジュールタイプ、特定のタイプのスケジュールに関する情報、および1つまたは複数のコマンドを記述する記述子に記述することができる。記述子において、定義された任意の数のタスクに対する新規一時停止状態を示すことができ、一時停止状態は、タスクはさらなるデータを処理しないものの、その内部状態および情報を維持することを示す。記述子において、コマンドは、例えば、クラウドプラットフォームのケイパビリティを取得すること、スケジューリングを実装できるかをチェックすること、またはスケジューリングを実装するように要求することのための要求とすることができる。記述子はまた、要求(複数可)に対する応答(複数可)を含むことができる。
【0101】
本開示の実施形態によれば、コンピュータコードを記憶するメモリを有する少なくとも1つのプロセッサを提供することができる。コンピュータコードは、少なくとも1つのプロセッサによって実行されたときに、本開示の任意の数の態様を実施するように構成することができる。
【0102】
例えば、図5を参照すると、コンピュータコード500は、NBMPシステム300で実装することができる。例えば、コンピュータコードは、NBMPワークフローマネージャ320のメモリに記憶することができ、NBMPワークフローマネージャ320の少なくとも1つのプロセッサによって実行することができる。計算コードは、例えば、取得コード510、スケジューリングコード520、実行コード530、および応答コード540を含むことができる。
【0103】
取得コード510は、NBMPワークフローマネージャ320に、WDDまたはTDDから情報を取得させるように構成することができる。例えば、NBMPワークフローマネージャ320は、WDDまたはTDDを受信することができ、その中の任意の数のスケールパラメータ(例えば、表4を参照)をNBMPワークフローマネージャ320にシグナリングすることができ、これにより、NBMPワークフローマネージャ320は、対応する情報を取得する。例えば、NBMPワークフローマネージャ320は、ワークフローの範囲内のスケジュール要求のID、スケジュール要求の記述子、スケジュール要求のタイプ、実行順序のタスクIDのリスト、入力/出力の期間、タイムスケール、処理される入力/出力セグメントの数、io-flag、タスク(複数可)の実行モード、スケジュール要求のステータス、タイムスロットモード、タスク(複数可)のタイムスロットの状態時間、タスク(複数可)のタイムスロットの終了時間、次の開始時間までの時間増分、および/または時間増分の期間を取得することができる。実施形態によれば、NBMPワークフローマネージャ320は、メディア処理ワークフローをスケジュールするためのスキームモードを取得することができる。
【0104】
スケジューリングコード520は、NBMPワークフローマネージャ320に、NBMPワークフローマネージャ320によって取得された情報に基づいて、実行のためにワークフロー(その中のタスクを含む)をスケジュールさせるように構成することができる。例えば、NBMPワークフローマネージャ320は、取得されたスキームモードに従って、かつスケール記述子の他のパラメータを含む、NBMPワークフローマネージャ320がNBMPクライアントから受信した本開示に記載の他の任意の情報に基づいて、ワークフローをスケジュールすることができる。実施形態によれば、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320が受信した情報に基づいて、スケジュールされるべきワークフローの態様およびそのタスクを推測し、それに従ってワークフローをスケジュールすることができる。例えば、NBMPワークフローマネージャ320は、タスクの順序、中間バッファ/ストレージの最大サイズ、および/またはタスク(複数可)のタイムスロットを推測することができる。
【0105】
実行コード530は、NBMPワークフローマネージャ320に、ワークフローのタスクを、スケジュールされたように、1つまたは複数のメディア処理エンティティ350、メディアソース360および/またはメディアシンク370に実装させるように構成することができる。
【0106】
応答コード540は、NBMPワークフローマネージャ320に、NBMPクライアントから受信した要求に対する応答を、NBMPクライアントへと送信させるように構成することができる。実施形態によれば、要求は、WDDまたはTDDのスケール記述子に含めることができる。実施形態によれば、要求は、(a)WDDにスケール記述子を含めることによってワークフローマネージャ320のケイパビリティを取得することであって、「status」パラメータは「capabilities」に等しい値を有する、取得すること、(b)WDDにスケール記述子を含めることによって、ワークフローをスケジュールすること、(c)タスク記述文書(TDD)にスケール記述子を含めることによって、タスクをスケジュールすること、(d)タスクグループオブジェクトにスケール記述子を含めることによって、タスクのグループをスケジュールすること、ならびに(e)スケール記述子を含む要求を送信することによって上記のいずれかのスケジューリングを検討することであって、「status」パラメータは「consider」に等しい値を有し、NBMPワークフローマネージャ320がスケジュールを管理するように要求された場合にNBMPワークフローマネージャ320はスケジュールを管理できるかを確認する、検討することである。要求を実施することに加えて、NBMPワークフローマネージャ320は、対応する応答をNBMPクライアントに提供することができる。例えば、応答は、(a)NBMPワークフローマネージャ320がスキームモードをサポートするか、(b)NBMPワークフローマネージャ320がタスクの順序を導出することができるか、(c)NBMPワークフローマネージャ320が入力サイズから必要なバッファサイズを導出することができるか、(d)NBMPワークフローマネージャ320が出力(複数可)の所与の期間の生成に必要な入力の期間を導出することができるか、(e)NBMPワークフローマネージャ320がワークフロー(例えば、NBMPクライアント)駆動イベントをサポートするか、(f)NBMPワークフローマネージャ320がスケジューリングモード(複数可)(例えば、明示的モードおよび/またはインデックス付きモード)をサポートするか、(g)NBMPワークフローマネージャ320が要求されたスケジュールに対応できるか、および/またはNBMPワークフローマネージャ320が特定の要求を実施することができるか、もしくは実施したかを示すことができる。
【0107】
1つまたは複数の実施形態によれば、本開示の実施形態は、NBMPとは異なる環境で実装されてもよい。
【0108】
前述の開示は、例示および説明を提供しているが、網羅的であることも、実装形態を厳密に開示の形態に限定することも意図されていない。修正形態および変形形態が上記の開示に照らして可能であり、または実装形態の実践から取得されてもよい。
【0109】
本明細書で使用される場合、構成要素という用語は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組合せとして広く解釈されることを意図している。
【0110】
特徴の組合せが特許請求の範囲に詳述され、および/または本明細書に記載されているが、これらの組合せは、可能な実装形態の開示を限定することを意図されていない。実際には、これらの特徴の多くは、特許請求の範囲に具体的に列挙されていない、および/または本明細書に開示されていない方法で組み合わせることができる。以下に列挙される各従属請求項は1つの請求項のみに直接従属し得るが、可能な実装形態の開示は、各従属請求項を請求項セット内のあらゆる他の請求項との組合せとして含む。
【0111】
本明細書で使用される要素、動作、または命令は、そのようなものとして明示的に記載されていない限り、重要または必須であると解釈されてはならない。また、本明細書で使用される場合、冠詞「a」および「an」は、1つまたは複数の項目を含むことを意図されており、「1つまたは複数」と交換可能に使用されてもよい。さらに、本明細書で使用される「セット」という用語は、1つまたは複数の項目(例えば、関連項目、非関連項目、関連項目と非関連項目の組合せなど)を含むものであり、「1つまたは複数」と同じ意味で使用されてもよい。1つの項目のみが対象とされる場合、「1つ」という用語または同様の言葉が使用される。また、本明細書で使用される「有する(has)」、「有する(have)」、「有する(having)」などの用語は、オープンエンド用語であることが意図される。さらに、「に基づいて」という語句は、特に明記されない限り、「に少なくとも部分的に基づいて」を意味することが意図されている。
【符号の説明】
【0112】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション
124-2 仮想マシン
124-3 仮想化ストレージ
124-4 ハイパーバイザ
130 ネットワーク
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 記憶構成要素
250 入力構成要素
260 出力構成要素
270 通信インターフェース
300 NBMPシステム
310 NBMPソース
320 NBMPワークフローマネージャ
330 機能リポジトリ
350 メディア処理エンティティ
352 タスク
353 コンフィギュレーション
354 メディア処理機能
360 メディアソース
370 メディアシンク
380 サードパーティエンティティ
391 機能発見API
392 NBMPワークフローAPI
393 機能発見API
394 NBMPタスクAPI
396 メディア処理エンティティ(MPE)API
400 NBMPワークフロー
401 タスク
402 タスク
403 タスク
404 タスク
405 タスク
406 タスク
407 タスク
408 タスク
410 入力
420 出力
500 コンピュータコード
510 取得コード
520 スケジューリングコード
530 実行コード
540 応答コード
図1
図2
図3
図4
図5