(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-09
(45)【発行日】2024-01-17
(54)【発明の名称】ネットワークベースのメディア処理ワークフローを管理するための方法、ワークフローマネージャおよびコンピュータプログラム
(51)【国際特許分類】
G06Q 10/06 20230101AFI20240110BHJP
【FI】
G06Q10/06
(21)【出願番号】P 2022521472
(86)(22)【出願日】2021-04-02
(86)【国際出願番号】 US2021025574
(87)【国際公開番号】W WO2021207027
(87)【国際公開日】2021-10-14
【審査請求日】2022-04-08
(32)【優先日】2020-04-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-06-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-03-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】藤澤 美穂
(56)【参考文献】
【文献】特表2015-515037(JP,A)
【文献】特開2004-206694(JP,A)
【文献】米国特許出願公開第2019/0007258(US,A1)
【文献】米国特許出願公開第2016/0203024(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサが実行する方法であって、前記方法は、
ワークフローマネージャにより、複数のワークフロータスクと、前記複数のワークフロータスクとメディアソース
またはメディアシン
クの間の複数
の距離を示す複数の近接パラメータとを含むネットワークベースのメディア処理(NBMP)ワークフローを取得するステップ
であって、前記距離は、前記複数のワークフロータスクから前記メディアソースまたは前記メディアシンクまでの、各メディアソースまたは各メディアシンクに対する相対距離を示す数である、ステップと、
前記複数
の距離に基づいて、前記複数のワークフロータスクを前記メディアシンク、前記メディアソース、および少なくとも1つのクラウド要素またはネットワーク要素に割り当てるステップ
であって、
前記距離が0であることに基づいて、前記ワークフロータスクは、前記メディアソースまたは前記メディアシンクによって実行されるように意図され、
前記距離が無限であることに基づいて、前記ワークフロータスクは、前記メディアソースまたは前記メディアシンクによって実行されることができない、ステップと、
前記割り当てられた複数のワークフロータスク
を実行させるためのメッセージを送信するステップとを含む、方法。
【請求項2】
前記NBMPワークフローは、前記ワークフローマネージャまたはNBMPソースの中の少なくとも1つによって提供される、請求項1に記載の方法。
【請求項3】
前記複数の近接パラメータの中からの1つの近接パラメータは、前記複数のワークフロータスクの1つのワークフロータスクと、前記メディアソース
または前記メディアシン
クの間
の距離を示す番号を含む、請求項1または2に記載の方法。
【請求項4】
前記NBMPワークフローは、ワークフロー記述文書に対応し、
前記複数の近接パラメータは、前記ワークフロー記述文書に含まれる少なくとも1つの一般的な記述子に含まれる、請求項1に記載の方法。
【請求項5】
前記NBMPワークフローは、前記複数のワークフロータスクの少なくとも1つを含むタスクグループを含む、請求項1に記載の方法。
【請求項6】
前記複数の近接パラメータの1つの近接パラメータは、前記タスクグループと、前記メディアソース
または前記メディアシン
クの間
の距離を示す、請求項
5に記載の方法。
【請求項7】
前記タスクグループに含まれる前記複数のワークフロータスクの前記少なくとも1つ
の距離は、
前記タスクグループの前
記距離
によって示される、請求項
6に記載の方法。
【請求項8】
前記複数
の距離の平均は、前記NBMPワークフローの効率を決定するために使用される、請求項1に記載の方法。
【請求項9】
前記複数の距離の平均は、以下の式によって定義される平均p-ノルム距離であり、
【数1】
d_iは、前記NBMPワークフローのn個の中のワークフロータスクiについての、メディアシンクまたはメディアソースまでの距離である、請求項8に記載の方法。
【請求項10】
メディアシステムのワークフローマネージャであって、前記ワークフローマネージャは、
少なくとも1つのプロセッサと、
請求項1~
9のいずれか一項に記載の方法を前記少なくとも1つのプロセッサに実行させるためのコンピュータコードを含むメモリとを備える、ワークフローマネージャ。
【請求項11】
メディアシステムのワークフローマネージャを実装する少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項1~
9のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年4月7日に出願された米国仮出願第63/006194号の優先権の利益を主張する、2021年3月26日に出願された米国特許出願第17/213948号、2020年6月22日に出願された米国仮出願第63/042477号、および2020年10月5日に出願された米国仮特許出願第63/087735号の優先権の利益を主張し、その開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本開示の実施形態は、動画専門家グループ(MPEG)ネットワークベースのメディア処理(NBMP)に関し、より詳細には、メディアワークフローにおけるタスク近接度に関する。
【背景技術】
【0003】
MPEGネットワークベースのメディア処理(NBMP)プロジェクトは、クラウド上でメディアを処理する概念を開発した。しかしながら、現在のNBMP設計は、種々のタスクを含むワークフローが種々のソースおよびシンクへのそれらのタスクの近接度を考慮して様々なクラウドおよびネットワークリソースにどのように割り当てられ得るかについての情報を全く提供しない。さらに、現在のNBMP設計が種々のタスクを実行するための近接パラメータを提供する限り、タスクの論理グループ化、または異なるネットワークエンティティ、メディア処理エンティティ(MPE)、ソース、またはシンク間でワークフローを分割する品質を測定するための方法は提供されない。
【0004】
NBMPドラフト国際仕様は、メディア処理効率、メディアサービスのより高速で低コストの配備、およびパブリック、プライベート、またはハイブリッドクラウドサービスを活用することによる大規模な配備を提供する能力を向上させる大きな可能性を示している。
【0005】
現在のNBMP仕様は、データセンタの地理的位置へのタスクの配置を定義する。しかしながら、複数のソースおよびシンクが存在するとき、タスクの相対距離シグナリングは存在せず、同じハードウェアまたはクラウドノードまたはネットワーククラスタ上で実行されるタスクの論理グループ化、あるいは異なるネットワークエンティティにタスクを割り当てる効率を測定する方法は存在しない。
【発明の概要】
【課題を解決するための手段】
【0006】
1つまたは複数の実施形態によれば、少なくとも1つのプロセッサによって実行される方法が提供される。方法は、ワークフローマネージャにより、複数のワークフロータスクと、複数のワークフロータスクとメディアソースおよびメディアシンクの少なくとも1つの間の複数の所望の距離を示す複数の近接パラメータとを含むネットワークベースのメディア処理(NBMP)ワークフローを取得するステップと、複数の所望の距離に基づいて、複数のワークフロータスクをメディアシンク、メディアソース、および少なくとも1つのクラウド要素またはネットワーク要素に割り当てるステップと、割り当てられた複数のワークフロータスクによりNBMPワークフローを管理するステップとを含む。
【0007】
1つまたは複数の実施形態によれば、メディアシステムのワークフローマネージャが提供される。ワークフローマネージャは、少なくとも1つのプロセッサと、コンピュータコードを含むメモリとを備える。コンピュータコードは、少なくとも1つのプロセッサに、複数のワークフロータスクと、複数のワークフロータスクとメディアソースおよびメディアシンクの少なくとも1つの間の複数の所望の距離を示す複数の近接パラメータとを含むネットワークベースのメディア処理(NBMP)ワークフローを取得させるように構成された取得コードと、少なくとも1つのプロセッサに、複数の所望の距離に基づいて、複数のワークフロータスクをメディアシンク、メディアソース、および少なくとも1つのクラウド要素またはネットワーク要素に割り当てさせるように構成された割り当てコードと、少なくとも1つのプロセッサに、割り当てられた複数のワークフロータスクによりNBMPワークフローを管理させるように構成された管理コードとを含む。
【0008】
1つまたは複数の実施形態によれば、コンピュータコードを記憶する非一時的コンピュータ可読媒体が提供される。コンピュータコードは、メディアシステムのワークフローマネージャを実装する少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、複数のワークフロータスクと、複数のワークフロータスクとメディアソースおよびメディアシンクの少なくとも1つの間の複数の所望の距離を示す複数の近接パラメータとを含むネットワークベースのメディア処理(NBMP)ワークフローを取得させ、複数の所望の距離に基づいて、複数のワークフロータスクをメディアシンク、メディアソース、および少なくとも1つのクラウド要素またはネットワーク要素に割り当てさせ、割り当てられた複数のワークフロータスクによりNBMPワークフローを管理させる、ように構成される。
【0009】
本開示の主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明、および添付の図面でより明らかになるであろう。
【図面の簡単な説明】
【0010】
【
図1】実施形態による、本明細書で説明されている方法、装置、およびシステムが実装され得る一環境の図である。
【
図2】
図1の1つまたは複数のデバイスの例示的なコンポーネントのブロック図である。
【
図3】実施形態によるNBMPシステムのブロック図である。
【
図4】実施形態によるワークフロー管理プロセスの一例のブロック図である。
【
図5】実施形態によるコンピュータコードのブロック図である。
【発明を実施するための形態】
【0011】
図1は、実施形態による、本明細書で説明されている方法、装置、およびシステムが実装され得る環境100の図である。
図1に示されるように、環境100は、ユーザデバイス110、プラットフォーム120、およびネットワーク130を含んでもよい。環境100のデバイスは、有線接続、無線接続、または有線接続と無線接続との組み合わせを介して相互接続してもよい。
【0012】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信、生成、記憶、処理、および/または提供することができる1つまたは複数のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマートグラスまたはスマートウォッチのペア)、または同様のデバイスなどを含んでもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、および/またはプラットフォーム120に情報を送信してもよい。
【0013】
プラットフォーム120は、本明細書の他の箇所に記載されるような1つまたは複数のデバイスを含む。いくつかの実装形態では、プラットフォーム120は、クラウドサーバまたはクラウドサーバのグループを含んでもよい。いくつかの実装形態では、プラットフォーム120は、特定の要求に応じてソフトウェアコンポーネントを入れ替えできるように、モジュール式に設計されてもよい。したがって、プラットフォーム120は、異なる用途向けに、容易におよび/または迅速に再構成されてもよい。
【0014】
いくつかの実装形態では、図示のように、プラットフォーム120は、クラウドコンピューティング環境122下でホストとして機能されてもよい。特に、本明細書に記載の実装形態は、プラットフォーム120がクラウドコンピューティング環境122下で動作するものとして説明されているが、いくつかの実装形態では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部で実装されてもよい)、または部分的にクラウドベースであってもよい。
【0015】
クラウドコンピューティング環境122は、プラットフォーム120のホストとして機能する環境を含む。クラウドコンピューティング環境122は、プラットフォーム120のホストとして機能する1つまたは複数のシステムおよび/または1つまたは複数のデバイスの物理的位置および構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供してもよい。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「コンピューティングリソース124」と総称し、個別に「コンピューティングリソース124」と呼ぶ)を含んでもよい。
【0016】
コンピューティングリソース124は、1つまたは複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、または他のタイプの計算および/または通信デバイスを含む。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120のホストとして機能してもよい。クラウドリソースは、コンピューティングリソース124で実行される計算インスタンス、コンピューティングリソース124で提供される記憶デバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、または有線接続と無線接続との組み合わせを介して他のコンピューティングリソース124と通信してもよい。
【0017】
図1にさらに示されるように、コンピューティングリソース124は、1つまたは複数のアプリケーション(「APP」)124-1、1つまたは複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つまたは複数のハイパーバイザ(「HYP」)124-4などのクラウドリソースのグループを含む。
【0018】
アプリケーション124-1は、ユーザデバイス110および/またはプラットフォーム120に提供、またはユーザデバイス110および/またはプラットフォーム120によってアクセスされてもよい1つまたは複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールし、ソフトウェアアプリケーションを実行する必要性を排除してもよい。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェアおよび/またはクラウドコンピューティング環境122を介して提供可能な任意の他のソフトウェアを含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つまたは複数の他のアプリケーション124-1との間で情報を送受信してもよい。
【0019】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2による用途および任意の実マシンに対する対応度に応じて、システム仮想マシンまたはプロセス仮想マシンのいずれかであってもよい。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供してもよい。プロセス仮想マシンは、単一のプログラムを実行し得、単一のプロセスをサポートし得る。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)に代わって動作してもよく、データ管理、同期、または長期間のデータ転送などのクラウドコンピューティング環境122の基盤を管理してもよい。
【0020】
仮想化ストレージ124-3は、1つまたは複数の記憶システムおよび/または1つまたは複数のデバイスを含み、1つまたは複数の記憶システムおよび/または1つまたは複数のデバイスは、コンピューティングリソース124の記憶システムまたはデバイス内で仮想化技術を使用する。いくつかの実装形態では、記憶システムのコンテキスト内で、仮想化のタイプは、ブロック仮想化およびファイル仮想化を含んでもよい。ブロック仮想化は、記憶システムが物理記憶または異種構造に関係なくにアクセスされ得るような、物理記憶からの論理記憶の抽象化(または分離)を指し得る。分離により、記憶システムの管理者がエンドユーザのためにストレージを管理する方法の柔軟性が可能になり得る。ファイル仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に記憶される場所との間の依存関係を排除し得る。これにより、ストレージ使用の最適化、サーバの統合、および/または無停止ファイル移行を可能にすることができる。
【0021】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)をコンピューティングリソース124などのホストコンピュータ上で同時に実行できるハードウェア仮想化技術を提供してもよい。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲストオペレーティングシステムに提供してもよく、ゲストオペレーティングシステムの実行を管理してもよい。様々なオペレーティングシステムの複数のインスタンスは、仮想化ハードウェアリソースを共有してもよい。
【0022】
ネットワーク130は、1つまたは複数の有線および/または無線ネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公衆陸上移動網(PLMN)、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話網(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、および/または上記その他のタイプのネットワークの組み合わせを含み得る。
【0023】
図1に示すデバイスおよびネットワークの数および配置は、一例として示されている。実際には、追加のデバイスおよび/またはネットワーク、より少ないデバイスおよび/またはネットワーク、異なるデバイスおよび/またはネットワーク、あるいは
図1に示すものとは異なる配置のデバイスおよび/またはネットワークが存在してもよい。さらに、
図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてもよく、または
図1に示す単一のデバイスは、複数の分散型デバイスとして実装されてもよい。追加的または代替的に、環境100のデバイスのセット(例えば、1つまたは複数のデバイス)は、環境100の別のデバイスのセットによって実行されるものとして記載される1つまたは複数の機能を実行してもよい。
【0024】
図2は、
図1の1つまたは複数のデバイスの例示的なコンポーネントのブロック図である。デバイス200は、ユーザデバイス110および/またはプラットフォーム120に対応してもよい。
図2に示されるように、デバイス200は、バス210、プロセッサ220、メモリ230、記憶コンポーネント240、入力コンポーネント250、出力コンポーネント260、および通信インターフェース270を含み得る。
【0025】
バス210は、デバイス200のコンポーネント間の通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせで実装される。プロセッサ220は、中央処理装置(CPU)、グラフィック処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または別のタイプの処理コンポーネントである。いくつかの実装形態では、プロセッサ220は、機能を実行するようにプログラム可能な1つまたは複数のプロセッサを含む。メモリ230は、プロセッサ220が使用するための情報および/または命令を記憶する、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、および/または別のタイプの動的もしくは静的記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、および/または光メモリ)を含む。
【0026】
記憶コンポーネント240は、デバイス200の動作および使用に関連する情報および/またはソフトウェアを記憶する。例えば、記憶コンポーネント240は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/もしくはソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、ならびに/または別のタイプの非一時的コンピュータ可読媒体を、対応するドライブと共に含み得る。
【0027】
入力コンポーネント250は、デバイス200がユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)などを介して情報を受信することを可能にするコンポーネントを含む。追加的または代替的に、入力コンポーネント250は、情報を感知するためのセンサ(例えば、全地球測位システム(GPS)コンポーネント、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含み得る。出力コンポーネント260は、デバイス200からの出力情報を提供するコンポーネント(例えば、ディスプレイ、スピーカ、および/または1つもしくは複数の発光ダイオード(LED))を含む。
【0028】
通信インターフェース270は、デバイス200が有線接続、無線接続、または有線接続と無線接続との組み合わせなどを介して他のデバイスと通信することを可能にするトランシーバのようなコンポーネント(例えば、トランシーバおよび/または別個の受信機および送信機)を含む。通信インターフェース270は、デバイス200が別のデバイスから情報を受信すること、および/または別のデバイスに情報を提供することを可能にしてもよい。例えば、通信インターフェース270は、イーサネットインターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数(RF)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、Wi-Fiインターフェース、セルラーネットワークインターフェースなどを含み得る。
【0029】
デバイス200は、本明細書に記載された1つまたは複数の処理を実行してもよい。デバイス200は、メモリ230および/または記憶コンポーネント240などの非一時的コンピュータ可読媒体によって記憶されたソフトウェア命令を実行するプロセッサ220に応答して、これらの処理を実行してもよい。コンピュータ可読媒体は、本明細書では非一時的メモリデバイスと定義される。メモリデバイスは、単一の物理記憶デバイス内のメモリ空間、または複数の物理記憶デバイスにわたるメモリ空間を含む。
【0030】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェース270を介して別のデバイスから、メモリ230および/または記憶コンポーネント240に読み込まれてもよい。メモリ230および/または記憶コンポーネント240に記憶されたソフトウェア命令は、実行されると、本明細書に記載の1つまたは複数のプロセスをプロセッサ220に実行させてもよい。追加的または代替的に、ハードワイヤード回路がソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用され、本明細書に記載の1つまたは複数のプロセスを実行してもよい。したがって、本明細書に記載の実装形態は、ハードウェア回路とソフトウェアとの任意の特定の組み合わせに限定されない。
【0031】
図2に示されるコンポーネントの数および配置は、一例として示されている。実際には、デバイス200は、
図2に示されたコンポーネントに対して、追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、または異なる配置のコンポーネントを含んでもよい。追加的または代替的に、デバイス200のコンポーネントのセット(例えば、1つまたは複数のコンポーネント)は、デバイス200の別のコンポーネントのセットによって実行されるものとして説明される1つまたは複数の機能を実行してもよい。
【0032】
本開示の一実施形態では、NBMPシステム300が提供される。
図3を参照すると、NBMPシステム300は、NBMPソース310と、NBMPワークフローマネージャ320と、関数リポジトリ330と、1つまたは複数のメディア処理エンティティ(MPE)350と、メディアソース360と、メディアシンク370とを含む。
【0033】
NBMPソース310は、サードパーティエンティティから命令を受信することができ、NBMPワークフローAPI 392を介してNBMPワークフローマネージャ320と通信することができ、関数発見API 391を介して関数リポジトリ330と通信することができる。例えば、NBMPソース310は、ワークフロー記述文書(WDD)をNBMPワークフローマネージャ320に送信することができ、関数リポジトリ330に記憶された関数の関数記述を読み取ることができ、関数は、例えば、メディア復号化、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンド、後処理、および符号化の関数などの、関数リポジトリ330のメモリに記憶されたメディア処理関数である。NBMPソース310は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPソース310の関数を実行させるように構成されたコードを記憶するメモリとを含むか、またはそれらによって実装され得る。
【0034】
NBMPソース310は、各々がいくつかのパラメータを有することができる、いくつかの記述子を含むことができる、ワークフロー記述文書を送信することによって、1つまたは複数のメディア処理エンティティ350によって実行されるタスク352を含むワークフローを作成するように、NBMPワークフローマネージャ320に要求することができる。
【0035】
例えば、NBMPソース310は、関数リポジトリ330に記憶された関数を選択し、入力および出力データ、必要な関数、およびワークフローの要件などの記述詳細のための様々な記述子を含むワークフロー記述文書をNBMPワークフローマネージャ320に送信することができる。ワークフロー記述文書は、タスク記述のセットと、メディア処理エンティティ350の1つまたは複数によって実行されるタスク352の入力および出力の接続マップとを含むことができる。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信すると、NBMPワークフローマネージャ320は、関数名に基づいてタスクをインスタンス化し、接続マップに従ってタスクを接続することによってワークフローを作成することができる。
【0036】
代替的または追加的に、NBMPソース310は、キーワードのセットを使用してワークフローを作成するようにNBMPワークフローマネージャ320に要求することができる。例えば、NBMPソース310は、関数リポジトリ330に記憶された適切な関数を見つけるためにNBMPワークフローマネージャ320が使用することができるキーワードのセットを含むことができるワークフロー記述文書をNBMPワークフローマネージャ320に送信することができる。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信すると、NBMPワークフローマネージャ320は、ワークフロー記述文書の処理記述子に指定され得るキーワードを使用して適切な関数を検索することによってワークフローを作成することができ、ワークフロー記述文書の他の記述子を使用してタスクを提供し、それらを接続してワークフローを作成することができる。
【0037】
NBMPワークフローマネージャ320は、関数発見API 391と同じまたは異なってもよいAPIである関数発見API 393を介して関数リポジトリ330と通信することができ、API 394(例えば、NBMPタスクAPI)を介してメディア処理エンティティ350の1つまたは複数と通信することができる。NBMPワークフローマネージャ320は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサにNBMPワークフローマネージャ320の関数を実行させるよう構成されたコードを記憶するメモリとを含んでよく、あるいはこれらによって実装されてよい。
【0038】
NBMPワークフローマネージャ320は、API 394を使用して、1つまたは複数のメディア処理エンティティ350によって実行可能なワークフローの1つまたは複数のタスク352を設定、構成、管理、および監視することができる。一実施形態では、NBMPワークフローマネージャ320は、API 394を使用してタスク352を更新および破棄することができる。ワークフローのタスク352を構成、管理、および監視するために、NBMPワークフローマネージャ320は、要求などのメッセージをメディア処理エンティティ350の1つまたは複数に送信することができ、各メッセージは、各々がいくつかのパラメータを有する、いくつかの記述子を有することができる。タスク352は各々、メディア処理関数354と、メディア処理関数354のための構成353とを含むことができる。
【0039】
一実施形態では、タスクのリスト(例えば、タスクのリストの代わりにキーワードのリストを含む)を含まないワークフロー記述文書をNBMPソース310から受信した後、NBMPワークフローマネージャ320は、現在のワークフローのタスク352として実行する適切な関数を見つけるために、関数発見API 393を介して、関数リポジトリ330を検索するため、ワークフロー記述文書のタスクの記述に基づいてタスクを選択することができる。例えば、NBMPワークフローマネージャ320は、ワークフロー記述文書で提供されたキーワードに基づいてタスクを選択することができる。NBMPソース310によって提供されるキーワードまたはタスク記述のセットを使用して適切な関数が識別された後、NBMPワークフローマネージャ320は、API 394を使用してワークフローの選択されたタスクを構成することができる。例えば、NBMPワークフローマネージャ320は、NBMPソースから受信した情報から構成データを抽出し、構成データに基づいてタスク352を構成することができる。
【0040】
1つまたは複数のメディア処理エンティティ350は、メディアソース360からメディアコンテンツを受信し、NBMPワークフローマネージャ320によって作成されたタスク352を含む、ワークフローに従ってメディアコンテンツを処理し、処理されたメディアコンテンツをメディアシンク370に出力するように構成され得る。1つまたは複数のメディア処理エンティティ350は各々、少なくとも1つのプロセッサと、少なくとも1つのプロセッサにメディア処理エンティティ350の関数を実行させるように構成されたコードを記憶するメモリとを含んでもよく、これらによって実装されてもよい。
【0041】
メディアソース360は、メディアを記憶するメモリを含むことができ、NBMPソース310と統合されてもよいし、別個であってもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知することができ、メディアソース360は、ワークフローが準備されたという通知に基づいてメディアコンテンツをメディア処理エンティティ350の1つまたは複数に送信することができる。
【0042】
メディアシンク370は、少なくとも1つのプロセッサと、1つまたは複数のメディア処理エンティティ350によって処理されるメディアを表示するように構成された少なくとも1つのディスプレイとを含むか、またはそれらによって実装され得る。
【0043】
上述したように、NBMPソース310(例えば、ワークフローの作成を要求するためのワークフロー記述文書)からNBMPワークフローマネージャ320へのメッセージ、およびNBMPワークフローマネージャ320から1つまたは複数のメディア処理エンティティ350への(例えば、ワークフローを実行させるための)メッセージは、各々がいくつかのパラメータを有することができる、いくつかの記述子を含むことができる。場合によっては、APIを使用するNBMPシステム300のコンポーネントのいずれかの間の通信は、各々がいくつかのパラメータを有することができる、いくつかの記述子を含むことができる。
【0044】
実施形態では、各ワークフローまたはタスクは、例えば表1に示されるように、ソースまたはシンクごとに近接パラメータを提供して、そのソースへの所望の/必要な近接度を示すことができる。
【表1】
【0045】
距離は、表2に示されるように、各ソースおよびシンクに対するワークフローまたはタスクの相対距離を示す数として定義され得る。
【表2】
【0046】
したがって、S2から2Nの距離を有するタスクの距離は、S1までの距離がNである場合、S1から2倍の距離を有する。距離0は、タスクとシンク/ソースとの間に距離がないことを意味する。
【0047】
各ワークフロー/タスクの距離をシグナリングするために、例えば表3に示されるように、オブジェクトの新しい配列、近接度が一般的な記述子に追加され得る。
【表3】
【0048】
上記の表3および本明細書に示される他の表では、追加された要素はイタリック体で示されている。
【0049】
このパラメータは、JSONオブジェクトの配列の形で一般的な記述子に追加されてもよい。JSONオブジェクトは、例えば表4に示されるように、シンク/ソース識別子(id)および距離の2つのパラメータを有することができる。
【表4A】
【表4B】
【表4C】
【0050】
NBMPソース310は、所与のワークフロー記述の各ソースおよび/またはシンクにワークフローの相対距離を割り当てることができる。距離配列を見ることによって、ワークフロー記述においてより小さい距離値を伴うソースまたはシンクにより近いクラウドプラットフォームまたはネットワーク要素に実装されるべきワークフロー全体またはワークフローの一部を決定することができる。正確な割り当ては、クラウドまたはネットワークリソースの可用性に依存する。最適化は、ワークフローマネージャ320およびクラウドマネージャによって実行されてもよい。
【0051】
ワークフローがNBMPソース310によって与えられる実施形態では、ワークフロー記述文書(WDD)は接続マップを含むことができる。各関数インスタンスは、一般的な記述子が使用される関数制限を有してもよい。その記述子の近接オブジェクトは、ソースおよびシンクまでの関数インスタンスの所望の距離を記述するために使用され得る。
【0052】
ワークフローマネージャ320は、各関数インスタンスについて各タスクをインスタンス化すると、近接アレイを使用して、それらのタスクについての指示された所望の距離に基づいて最良のクラウド/ネットワークリソースを割り当てる。
【0053】
実施形態では、ワークフローは、ワークフローマネージャ320によって導出されてもよい。ワークフローマネージャ320は、接続マップおよびタスク制限を含むWDDをNBMPソース310に提供してもよい。NBMPソース310は、各タスク制限に近接オブジェクトを追加することによって、WDDを更新することができる。次いで、クラウドマネージャの助けを借りて、ワークフローマネージャ320は、更新されたWDDによって記述された近接要件を満たす種々のクラウド/ネットワークリソースにタスクを再割り当てすることを望む場合がある。最後に、ワークフローマネージャ320は、各ソース/シンクに対するタスクの実際の更新された相対距離を伴う更新されたWDDを返すことができる。
【0054】
実施形態は、複数のソースまたはシンクおよびソースからのワークフローまたはタスクの相対距離を記述するための方法を提供することができ、複数のソースまたはシンクのそれぞれのソースまたはシンクに番号を割り当てるステップを含み、番号は、ワークフローまたはタスクから複数のソースまたはシンクの中の他のソースまたはシンクまでの距離と比較した、ワークフローまたはタスクからそれぞれのソースまたはシンクまでの相対距離を示す。
【0055】
実施形態は、ネットワークベースのメディア処理(NBMP)シンクによって、割り当てられた番号を使用して複数のソースおよびシンクにワークフローまたはタスクのターゲット近接度をシグナリングする方法を提供することができる。
【0056】
実施形態は、割り当てられた番号に割り当てられた数字に基づいて、各タスクに割り当てられたクラウドまたはネットワークリソースの近接情報を決定する方法を提供することができ、NBMPワークフローマネージャ320によって、割り当てられたクラウドまたはネットワークリソースの近接情報を使用して、ターゲット近接度に対応し、NBMPシンクに更新を提供する。
【0057】
実施形態では、更新は、ターゲット近接度によりワークフローまたはタスクがどのように実施されるかを含むことができる。
【0058】
実施形態は、タスクグループと呼ばれる新しい論理エンティティに関することができる。タスクグループは、同じクラウドノード/クラスタ上で実行されると予想されるタスクまたは関数インスタンスの集合であってもよい。タスクグループは、タスクグループとタスクの間で一意である一意の識別子を用いて識別されてもよい。
【0059】
関数またはタスクの集合を伴うワークフロー記述は、表5に示されるようなタスクグループを定義する表を有することができる。
【表5】
【0060】
上記表5において、
・Kはタスクグループの数であり、
・miはグループGiにおけるタスクの数であり、
・Giはタスクグループiのidであり、
・Idijはタスクグループiにおけるタスクまたは関数インスタンスjのidである。
【0061】
現在のNBMP TuCは、以下の表6に示されるように、タスク、MPE、ソース、およびシンク間の距離表を定義する。
【表6】
【0062】
実施形態は、以下の表7に示されるようなタスクグループ(TG)も含むように表6を拡張したものに関することができる。
【表7】
【0063】
距離表は、タスクごとに定義されてもよいし、タスクグループに対して拡張されてもよいことに留意されたい。また、各タスクグループの距離表は、1つまたは複数のタスクグループの列を含むことができる。
【0064】
実施形態では、タスクグループが上記の表に含まれる場合、表に明示的に含まれていないタスクグループの各メンバは、タスクグループの距離を継承する。
【0065】
実施形態では、タスクグループが上記の表を有する場合、タスクグループの各メンバは、タスクまたはタスクグループのための明示的な列を有さない限り、タスクグループ表のエントリを継承する。
【0066】
実施形態では、タスクの距離表において、タスクが属するタスクグループの距離がある場合には、その距離は、タスクグループの他のすべてのタスクに対するそのタスクの距離を示す。
【0067】
実施形態において、タスクの距離表では、タスクの同じタスクグループに属する任意のタスクに対する距離が存在する場合には、この値は同じ表のタスクグループの距離に取って代わる。
【0068】
タスクグループ化は、以下の表8に示されるようにJSONで実施され得る。
【表8A】
【表8B】
【表8C】
【表8D】
【0069】
実施形態は、一緒に実装されるタスクまたは関数インスタンスの論理グループを定義することを可能にするタスクまたは関数インスタンスのグループを記述するための方法を提供することができ、タスクまたは関数インスタンスのグループの距離は、ソース、シンク、MPE、他のタスク、または他のタスクグループから記述され、タスクグループの距離は、一緒に定義されるとともに、タスクグループ内の各タスクまたは関数インスタンスの距離は、同じグループの他のタスク/関数インスタンスから定義され、したがって、距離の詳細な説明、ならびに関数の論理グループ化が示される。
【0070】
実施形態では、各ワークフローまたはタスクは、表9に示されるように、ソースまたはシンクまたはMPE、あるいは任意の他のネットワーク要素からの距離を提供して、そのソースへの所望の/必要な近接度を示すことができる。
【表9】
【0071】
距離は、表10に示されるように、各ソースおよびシンクに対するワークフローまたはタスクの相対距離を示す数として定義され得る。
【表10】
【0072】
したがって、S2から2Nの距離を有するタスクの距離は、S1までの距離がNである場合、S1から2倍の距離を有する。距離0は、タスクとシンク/ソースとの間に距離がないことを意味する。
【0073】
タスクがネットワークエンティティまたはソースまたはシンク上で実行され得ないことをシグナリングするために、実施形態は無限距離を定義することができる。
【0074】
リソース(ソース/シンク/MPE)がタスクを実行することができない場合、そのリソースまでのタスクの距離に最大の符号なし整数(INF)が割り当てられ得る。したがって、ワークフローマネージャ320は、異なるリソース間でタスクを分割したいとき、INF値を有するリソースにタスクを割り当ててはならない。
【0075】
差分方式は、複数のソース、シンク、MPE、および他のネットワークエンティティ間でワークフローを分割するために使用され得る。最良の分割レンダリング方式は、ワークフローのすべてのタスクの平均距離を低減するものである。
【0076】
例えば、平均p-ノルム距離は、以下の式1に示されるように定義され得る。
【数1】
【0077】
d_iは、ワークフローのn個のタスクについて、割り当てられたシンク/ソース/MPEまでのタスクiの距離である。
【0078】
タスク近接パラメータがNBMPソース310によって与えられる場合、NBMPソース310はまた、ワークフローマネージャ320がその関数に基づいてワークフロー分割を最適化できるように距離関数を提供することができる。
【0079】
このメトリックをシグナリングするために、実施形態は、以下の表11および表12に示されるように、一般的な記述子にオブジェクトを追加することができる。
【表11】
【表12】
【0080】
上記のパラメータは任意であってもよいが、それらの少なくとも1つが近接メトリックオブジェクトに存在し得る。上記オブジェクトでは、デフォルトの式は2-ノルムであってもよい。
【0081】
実施形態は、タスクとデバイスまたはネットワークエンティティの間の無限距離を記述するための方法を提供することができ、無限距離は、タスクがそのデバイスまたはネットワークエンティティ上で実行され得ないことを意味する。
【0082】
実施形態は、実行されるように割り当てられたエンティティにワークフローのすべてのタスクの平均距離を導入することによって分割効率を説明するための方法を提供することができ、平均距離が小さいほど、ワークフローのより効率的な分割を示し、特定の場合には、分割効率を計算するためにp-ノルム距離が使用される。
【0083】
実施形態は、ワークフロー記述において分割効率を計算するために使用される式をシグナリングする方法を提供することができ、情報は、NBMPソース310とワークフローマネージャ320/クラウドプラットフォームの間で交換され得、任意の式、特にp-ノルム距離が実装され得る。
[1]
図4は、NBMPワークフローを管理するための例示的なプロセス400を示すフローチャートである。いくつかの実装形態では、
図4の1つまたは複数のプロセスブロックは、例えば、ワークフローマネージャ320によって実行され得る。
[2]
図4に示されるように、プロセス400は、ワークフローマネージャにより、複数のワークフロータスクと、複数のワークフロータスクとメディアソースおよびメディアシンクの少なくとも1つの間の複数の所望の距離を示す複数の近接パラメータとを含むネットワークベースのメディア処理(NBMP)ワークフローを取得するステップ(ブロック410)を含むことができる。
[3]
図4にさらに示されるように、プロセス400は、複数の所望の距離に基づいて、複数のワークフロータスクをメディアシンク、メディアソース、および少なくとも1つのクラウド要素またはネットワーク要素に割り当てるステップ(ブロック420)を含むことができる。
[4]
図4にさらに示されるように、プロセス400は、割り当てられた複数のワークフロータスクによりNBMPワークフローを管理するステップ(ブロック430)を含むことができる。
[5]実施形態では、NBMPワークフローは、ワークフローマネージャまたはNBMPソースの中の少なくとも1つによって提供され得る。
[6]実施形態では、複数の近接パラメータの中からの1つの近接パラメータは、複数のワークフロータスクの1つのワークフロータスクと、メディアソースおよびメディアシンクの少なくとも1つの間の所望の距離を示す番号を含むことができる。
[7]実施形態では、所望の距離が0であることに基づいて、ワークフロータスクは、メディアソースまたはメディアシンクの少なくとも1つによって実行されるように意図されてもよい。
[8]実施形態では、所望の距離が無限であることに基づいて、ワークフロータスクは、メディアソースまたはメディアシンクの少なくとも1つによって実行されることができない場合がある。
[9]実施形態では、NBMPワークフローは、ワークフロー記述文書に対応することができ、複数の近接パラメータは、ワークフロー記述文書に含まれる少なくとも1つの一般的な記述子に含まれ得る。
[10]実施形態では、NBMPワークフローは、複数のワークフロータスクの少なくとも1つを含むタスクグループを含むことができる。
[11]実施形態では、複数の近接パラメータの1つの近接パラメータは、タスクグループと、メディアソースおよびメディアシンクの少なくとも1つの間の所望の距離を示すことができる。
[12]実施形態では、タスクグループに含まれる複数のワークフロータスクの少なくとも1つは、所望の距離を継承することができる。
[13]実施形態では、複数の所望の距離の平均は、NBMPワークフローの効率を決定するために使用され得る。
【0084】
実施形態では、
図5を参照すると、コンピュータコード500は、NBMPシステム300に実装されてもよい。例えば、コンピュータコードは、NBMPワークフローマネージャ320のメモリに記憶されてもよく、NBMPワークフローマネージャ320の少なくとも1つのプロセッサによって実行されてもよい。コンピュータコードは、例えば、取得コード510と、割り当てコード520と、管理コード530とを含むことができる。
【0085】
ワークフロー取得コード510、割り当てコード520、および管理コード530は、それぞれ、NBMPワークフローマネージャ320の少なくとも1つのプロセッサに、
図4を参照して上述したプロセスの態様を実行させるように構成され得る。
【0086】
取得コード510は、少なくとも1つのプロセッサに、複数のワークフロータスクと、複数のワークフロータスクとメディアソースおよびメディアシンクの少なくとも1つの間の複数の所望の距離を示す複数の近接パラメータとを含むネットワークベースのメディア処理(NBMP)ワークフローを取得させるように構成され得る。
【0087】
割り当てコード520は、少なくとも1つのプロセッサに、複数の所望の距離に基づいて、複数のワークフロータスクをメディアシンク、メディアソース、および少なくとも1つのクラウド要素またはネットワーク要素に割り当てさせるように構成され得る。
【0088】
管理コード530は、少なくとも1つのプロセッサに、割り当てられた複数のワークフロータスクによりNBMPワークフローを管理させるように構成され得る。
【0089】
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、実施形態(およびその方法)の各々が、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されているプログラムを実行する。
【0090】
前述の開示は、例示および説明を提供しているが、網羅的であることも、実装形態を開示の正確な形態に限定することも意図されていない。改変形態および変形形態が、上記の開示に照らして可能であり、または実装形態の実施により取得され得る。
【0091】
本明細書で使用される場合、コンポーネントという用語は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組み合わせとして広く解釈されることが意図されている。
【0092】
特徴の組み合わせが特許請求の範囲に記載され、および/または本明細書に開示されているが、これらの組み合わせは、可能な実装形態の開示を限定することが意図されるものではない。実際、これらの特徴の多くは、特許請求の範囲に具体的に記載されていない、および/または明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は1つの請求項のみに直接従属し得るが、可能な実装形態の開示は、各従属請求項と、請求項セットの他のすべての請求項との組み合わせを含む。
【0093】
本明細書で使用される要素、動作、または命令は、そのように明示的に記載されていない限り、重要または必須であると解釈されるべきではない。また、本明細書で使用される場合、冠詞「a」および「an」は、1つまたは複数の項目を含むことが意図されており、「1つまたは複数」と交換可能に使用され得る。さらに、本明細書で使用される場合、「セット」という用語は、1つまたは複数の項目(例えば、関連項目、無関係な項目、関連項目と無関係な項目との組み合わせなど)を含むことが意図されており、「1つまたは複数」と互換的に使用され得る。1つの項目のみが意図される場合、「1つ」という用語または同様の用語が使用される。また、本明細書で使用される場合、「有する(has)」、「有する(have)」、「有する(having)」などの用語は、オープンエンド用語であることが意図されている。さらに、「に基づいて」という語句は、特に明記しない限り、「少なくとも部分的に、基づいて」を意味することが意図されている。
【符号の説明】
【0094】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション(「APP」)
124-2 仮想マシン(「VM」)
124-3 仮想化ストレージ(「VS」)
124-4 ハイパーバイザ(「HYP」)
130 ネットワーク
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 記憶コンポーネント
250 入力コンポーネント
260 出力コンポーネント
270 通信インターフェース
300 ネットワークベースのメディア処理(NBMP)システム
310 NBMPソース
320 NBMPワークフローマネージャ
330 関数リポジトリ
350 メディア処理エンティティ
352 タスク
353 構成
354 メディア処理関数
360 メディアソース
370 メディアシンク
391 関数発見API
392 NBMPワークフローAPI
393 関数発見API
394 API
400 プロセス
500 コンピュータコード
510 取得コード
520 割り当てコード
530 管理コード