(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-04
(45)【発行日】2024-07-12
(54)【発明の名称】データフローにおいて連続性を持たせかつ途切れることなしにワークフローをスイッチングする又はワークフローを更新するための方法、ワークフローマネージャ、およびコンピュータプログラム
(51)【国際特許分類】
G06F 9/48 20060101AFI20240705BHJP
【FI】
G06F9/48 370
(21)【出願番号】P 2022563074
(86)(22)【出願日】2022-03-28
(86)【国際出願番号】 US2022022106
(87)【国際公開番号】W WO2022225650
(87)【国際公開日】2022-10-27
【審査請求日】2022-10-17
(32)【優先日】2021-04-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】三坂 敏夫
(56)【参考文献】
【文献】国際公開第2020/116896(WO,A1)
【文献】国際公開第2020/166323(WO,A1)
【文献】国際公開第2021/062134(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
メディアシステムのワークフローマネージャの少なくとも1つのプロセッサによって実行される方法であって、
第1のネットワークベースのメディア処理(NBMP)ワークフロー記述文書(WDD)を取得するステップと、
前記第1のNBMP WDDに対応する第1のワークフローを作成するステップと、
少なくとも1つのメディア処理エンティティ(MPE)
に前記第1のワークフローに従ってタスクを実行させる第1の要求メッセージを送信するステップと、
前記第1のワークフローを更新するための第2のNBMP WD
Dを取得するステップであって、前記第2のNBMP WDDは、前記第2のNBMP WDDに対応する第2のワークフローが第1のワークフローの継続であるかどうかを示す継続性フラグを含む、ステップと、
前記第2のNBMP WD
Dに基づいて前記第2のワークフローを作成するステップと、
前記少なくとも1つのMPE
に前記第2のワークフローに従って前記タスクを実行させる第2の要求メッセージを送信するステップと、
を含
み、
前記第1のワークフローの前記タスクは、前記第1のNBMP WDD内の接続識別子によって一意に識別され、
前記第2のNBMP WDD内に、前記第1のNBMP WDD内の前記接続識別子が存在する場合、前記接続識別子に対応する前記第1のワークフローの前記タスクに変更がないことを示す、方法。
【請求項2】
前記第2のワークフローが前記第1のワークフローの前記継続であることを示す前記継続性フラグに基づいて、前記第1のワークフローに従った前記
タスクの実行に対応するすべてのデータは、前記第2のワークフローに従った前記
タスクの実行中に維持される、請求項1に記載の方法。
【請求項3】
前記第2の
NBMP WDDは、前記第1のワークフローに従った前記
タスクの実行から前記第2のワークフローに従った前記
タスクの実行にスイッチングするための時間を示すシンタックス要素をさらに含む、請求項1に記載の方法。
【請求項4】
前記更新は、ワークフロー更新及びタスク更新のうちの1つである、請求項1に記載の方法。
【請求項5】
前記第1のワークフローのタスクは、前記第1の
NBMP WDD内の第1の接続マップオブジェクトによって表され、
前記第1の接続マップオブジェクトは、前記第1のワークフローに対応する接続マップ内の前記タスクの位置、及び前記第1のワークフロー内の別の要素への少なくとも1つの接続を規定し、
前記第1の接続マップオブジェクトは、前記タスクを識別する
前記接続識別子を含む、
請求項1に記載の方法。
【請求項6】
前記第2の
NBMP WDD内の第2の接続マップオブジェクトに
前記第1のNBMP WDD内の前記接続識別子が含まれている
場合、
前記接続識別子に対応する前記第1のワークフローの前記タスクは前記第2のワークフローにおいて維持される、
請求項5に記載の方法。
【請求項7】
前記第2のワークフローが前記第1のワークフローの前記継続であることを示す前記継続性フラグに基づいて、前記第1のワークフローにおける前記タスクの実行に対応するすべてのデータは前記第2のワークフローにおいて維持される、請求項6に記載の方法。
【請求項8】
メディアシステムのワークフローマネージャであって、
プログラムコードを記憶する少なくとも1つのメモリと、
前記プログラムコードを読み出し、前記プログラムコードによって指示されるように動作するように構成された少なくとも1つのプロセッサであって、前記プログラムコードは、
前記少なくとも1つのプロセッサにより請求項1から7のいずれか一項に記載の方法を実行可能に構成されたコード
を含む、少なくとも1つのプロセッサと、
を具備する、ワークフローマネージャ。
【請求項9】
コンピュータに、請求項1から7のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年4月19日に出願された米国仮特許出願第63/176,761号の優先権を主張し、この特許の開示内容は、参照することによってその全体が本明細書に組み込まれる。
【0002】
本開示の実施形態は、ムービング・ピクチャ・エクスパーツ・グループ(Moving Picture Experts Group、MPEG)ネットワークベースのメディア処理(Network Based Media Processing、NBMP)、より詳細には、NBMPワークフローを管理することに関する。
【背景技術】
【0003】
MPEGネットワークベースのメディア処理(NBMP)プロジェクトは、クラウド上でメディアを処理する概念を開発した。NBMPドラフト国際仕様は、メディア処理効率、メディアサービスのより高速で低コストの配備、及びパブリック、プライベート、又はハイブリッドクラウドサービスを活用することによる大規模な配備を提供する能力を向上させる大きな可能性を示している。
【0004】
しかしながら、NBMPの現行仕様はワークフローを更新することを許しているが、データのフローが継続される必要があるのかどうか、又は更新中にいかなるデータも失われるべきではないのかどうかを定義していない。
【発明の概要】
【課題を解決するための手段】
【0005】
実施形態では、メディアシステムのワークフローマネージャの少なくとも1つのプロセッサによって実行される方法は、第1のネットワークベースのメディア処理(NBMP)ワークフロー記述文書(workflow description document、WDD)を取得するステップと、第1のWDDに対応する第1のワークフローを作成するステップと、第1のワークフローに従って少なくとも1つのメディア処理エンティティ(media processing entity、MPE)を管理するステップと、第2のWDDを含む更新を取得するステップであって、第2のWDDは、第2のWDDに対応する第2のワークフローが第1のワークフローの継続であるかどうかを示す継続性(continuity)フラグを含む、ステップと、第2のワークフローを作成するステップと、第2のワークフローに従って少なくとも1つのMPEを管理するステップとを含む。
【0006】
実施形態では、メディアシステムのワークフローマネージャは、プログラムコードを記憶する少なくとも1つのメモリと、プログラムコードを読み出し、プログラムコードによって命令されるように動作し、プログラムコードは、少なくとも1つのプロセッサに第1のネットワークベースのメディア処理(NBMP)ワークフロー記述文書(WDD)を取得させるように構成された第1の取得コード、少なくとも1つのプロセッサに第1のWDDに対応する第1のワークフローを作成させるように構成された第1の作成コード、少なくとも1つのプロセッサに第1のワークフローに従って少なくとも1つのメディア処理エンティティ(MPE)を管理させるように構成された第1の管理コード、少なくとも1つのプロセッサに第2のWDDを含む更新を取得させ、第2のWDDは、第2のWDDに対応する第2のワークフローが第1のワークフローの継続であるかどうかを示す継続性(continuity)フラグを含む、ように構成された第2の取得コード、少なくとも1つのプロセッサに第2のワークフローを作成させるように構成された第2の作成コード、及び少なくとも1つのプロセッサに第2のワークフローに従って少なくとも1つのMPEを管理させるように構成された第2の管理コード、を含む、ように構成された少なくとも1つのプロセッサと、を含む。
【0007】
実施形態では、非一時的なコンピュータ可読媒体はメディアシステムのワークフローマネージャを実施する少なくとも1つのプロセッサによって実行されたとき、少なくとも1つのプロセッサに、第1のネットワークベースのメディア処理(NBMP)ワークフロー記述文書(WDD)を取得させ、第1のWDDに対応する第1のワークフローを作成させ、第1のワークフローに従って少なくとも1つのメディア処理エンティティ(MPE)を管理させ、第2のWDDを含む更新を取得させ、第2のWDDは、第2のWDDに対応する第2のワークフローが第1のワークフローの継続であるかどうかを示す継続性(continuity)フラグを含み、第2のワークフローを作成させ、及び第2のワークフローに従って少なくとも1つのMPEを管理させる、ように構成されたコンピュータコードを記憶する。
【0008】
開示されている主題の更なる特徴、特性、及びさまざまな利点は、以下の詳細な説明及び添付の図面からより明らかになる。
【図面の簡単な説明】
【0009】
【
図1】実施形態に係る、本明細書に記載の方法、装置、及びシステムがその中に実施され得る環境を示す図である。
【
図2】
図1の1又は複数のデバイスの例示的なコンポーネントのブロック図である。
【
図3】実施形態に係る、NBMPシステムのブロック図である。
【
図4】実施形態に係る、ワークフロー管理プロセスの一例のブロック図である。
【
図5】実施形態に係る、コンピュータコードの一例のブロック図である。
【発明を実施するための形態】
【0010】
図1は、実施形態に係る、本明細書に記載の方法、装置、及びシステムがその中に実施され得る環境100を示す図である。
図1に示されるように、環境100は、ユーザデバイス110と、プラットフォーム120と、ネットワーク130とを含み得る。環境100のデバイスは、有線接続、無線接続、又は有線接続と無線接続との組合せを介して相互接続され得る。
【0011】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信し、生成し、記憶し、処理し、及び/又は提供することができる、1又は複数のデバイスを含む。たとえば、ユーザデバイス110は、コンピューティングデバイス(たとえば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(たとえば、スマートフォン、無線電話など)、ウェアラブルデバイス(たとえば、スマートメガネ又はスマートウォッチなど)、又は同様のデバイスを含み得る。いくつかの実施態様では、ユーザデバイス110は、プラットフォーム120から情報を受信し、及び/又はプラットフォーム120に情報を送信し得る。
【0012】
プラットフォーム120は、本明細書の他の箇所に記載されているような、1又は複数のデバイスを含み得る。いくつかの実施態様では、プラットフォーム120は、クラウドサーバ又はクラウドサーバのグループを含み得る。いくつかの実施態様では、プラットフォーム120は、ソフトウェアコンポーネントが特定の必要性に応じてスワップイン又はスワップアウトされ得るようにモジュール式に設計され得る。したがって、プラットフォーム120は、異なる用途向けに、容易に及び/又は迅速に再コンフィギュレーションされ得る。
【0013】
いくつかの実施態様では、示されるように、プラットフォーム120は、クラウドコンピューティング環境122内でホストされ得る。特に、本明細書に記載の実施態様では、プラットフォーム120がクラウドコンピューティング環境122内でホストされるものとして記載しているが、いくつかの実施態様では、プラットフォーム120はクラウドベースでなくてもよい(すなわち、クラウドコンピューティング環境の外部で実施されてもよい)か、又は部分的にクラウドベースであってもよい。
【0014】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含む。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステム及び/又はデバイスの物理的な位置及びコンフィギュレーションに関するエンドユーザ(たとえば、ユーザデバイス110)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供し得る。示されるように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「コンピューティングリソース124」と総称され、個別に「コンピューティングリソース124」と称される)を含み得る。
【0015】
コンピューティングリソース124は、1又は複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、又は他のタイプの計算デバイス及び/又は通信デバイスを含む。いくつかの実施態様では、コンピューティングリソース124は、プラットフォーム120をホストし得る。クラウドリソースは、コンピューティングリソース124内で実行される計算インスタンス、コンピューティングリソース124内に提供されるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含み得る。いくつかの実施態様では、コンピューティングリソース124は、有線接続、無線接続、又は有線接続と無線接続との組合せを介して他のコンピューティングリソース124と通信し得る。
【0016】
図1にさらに示されるように、コンピューティングリソース124は、1又は複数のアプリケーション(「APP」)124-1、1又は複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1又は複数のハイパーバイザ(「HYP」)124-4など、クラウドリソースのグループを含む。
【0017】
アプリケーション124-1は、ユーザデバイス110及び/又はプラットフォーム120に提供されるか、又はそれによってアクセスされ得る1又は複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110上にソフトウェアアプリケーションをインストール及び実行する必要性を排除し得る。たとえば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェア及び/又はクラウドコンピューティング環境122を介して提供されることが可能な他の任意のソフトウェアを含み得る。いくつかの実施態様では、1つのアプリケーション124-1が仮想マシン124-2を介して1又は複数の他のアプリケーション124-1へ/から情報を送信/受信し得る。
【0018】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(たとえば、コンピュータ)のソフトウェア実施を含む。仮想マシン124-2は、仮想マシン124-2による任意の実マシンの使用及び対応度に応じて、システム仮想マシン又はプロセス仮想マシンのいずれかであり得る。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供し得る。プロセス仮想マシンは単一のプログラムを実行し得、単一のプロセスをサポートし得る。いくつかの実施態様では、仮想マシン124-2は、ユーザ(たとえば、ユーザデバイス110)に代わって実行し得、データ管理、同期、又は長期間データ転送など、クラウドコンピューティング環境122のインフラを管理し得る。
【0019】
仮想化ストレージ124-3は、コンピューティングリソース124のストレージシステム又はデバイス内で仮想化技術を使用する、1又は複数のストレージシステム及び/又は1又は複数のデバイスを含み得る。いくつかの実施態様では、ストレージシステムのコンテキスト内で、仮想化のタイプはブロック仮想化及びファイル仮想化を含み得る。ブロック仮想化は、物理ストレージ又はヘテロジニアス構造に関係なくストレージシステムがアクセスされ得るような、物理ストレージからの論理ストレージの抽出(又は分離)を指し得る。分離は、ストレージシステムのアドミニストレータに、アドミニストレータがエンドユーザのためにストレージを管理する方法における柔軟性を許し得る。ファイル仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に記憶されている場所との間の依存関係を排除し得る。これによって、ストレージ使用の最適化、サーバの統合、及び/又は中断のないファイル移行を可能にし得る。
【0020】
ハイパーバイザ124-4は、複数のオペレーティングシステム(たとえば、「ゲスト・オペレーティング・システム」)がコンピューティングリソース124などのホストコンピュータ上で同時に実行することを可能にするハードウェア仮想化技術を提供し得る。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲスト・オペレーティング・システムに提示し得、ゲスト・オペレーティング・システムの実行を管理し得る。さまざまなオペレーティングシステムの複数のインスタンスが、仮想化ハードウェアリソースを共有し得る。
【0021】
ネットワーク130は、1又は複数の有線ネットワーク及び/又は無線ネットワークを含む。たとえば、ネットワーク130は、セルラーネットワーク(たとえば、第5世代(fifth generation、5G)ネットワーク、ロング・ターム・エボリューション(long-term evolution、LTE)ネットワーク、第3世代(third generation、3G)ネットワーク、符号分割多元接続(code division multiple access、CDMA)ネットワークなど)、公衆陸上移動体ネットワーク(public land mobile network、PLMN)、ローカル・エリア・ネットワーク(local area network、LAN)、ワイド・エリア・ネットワーク(wide area network、WAN)、メトロポリタン・エリア・ネットワーク(metropolitan area network、MAN)、電話ネットワーク(たとえば、公衆交換電話網(Public Switched Telephone Network、PSTN))、プライベートネットワーク、アド・ホック・ネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、及び/又は、それら又は他のタイプのネットワークの組合せを含み得る。
【0022】
図1に示されるデバイス及びネットワークの数及び配置は、一例として提供されている。実際には、
図1に示されるものに比べて、追加のデバイス及び/又はネットワーク、より少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク、又は異なって配置されたデバイス及び/又はネットワークが存在してもよい。さらに、
図1に示される2つ以上のデバイスは単一のデバイス内で実施されてもよく、又は
図1に示される単一のデバイスは複数の分散したデバイスとして実施されてもよい。追加的に、又は代替的に、環境100のデバイスのセット(たとえば、1又は複数のデバイス)は、環境100のデバイスの別のセットによって実行されるものとして説明されている1又は複数の機能を実行してもよい。
【0023】
図2は、
図1の1又は複数のデバイスの例示的なコンポーネントのブロック図である。デバイス200は、ユーザデバイス110及び/又はプラットフォーム120に対応し得る。
図2に示されるように、デバイス200は、バス210と、プロセッサ220と、メモリ230と、ストレージコンポーネント240と、入力コンポーネント250と、出力コンポーネント260と、通信インタフェース270とを含み得る。
【0024】
バス210は、デバイス200のコンポーネント間の通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組合せで実施される。プロセッサ220は、中央処理装置(central processing unit、CPU)、グラフィック処理装置(graphics processing unit、GPU)、加速処理装置(accelerated processing unit、APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(digital signal processor、DSP)、フィールド・プログラマブル・ゲート・アレイ(field-programmable gate array、FPGA)、特定用途向け集積回路(application-specific integrated circuit、ASIC)、又は別のタイプの処理コンポーネントである。いくつかの実施態様では、プロセッサ220は、機能を実行するようにプログラムされることができる1又は複数のプロセッサを含む。メモリ230は、ランダム・アクセス・メモリ(random access memory、RAM)、読出し専用メモリ(read only memory、ROM)、及び/又はプロセッサ220による使用のために情報及び/又は命令を記憶する別のタイプの動的又は静的なストレージデバイス(たとえば、フラッシュメモリ、磁気メモリ、及び/又は光学メモリ)を含む。
【0025】
ストレージコンポーネント240は、デバイス200の動作及び使用に関連する情報及び/又はソフトウェアを記憶する。たとえば、ストレージコンポーネント240は、対応するドライブと共に、ハードディスク(たとえば、磁気ディスク、光ディスク、光磁気ディスク、及び/又はソリッド・ステート・ディスク)、コンパクトディスク(compact disc、CD)、デジタル多用途ディスク(digital versatile disc、DVD)、フロッピーディスク、カートリッジ、磁気テープ、及び/又は別のタイプの非一時的なコンピュータ可読媒体を含み得る。
【0026】
入力コンポーネント250は、デバイス200が、ユーザ入力を介してなど、情報を受信することを可能にするコンポーネント(たとえば、タッチ・スクリーン・ディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイク)を含む。追加的に、又は代替的に、入力コンポーネント250は、情報を検知するためのセンサ(たとえば、全地球測位システム(global positioning system、GPS)コンポーネント、加速度計、ジャイロスコープ、及び/又はアクチュエータ)を含み得る。出力コンポーネント260は、デバイス200からの出力情報を提供するコンポーネント(たとえば、ディスプレイ、スピーカ、及び/又は1又は複数の発光ダイオード(light-emitting diode、LED))を含む。
【0027】
通信インタフェース270は、有線接続、無線接続、又は有線接続と無線接続との組合せを介してなど、デバイス200が他のデバイスと通信することを可能にする、トランシーバのようなコンポーネント(たとえば、トランシーバ及び/又は別々のレシーバ及びトランスミッタ)を含む。通信インタフェース270は、デバイス200が別のデバイスから情報を受信し、及び/又は別のデバイスに情報を提供することを可能にし得る。たとえば、通信インタフェース270は、イーサネットインタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、無線周波数(radio frequency、RF)インタフェース、ユニバーサル・シリアル・バス(universal serial bus、USB)インタフェース、Wi-Fiインタフェース、セルラ・ネットワーク・インタフェースなどを含み得る。
【0028】
デバイス200は、本明細書に記載の1又は複数のプロセスを実行し得る。デバイス200は、プロセッサ220がメモリ230及び/又はストレージコンポーネント240などの非一時的なコンピュータ可読媒体によって記憶されたソフトウェア命令を実行することに応答して、これらのプロセスを実行し得る。コンピュータ可読媒体は、本明細書では非一時的なメモリデバイスと定義されている。メモリデバイスは、単一の物理ストレージデバイス内のメモリ空間、又は複数の物理ストレージデバイスにわたって広がるメモリ空間を含む。
【0029】
ソフトウェア命令は、別のコンピュータ可読媒体から、又は通信インタフェース270を介して別のデバイスから、メモリ230及び/又はストレージコンポーネント240に読み込まれ得る。メモリ230及び/又はストレージコンポーネント240に記憶されたソフトウェア命令は、実行されると、プロセッサ220に本明細書に記載の1又は複数のプロセスを実行させ得る。追加的に、又は代替的に、本明細書に記載の1又は複数のプロセスを実行するために、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合わせて、ハードワイヤード回路が使用されてもよい。このように、本明細書に記載の実施態様は、ハードウェア回路とソフトウェアとのいかなる特定の組合せにも限定されない。
【0030】
図2に示されるコンポーネントの数及び配置は、一例として提供されている。実際には、デバイス200は、
図2に示されるものに対して、追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、又は異なる配置のコンポーネントを含んでもよい。追加的に、又は代替的に、デバイス200のコンポーネントのセット(たとえば、1又は複数のコンポーネント)は、デバイス200のコンポーネントの別のセットによって実行されるものとして説明される1又は複数の機能を実行してもよい。
【0031】
本開示の一実施形態では、NBMPシステム300が提供される。
図3を参照すると、NBMPシステム300は、NBMPソース310と、NBMPワークフローマネージャ320と、機能リポジトリ330と、1又は複数のメディア処理エンティティ350と、メディアソース360と、メディアシンク370と、を含む。
【0032】
NBMPソース310は、サード・パーティ・エンティティから命令を受信し得、NBMPワークフロー・アプリケーション・プログラミング・インタフェース(application programming interface、API)392を介してNBMPワークフローマネージャ320と通信し得、機能探索API 391を介して機能リポジトリ330と通信し得る。たとえば、NBMPソース310は、ワークフロー記述文書(WDD)をNBMPワークフローマネージャ320に送信し得、機能リポジトリ330に記憶された機能の機能記述を読み出し得、機能は、たとえば、メディアデコーディング、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンディング、後処理、及びエンコーディングの機能などの、機能リポジトリ330のメモリに記憶されたメディア処理機能である。NBMPソース310は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPソース310の機能を実行させるように構成されたコードを記憶するメモリと、を含み得るか、又はそれらによって実施され得る。
【0033】
NBMPソース310は、それぞれがいくつかのパラメータを有し得る、いくつかの記述子を含み得る、ワークフロー記述文書を送信することによって、1又は複数のメディア処理エンティティ350によって実行されるべきタスク352を含むワークフローを作成するように、NBMPワークフローマネージャ320に要求し得る。
【0034】
たとえば、NBMPソース310は、機能リポジトリ330に記憶された機能を選択し得、入力及び出力データ、必要な機能、及びワークフローの要件などの記述詳細のためのさまざまな記述子を含むワークフロー記述文書をNBMPワークフローマネージャ320に送信し得る。ワークフロー記述文書は、タスク記述のセットと、メディア処理エンティティ350の1又は複数によって実行されるべきタスク352の入力及び出力の接続マップとを含み得る。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信したとき、NBMPワークフローマネージャ320は、機能名に基づいてタスクをインスタンス化し、接続マップに従ってタスクを接続することによってワークフローを作成し得る。
【0035】
代替的に、又は追加的に、NBMPソース310は、キーワードのセットを使用してワークフローを作成するようにNBMPワークフローマネージャ320に要求してもよい。たとえば、NBMPソース310は、機能リポジトリ330に記憶された適切な機能を見つけるためにNBMPワークフローマネージャ320が使用し得るキーワードのセットを含み得るワークフロー記述文書をNBMPワークフローマネージャ320に送信し得る。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信したとき、NBMPワークフローマネージャ320は、ワークフロー記述文書の処理記述子内に指定され得るキーワードを使用して適切な機能を検索することによってワークフローを作成し得、ワークフロー記述文書内の他の記述子を使用してタスクを提供し、それらを接続してワークフローを作成し得る。
【0036】
NBMPワークフローマネージャ320は、機能探索API 391と同じか又は異なるAPIであり得る機能探索API 393を介して機能リポジトリ330と通信し得、API 394(たとえば、NBMPタスクAPI)を介してメディア処理エンティティ350のうちの1又は複数と通信し得る。NBMPワークフローマネージャ320は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPワークフローマネージャ320の機能を実行させるように構成されたコードを記憶するメモリと、を含み得るか、又はそれらによって実施され得る。
【0037】
NBMPワークフローマネージャ320は、API 394を使用して、1又は複数のメディア処理エンティティ350によって実行可能なワークフローの1又は複数のタスク352をセットアップし、コンフィギュレーションし、管理し、及び監視し得る。一実施形態では、NBMPワークフローマネージャ320は、API 394を使用してタスク352を更新及び破棄し得る。ワークフローのタスク352をコンフィギュレーションし、管理し、及び監視するために、NBMPワークフローマネージャ320は、要求などのメッセージをメディア処理エンティティ350のうちの1又は複数に送信し得、各メッセージは、それぞれがいくつかのパラメータを有する、いくつかの記述子を有し得る。タスク352はそれぞれ、メディア処理機能354と、メディア処理機能354のためのコンフィギュレーション353とを含み得る。
【0038】
一実施形態では、タスクのリストを含まない(たとえば、タスクのリストの代わりにキーワードのリストを含む)ワークフロー記述文書をNBMPソース310から受信した後、NBMPワークフローマネージャ320は、現在のワークフローのタスク352として実行する適切な機能を見つけるために、機能探索API 393を介して、機能リポジトリ330を検索するため、ワークフロー記述文書内のタスクの記述に基づいてタスクを選択し得る。たとえば、NBMPワークフローマネージャ320は、ワークフロー記述文書内で提供されたキーワードに基づいてタスクを選択し得る。NBMPソース310によって提供されるキーワード又はタスク記述のセットを使用して適切な機能が識別された後、NBMPワークフローマネージャ320は、API 394を使用してワークフローの選択されたタスクをコンフィギュレーションし得る。たとえば、NBMPワークフローマネージャ320は、NBMPソースから受信した情報からコンフィギュレーションデータを抽出し、コンフィギュレーションデータに基づいてタスク352をコンフィギュレーションし得る。
【0039】
1又は複数のメディア処理エンティティ350は、メディアソース360からメディアコンテンツを受信し、NBMPワークフローマネージャ320によって作成されたタスク352を含む、ワークフローに従ってメディアコンテンツを処理し、処理されたメディアコンテンツをメディアシンク370に出力する、ように構成され得る。1又は複数のメディア処理エンティティ350はそれぞれ、少なくとも1つのプロセッサと、少なくともプロセッサにメディア処理エンティティ350の機能を実行させるように構成されたコードを記憶するメモリと、を含むか、又はそれらによって実施され得る。
【0040】
メディアソース360は、メディアを記憶するメモリを含み得、NBMPソース310と統合されてもよいし、別個であってもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知し得、メディアソース360は、ワークフローが準備されたという通知に基づいてメディアコンテンツをメディア処理エンティティ350のうちの1又は複数に送信し得る。
【0041】
メディアシンク370は、少なくとも1つのプロセッサと、1又は複数のメディア処理エンティティ350によって処理されるメディアを表示するように構成された少なくとも1つのディスプレイと、を含むか、又はそれらによって実施され得る。
【0042】
上述されるように、NBMPソース310からNBMPワークフローマネージャ320へのメッセージ(たとえば、ワークフローの作成を要求するためのワークフロー記述文書)、及びNBMPワークフローマネージャ320から1又は複数のメディア処理エンティティ350への(たとえば、ワークフローを実行させるための)メッセージは、それぞれがいくつかのパラメータを有し得る、いくつかの記述子を含み得る。実施形態では、APIを使用するNBMPシステム300のコンポーネントのいずれかの間の通信は、それぞれがいくつかのパラメータを有し得る、いくつかの記述子を含み得る。
【0043】
実施形態は、データに一切の途切れなく、又はデータを一切取り逃がすことなく、実行中にクラウドワークフローをシームレスにスイッチング又は更新するための方法を提供し得る。それに応じて、実施形態は、NBMPの仕様にシームレスな継続性の特徴を追加し得る。
【0044】
NBMP関連のプロセスの間、ワークフローは長時間動作してい得る。データボリュームの増加に起因して、ワークフローの1又は複数のタスクは、付加の増加に対処するために分割される必要があり得る。この場合、新たなワークフローへのスイッチングに起因してデータが失われないことが望ましい場合がある。
【0045】
いくつかの配備では、現在のタスクが再使用されることができる。そのため、そこで、現在のタスクが、更新されたワークフローにおいて使用されることができる。いくつかのアプリケーションでは、新たなワークフローへスイッチングするステップは、たとえばデータ収集又は課金目的のために、正確な時間に起こる必要があり得る。
【0046】
現在のNBMPの仕様でワークフローを更新するためのNBMPワークフローAPIは、継続性の概念を一切持っておらず、このことは、NBMPワークフローマネージャが現在のワークフローを停止し、ワークフローを新しいもので更新し、再び開始することができ、この更新中にデータが失われるかもしれない、ということを意味する。
【0047】
実施形態は、たとえば以下の表1及び表2に示されるように、一般的な記述子に継続性(continuity)フラグを追加し得る。continuity=true(真)の場合、NBMPワークフローマネージャはデータを一切失うことなく2つのワークフロー間をスイッチングし得る。さらに、スイッチング時間はある時間であるように要求され得る。たとえば、報告のためにスイッチングの正確な時間を知ることは有用であり得る。
【0048】
【0049】
【0050】
本明細書の表では、実施形態に係るNBMPの仕様への追加は、イタリック体で示され得る。
【0051】
実施形態では、2つの新たなパラメータは、ワークフロー更新又はタスク更新と共に使用され得る。
【0052】
いくつかのケースでは、完全に並列なワークフローを実行するには大量のリソースが必要であり、クラウドプラットフォームは、更新の際に、実行中のワークフロー内のタスクのいくつかを維持することを好む場合がある。
【0053】
NBMPクライアントが新たなWDDを提供するので、ワークフローマネージャは実行中のワークフローと新たなWDDとの間の差を識別し得る。
【0054】
NBMPクライアントは、以下の情報、すなわち
1.変更されるタスクのリスト。
2.変更される接続のリスト。
を提供することによってこのタスクにおいて支援することができる。
【0055】
各タスクはWDD内に識別子(id)を有するので、たとえばそれを除去して新たなタスクと置き換えることによってタスクを変更すること、又は新たなタスクを導入することが容易に達成され得、すなわち、
1.すべての既存のタスクは、実行中のワークフロー内でidを有する。
2.実行中のワークフロー内のタスクの位置は、接続マップ内の「instance」の値で識別される。
3.ワークフロー更新におけるいかなる新たなタスクも設定された「instance」を有さない。
【0056】
上記を考慮すると、NBMPワークフローマネージャが、更新されたワークフロー内のどのタスク/機能インスタンスが新規で、どれが古いものであるかを識別することは容易であり得る。
【0057】
接続のリストを提供することに関しては、各ワークフローは、接続マップオブジェクトの配列によって定義され得る。ワークフローマネージャは、ワークフロー更新からのこの配列内の各オブジェクトを実行中のワークフローと比較し得、新たな又は更新された接続マップオブジェクトを識別し得る。しかしながら、プロセスを単純化するために、実施形態では、各コネクションマップオブジェクトにidが追加され得る。
【0058】
【0059】
【0060】
上述のように、本明細書の表では、実施形態に係るNBMPの仕様への追加は、イタリック体で示され得る。
【0061】
それに応じて、実施形態は、ワークフロー更新中にワークフロー動作のシームレスな継続性をシグナリングするための方法を提供し得、更新中にデータが失われず、スイッチング時間が定義され、要求されたスイッチング時間が不可能な場合、実際のスイッチング時間が応答で提供される。
【0062】
実施形態は、ワークフロー更新において古い接続及び新しい接続をシグナリングするための方法に関し得、各接続はユニークな識別子を有し、その結果、更新のために古い接続が消失した場合、それはもはや有効ではないことを意味し、ワークフロー更新に現れる新しい接続のidはそれが新しい接続であることを示し、同じidを有する接続は同一と見なされ、変更は必要とされない。
【0063】
実施形態は、本明細書に記載の方法のいずれかを一緒に使用して、すべてのタスク又は接続を置き換えることなくワークフローの一部を更新し、データを一切失うことなくワークフローの入力及び出力におけるデータフローの継続性を維持する方法に関し得る。
【0064】
図3及び
図4を参照しつつ、NBMPワークフローマネージャ320によって実行されるプロセス400が以下に説明される。
【0065】
図4は、例示的なプロセス400のフローチャートである。
【0066】
図4に示されるように、プロセス400は、第1のネットワークベースのメディア処理(NBMP)ワークフロー記述文書(WDD)を取得するステップ(ブロック410)を含み得る。
【0067】
図4にさらに示されるように、プロセス400は、第1のWDDに対応する第1のワークフローを作成するステップ(ブロック420)を含み得る。
【0068】
図4にさらに示されるように、プロセス400は、第1のワークフローに従って少なくとも1つのメディア処理エンティティ(MPE)を管理するステップ(ブロック430)を含み得る。
【0069】
図4にさらに示されるように、プロセス400は、第2のWDDを含む更新を取得するステップであって、第2のWDDは、第2のWDDに対応する第2のワークフローが第1のワークフローの継続であるかどうかを示す継続性(continuity)フラグを含む、ステップ(ブロック440)を含む。
【0070】
図4にさらに示されるように、プロセス400は、第2のワークフローを作成するステップ(ブロック450)を含み得る。
【0071】
図4にさらに示されるように、プロセス400は、第2のワークフローに従って少なくとも1つのMPEを管理するステップ(ブロック460)を含み得る。
【0072】
実施形態では、第2のワークフローが第1のワークフローの継続であることを示す継続性(continuity)フラグに基づいて、第1のワークフローに従った少なくとも1つのMPEの管理に対応するすべてのデータは、第2のワークフローに従った少なくとも1つのMPEの管理中に維持され得る。
【0073】
実施形態では、第2のWDDは、第1のワークフローに従った少なくとも1つのMPEの管理から第2のワークフローに従った少なくとも1つのMPEの管理にスイッチングするための時間を示すシンタックス要素をさらに含み得る。
【0074】
実施形態では、更新は、ワークフロー更新及びタスク更新のうちの1つであり得る。
【0075】
実施形態では、第1のワークフローのタスクは、第1のWDD内の第1の接続マップオブジェクトによって表され得、第1の接続マップオブジェクトは、第1のワークフローに対応する接続マップ内のタスクの位置、及び第1のワークフロー内の別の要素への少なくとも1つの接続を規定し、第1の接続マップオブジェクトは、タスクを識別する接続識別子を含む。
【0076】
実施形態では、第2のWDD内の第2の接続マップオブジェクトに含まれている接続識別子に基づいて、タスクは第2のワークフローにおいて維持され得る。
【0077】
実施形態では、第2のワークフローが第1のワークフローの継続であることを示す継続性(continuity)フラグに基づいて、第1のワークフローにおけるタスクの実行に対応するすべてのデータは第2のワークフローにおいて維持され得る。
【0078】
図4はプロセス400の例示的なブロックを示すが、いくつかの実施態様では、プロセス800は、
図4に記述されるものに対して追加のブロック、より少ないブロック、異なるブロック、又は異なる配置のブロックを含んでもよい。追加的に、又は代替的に、プロセス800の2つ以上のブロックが並列に実行されてもよい。
【0079】
さらに、提案された方法は、処理回路(たとえば、1又は複数のプロセッサ又は1又は複数の集積回路)によって実施されてもよい。一例では、1又は複数のプロセッサは、非一時的なコンピュータ可読媒体に記憶されているプログラムを実行して、提案された方法の1又は複数を実行する。
【0080】
本開示の実施形態によれば、コンピュータコード又はプログラムコードを記憶するメモリを有する少なくとも1つのプロセッサが提供され得る。コンピュータコードは、少なくとも1つのプロセッサによって実行されたときに、本開示の任意の数の態様を実行するように構成され得る。
【0081】
たとえば、
図5を参照しつつ、コンピュータコード500は、NBMPシステム300で実施され得る。たとえば、コンピュータコードは、NBMPワークフローマネージャ320のメモリに記憶され得、NBMPワークフローマネージャ320の少なくとも1つのプロセッサによって実行され得る。コンピュータコードは、たとえば、第1の取得コード510と、第1の導出コード520と、第1の管理コード530と、第2の取得コード540と、第2の導出コード550と、第2の管理コード560とを含み得る。
【0082】
実施形態では、第1の取得コード510、第1の導出コード520、第1の管理コード530、第2の取得コード540、第2の導出コード550、及び第2の管理コード560は、それぞれ、
図4を参照しつつ上述したプロセスの態様をNBMPワークフローマネージャ320に実行させるように構成され得る。
【0083】
本開示の実施形態は、別々に使用されてもよいし、又は任意の順序で組み合わされてもよい。さらに、実施形態(及びその方法)のそれぞれは、処理回路(たとえば、1又は複数のプロセッサ又は1又は複数の集積回路)によって実施されてもよい。一例では、1又は複数のプロセッサは、非一時的なコンピュータ可読媒体に記憶されたプログラムを実行する。
【0084】
前述の開示は例示及び説明を提供しているが、網羅的であること、又は開示されたまさにその形態に実施態様を限定することは意図されていない。修正及び変形は、上記の開示に照らして可能であるか、又は実施態様の実践から取得されてもよい。
【0085】
本明細書で使用される場合、コンポーネントという用語は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組合せとして広く解釈されることが意図されている。
【0086】
特徴の組合せが特許請求の範囲に列挙され、及び/又は本明細書に開示されているが、これらの組合せは、可能な実施態様の開示を限定することは意図されていない。実際には、これらの特徴の多くは、特許請求の範囲に具体的に列挙されていない、及び/又は本明細書に開示されていない方法で組み合わされてもよい。以下に列挙されている各従属請求項は1つの請求項のみに直接従属し得るが、可能な実施態様の開示は、請求項セット内の他のすべての請求項との組合せにおいて各従属請求項を含む。
【0087】
本明細書で使用される要素、動作、又は命令は、そのように明示的に記載されていない限り、重要又は必須であると解釈されるべきではない。また、本明細書で使用される場合、冠詞「a」及び「an」は、1又は複数のアイテムを含むことが意図されており、「1又は複数」と交換可能に使用され得る。さらに、本明細書で使用される場合、「セット」という用語は、1又は複数のアイテム(たとえば、関連アイテム、非関連アイテム、関連アイテムと非関連アイテムとの組合せなど)を含むことが意図されており、「1又は複数」と交換可能に使用され得る。1つのアイテムのみが意図される場合、「1つ」という用語又は同様の言葉が使用される。また、本明細書で使用される場合、「有する(has)」、「有する(have)」、「有する(having)」などの用語は、非限定的な用語であることが意図されている。さらに、「に基づいて(based on)」という語句は、特に明記しない限り、「に少なくとも部分的に基づいて」を意味することが意図されている。
【符号の説明】
【0088】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション(「APP」)
124-2 仮想マシン(「VM」)124-2
124-3 仮想化ストレージ(「VS」)
124-4 ハイパーバイザ(「HYP」)
130 ネットワーク
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 ストレージコンポーネント
250 入力コンポーネント
260 出力コンポーネント
270 通信インタフェース
300 NBMPシステム
310 NBMPソース
320 NBMPワークフローマネージャ
330 機能リポジトリ
350 メディア処理エンティティ
352 タスク
360 メディアソース
370 メディアシンク
391 機能探索API
392 NBMPワークフロー・アプリケーション・プログラミング・インタフェース
393 機能探索API
394 API
400 プロセス
500 コンピュータコード
510 第1の取得コード
520 第1の導出コード
530 第1の管理コード
540 第2の取得コード
550 第2の導出コード
560 第2の管理コード
800 プロセス