(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-30
(45)【発行日】2024-09-09
(54)【発明の名称】クラウドプラットフォーム上でワークフローをスケジューリングする方法、装置、及びコンピュータプログラム
(51)【国際特許分類】
G06F 9/50 20060101AFI20240902BHJP
【FI】
G06F9/50 150E
(21)【出願番号】P 2023523086
(86)(22)【出願日】2022-04-13
(86)【国際出願番号】 US2022024543
(87)【国際公開番号】W WO2023282952
(87)【国際公開日】2023-01-12
【審査請求日】2023-04-14
(32)【優先日】2021-07-06
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-03-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ソダガァ,イラジ
【審査官】田中 幸雄
(56)【参考文献】
【文献】米国特許出願公開第2021/0004273(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
プロセッサが実行する、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングする方法であって、
入力メディアストリームを含む入力ワークフローを取得するステップと、
前記入力メディアストリームを1つ以上のタスクに分割することによって変更ワークフローを生成するステップと、
スケジュールタイプ情報を含むものであるスケジュール記述子に基づいて、前記クラウドプラットフォーム上で前記1つ以上のタスクをスケジューリングするステップと、
前記1つ以上のタスクの前記スケジューリングに基づいて前記変更ワークフローを処理するステップと、
を有
し、
前記スケジュールタイプ情報は、順序情報、継続時間情報、イベント情報、又はタイムスロット情報のうちの1つを含む、
方法。
【請求項2】
前記スケジュールタイプ情報が前記順序情報であるとの決定に基づいて、前記1つ以上のタスクの各々をある順序で実行するようにスケジューリングするステップ、
を更に有する請求項
1に記載の方法。
【請求項3】
前記スケジュールタイプ情報が前記継続時間情報であるとの決定に基づいて、前記1つ以上のタスクのうちの第1のタスクを第1の期間で実行するようにスケジューリングするステップ、
を更に有する請求項
1に記載の方法。
【請求項4】
前記スケジュールタイプ情報が前記イベント情報であるとの決定に基づいて、前記1つ以上のタスクのうちの第1のタスクを、該第1のタスクの実行を開始又は停止するトリガーとしての前記入力メディアストリームにおけるイベントの発生に基づいて実行するようにスケジューリングするステップ、
を更に有する請求項
1に記載の方法。
【請求項5】
前記イベント情報に基づく前記1つ以上のタスクの実行において、前記1つ以上のタスクの各々に対して新たな一時停止状態が定義され、前記1つ以上のタスクの各々が、それぞれのタスクにおいて更なるデータを処理しない間、内部状態及び情報を維持する、請求項
4に記載の方法。
【請求項6】
前記スケジュールタイプ情報が前記タイムスロット情報であるとの決定に基づいて、前記1つ以上のタスクのうちの第1のタスクを指定タイムスロット内で実行するようにスケジューリングするステップ、
を更に有する請求項
1に記載の方法。
【請求項7】
前記タイムスロット情報が更に、
正確なタイムフレームが前記スケジューリングのために提供される明示的スケジューリングモード、又は
開始、終了、インクリメント、期間スキームが前記スケジューリングのために提供されるインデックス付きスケジューリングモード、
を有する、請求項
6に記載の方法。
【請求項8】
前記スケジュール記述子は、前記スケジュールタイプ情報に対応するコマンド情報を含み、
前記コマンド情報は、
前記クラウドプラットフォームの能力を取得する、
スケジューリング要求内の前記スケジュールタイプ情報が実施可能であるかを決定する、又は
前記スケジューリング要求内の前記スケジュールタイプ情報が実施可能であるかを決定した結果を含む応答を提供する、
のための情報を含む、
請求項1に記載の方法。
【請求項9】
クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングする装置であって、当該装置は、
1つ以上のプロセッサと、
コンピュータプログラムを格納した1つ以上のメモリと、
を有し、
前記コンピュータプログラムは、前記1つ以上のプロセッサに、請求項1乃至
8のいずれか一項に記載の方法を実行させる、
装置。
【請求項10】
コンピュータに請求項1乃至
8のいずれか一項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、2021年7月6日に出願された米国仮特許出願第63/218,815号に基づくとともに、それに対する優先権を主張するものであり、その開示をその全体にてここに援用する。
【0002】
本開示の実施形態は、ネットワークベースメディア処理(Network Based Media Processing;NBMP)ワークフロー又は該ワークフローの一部をクラウドプラットフォーム上でスケジューリングする装置及び方法に関する。
【背景技術】
【0003】
様々なアプリケーションを実行するためにネットワークとクラウドプラットフォームが使用されることがある。ネットワークベースメディア処理(NBMP)標準は、クラウドプラットフォーム上でワークフローを定義し、インスタンス化し、及び実行するための仕様を提供している。一部のケースにおいて、ワークフローは、部分的に実行されたり、タスクごとに実行されたり、各都度タスクのグループで実行されたりすることができる。そのような場合、ワークフローのリアルタイム処理は必須ではなく、ワークフローに割り当てられる限られた計算リソースを考慮すると、あるいは、クラウド上のピークトラフィック時間を回避するために、ワークフローをスケジューリングする必要があり得る。しかしながら、NBMP標準の現行機能は、クラウドプラットフォーム上でワークフロー又はその一部をスケジューリングすることを提供していない。本開示の1つ以上の実施形態例は、この問題を解決し、クラウドプラットフォーム上でワークフロー又はその一部をスケジューリングする方法を提供し得る。
【発明の概要】
【0004】
本開示の1つ以上の実施形態例は、クラウドプラットフォーム上でワークフロー又は該ワークフローの一部をスケジューリングする方法及び装置を提供する。
【0005】
本開示の一態様によれば、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングする方法が提供され、当該方法は、入力メディアストリームを含む入力ワークフローを取得するステップと、前記入力メディアストリームを1つ以上のタスクに分割することによって変更ワークフローを生成するステップと、スケジュールタイプ情報を含むものであるスケジュール記述子に基づいて、前記クラウドプラットフォーム上で前記1つ以上のタスクをスケジューリングするステップと、前記1つ以上のタスクの前記スケジューリングに基づいて前記変更ワークフローを処理するステップと、を含む。
【0006】
本開示の他の一態様によれば、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングする装置が提供され、当該装置は、プログラムコードを格納するように構成された少なくとも1つのメモリと、前記プログラムコードを読み出し、前記プログラムコードによって命令されるように動作するよう構成された少なくとも1つのプロセッサと、を含み、前記プログラムコードは、前記少なくとも1つのプロセッサに、入力メディアストリームを含む入力ワークフローを取得させるように構成された取得コードと、前記少なくとも1つのプロセッサに、前記入力メディアストリームを1つ以上のタスクに分割することによって変更ワークフローを生成させるように構成された生成コードと、前記少なくとも1つのプロセッサに、スケジュールタイプ情報を含むものであるスケジュール記述子に基づいて、前記クラウドプラットフォーム上で前記1つ以上のタスクをスケジューリングさせるように構成されたスケジューリングコードと、前記少なくとも1つのプロセッサに、前記1つ以上のタスクの前記スケジューリングに基づいて前記変更ワークフローを処理させるように構成された処理コードと、を含む。
【0007】
本開示の他の一態様によれば、 命令を格納した非一時的なコンピュータ読み取り可能媒体であって、前記命令は、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングする装置の少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、入力メディアストリームを含む入力ワークフローを取得させ、前記入力メディアストリームを1つ以上のタスクに分割することによって変更ワークフローを生成させ、スケジュールタイプ情報を含むものであるスケジュール記述子に基づいて、前記クラウドプラットフォーム上で前記1つ以上のタスクをスケジューリングさせ、前記1つ以上のタスクの前記スケジューリングに基づいて前記変更ワークフローを処理させる。
【0008】
更なる態様が、以下の説明で部分的に記述され、説明から部分的に明らかになり、又は本開示の提示実施形態の実施によって実現され得る。
【図面の簡単な説明】
【0009】
本開示の上述の及び他の態様、特徴、及び実施形態の態様が、以下の添付図面と併せられる以下の説明からいっそう明らかになる。
【
図1】1つ以上の実施形態に従った通信システムの概略図である。
【
図2】1つ以上の実施形態に従ったストリーミング環境の簡略化した例示である。
【
図3】1つ以上の実施形態に従ったNBMPシステムのブロック図である。
【
図4】1つ以上の実施形態に従ったNBMPスプリッタ及びマージプロセスの例図である。
【
図5】1つ以上の実施形態に従った、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフロー又はその一部をスケジューリングするプロセス例のブロック図である。
【
図6】1つ以上の実施形態に従った、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフロー又はその一部をスケジューリングするためのコンピュータコードの一例のブロック図である。
【発明を実施するための形態】
【0010】
本開示の実施形態は、ネットワークベースメディア処理(NBMP)ワークフローにおける変更をシグナリングするための方法及び装置に関し、特に、クラウドプラットフォーム上でメディア処理におけるステップベースの処理を実行するための装置及び方法に関する。
【0011】
本開示の実施形態は、本質的に例示的なものであり、添付図面を参照して包括的に記述される。しかしながら、実装の例は様々な複数の形態で実施されることができ、本開示は、ここに記載される例に限定されるとして解釈されるべきでない。逆に、実装の例は、本開示の技術的ソリューションをいっそう包括的で完全なものとし、実装の例のアイディアを当業者に包括的に伝えるために提供される。添付図面は単に本開示の例示に過ぎず、必ずしも縮尺通りに描かれているわけではない。添付図面中の同じ参照符号は同じ又は同様のコンポーネントを表しており、故に、それらのコンポーネントの繰り返しての説明は省略する。
【0012】
以下で説明する提案に係る特徴は、別々に使用されてもよいし、何らかの順序で組み合わされてもよい。添付図面に示す一部のブロック図は機能的エンティティであり、必ずしも物理的又は論理的に独立したエンティティに対応するわけではない。また、実施形態は、処理回路(例えば、1つ以上のプロセッサ若しくは1つ以上の集積回路)又はマイクロコントローラ装置を含み得るハードウェアの形態で実装されてもよいし、ソフトウェアの形態で実装されてもよいし、異なる複数のネットワーク及び/又はプロセッサ装置で実装されてもよいし、ハードウェアコンポーネントとソフトウェアコンポーネントとの組み合わせによって実装されてもよい。一例において、1つ以上のプロセッサが、1つ以上の非一時的コンピュータ読み取り可能媒体に格納されたコンピュータプログラムコードを実行する。
【0013】
図1は、実施形態に従った、ここに記載される方法、装置及びシステムが実装され得る環境100の図である。
図1に示すように、環境100は、ユーザ装置110、プラットフォーム120、及びネットワーク130を含み得る。環境100の装置は、有線接続、無線接続、又は有線接続と無線接続との組み合わせ、を介して相互接続し得る。
【0014】
ユーザ装置110は、プラットフォーム120に関連する情報を受信、生成、格納、処理、及び/又は提供することができる1つ以上の装置を含み得る。例えば、ユーザ装置110は、コンピューティング装置(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブル装置(例えば、一対のスマートグラス又はスマートウォッチ)、又は類似の装置を含み得る。一部の実装において、ユーザ装置110は、プラットフォーム120から情報を受信し及び/又はプラットフォーム120に情報を送信し得る。
【0015】
プラットフォーム120は、この中の別の箇所で説明されるような1つ以上の装置を含み得る。一部の実装において、プラットフォーム120は、クラウドサーバ又は一群のクラウドサーバを含み得る。一部の実装において、プラットフォーム120は、ソフトウェアコンポーネントが特定のニーズに応じてスワップイン又はスワップアウトされ得るよう、モジュール式であるように設計され得る。そのようなものとして、プラットフォーム120は、異なる使用のために容易に且つ/或いは迅速に再構成されることができる。
【0016】
一部の実装において、図示のように、プラットフォーム120は、クラウドコンピューティング環境122内でホストされ得る。特に、ここに記載される実装は、プラットフォーム120を、クラウドコンピューティング環境122内でホストされるものとして記述するが、一部の実装では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外で実装されてもよく)、あるいは、部分的にクラウドベースであってもよい。
【0017】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含み得る。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステム及び/又は装置の物理的な位置及び構成に関するエンドユーザ(例えば、ユーザ装置110)知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供し得る。図示のように、クラウドコンピューティング環境122は、一群の計算リソース124(まとめて“計算リソース群124”と称し、個々に“計算リソース124”と称する)を含み得る。
【0018】
計算リソース124は、1つ以上のパーソナルコンピュータ、ワークステーションコンピュータ、サーバ装置、又は他の種類の計算及び/又は通信装置を含み得る。一部の実装において、計算リソース124はプラットフォーム120をホストし得る。クラウドリソースは、計算リソース124において実行される計算インスタンス、計算リソース124内で提供されるストレージ装置、計算リソース124によって提供されるデータ転送装置などを含み得る。一部の実装において、計算リソース124は、有線接続、無線接続、又は有線接続と無線接続との組み合わせを介して、他の計算リソース124と通信し得る。
【0019】
図1に更に示すように、計算リソース124は、例えば、1つ以上のアプリケーション(“APP”)124-1、1つ以上の仮想マシン(“VM”)124-2、仮想化ストレージ(“VS”)124-3、1つ以上のハイパーバイザ(“HYP”)124-4、又はこれらに類するものなどの、一群のクラウドリソースを含み得る。しかしながら、本開示はそれに限定されず、従って、他の実施形態例によれば、計算リソース124は他のタイプのクラウドリソースを含んでもよい。
【0020】
アプリケーション124-1は、ユーザ装置110及び/又はプラットフォーム120に提供され又はそれらによってアクセスされ得る1つ以上のソフトウェアアプリケーションを含み得る。アプリケーション124-1は、ユーザ装置110上にソフトウェアアプリケーションをインストールして実行する必要をなくし得る。例えば、アプリケーション124-1は、プラットフォーム120に関連するソフトウェア、及び/又はクラウドコンピューティング環境122を介して提供されることが可能な任意の他のソフトウェアを含み得る。一部の実装において、1つのアプリケーション124-1が、仮想マシン124-2を介して、1つ以上の他のアプリケーション124-1に/から情報を送信/受信し得る。
【0021】
仮想マシン124-2は、物理的なマシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含み得る。仮想マシン124-2は、仮想マシン124-2による何らかの実マシンへの対応の程度及び用途に応じて、システム仮想マシン又はプロセス仮想マシンのいずれであってもよい。システム仮想マシンは、完全なオペレーティングシステム(“OS”)の実行をサポートする完全なシステムプラットフォームを提供し得る。プロセス仮想マシンは、単一のプログラムを実行することができ、単一のプロセスをサポートし得る。一部の実装において、仮想マシン124-2は、ユーザ(例えば、ユーザ装置110)の代わりに実行を行うことができ、例えばデータ管理、同期、又は長時間データ転送など、クラウドコンピューティング環境122のインフラストラクチャを管理することができる。
【0022】
仮想化ストレージ124-3は、計算リソース124のストレージシステム又は装置の中で仮想化技術を使用する1つ以上のストレージシステム及び/又は1つ以上の装置を含み得る。一部の実装において、ストレージシステムのコンテキスト内で、仮想化のタイプは、ブロック仮想化及びファイル仮想化を含み得る。ブロック仮想化は、物理的なストレージ又は異種構造に関係なくストレージシステムがアクセスされ得るようにする、論理ストレージの物理ストレージからの抽象化(又は分離)を指すとし得る。この分離は、管理者がエンドユーザのためにストレージを管理する方法における柔軟性をストレージシステムの管理者に許すことができる。ファイル仮想化は、ファイルレベルでアクセスされるデータと、ファイルが物理的に格納される場所との間の依存関係を排除し得る。これは、ストレージ使用の最適化、サーバ統合、及び/又は中断のないファイル移動の実行を可能にし得る。
【0023】
ハイパーバイザ124-4は、例えば計算リソース124などのホストコンピュータ上で複数のオペレーティングシステム(例えば、“ゲストオペレーティングシステム”)が同時に実行することを可能にするハードウェア仮想化技術を提供し得る。ハイパーバイザ124-4は、ゲストオペレーティングシステムに対して仮想オペレーティングプラットフォームを提示することができ、ゲストオペレーティングシステムの実行を管理することができる。多様なオペレーティングシステムの複数のインスタンスが、仮想化ハードウェアリソースを共有し得る。
【0024】
ネットワーク130は、1つ以上の有線ネットワーク及び/又は無線ネットワークを含み得る。例えば、ネットワーク130は、セルラネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公衆陸上モバイルネットワーク(PLMN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話ネットワーク(例えば、公衆交換電話ネットワーク(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク、若しくはこれらに類するもの、及び/又はこれら若しくは他のタイプのネットワークの組み合わせを含み得る。
【0025】
図1に示した装置及びネットワークの数及び構成は、一例として提供されている。実際には、
図1に示したものに対して、追加の装置及び/又はネットワーク、より少ない装置及び/又はネットワーク、異なる装置及び/又はネットワーク、又は異なる構成の装置及び/又はネットワークが存在し得る。また、
図1に示した2つ以上の装置が単一の装置内に実装されてもよいし、あるいは、
図1に示した単一の装置が複数の分散された装置として実装されてもよい。加えて、あるいは代わりに、環境100の装置のセット(例えば、1つ以上の装置)が、環境100の装置の別のセットによって実行されるとして記載された1つ以上の機能を実行してもよい。
【0026】
図2は、
図1の1つ以上の装置のコンポーネント例のブロック図である。装置200は、ユーザ装置110及び/又はプラットフォーム120に対応し得る。
図2に示すように、装置200は、バス210、プロセッサ220、メモリ230、ストレージコンポーネント240、入力コンポーネント250、出力コンポーネント260、及び通信インタフェース270を含み得る。
【0027】
バス210は、装置200のコンポーネント間での通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせで実装され得る。プロセッサ220は、中央演算処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、アクセラレーテッドプロセッシングユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他のタイプの処理コンポーネントとし得る。一部の実装において、プロセッサ220は、機能を実行するようにプログラムされることが可能な1つ以上のプロセッサを含み得る。メモリ230は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、及び/又は、プロセッサ220による使用のための情報及び/又は命令を格納する他のタイプの動的又は静的な記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、及び/又は光メモリ)を含み得る。
【0028】
ストレージコンポーネント240は、装置200の動作及び使用に関係する情報及び/又はソフトウェアを格納する。例えば、ストレージコンポーネント240は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、及び/又はソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク(登録商標)、カートリッジ、磁気テープ、及び/又は他のタイプの非一時的なコンピュータ読み取り可能媒体を、対応するドライブと共に含み得る。
【0029】
入力コンポーネント250は、装置200が、例えばユーザ入力を介してなどで、情報を受信することを可能にするコンポーネント(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイクロフォン)を含み得る。加えて、あるいは代わりに、入力コンポーネント250は、情報をセンシングするセンサ(例えば、グローバルポジショニングシステム(GPS)コンポーネント、加速度計、ジャイロスコープ、及び/又はアクチュエータ)を含んでもよい。出力コンポーネント260は、装置200からの出力情報を提供するコンポーネントを含む(例えば、ディスプレイ、スピーカ、及び/又は1つ以上の発光ダイオード(LED))。
【0030】
通信インタフェース270は、装置200が、例えば有線接続、無線接続、又は有線接続と無線接続との組み合わせを介してなどで、他の装置と通信することを可能にするトランシーバのようなコンポーネント(例えば、トランシーバ及び/又は別個の受信器と送信器)を含み得る。通信インタフェース270は、装置200が他の装置から情報を受信すること及び/又は他の装置に情報を提供することを可能にし得る。例えば、通信インタフェース270は、イーサネット(登録商標)インタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、無線周波数(RF)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、Wi-Fiインタフェース、セルラネットワークインタフェース、又はこれらに類するものを含み得る。
【0031】
装置200は、ここに記載される1つ以上のプロセスを実行し得る。装置200は、それらのプロセスを、例えばメモリ230及び/又はストレージコンポーネント240などの非一時的なコンピュータ読み取り可能媒体によって格納されたソフトウェア命令をプロセッサ220が実行することに応答して実行し得る。コンピュータ読み取り可能媒体は、ここでは、非一時的なメモリ装置として定義される。メモリ装置は、単一の物理的記憶装置内の記憶空間を含み、又は複数の物理的記憶装置にわたって広がった記憶空間を含む。
【0032】
ソフトウェア命令が、メモリ230及び/又はストレージコンポーネント240に、他のコンピュータ読み取り可能媒体から又は通信インタフェース270を介して他の装置から読み込まれ得る。メモリ230及び/又はストレージコンポーネント240に格納されたソフトウェア命令は、実行されるときに、プロセッサ220に、ここに記載される1つ以上のプロセスを実行させ得る。加えて、あるいは代わりに、ここに記載される1つ以上のプロセスを実行するために、ソフトウェア命令の代わりに又はそれと組み合わせてハードワイヤード回路が使用されてもよい。従って、ここに記載される実装は、ハードウェア回路とソフトウェアとの如何なる特定の組み合わせにも限定されるものではない。
【0033】
図2に示したコンポーネントの数及び構成は、一例として提供されている。実際には、装置200は、
図2に示したものに対して、追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、又は異なる構成のコンポーネントを含み得る。加えて、あるいは代わりに、装置200のコンポーネントのセット(例えば、1つ以上のコンポーネント)が、装置200のコンポーネントの別のセットによって実行されるとして記載された1つ以上の機能を実行してもよい。
【0034】
本開示の一実施形態において、ネットワークベースメディア処理(NBMP)システムが提供される。
図3は、ここでの実施形態に従ったNBMPアーキテクチャ300を示しており、クラウド処理に関して実装され得る。NBMPシステム300は、NBMPソース310、NBMPワークフローマネジャ320、機能リポジトリ330、1つ以上のメディア処理エンティティ(media processing entity;MPE)340、メディアソース350、及びメディアシンク360を有している。NBMPソース310、NBMPワークフローマネジャ320、機能リポジトリ330、MPE340、メディアソース350、及びメディアシンク360は、少なくとも1つ以上のプロセッサと、それぞれNBMPソース310、NBMPワークフローマネジャ320、機能リポジトリ330、MPE340、メディアソース350、及びメディアシンク360の機能を上記少なくとも1つ以上のプロセッサに実行させるコードを格納したメモリと、を含むか、それらによって実装されるかすることができる。
【0035】
NBMPソース310は、NBMPワークフローAPI311を介してNBMPワークフローマネジャ320とワークフロー記述を通信し得る。NBMPソース310はまた、機能ディスカバリAPI313を介して機能リポジトリ330と機能記述を通信し得る。例えば、NBMPソース310は、(1つ以上の)ワークフロー記述ドキュメント(workflow description document;WDD)をNBMPワークフローマネジャ320に送ることができ、また、機能リポジトリ330に格納された機能の機能記述を読み取ることができ、これらの機能は、例えば、メディア復号、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンド、後処理、及び符号化の機能などの、機能リポジトリ330のメモリに格納されたメディア処理機能である。NBMPワークフローマネジャ320は、機能ディスカバリAPI313と同じであっても異なってもよい機能ディスカバリAPI312を介して機能リポジトリ330と通信することができ、また、API314(例えば、MPE API)を介してMPE340のうち1つ以上と通信することができる。
【0036】
メディア処理エンティティ(MPE)340は、1つ以上のタスク341を含み得る。NBMPワークフローマネジャ320はまた、API315(例えば、NBMPタスクAPI)を介してタスク341と通信し得る。NBMPワークフローマネジャ320は、API315を用いて、1つ以上のMPE340によって実行可能なワークフローの1つ以上のタスク341を設定、構成、管理、及び監視し得る。ワークフローのタスク341を構成、管理、及び監視するため、NBMPワークフローマネジャ320は、MPE340及び/又はタスク341のうちの1つ以上に、例えば要求などのメッセージを送信することができ、各メッセージが幾つかの記述子を持つことができ、該記述子の各々が幾つかのパラメータを持つ。また、NBMPソース310、NBMPワークフローマネジャ320、機能リポジトリ330、及びMPE340の間の通信は制御フローと見なされ得る。
【0037】
タスク341は各々、メディア処理機能343と、それらメディア処理機能343に関する構成(コンフィギュレーション)342とを含み得る。それぞれのメディア処理エンティティ340内のタスク341の各々はまた、互いに通信して、タスク間のデータフローを容易にし得る。一実施形態において、NBMPワークフローマネジャ320は、WDD内のタスクの記述に基づいてタスクを選択して、機能ディスカバリAPI312を介して機能リポジトリ330を検索し、現在ワークフローに関するタスク341として実行すべき適切な機能を見出し得る。上記1つ以上のMPE340は、メディアソース350からメディアコンテンツを受信し、NBMPワークフローマネジャ320によって作成されたタスク341を含むワークフローに従ってメディアコンテンツを処理し、処理したメディアコンテンツをメディアシンク360に出力するように構成され得る。一実施形態において、上記1つ以上のMPE340は、それぞれメディアソース350及びメディアシンク360との間の複数のメディアフロー316及び317に対して並列に設けられ得る。
【0038】
メディアソース350は、メディアを格納するメモリを含むことができ、また、NBMPソース310と統合されてもよいし、それとは別個であってもよい。一実施形態において、NBMPワークフローマネジャ320は、ワークフローが準備されたときにNBMPソース310に通知することができ、メディアソース350は、ワークフローが準備されたという通知に基づいて、メディアコンテンツを上記1つ以上のMPE340に送信することができ、上記1つ以上のMPE340は、メディアコンテンツをメディアシンク360に送信することができる。メディアソース350、MPE340、及びメディアシンク360の間の通信はデータフローと見なされ得る。
【0039】
図4は、本開示の一実施形態に従った、並列処理のためにタスクTのメディアストリーム440の複数のセグメントをNBMPスプリット及びマージすることの一例を示している。
図4に示すように、NBMPスプリッタ及びマージャプロセス400は、スプリッタ420及びマージャ430を含む。
図4では、入力メディアストリームのタスクTがタスクTのn個のインスタンス(すなわち、T
0、…、T
N-1)に変換され、これらn個のインスタンスが並列に走る。入力メディアストリーム410は連続しているとし得る。スプリッタ420はメディアストリームをN個のメディアサブストリームに変換する。各サブストリームがTのインスタンスによって処理される。そして、マージャ430がこれらサブストリームを共にインターリーブして出力450を生成する。出力450は、タスクTの出力ストリーム(すなわち、メディアストリーム440)に相当するものである。
【0040】
図4に示すような1:Nスプリッタ420機能及びN:1マージャ430機能は、セグメント境界で動作する。各セグメントが、それに関連付けられた開始、期間、及び長さメタデータを持つ。これらセグメントは独立であるため、結果として、これらサブストリームは、タスクTによって処理されることに関して互いに独立である。実施形態において、タスクT
0、…、T
N-1はタスクTのインスタンスであり、セグメントを同時に又は別々に処理し得る。これらセグメント及びこれらサブストリームは独立であるため、タスクTの各インスタンス(すなわち、T
0、…、T
N-1)はそれ自身の速度で走り得る。
【0041】
一実施形態によれば、ワークフロー又はその一部の実行をスケジューリングする方法が提供され得る。当該方法は、ワークフロー全体を処理する時間をスケジューリングすること、又はワークフローの複数のタスクを処理する時間をスケジューリングすることを含み得る。一実施形態によれば、ワークフローは複数のタスク(すなわち、サブプロセス)に分割されることができ、ワークフロー内のそれら複数のタスクの各々が、以下のスキーム、すなわち、順序に基づいて、継続時間に基づいて、イベントに基づいて、及びタイムスロットに基づいて、のうちのいずれか1つ(又は組み合わせ)を用いてスケジューリングされ得る。しかしながら、本開示はそれに限定されず、従って、ワークフローのタスク(すなわち、サブプロセス)のスケジューリングに別のスキームが提供されてもよい。
【0042】
一実施形態によれば、複数のタスクの各々が順序に基づいてスケジューリングされ得る。この場合、各タスクがその全体にて1回実行又は処理され、それに次のタスクが続く。例えば、当該方法は、複数のタスクのうちの第1のタスクをその全体にて実行するようにスケジューリングすることと、複数のタスクのうちの第2のタスクを、第1のタスクの完了後に実行するようにスケジューリングすることとを含み得る。すなわち、複数のタスクの各々が、先行タスクの完了を受けて相次いで実行(遂行)されるようにスケジューリングされる。本実施形態は、第1のタスクの完了後に第2のタスクを実行すると記載しているが、本開示はそれに限定されない。従って、他の一実施形態によれば、第1のタスクの完了前に第2のタスク(又は後続タスク)が開始してもよい。この場合、タスクの並列処理が実施され得る。
【0043】
一実施形態によれば、複数のタスクの各々が継続時間に基づいてスケジューリングされ得る。この場合、ワークフロー内の各タスクが、入力又は出力の継続時間にわたって実行される。例えば、当該方法は、複数のタスクのうちの第1のタスクをある期間に実行するようにスケジューリングすることと、複数のタスクのうちの第2のタスクを、ある期間にわたる第1のタスクの実行に続く期間に実行するようにスケジューリングすることとを含み得る。ここでは、第1のタスク及び第2のタスクの実行は、入力メディアストリームを消費すること又は出力メディアストリームを作製することに対応し得る。
【0044】
一実施形態によれば、ある期間に実行される第1のタスクは、1分間の入力メディアストリームを消費すること、又は第2のタスクに対応する1分間の出力メディアストリームを作製することとし得る。その後、ある期間に実行される第2のタスクは、1分間の入力メディアストリームを消費すること、又は第2のタスクに対応する1分間の出力メディアストリームを作製することとし得る。期間として1分間を例示しているが、本開示はそれに限定されず、従って、他の一実施形態によれば、時間は異なる量の時間(例えば、5分間の入力又は出力)であってもよい。また、他の一実施形態によれば、第1のタスク及び第2のタスクを実行するためにスケジューリングされる期間は異なってもよい。例えば、第1のタスクは第1の期間にわたって実行されるようにスケジューリングされ、第2のタスクは第2の期間にわたって実行されるようにスケジューリングされ得る。一実施形態によれば、第1及び第2のタスクの並列処理が実施されてもよい。
【0045】
一実施形態によれば、複数のタスクの各々がイベントに基づいてスケジューリングされ得る。この場合、ワークフロー内の各タスクが、開始イベントで実行され、停止イベントで停止される。例えば、当該方法は、複数のタスクのうちの第1のタスクを、映画の第1のシーンの発生に基づいて実行するようにスケジューリングすることを含み得る。
【0046】
一実施形態によれば、複数のタスクの各々がタイムスロットに基づいてスケジューリングされ得る。この場合、ワークフロー内の各タスクが、特定のスケジューリングされた時間に従って開始する。例えば、当該方法は、複数のタスクのうちの第1のタスクを午前2:00から午前3:00に実行するようにスケジューリングすることを含み得る。
【0047】
一実施形態によれば、上述のスキームはタスクのグループ(又はタスクグループ)に対して実行されることができる。しかしながら、本開示はそれに限定されず、一実施形態によれば、これらのスキームのうち一部はワークフロー全体に対して実行されてもよい。例えば、ワークフロー全体が、継続時間に基づいて、イベントに基づいて、又はタイムスロットに基づいてスケジューリングされてもよい。
【0048】
スケジューリングスキームの各々の詳細な説明を次のとおり提供する。
【0049】
順序に基づくスケジュール
一実施形態によれば、ワークフローマネジャは、順序に基づくワークフローで複数のタスクの各タスクを走らせたり実行したりしなければならないことがある。この場合、ワークフローマネジャは、出力に向かって移動波的に、入力メディアストリームを持つワークフローの第1のタスクの実行を開始し、出力メディアストリームを生成し、出力をバッファリングし、次いで、次のタスクを開始し得る。ここでは、ワークフローマネジャはタスクの実行を相次いで開始し得る。
【0050】
一実施形態によれば、タスクの順序のスケジューリングは、NBMPシステム内の幾つかのコンポーネントのうちのいずれかのコンポーネントによって、幾つかの手法のうちの1つで行われ得る。一実施形態によれば、NBMPクライアントが実行すべきタスクの順序を定める。他の一実施形態によれば、ワークフローマネジャが順序を推論する。しかしながら、本開示はこれらに限定されず、従って、実行すべきタスクの順序は別のコンポーネントによって定められてもよい。
【0051】
上述の場合のどちらでも、ワークフローマネジャは各タスクの出力に対してバッファ/ストレージを付加することによりワークフローを再構成する必要がある。ワークフローマネジャは、これらのバッファ/ストレージの最大サイズについての情報を持つ必要があり、あるいは、各入力サイズを提供してワークフローマネジャがバッファ/ストレージのサイズを見積もるようにする。
【0052】
一実施形態によれば、‘完了(complete)’入力が有用なことがあり、何故なら、自身の‘完了’入力にて‘真(true)’フラグを受け取る全タスクが、自身のタスクが完了したことを知り、次のタスクの時間であることのイベントをワークフローマネジャに対して生成することができるからである。
【0053】
一実施形態によれば、NBMPクライアント及びNBMPワークフローマネジャは次の要件を有し得る。
【0054】
一実施形態によれば、NBMPクライアントは、スケジューリングのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)を定めるか示す/特定するかする必要があることがある。また、スキームモードが継続時間に基づいてスケジューリングされる場合、NBMPクライアントはオプションでタスクの順序を定め得る。さらに、ワークフロー内の各出力用のストレージの最大サイズ又は入力の最大サイズを定め得る。
【0055】
一実施形態によれば、NBMPワークフローマネジャは、スケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)に関する自身の能力を示すかシグナリングするかしなければならないことがある。例えば、NBMPワークフローマネジャは、NBMPワークフローがスケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)をサポートしているかを示さなければならないことがある。スキームモードが順序に基づいてスケジューリングされる場合、NBMPワークフローは、NBMPワークフローが順序を導出できるかどうか、及び/又は入力サイズから必要とされるバッファサイズをNBMPワークフローが導出できるかどうかを示さなければならない。また、NBMPワークフローは、順序スキームモードに基づいてタスクを実行する要求をNBMPワークフローが実行できるかどうかを応答しなければならないことがある。
【0056】
継続時間に基づくスケジュール
一実施形態によれば、ワークフローマネジャは、継続時間に基づいてワークフロー内の複数のタスクの各タスクを走らせたり実行したりしなければならないことがある。ここでは、当該方法は、複数のタスクのうちの第1のタスクを第1の期間に実行するようにスケジューリングすることと、複数のタスクのうちの第2のタスクを、ある期間での第1のタスクの実行に続く第2の期間に実行するようにスケジューリングすることとを含み得る。一実施形態によれば、第1の期間と第2の期間は同じとし得る。他の一実施形態によれば、第1の期間と第2の期間は異なり得る。一実施形態によれば、この期間は入力メディアストリーム又は出力メディアストリームの5分間とし得る。
【0057】
この場合、ワークフローマネジャは、出力に向かって移動波的に、入力メディアストリームを持つワークフローの第1のタスクの実行を開始し、出力メディアストリームを生成し、出力をバッファリングし、次いで、次のタスクを開始し得る。ここでは、ワークフローマネジャはタスクの実行を相次いで開始し得る。一実施形態によれば、各タスクにスケジューリングされる期間は入力メディアストリーム又は出力メディアストリームに基づき得る。例えば、第1のタスクは、5分間の入力メディアストリームが処理されるか、5分間の出力メディアストリームが生成されるかするまで実行され得る。
【0058】
一実施形態によれば、タスクのための期間のスケジューリングは、NBMPシステム内の幾つかのコンポーネントのうちのいずれかのコンポーネントによって、幾つかの手法のうちの1つで行われ得る。一実施形態によれば、NBMPクライアントが実行すべきタスクに割り当てられる期間を定める。他の一実施形態によれば、ワークフローマネジャが期間を推論する。
【0059】
上述の場合のどちらでも、ワークフローマネジャは各タスクの出力に対してバッファ/ストレージを付加することによりワークフローを再構成する必要がある。ワークフローマネジャは、その特定の期間のためのこれらバッファ/ストレージの最大サイズについての情報を持つ必要があり、あるいは、各入力サイズを提供してワークフローマネジャがバッファ/ストレージのサイズを見積もるようにする。
【0060】
一実施形態によれば、NBMPクライアント及びNBMPワークフローマネジャは次の要件を有し得る。
【0061】
一実施形態によれば、NBMPクライアントは、スケジューリングのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)を定めるか示す/特定するかする必要があることがある。また、スキームモードが継続時間に基づいてスケジューリングされる場合、NBMPクライアントは、入力(すなわち、入力メディアストリーム)の継続時間若しくは出力(すなわち、出力メディアストリーム)に必要な継続時間、必要な場合若しくは提供される場合のタスクの順序、ワークフロー内の各出力用のストレージの最大サイズ若しくは入力の最大サイズを定めるか示す/特定するかし得る。
【0062】
一実施形態によれば、NBMPワークフローマネジャは、スケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)に関する自身の能力を示すかシグナリングするかしなければならないことがある。例えば、NBMPワークフローマネジャは、NBMPワークフローがスケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)をサポートしているかを示さなければならないことがある。スキームモードが継続時間に基づいてスケジューリングされる場合、NBMPワークフローは、NBMPワークフローが順序を導出できるかどうか、及び/又は入力サイズから必要とされるバッファサイズをNBMPワークフローが導出できるかどうかを示さなければならない。また、NBMPワークフローは、さらに、NBMPワークフローは、所与の期間の(1つ以上の)出力の生成のために必要は入力の継続時間をNBMPワークフローが導出できるかどうかを示さなければならない。また、NBMPワークフローは、順序スキームモードに基づいてタスクを実行する要求をNBMPワークフローが実行できるかどうかを応答しなければならないことがある。
【0063】
イベントに基づくスケジュール
一実施形態によれば、ワークフローマネジャは、イベントに基づいてワークフロー内の複数のタスクの各タスクを走らせたり実行したりしなければならないことがある。ここでは、当該方法は、イベントに基づいて各タスクの開始及び停止をトリガーすることを含み得る。一実施形態によれば、イベントは、映画の特定のシーン、すなわち、映画の第1のシーン、又は音楽の特定の部分とし得る。一実施形態によれば、イベントはワークフローマネジャによって発行される。いずれのタスクも‘実行’状態を持つので、ワークフローマネジャはタスクの状態を‘実行’に変えることでタスクを開始することができる。タスクを一時停止させるために、ワークフローマネジャはタスクの状態を‘アイドル’に変えることができる。また、‘アイドル’は、入力の欠如を、‘アイドル’にとどめるためのワークフローマネジャによる要求に対して区別しないので、一実施形態によれば、新しい状態、すなわち、‘一時停止’状態が設けられ、それにおいては、たとえ入力が利用可能であっても、タスクを‘実行’からアイドルにとどめるように変えることができる。
【0064】
一実施形態によれば、ワークフローマネジャは、自身の内部ロジックに基づいてイベントをスケジューリングすることができ、あるいは、NBMPクライアントからイベントを受信することができる。このスキームでも、各タスクの出力バッファ/ストレージを管理すべきである。
【0065】
一実施形態によれば、タスクのイベントトリガーのスケジューリングは、NBMPシステム内の幾つかのコンポーネントのうちのいずれかのコンポーネントによって、幾つかの手法のうちの1つで行われ得る。一実施形態によれば、イベントがNBMPクライアントによって駆動される場合、NBMPクライアントは中間バッファ/ストレージの最大サイズを定める。他の一実施形態によれば、ワークフローマネジャが、タスクを処理することの開始及び/又は停止をトリガーする自身のイベントをスケジューリングする場合、ワークフローマネジャがサイズを推論する。
【0066】
上述の場合のどちらでも、ワークフローマネジャは各タスクの出力に対してバッファ/ストレージを付加することによりワークフローを再構成する必要があることがある。ワークフローマネジャは、その特定の期間のためのこれらバッファ/ストレージの最大サイズについての情報を持つ必要があり、あるいは、各入力サイズを提供してワークフローマネジャがバッファ/ストレージのサイズを見積もるようにする。
【0067】
一実施形態によれば、NBMPクライアント、NBMPワークフローマネジャ、及びNBMPタスクは次の要件を有し得る。
【0068】
一実施形態によれば、NBMPクライアントは、スケジューリングのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)を定めるか示す/特定するかする必要があることがある。また、スキームモードがイベントに基づいてスケジューリングされる場合、NBMPクライアントは、イベントがNBMPクライアントによって駆動されるのか、それとも、ワークフローマネジャが自身のイベントスキームを開始するためのカスタムシグナルによって駆動されるのかを定めるか示す/特定するかし得る。また、それがNBMPクライアントによって駆動される場合、NBMPクライアントは、ワークフロー内の各出力用のストレージの最大サイズを定めるか示す/特定するかし得る。
【0069】
一実施形態によれば、NBMPワークフローマネジャは、スケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)に関する自身の能力を示すかシグナリングするかしなければならないことがある。例えば、NBMPワークフローマネジャは、NBMPワークフローがスケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)をサポートしているかを示さなければならないことがある。スキームモードがイベントに基づいてスケジューリングされる場合、NBMPワークフローは、NBMPワークフローがワークフロー駆動イベントをサポートしているかを示さなければならない。また、NBMPワークフローは、順序スキームモードに基づいてタスクを実行する要求をNBMPワークフローが実行できるかどうかを応答しなければならないことがある。
【0070】
一実施形態によれば、NBMPワークフローマネジャは、‘一時停止’状態のサポート、及び‘実行’状態と‘一時停止’状態との間で状態を変化させることのサポートを有しなければならないことがある。
【0071】
タイムスロットに基づくスケジュール
一実施形態によれば、NBMPクライアントは、ワークフロー内の複数のタスクの各タスクの、タイムスロットに基いたスケジュールを提供することができ、ワークフローマネジャは、与えられたタイムスロットに従って各タスクを実行する。ここでは、タイムスロットは、複数のタスクのうちの第1のタスクを実行する午前2:00から午前3:00とし得る。
【0072】
一実施形態によれば、タスクのスケジューリングは、NBMPシステム内の幾つかのコンポーネントのうちのいずれかのコンポーネントによって、幾つかの手法のうちの1つで行われ得る。一実施形態によれば、中間バッファ/ストレージを割り当てる必要があるため、NBMPクライアントはバッファのサイズを定め得る。
【0073】
一実施形態によれば、NBMPクライアント及びNBMPワークフローマネジャは次の要件を有し得る。
【0074】
一実施形態によれば、NBMPクライアントは、スケジューリングのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)を定めるか示す/特定するかする必要があることがある。また、スキームモードがタイムスロットに基づいてスケジューリングされる場合、NBMPクライアントは、各タスクのスケジューリングモードを定めるか示す/特定するかし得る。例えば、NBMPクライアントは、スケジュールが正確な時間を持つ明示的スケジューリングモードを使用することができ、あるいは、NBMPクライアントは、開始、終了、インクリメント、期間スキーム(forループのような)が提供されるインデックス付きスケジューリングモードを使用することができる。
【0075】
また、NBMPクライアントは、ワークフロー内の各出力用のストレージの最大サイズを、それがNBMPクライアントによって駆動される場合に定めるか示す/特定するかし得る。
【0076】
一実施形態によれば、NBMPワークフローマネジャは、スケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)に関する自身の能力を示すかシグナリングするかしなければならないことがある。例えば、NBMPワークフローマネジャは、NBMPワークフローがスケジューリングのそのスキームモード(すなわち、順序、継続時間、イベント、及びタイムスロットのうちの1つ)をサポートしているかを示さなければならないことがある。スキームモードがタイムスロットに基づいてスケジューリングされる場合、NBMPワークフローは、NBMPワークフローがそのスキームモード(すなわち、明示的スケジューリングモード又はインデックス付きスケジューリングモード)をサポートしているかを示さなければならない。また、NBMPワークフローは、順序スキームモードに基づいてタスクを実行する要求をNBMPワークフローが実行できるかどうかを応答しなければならないことがある。
【0077】
上の例示によれば、NBMPクライアント、NBMPワークフローマネジャ、及びNBMPタスクは、特定の動作を実行するように示されている。しかしながら、本開示は、本開示の新規な態様をこれらのコンポーネントが実行することに限定されるものではない。従って、他の実施形態によれば、NBMPシステム内の他のコンポーネント(又はコンポーネントの組み合わせ)が本開示の上述の動作を実行してもよい。
【0078】
一実施形態例によれば、以下のように、NBMP標準仕様にスケジュール記述子を追加し得る:
【表1】
【0079】
一実施形態によれば、スケジュール記述子はパラメータ名、型、カーディナリティを示し得る。一実施形態によれば、パラメータ名は、識別子(id)、説明、スケジュールタイプ、順序、継続時間、セグメント数、ioフラグ、実行モード、タイムスロット、ステータスを含み得る。しかしながら、本開示は、表1に列挙したパラメータに限定されず、従って、他の一実施形態によれば、ワークフロー内のタスクのスケジューリングを実行するために更なるパラメータが提供され得る。
【0080】
さらに、一実施形態例によれば、表1のスケジュール記述子内のタイムスロットオブジェクトは、表2に例示する以下のパラメータを含み得る。
【表2】
【0081】
さらに、一実施形態例によれば、表2のタイムスロットオブジェクト内の明示的(explicit)オブジェクトは、表3に例示する以下のパラメータを含み得る。
【表3】
【0082】
さらに、一実施形態例によれば、NBMP標準仕様のスケジュール記述子パラメータの詳細な定義が以下のように提供され得る。
【表4】
【0083】
一実施形態によれば、スケジュール記述子は次のようにして使用され得る。例えば、NBMPクライアントは、以下のいずれかのための(1つ以上の)ワークフロー記述文書(WDD)更新呼び出しにスケジュール記述子を含めることができる:
・ WDDにスケジュール記述子を含めること及び‘ステータス’=‘能力’により、ワークフローマネジャの能力を取得する;
・ WDDにワークフローを含めることにより、ワークフローをスケジューリングする;
・ タスク記述ドキュメント(TDD)にスケジュール記述子を含めることにより、タスクをスケジューリングする;
・ タスクグループオブジェクトにスケジュール記述子を含めることにより、タスクのグループをスケジューリングする;及び
・ スケジュール記述子が要求された場合にワークフローがスケジュールを管理できるかを確かめるために、‘ステータス’=‘検討’として要求することにより、上のいずれかをスケジューリングすることを検討する。
【0084】
しかしながら、本開示は、上述のスケジュール記述子の使用に限定されるものではない従って、他の一実施形態によれば、スケジュール記述子はNBMPシステムによって別のやり方で使用されてもよい。
【0085】
図5は、1つ以上の実施形態に従った、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングする方法500の例のフローチャートである。
【0086】
一部の実装において、
図5の1つ以上のプロセスブロックはプラットフォーム120によって実行され得る。一部の実装において、
図5の1つ以上のプロセスブロックは、例えばユーザ装置110など、プラットフォーム120とは別の又はそれを含んだ装置又は装置群によって実行されてもよい。
【0087】
図5に示すように、動作510にて、方法500は、ワークフローを取得することを含む。ワークフローは入力メディアストリームを含み得る。
【0088】
動作520にて、方法500は、入力メディアストリームを1つ以上のタスクに分割することによって変更ワークフローを生成することを含む。
【0089】
動作530にて、方法500は、スケジュールタイプ情報を含むものであるスケジュール記述子に基づいて、クラウドプラットフォーム上で上記1つ以上のタスクをスケジューリングすることを含む。一実施形態によれば、スケジュール記述子は、スケジュールタイプ情報に対応するコマンド情報を含み、コマンド情報は、クラウドプラットフォームの能力を取得するための情報、スケジューリング要求内のスケジュールタイプ情報が実施可能であるかを決定するための情報、及び/又は、スケジューリング要求内のスケジュールタイプ情報が実施可能であるかを決定した結果を含む応答を提供するための情報を含む。
【0090】
一実施形態によれば、スケジュールタイプ情報は、順序情報、継続時間情報、イベント情報、又はタイムスロット情報のうちの1つを含む。一実施形態によれば、スケジュールタイプ情報が順序情報であるとの決定に基づいて、1つ以上のタスクの各々をある順序で実行するようにスケジューリングする。一実施形態によれば、スケジュールタイプ情報が継続時間情報であるとの決定に基づいて、1つ以上のタスクのうちの第1のタスクを第1の期間で実行するようにスケジューリングする。一実施形態によれば、スケジュールタイプ情報がイベント情報であるとの決定に基づいて、1つ以上のタスクのうちの第1のタスクを、該第1のタスクの実行を開始又は停止するトリガーとしての入力メディアストリームにおけるイベントの発生に基づいて実行するようにスケジューリングする。イベント情報に基づく1つ以上のタスクの実行において、1つ以上のタスクの各々に対して新たな一時停止状態が定義され、1つ以上のタスクの各々が、それぞれのタスクにおいて更なるデータを処理しない間、内部状態及び情報を維持する。一実施形態によれば、スケジュールタイプ情報がタイムスロット情報であるとの決定に基づいて、1つ以上のタスクのうちの第1のタスクを指定タイムスロット内で実行するようにスケジューリングする。タイムスロット情報は、正確なタイムフレームがスケジューリングのために提供される明示的スケジューリングモード、又は、開始、終了、インクリメント、期間スキームがスケジューリングのために提供されるインデックス付きスケジューリングモード、を含む。
【0091】
動作540にて、方法500は、上記1つ以上のタスクの上記スケジューリングに基づいて上記変更ワークフローを処理することを含む。
【0092】
図5は当該方法のブロック例を示しているが、一部の実装において、当該方法は、
図5に示したものに対して、追加のブロック、少ないブロック、異なるブロック、又は異なる構成のブロックを含み得る。加えて、あるいは代わりに、当該方法のブロックのうちの2つ以上が並行して実行されてもよい。
【0093】
図6は、1つ以上の実施形態に従った、クラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングするためのコンピュータコードの一例のブロック図である。
【0094】
本開示の実施形態によれば、コンピュータコードを格納するメモリを備えた少なくとも1つのプロセッサが提供され得る。コンピュータコードは、該少なくとも1つのプロセッサによって実行されるときに、本開示の任意の数の態様を実行するように構成され得る。
【0095】
例えば、
図6を参照するに、コンピュータコード600がNBMPシステム300内に実装され得る。
【0096】
図6に示すように、コンピュータコード600は、取得コード610、生成コード620、スケジューリングコード630、及び処理コード640を含み得る。
【0097】
取得コード610は、上記少なくとも1つのプロセッサに、入力メディアストリームを含む入力ワークフローを取得させるように構成されたコードを含み得る。
【0098】
生成コード620は、上記少なくとも1つのプロセッサに、上記入力メディアストリームを1つ以上のタスクに分割することによって変更ワークフローを生成させるように構成されたコードを含み得る。
【0099】
スケジューリングコード630は、上記少なくとも1つのプロセッサに、スケジュールタイプ情報を含むものであるスケジュール記述子に基づいて、クラウドプラットフォーム上で上記1つ以上のタスクをスケジューリングさせるように構成されたコードを含み得る。
【0100】
処理コード640は、上記少なくとも1つのプロセッサに、上記1つ以上のタスクの上記スケジューリングに基づいて変更ワークフローを処理させるように構成されたコードを含み得る。
【0101】
図6は、実施形態に従った機器又は装置のコンピュータコード600のブロックの例を示しているが、一部の実装において、当該機器は、
図6に示したものに対して、追加のブロック、少ないブロック、異なるブロック、又は異なる構成のブロックを含み得る。加えて、あるいは代わりに、当該機器のブロックのうちの2つ以上が並行して実行されてもよい。
【0102】
上述したクラウドプラットフォーム上でネットワークベースメディア処理(NBMP)ワークフローをスケジューリングするための技術は、別々に使用されてもよいし、何らかの順序で組み合わされてもよい。また、それらの方法(又は実施形態)の各々は、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装され得る。一例において、上記1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能媒体に格納されたプログラムを実行し得る。
【0103】
本開示は、例示及び説明を提供するものであり、網羅的であること、又は開示されたままの形態に実装を限定することを意図するものではない。変更及び変形が、本開示に照らして可能であり、又は実装の実施から習得され得る。
【0104】
ここで使用されるとき、コンポーネントなる用語は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせとして広く解釈されることが意図される。
【0105】
明らかになることには、ここに記載されたシステム及び/又は方法は、様々な形態のハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせで実装され得る。これらのシステム及び/又は方法を実装するのに使用される実際の特殊化された制御ハードウェア又はソフトウェアコードは、実装の限定となるものではない。従って、ここでは、システム及び/又は方法の動作及び挙動を、特定のソフトウェアコードを参照することなく記述しており、理解されることには、ここでの記載に基づくシステム及び/又は方法を実装するように、ソフトウェア及びハードウェアが設計され得る。
【0106】
複数の機構の組み合わせが請求項に記載され且つ/或いは明細書に開示されているとしても、それらの組み合わせは、可能な実装の開示を限定することを意図するものではない。実際、それらの機構のうち多くは、具体的には請求項に記載され且つ/或いは明細書に開示されたものではないように組み合わされることができる。以下に挙げられる各従属請求項は1つのクレームのみに直接的に従属することがあるが、可能な実装の開示は、各従属請求項を、請求項セット内のあらゆる他のクレームとの組み合わせで含む。
【0107】
ここで使用される如何なる要素、行為、又は命令も、そのように明示的に記載されない限り、重要又は必須であるとして解釈されないとし得る。また、ここで使用されるとき、冠詞“a”及び“an”は、1つ以上のアイテムを含むことを意図しており、“1つ以上の”と交換可能に使用され得る。さらに、ここで使用されるとき、用語“セット”は、1つ以上のアイテム(例えば、関連アイテム、非関連アイテム、関連アイテムと非関連アイテムとの組み合わせなど)を含むことを意図しており、“1つ以上”と交換可能に使用され得る。1つのアイテムのみが意図される場合には、用語“1つの”又は類似の言葉が使用される。また、ここで使用されるとき、用語“持つ”、“有する”、“持っている”などは、オープンエンドの用語であることを意図している。さらに、“に基づく”という言い回しは、明示的に別の断りがない限り、“少なくとも部分的に基づく”を意味することを意図している。