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

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

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

特許7515580ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム
<>
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図1
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図2
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図3
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図4
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図5
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図6
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図7
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図8
  • 特許-ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-04
(45)【発行日】2024-07-12
(54)【発明の名称】ネットワークベースメディア処理ワークフローを使用した分割レンダリングのための方法、ワークフローマネージャおよびプログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240705BHJP
   G06F 9/48 20060101ALI20240705BHJP
【FI】
G06F9/50 150A
G06F9/50 150E
G06F9/48 370
【請求項の数】 11
(21)【出願番号】P 2022520770
(86)(22)【出願日】2021-04-02
(65)【公表番号】
(43)【公表日】2022-12-02
(86)【国際出願番号】 US2021025552
(87)【国際公開番号】W WO2021207022
(87)【国際公開日】2021-10-14
【審査請求日】2022-04-04
(31)【優先権主張番号】63/006,207
(32)【優先日】2020-04-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/087,741
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/087,742
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/205,240
(32)【優先日】2021-03-18
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】三坂 敏夫
(56)【参考文献】
【文献】米国特許出願公開第2019/0028691(US,A1)
【文献】米国特許出願公開第2019/0222621(US,A1)
【文献】特表2015-515037(JP,A)
【文献】特表2007-531332(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサによって実行される方法であって、
ネットワークベースメディア処理(NBMP)ワークフローを導出するステップと、
ケイパビリティ情報と、前記NBMPワークフローの複数のワークフロータスクのそれぞれに割り当てられた近接パラメータとに基づいて、メディアシンク、メディアソース、およびメディアプロセッシングエンティティ(MPE)の間で、前記複数のワークフロータスクを割り当てるステップであって、
前記MPEは、少なくとも一つのクラウド要素、ネットワーク要素、またはエッジ要素を含むものであり、
前記ケイパビリティ情報は、前記メディアソース、前記メディアシンク、および前記MPEから受信され、前記メディアソース、前記メディアシンク、および前記MPEのそれぞれのリソースの利用可能性を記述し、
前記近接パラメータは、前記複数のワークフロータスクから前記メディアソースおよび前記メディアシンクまでの、各メディアソースおよび各メディアシンクに対する相対距離を示し、
前記ケイパビリティ情報によって示される利用可能なリソースを有しているメディアソース又はメディアシンクのうち、前記近接パラメータによって示される最短距離を有しているメディアソース又はメディアシンクに、前記複数のワークフロータスクを割り当てる、ステップと、を含み、
前記複数のワークフロータスクの第1のサブセットは、前記メディアソースに割り当てられ、
前記複数のワークフロータスクの第2のサブセットは、前記メディアシンクに割り当てられ、
前記複数のワークフロータスクの第3のサブセットは、前記少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素に割り当てられ、
前記第1のサブセット、前記第2のサブセット、および前記第3のサブセットは、互いに重複しない、
方法。
【請求項2】
前記ケイパビリティ情報は、
組み込み機能のリポジトリのリソース要件、
現在利用可能なハードウェアリソース、
現在利用可能なスループット、
待ち時間ケイパビリティ、
現在利用可能なバッテリおよび/または電力、および
リソースを削減する場合のイベントの発行
のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
前記メディアソースおよび前記メディアシンクのうちの前記少なくとも1つのものの前記リソースのうちの少なくとも1つのリソースの変更に基づいて、前記NBMPワークフローを再構成するステップをさらに含む、
請求項2に記載の方法。
【請求項4】
前記メディアソースおよび前記メディアシンクのうちの前記少なくとも1つのものに関連付けられた前記リソースのうちの前記少なくとも1つのリソースが所定の閾値を下回った場合に、前記メディアソースまたは前記メディアシンクからイベント駆動型通知を受信するステップをさらに含み、
前記NBMPワークフローを再構成する前記ステップは、前記所定の閾値を下回った前記少なくとも1つのリソースに前記NBMPワークフローを適応させる、
請求項3に記載の方法。
【請求項5】
前記少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、複数のネットワーク要素または複数のクラウドノードであり、
前記割り当てるステップは、前記複数のネットワーク要素または前記複数のクラウドノードのケイパビリティに基づいて、前記NBMPワークフローの前記複数のワークフロータスクの前記第3のサブセットを前記複数のネットワーク要素または前記複数のクラウドノードの間で分割するステップを含み、
前記方法は、前記複数のネットワーク要素または前記複数のクラウドノードの可用性の変化に基づいて、前記NBMPワークフローを動的に再構成するステップをさらに含む、
請求項1に記載の方法。
【請求項6】
前記少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、少なくとも1つのクラウドノードである、請求項に記載の方法。
【請求項7】
前記少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、複数のクラウド要素、ネットワーク要素、またはエッジ要素であり、
前記ケイパビリティ情報は、複数のクラウド要素、ネットワーク要素、またはエッジ要素のうちの2つの間の接続特性を記述する少なくとも1つのパラメータを含む、
請求項に記載の方法。
【請求項8】
前記複数のクラウド要素、ネットワーク要素、またはエッジ要素は、複数のクラウドノードである、請求項に記載の方法。
【請求項9】
前記少なくとも1つのパラメータは、前記複数のクラウド要素、ネットワーク要素、またはエッジ要素のうちの前記2つの間の2つの方向における最大帯域幅および最小待ち時間を示すパラメータのセットである、請求項に記載の方法。
【請求項10】
請求項1からのいずれか一項に記載の方法を行うように構成されたメディアシステムのワークフローマネージャ。
【請求項11】
メディアシステムのワークフローマネージャを実装する少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項1からのいずれか一項に記載の方法を実行させるためのコンピュータコードを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年4月7日出願の米国仮特許出願第63/006,207号、2020年10月5日出願の米国仮特許出願第63/087,741号、2020年10月5日に出願の米国仮特許出願第63/087,742号、および2021年3月18日に出願の米国特許出願第17/205,240号の優先権を主張し、これらの開示はその全体が参照により本明細書に組み込まれる。
【0002】
本開示の実施形態は、ムービング・ピクチャー・エクスパーツ・グループ(MPEG)ネットワークベースメディア処理(NBMP)、より詳細には、NBMPワークフローを使用する分割レンダリングに関する。
【背景技術】
【0003】
MPEGネットワークベースメディア処理(NBMP)プロジェクトは、クラウド上でメディアを処理する概念を開発した。しかしながら、現在のNBMP設計は、分割レンダリングのためのいかなる解決策も提供しない。
【0004】
ネットワークおよびクラウドプラットフォームは、様々なアプリケーションを実行するために使用される。しかしながら、計算リソースおよびストレージリソースに関してメディアソースまたはシンクデバイス/プラットフォームの特性を記述する標準ベースの解決策はなく、2つのクラウドノード間の接続特性を記述する方法もなく、ネットワーク要素のケイパビリティを発見する方法もない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
NBMP Draft International Specificationは、メディア処理効率を向上させ、メディアサービスのより高速で低コストの配備を提供し、パブリック、プライベート、またはハイブリッドクラウドサービスを活用することによって大規模な配備を提供する能力を有する大きな可能性を示している。
【課題を解決するための手段】
【0006】
本開示の実施形態は、NBMP規格において分割レンダリングを実装するための機構を提供する。
【0007】
分割レンダリングは、処理を様々なサブプロセスに分割することを可能にし、そのうちのいくつかはクラウドまたはエッジコンピューティング上で実装することができ、残りはデバイス上で実装される。このようにしてメディアワークフローを分割することができ、それによって、処理負荷の一部がデバイスから取り除かれ、クラウド/エッジリソースによってサポートされるので、計算ケイパビリティが低いまたは電力が低いデバイスがメディアコンテンツを受信することを可能にする。
【0008】
本開示の実施形態は、計算リソースおよびストレージリソースに関してメディアソースまたはメディアシンクデバイス/プラットフォームのケイパビリティを記述するためにネットワークベースメディア処理(NBMP)規格を改善し、対応する発見機能を実行するためのアプリケーションプログラミングインターフェイス(API)のセットを定義する。
【0009】
本開示の実施形態は、クラウドノードおよびネットワークケイパビリティの発見を提供するためにNBMP APIを拡張する。本開示の実施形態は、2つのNBMP MPE(例えば、クラウドノード)間の接続特性を記述するためにNBMP規格を改善する。
【0010】
1つまたは複数の実施形態によれば、少なくとも1つのプロセッサによって実行される方法が提供される。本方法は、ネットワークベースメディア処理(NBMP)ワークフローを導出するステップと、メディアシンク、メディアソース、および少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素の間でNBMPワークフローの複数のワークフロータスクを割り当てるステップと、を含み、複数のワークフロータスクの第1のサブセットは、メディアソースに割り当てられ、複数のワークフロータスクの第2のサブセットは、メディアシンクに割り当てられ、複数のワークフロータスクの第3のサブセットは、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素に割り当てられ、第1のサブセット、第2のサブセット、および第3のサブセットは、互いに重複しない。
【0011】
一実施形態によれば、本方法は、メディアソースおよびメディアシンクのうちの少なくとも1つからケイパビリティ情報を受信するステップであって、ケイパビリティ情報は、利用可能なメディアソースおよびメディアシンクのうちの少なくとも1つのリソースを記述する、受信するステップをさらに含み、割り当てるステップは、ケイパビリティ情報に基づいてワークフロータスクを割り当てるステップを含む。
【0012】
一実施形態によれば、本方法は、メディアソースおよびメディアシンクのうちの少なくとも1つのリソースのうちの少なくとも1つの変更に基づいて、NBMPワークフローを再構成するステップをさらに含む。
【0013】
一実施形態によれば、本方法は、メディアソースおよびメディアシンクのうちの少なくとも1つに関連付けられたリソースのうちの少なくとも1つが所定の閾値を下回った場合に、メディアソースまたはメディアシンクからイベント駆動型通知を受信するステップをさらに含み、NBMPワークフローを再構成するステップは、削減されたリソースのうちの少なくとも1つを収容する。
【0014】
一実施形態によれば、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、複数のネットワーク要素または複数のクラウドノードであり、割り当てるステップは、複数のネットワーク要素または複数のクラウドノードのケイパビリティに基づいて、NBMPワークフローの複数のワークフロータスクの第3のサブセットを複数のネットワーク要素または複数のクラウドノードの間で分割するステップを含み、本方法は、複数のネットワーク要素または複数のクラウドノードの可用性の変化に基づいて、NBMPワークフローを動的に再構成するステップをさらに含む。
【0015】
一実施形態によれば、本方法は、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素からケイパビリティ情報を受信するステップであって、ケイパビリティ情報は、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素の利用可能なリソースを記述する、受信するステップをさらに含み、割り当てるステップは、ケイパビリティ情報に基づいてワークフロータスクを割り当てるステップを含む。
【0016】
一実施形態によれば、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、少なくとも1つのクラウドノードである。
【0017】
一実施形態によれば、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、複数のクラウド要素、ネットワーク要素、またはエッジ要素であり、ケイパビリティ情報は、複数のクラウド要素、ネットワーク要素、またはエッジ要素のうちの2つの間の接続特性を記述する少なくとも1つのパラメータを含む。
【0018】
一実施形態によれば、複数のクラウド要素、ネットワーク要素、またはエッジ要素は、複数のクラウドノードである。
【0019】
一実施形態によれば、少なくとも1つのパラメータは、複数のクラウド要素、ネットワーク要素、またはエッジ要素のうちの2つの間の2つの方向における最大帯域幅および最小待ち時間を示すパラメータのセットである。
【0020】
1つまたは複数の実施形態によれば、メディアシステムのワークフローマネージャが提供される。ワークフローマネージャは、少なくとも1つのプロセッサと、コンピュータコードを含むメモリと、を含む。コンピュータコードは、少なくとも1つのプロセッサに、ネットワークベースメディア処理(NBMP)ワークフローを導出させるように構成されたワークフロー導出コードと、少なくとも1つのプロセッサに、メディアシンク、メディアソース、および少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素の間でNBMPワークフローの複数のワークフロータスクを割り当てさせるように構成されたタスク割り当てコードと、を含む、メモリと、を含み、複数のワークフロータスクの第1のサブセットは、メディアソースに割り当てられ、複数のワークフロータスクの第2のサブセットは、メディアシンクに割り当てられ、複数のワークフロータスクの第3のサブセットは、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素に割り当てられ、第1のサブセット、第2のサブセット、および第3のサブセットは、互いに重複しない。
【0021】
一実施形態によれば、タスク割り当てコードは、メディアソースおよびメディアシンクのうちの少なくとも1つから受信したケイパビリティ情報に基づいて、ワークフロータスクを少なくとも1つのプロセッサに割り当てさせるように構成され、ケイパビリティ情報は、利用可能なメディアソースおよびメディアシンクのうちの少なくとも1つのリソースを記述する。
【0022】
一実施形態によれば、コンピュータコードは、メディアソースおよびメディアシンクのうちの少なくとも1つのリソースのうちの少なくとも1つの変更に基づいて、少なくとも1つのプロセッサに、NBMPワークフローを再構成させるように構成されたワークフロー再構成コードをさらに含む。
【0023】
一実施形態によれば、ワークフロー再構成コードは、メディアソースおよびメディアシンクのうちの少なくとも1つに関連付けられたリソースのうちの少なくとも1つが所定の閾値を下回った場合に、メディアソースまたはメディアシンクからイベント駆動型通知を受信するステップに基づいて、少なくとも1つのプロセッサに、リソースのうちの少なくとも1つの減少に対応するようにNBMPワークフローを再構成させるように構成される。
【0024】
一実施形態によれば、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、複数のネットワーク要素または複数のクラウドノードであり、タスク割り当てコードは、少なくとも1つのプロセッサに、複数のネットワーク要素または複数のクラウドノードのケイパビリティに基づいて、NBMPワークフローの複数のワークフロータスクの第3のサブセットを複数のネットワーク要素または複数のクラウドノードの間で分割させるように構成され、ワークフロー再構成コードは、少なくとも1つのプロセッサに、複数のネットワーク要素または複数のクラウドノードの可用性の変化に基づいて、NBMPワークフローを動的に再構成させるように構成される。
【0025】
一実施形態によれば、タスク割り当てコードは、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素から受信したケイパビリティ情報に基づいて、ワークフロータスクを少なくとも1つのプロセッサに割り当てさせるように構成され、ケイパビリティ情報は、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素の利用可能なリソースを記述する。
【0026】
一実施形態によれば、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、少なくとも1つのクラウドノードである。
【0027】
一実施形態によれば、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素は、複数のクラウド要素、ネットワーク要素、またはエッジ要素であり、ケイパビリティ情報は、複数のクラウド要素、ネットワーク要素、またはエッジ要素のうちの2つの間の接続特性を記述する少なくとも1つのパラメータを含む。
【0028】
一実施形態によれば、少なくとも1つのパラメータは、複数のクラウド要素、ネットワーク要素、またはエッジ要素のうちの2つの間の2つの方向における最大帯域幅および最小待ち時間を示すパラメータのセットである。
【0029】
1つまたは複数の実施形態によれば、コンピュータコードを記憶する非一時的コンピュータ可読媒体が提供される。コンピュータコードは、メディアシステムのワークフローマネージャを実装する少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、ネットワークベースメディア処理(NBMP)ワークフローを導出させ、メディアシンク、メディアソース、および少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素の間でNBMPワークフローの複数のワークフロータスクを割り当てさせるように構成され、複数のワークフロータスクの第1のサブセットは、メディアソースに割り当てられ、複数のワークフロータスクの第2のサブセットは、メディアシンクに割り当てられ、複数のワークフロータスクの第3のサブセットは、少なくとも1つのクラウド要素、ネットワーク要素、またはエッジ要素に割り当てられ、第1のサブセット、第2のサブセット、および第3のサブセットは、互いに重複しない。
【0030】
開示内容のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになるであろう。
【図面の簡単な説明】
【0031】
図1】本明細書で説明されている方法、装置、およびシステムが実施され得る、実施形態による環境の図である。
図2図1の1つまたは複数のデバイスの例示的なコンポーネントのブロック図である。
図3】実施形態によるNBMPシステムのブロック図である。
図4】実施形態による例示的なNBMPワークフローの図である。
図5】実施形態によるNBMPワークフローの分割レンダリングの例の図である。
図6】実施形態による分割レンダリングプロセスの例のブロック図である。
図7】実施形態によるNBMPワークフローの再構成の例の図である。
図8】実施形態によるNBMPワークフローの再構成の例の図である。
図9】実施形態によるコンピュータコードのブロック図である。
【発明を実施するための形態】
【0032】
図1は、実施形態による、本明細書に記載の方法、装置、およびシステムを実装可能な環境100の図である。図1に示すように、環境100は、ユーザデバイス110、プラットフォーム120、およびネットワーク130を含んでもよい。環境100のデバイスは、有線接続、無線接続、または有線接続と無線接続との組合せを介して相互接続してもよい。
【0033】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信、生成、記憶、処理、および/または提供することができる1つまたは複数のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマートグラスまたはスマートウォッチ)、または同様のデバイスなどであってもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、および/またはプラットフォームに情報を送信してもよい。
【0034】
プラットフォーム120は、本明細書の他の箇所に記載されるような1つまたは複数のデバイスを含む。いくつかの実装形態では、プラットフォーム120は、クラウドサーバまたはクラウドサーバ群を含んでもよい。いくつかの実装形態では、プラットフォーム120は、特定の要求に応じてソフトウェアコンポーネントを入れ替えできるように、モジュール式に設計されてもよい。したがって、プラットフォーム120は、異なる用途向けに、容易におよび/または迅速に再構成されてもよい。
【0035】
いくつかの実装形態では、図示のように、プラットフォーム120は、クラウドコンピューティング環境122下で動作してもよい。特に、本明細書に記載の実装形態は、プラットフォーム120がクラウドコンピューティング環境122下で動作するものとして説明されているが、いくつかの実装形態では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部で実装されてもよい)、または部分的にクラウドベースであってもよい。
【0036】
クラウドコンピューティング環境122は、プラットフォーム120のホストとして機能する環境を含む。クラウドコンピューティング環境122は、プラットフォーム120のホストとして機能する1つまたは複数のシステムおよび/または1つまたは複数のデバイスの物理的位置および構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供してもよい。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「コンピューティングリソース124」と総称し、個別に「コンピューティングリソース124」と呼ぶ)を含んでもよい。
【0037】
コンピューティングリソース124は、1つまたは複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、または他のタイプの計算および/または通信デバイスを含む。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120のホストとして機能してもよい。クラウドリソースは、コンピューティングリソース124で実行される計算インスタンス、コンピューティングリソース124で提供される記憶デバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、または有線接続と無線接続との組合せを介して他のコンピューティングリソース124と通信してもよい。
【0038】
図1にさらに示すように、コンピューティングリソース124は、1つまたは複数のアプリケーション(「APP」)124-1、1つまたは複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つまたは複数のハイパーバイザ(「HYP」)124-4などのクラウドリソース群を含む。
【0039】
アプリケーション124-1は、ユーザデバイス110および/またはプラットフォーム120に提供、またはユーザデバイス110および/またはプラットフォーム120によってアクセスされてもよい1つまたは複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールし、ソフトウェアアプリケーション実行する必要性を排除してもよい。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェアおよび/またはクラウドコンピューティング環境122を介して提供され得る任意の他のソフトウェアを含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つまたは複数の他のアプリケーション124-1との間で情報を送受信してもよい。
【0040】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2による用途および任意の実マシンに対する対応度に応じて、システム仮想マシンまたはプロセス仮想マシンのいずれかであってもよい。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供してもよい。プロセス仮想マシンは、単一のプログラムを実行し得、単一のプロセスをサポートし得る。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)に代わって動作してもよく、データ管理、同期、または長期間のデータ転送などのクラウドコンピューティング環境122の基盤を管理してもよい。
【0041】
仮想化ストレージ124-3は、1つまたは複数のストレージシステムおよび/または1つまたは複数のデバイスを含み、1つまたは複数のストレージシステムおよび/または1つまたは複数のデバイスは、コンピューティングリソース124のストレージシステムまたはデバイス内で仮想化技術を使用する。いくつかの実装形態では、ストレージシステムのコンテキスト内で、仮想化のタイプは、ブロック仮想化およびファイル仮想化を含んでもよい。ブロック仮想化は、ストレージシステムが物理記憶または異種構造に関係なくにアクセスされ得るような、物理記憶からの論理記憶の抽象化(または分離)を指し得る。分離により、ストレージシステムの管理者がエンドユーザのためにストレージを管理する方法の柔軟性が可能になり得る。ファイル仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に格納される場所との間の依存関係を排除し得る。これにより、ストレージ使用の最適化、サーバ統合、および/またはスムーズなファイル移行の性能が可能になり得る。
【0042】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)をコンピューティングリソース124などのホストコンピュータ上で同時に実行できるハードウェア仮想化技術を提供してもよい。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲストオペレーティングシステムに提供してもよく、ゲストオペレーティングシステムの実行を管理してもよい。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共用し得る。
【0043】
ネットワーク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))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、および/またはこれらもしくは他のタイプのネットワークの組合せなどであってもよい。
【0044】
図1に示すデバイスおよびネットワークの数および配置は、一例として提供されている。実際には、追加のデバイスおよび/またはネットワーク、より少ないデバイスおよび/またはネットワーク、異なるデバイスおよび/またはネットワーク、あるいは図1に示すものとは異なる配置のデバイスおよび/またはネットワークが存在してもよい。さらに、図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてもよく、または図1に示す単一のデバイスは、複数の分散型デバイスとして実装されてもよい。追加的または代替的に、環境100のデバイスのセット(例えば、1つまたは複数のデバイス)は、環境100の別のデバイスのセットによって実行されるものとして記載される1つまたは複数の機能を実行してもよい。
【0045】
図2は、図1の1つまたは複数のデバイスの例示的なコンポーネントのブロック図である。デバイス200は、ユーザデバイス110および/またはプラットフォーム120に対応してもよい。図2に示されるように、デバイス200は、バス210、プロセッサ220、メモリ230、記憶部240、入力部250、出力部260、および通信インターフェイス270を含み得る。
【0046】
バス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が使用する情報および/または命令を記憶する別のタイプの動的または静的記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、および/または光メモリ)を含む。
【0047】
記憶部240は、デバイス200の動作および使用に関連する情報および/またはソフトウェアを記憶する。例えば、記憶部240は、対応するドライブと共に、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/またはソリッドステートディスク)、コンパクトディスク(Compact Disc:CD)、デジタル多用途ディスク(Digital Versatile Disc:DVD)、フロッピーディスク、カートリッジ、磁気テープ、および/または別のタイプの非一時的コンピュータ可読媒体を含んでもよい。
【0048】
入力部250は、デバイス200がユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)などを介して情報を受信することを可能にするコンポーネントを含む。追加的または代替的に、入力部250は、情報を感知するためのセンサ(例えば、全地球測位システム(Global Positioning System:GPS)コンポーネント、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含んでもよい。出力部260は、デバイス200(例えば、ディスプレイ、スピーカ、および/または1つまたは複数の発光ダイオード(Light-Emitting Diode:LED))からの出力情報を提供するコンポーネントを含む。
【0049】
通信インターフェイス270は、デバイス200が有線接続、無線接続、または有線接続と無線接続との組合せなどを介して他のデバイスと通信することを可能にするトランシーバのようなコンポーネント(例えば、トランシーバおよび/または別個の受信機および送信機)を含む。通信インターフェイス270は、デバイス200が別のデバイスから情報を受信すること、および/または別のデバイスに情報を提供することを可能にしてもよい。例えば、通信インターフェイス270は、イーサネット(登録商標)インターフェイス、光インターフェイス、同軸インターフェイス、赤外線インターフェイス、無線周波数(Radio Frequency:RF)インターフェイス、ユニバーサルシリアルバス(Universal Serial Bus:USB)インターフェイス、Wi-Fi(登録商標)インターフェイス、セルラーネットワークインターフェイスなどであってもよい。
【0050】
デバイス200は、本明細書に記載された1つまたは複数の処理を実行してもよい。デバイス200は、メモリ230および/または記憶部240などの非一時的コンピュータ可読媒体によって記憶されたソフトウェア命令を実行するプロセッサ220に応答して、これらの処理を実行してもよい。コンピュータ可読媒体は、本明細書では非一時的なメモリデバイスと定義される。メモリデバイスは、単一の物理記憶デバイス内のメモリ空間、または複数の物理記憶デバイスにわたって散在するメモリ空間を含む。
【0051】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェイス270を介して別のデバイスから、メモリ230および/または記憶部240に読み込まれてもよい。メモリ230および/または記憶部240に記憶されたソフトウェア命令は、実行されると、本明細書に記載の1つまたは複数のプロセスをプロセッサ220に実行させてもよい。追加的または代替的に、ハードワイヤード回路をソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用して、本明細書に記載の1つまたは複数のプロセスを実行してもよい。よって、本明細書に記載される実装態様は、ハードウェア回路とソフトウェアとのどんな特定の組合せにも限定されない。
【0052】
図2に示されるコンポーネントの数および配置は、一例として示されている。実際には、デバイス200は、図2に示されたコンポーネントに対して、追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、または異なる配置のコンポーネントを含んでもよい。追加的または代替的に、デバイス200のコンポーネントのセット(例えば、1つまたは複数のコンポーネント)は、デバイス200の別のコンポーネントのセットによって実行されるものとして説明される1つまたは複数の機能を実行してもよい。
【0053】
本開示の一実施形態では、NBMPシステム300が提供される。図3を参照すると、NBMPシステム300は、NBMPソース310と、NBMPワークフローマネージャ320と、機能リポジトリ330と、1つまたは複数のメディア処理エンティティ350と、メディアソース360と、メディアシンク370と、を備えることができる。
【0054】
NBMPソース310は、サード・パーティ・エンティティから命令を受信することができ、NBMPワークフローAPI392を介してNBMPワークフローマネージャ320と通信することができ、機能発見API391を介して機能リポジトリ330と通信することができる。例えば、NBMPソース310は、1つまたは複数のワークフロー記述文書(WDD)をNBMPワークフローマネージャ320に送信することができ、機能リポジトリ330に格納された機能の機能記述を読み取ることができ、機能は、例えば、メディア復号、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンド、後処理、および符号化の機能などの、機能リポジトリ330のメモリに格納されたメディア処理機能である。NBMPソース310は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPソース310の機能を実行させるように構成されたコードを格納するメモリと、を備えるか、またはそれらによって実装され得る。
【0055】
NBMPソース310は、各々がいくつかのパラメータを有することができるいくつかの記述子を含むことができるワークフロー記述文書を送信することによって、1つまたは複数のメディア処理エンティティ350によって実行されるタスク352を含むワークフローを作成するように、NBMPワークフローマネージャ320に要求することができる。
【0056】
例えば、NBMPソース310は、機能リポジトリ330に格納された機能を選択し、入力および出力データ、必要な機能、およびワークフローの要件などの記述詳細のための様々な記述子を含むワークフロー記述文書をNBMPワークフローマネージャ320に送信することができる。ワークフロー記述文書は、タスク記述のセットと、メディア処理エンティティ350のうちの1つまたは複数によって実行されるタスク352の入力および出力の接続マップと、を含むことができる。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信すると、NBMPワークフローマネージャ320は、機能名に基づいてタスクをインスタンス化し、接続マップに従ってタスクを接続することによってワークフローを作成することができる。
【0057】
代替的または追加的に、NBMPソース310は、キーワードのセットを使用してワークフローを作成するようにNBMPワークフローマネージャ320に要求することができる。例えば、NBMPソース310は、機能リポジトリ330に格納された適切な機能を見つけるためにNBMPワークフローマネージャ320が使用することができるキーワードのセットを含むことができるワークフロー記述文書をNBMPワークフローマネージャ320に送信することができる。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信すると、NBMPワークフローマネージャ320は、ワークフロー記述文書の処理記述子に指定され得るキーワードを使用して適切な機能を検索することによってワークフローを作成し、ワークフロー記述文書内の他の記述子を使用してタスクを提供し、それらを接続してワークフローを作成することができる。
【0058】
NBMPワークフローマネージャ320は、機能発見API391と同じであっても異なっていてもよいAPIである機能発見API393を介して機能リポジトリ330と通信することができ、API394(例えば、NBMPタスクAPI)を介してメディア処理エンティティ350のうちの1つまたは複数と通信することができる。NBMPワークフローマネージャ320は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPワークフローマネージャ320の機能を実行させるように構成されたコードを格納するメモリと、を備えるか、またはそれらによって実装され得る。
【0059】
NBMPワークフローマネージャ320は、API394を使用して、1つまたは複数のメディア処理エンティティ350によって実行可能なワークフローの1つまたは複数のタスク352を設定、構成、管理、および監視することができる。一実施形態では、NBMPワークフローマネージャ320は、API394を使用して、タスク352を更新および破棄することができる。ワークフローのタスク352を構成、管理、および監視するために、NBMPワークフローマネージャ320は、要求などのメッセージをメディア処理エンティティ350のうちの1つまたは複数に送信することができ、各メッセージは、各々がいくつかのパラメータを有するいくつかの記述子を有することができる。タスク352は各々、メディア処理機能354と、メディア処理機能354のための構成353と、を含むことができる。
【0060】
一実施形態では、タスクのリストを含まない(例えば、タスクのリストの代わりにキーワードのリストを含む)ワークフロー記述文書をNBMPソース310から受信した後、NBMPワークフローマネージャ320は、現在のワークフローのタスク352として実行する適切な機能を見つけるために、機能発見API393を介して、機能リポジトリ330を検索するために、ワークフロー記述文書内のタスクの記述に基づいてタスクを選択することができる。例えば、NBMPワークフローマネージャ320は、ワークフロー記述文書で提供されたキーワードに基づいてタスクを選択することができる。NBMPソース310によって提供されるキーワードまたはタスク記述のセットを使用して適切な機能が識別された後、NBMPワークフローマネージャ320は、API394を使用してワークフロー内の選択されたタスクを構成することができる。例えば、NBMPワークフローマネージャ320は、NBMPソースから受信した情報から構成データを抽出し、構成データに基づいてタスク352を構成することができる。
【0061】
1つまたは複数のメディア処理エンティティ350は、メディアソース360からメディアコンテンツを受信し、NBMPワークフローマネージャ320によって作成されたタスク352を含むワークフローに従ってメディアコンテンツを処理し、処理されたメディアコンテンツをメディアシンク370に出力するように構成することができる。1つまたは複数のメディア処理エンティティ350は、各々、少なくとも1つのプロセッサと、少なくともプロセッサにメディア処理エンティティ350の機能を実行させるように構成されたコードを格納するメモリと、を備えるか、またはそれらによって実装され得る。
【0062】
メディアソース360は、メディアを格納するメモリを含むことができ、NBMPソース310と統合されてもよいし、別個であってもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知することができ、メディアソース360は、ワークフローが準備されたという通知に基づいてメディアコンテンツをメディア処理エンティティ350のうちの1つまたは複数に送信することができる。
【0063】
メディアシンク370は、少なくとも1つのプロセッサと、1つまたは複数のメディア処理エンティティ350によって処理されるメディアを表示するように構成された少なくとも1つのディスプレイと、を備えるか、またはそれらによって実装され得る。
【0064】
上述したように、NBMPソース310(例えば、ワークフローの作成を要求するためのワークフロー記述文書)からNBMPワークフローマネージャ320へのメッセージ、およびNBMPワークフローマネージャ320から1つまたは複数のメディア処理エンティティ350へのメッセージ(例えば、ワークフローを実行させるための)は、各々がいくつかのパラメータを有することができるいくつかの記述子を含むことができる。場合によっては、APIを使用するNBMPシステム300のコンポーネントのいずれかの間の通信は、それぞれがいくつかのパラメータを有することができるいくつかの記述子を含むことができる。
【0065】
一実施形態によれば、NBMPシステム300は、分割レンダリングを実行するように構成され得る。例えば、図4を参照すると、NBMPワークフローマネージャ320は、1つまたは複数のタスク(例えば、タスク401~408)を含むNBMPワークフロー400を作成および管理することができる。例えば、図4に示すように、タスク401~408は、様々な入力410に関連付けられてもよく、様々な出力420を提供するように構成されてもよい。
【0066】
分割レンダリングでは、ワークフローのタスクのいくつかは、メディアソース360および/またはメディアシンク370に実装することができる。例えば、図5は、メディアソース360、1つまたは複数のMPE350、およびメディアシンク370の間の図4に示すタスク401~408の分割レンダリングの一例を示す。実施形態では、メディアソース360はソースデバイス/プラットフォームであってもよく、1つまたは複数のMPE350はクラウドノード/エッジネットワークであってもよく、メディアシンク370はシンクデバイス/プラットフォームであってもよい。
【0067】
図5に示すように、タスク401~402はメディアソース360上に実装され、タスク403~404は1つまたは複数のMPE350上に実装され、タスク405~408はメディアシンク370によって実装される。
【0068】
NBMPにおける分割レンダリングに対応するために、NBMPシステム300は、NBMP規格に対して以下の新しい機能を実装することができる。
【0069】
[シンクおよびソースケイパビリティの説明]
メディアソース360またはメディアシンク370の1つまたは複数のケイパビリティを記述するNBMP記述子を使用して、新しい記述文書(例えば、ケイパビリティ記述文書)を定義することができる。NBMPワークフローマネージャ320は、その記述文書がケイパビリティを記述するメディアソース360またはメディアシンク370から記述文書のうちの1つまたは複数を取得してもよく、またはNBMPシステム300の別のコンポーネント(例えば、1つまたは複数のMPE350から)から1つまたは複数の記述文書を取得してもよい。一例として、ワークフローマネージャ320は、図3に示すように、1つまたは複数のAPI(例えば、API394、API395、および/またはAPI396)から1つまたは複数の記述文書を取得してもよい。記載されたケイパビリティは、以下を含むことができる。
1.名前、記述、および識別子
2.組み込み機能のリポジトリおよび任意選択的にリソース要件
3.処理、メモリ、およびディスクスペースを含む、合計および現在利用可能なハードウェアリソース
4.現在利用可能なスループットおよび待ち時間ケイパビリティ
5.現在利用可能なバッテリ/電力
6.リソースを削減する場合のイベントの発行
【0070】
記述文書のNBMP記述子は、以下の記述子を含むことができる。
1.スキーム記述子
2.一般記述子
3.リポジトリ記述子
4.サポートされる機能のリスト
5.要件
6.システムイベント
【0071】
[MPEケイパビリティの発見]
本開示の実施形態は、NBMP APIを拡張して、Representational State Transfer(REST)フルAPIを使用してMPE(例えば、クラウドノード)ケイパビリティ発見を提供することができる。
【0072】
A.MPEリソース
本開示の実施形態は、様々なMPE API動作に使用されるMPEリソース(MR)を実装することができる。MRはRESTリソースであってもよく、これは正確に1つのMPEケイパビリティ記述文書(MDD)を含む必要があり得る。MRは、JavaScript Object Notation(JSON)フォーマットであってもよい。実施形態によれば、図3を参照すると、MPE350は、例えば、MPE APIとしてAPI394を介してMDDをNBMPワークフローマネージャ320に送信することができる。
【0073】
B.MPE API動作
本開示の実施形態は、MPE APIを実装することができる。MPE APIは、1つまたは複数のMPE350のケイパビリティを発見するために使用され得る。MPE350は、以下の表1に示すMPE API動作をサポートすることができる。
【0074】
【表1A】
【表1B】
【0075】
実施形態によれば、NBMPワークフローマネージャ320は、MPE APIを介して実行されるMPE API動作を要求することができ、少なくとも1つのMPE350は、上記の表1に示すように応答を提供することができる。
【0076】
任意の応答に含まれるMDDは、値「self」を有する「ref」およびMDDの位置を示すIETF RFC 3986によるユニフォーム・リソース・ロケータ(URL)を含む、1つの「リンク」オブジェクトを含むことができる。
【0077】
C.サポートされるプロトコル
【0078】
以下の表2に示すように、HTTP方法は、MPE発見のために本開示の実施形態によって実施することができる。実施形態によれば、HTTP方法は、NBMPワークフローマネージャ320によって実行されてもよい。
【0079】
【表2】
【0080】
実施形態によれば、クラウド処理ノードのケイパビリティおよび他のクラウドノードへの接続性を発見するための方法は、MPEケイパビリティおよび他のMPEへの接続性の発見をサポートするためにNBMPのRESTFUL APIを拡張することによって提供することができ、そこでMPEのケイパビリティを発見することができ、ならびにMPEの特定のMPEセットへの接続性を要求および受信することができる。
【0081】
[MPE間の接続性の記述]
本開示の実施形態は、MPE(例えば、クラウド処理ノード)と他のMPE(例えば、他のクラウド処理ノード)との間の接続特性を定義するために、新しいNBMP記述子を実装することができる。
【0082】
接続特性は、例えば、以下のパラメータ、すなわち、(1)各方向における2つのMPE間の最大帯域幅、および(2)各方向における2つのMPE間の最小待ち時間を用いて記述することができる。
【0083】
これらの接続パラメータは、以下の表3に示すように定義することができる。
【0084】
【表3】
【0085】
接続は2つのMPE間であるため、上記のパラメータは方向ごとに定義されてもよい。
【0086】
A.MPEケイパビリティ記述における接続性パラメータ
本開示の実施形態は、以下の表4に示すように、NBMP MPEケイパビリティ記述のケイパビリティ記述子内に新しいパラメータセットを実装することができる。
【0087】
【表4】
【0088】
B.要求記述子内の接続パラメータ
ケイパビリティ記述子は、要件記述子と同じ記述子であってもよいので、本開示の実施形態は、要件記述子(ケイパビリティ記述子)内の以下の表5に示すパラメータを実装することができる。
【0089】
【表5】
【0090】
例えば、MPEと別のMPE(ターゲットMPE)との間の接続性を記述する接続性パラメータが含まれてもよい。connection-parametersは、id、url、forwardオブジェクト、およびreturnオブジェクトを含み得るか、またはそれらからなり得る。オブジェクトを以下の表6に示す。
【0091】
【表6】
【0092】
idは、全てのMPEの中のターゲットMPEの一意の識別子であり得る。urlは、ターゲットMPEのURLであってもよい。forwardオブジェクトおよびbackwardオブジェクトは、MPEとターゲットMPEとの間の接続パラメータを定義することができる。すなわち、forwardオブジェクトは、MPEからターゲットMPEへの接続を定義することができ、returnオブジェクションは、ターゲットMPEからMPEへの接続を定義することができる。
【0093】
forwardオブジェクトおよびreturnオブジェクトは、以下の表7に定義されるパラメータを含むことができる。
【0094】
【表7】
【0095】
これらのパラメータ(例えば、「min-delay」、「max-throughput」、「averaging-window」)は、表3に定義されている。
【0096】
実施形態によれば、クラウドノードのケイパビリティ発見の一部として異なるクラウド処理ノード間の接続特性を記述するための方法を提供することができる。本方法は、NBMPワークフローマネージャ320がNBMP MPEケイパビリティ記述を受信して使用するステップを含むことができ、ここで、MPEケイパビリティ記述内には、クラウド内のMPE350と別のMPE350との間の各方向における最大帯域幅および最小待ち時間を表すための新しいパラメータセットが提供される。
【0097】
[タスク近接パラメータ]
各タスク(例えば、タスク352)について、NBMPシステム300によって新しいパラメータセット(タスク近接パラメータ)を実装することができる。各タスクは、各メディアソース360および/またはメディアシンク370に対する所望の近さを示す相対距離値の配列を有することができる。数は相対的であってもよく、より小さい数はより近い距離であってもよい。
【0098】
実施形態によれば、NBMPワークフローマネージャ320は、ワークフロー記述の一部としてNBMPソース310から、相対距離値を示すタスク近接パラメータを受信することができる。
【0099】
タスクに近接パラメータが割り当てられていない場合、NBMPワークフローマネージャ320は、ワークフロー内のタスクの位置に基づいて各タスクに近接値を割り当てることができる。例えば、NBMPワークフローマネージャ320は、接続タスクの数をプロキシの尺度として使用することができる。この場合、一例として、図5のタスクは、以下の表8に示す距離を有することができる。
【0100】
【表8】
【0101】
[タスクのリソース位置]
各タスクがどこで実装されるかを文書化するために、タスクが実装されるリソース(例えば、メディアソースまたはメディアシンク)のidを示すために新しいパラメータをNBMP一般記述子に追加することができる。特に、タスクがメディアソースまたはメディアシンクで実装される場合、idは、タスクが対応するデバイス/プラットフォーム上で実装されることを示す。以下の表9および表10に、NBMP一般記述子に追加されるパラメータの例を示す。
【0102】
【表9】
【0103】
【表10】
【0104】
同じパラメータを使用して、クラウドプラットフォームにおける(例えば、MPE350における)タスク実装の位置を通知することができる。しかしながら、この場合、クラウドプラットフォームおよび関連するNBMPワークフローマネージャ320のみが、idをクラウドリソースの実際の位置に関連付けることができる。
【0105】
[分割レンダリングの処理]
図3および図6を参照すると、ワークフローの分割レンダリングのためにNBMPワークフローマネージャ320によって実行されるプロセスを以下に説明する。
【0106】
NBMPワークフローマネージャ320は、必要なワークフローを導出することができる(610)。例えば、NBMPワークフローマネージャ320は、NBMPソース310からのワークフロー記述文書に基づいてワークフローを導出することができる。
【0107】
NBMPワークフローマネージャ320は、メディアソース、メディアシンク、および/または1つまたは複数のMPE350のケイパビリティを取得することができる(620)。例えば、NBMPワークフローマネージャ320は、メディアソース360、1つまたは複数のMPE350、およびメディアシンク360のうちの1つまたは複数に要求を送信することができ、1つまたは複数のAPI(例えば、API394、API395、および/またはAPI396)を介して1つまたは複数のケイパビリティ記述文書を受信することができる。NBMPワークフローマネージャ320は、1つまたは複数のケイパビリティ記述文書に基づいて、メディアソース、メディアシンク、および/または1つまたは複数のMPE350のケイパビリティを決定することができる。
【0108】
NBMPワークフローマネージャ320は、ワークフロー内のタスクの近接距離を取得することができる(630)。例えば、実施形態によれば、NBMPワークフローマネージャ320は、ワークフロー記述の一部として(例えば、ワークフロー記述文書の一部として)、NBMPソース310から近接距離を受信することができる。実施形態によれば、NBMPワークフローマネージャ320は、NBMPソース310からワークフロー記述文書(WDD)を受信し、次いで各タスクの近接距離を含む更新されたWDDをNBMPソース310から受信することができる。あるいは、実施形態によれば、NBMPワークフローマネージャ320は、内部スキームおよびワークフロートポロジに基づいて各タスクの近接距離を導出することができる。
【0109】
NBMPワークフローマネージャ320は、メディアソース360、メディアシンク370、および/または1つまたは複数のMPE350ごとに取得されたケイパビリティ、ならびに各タスクの近接距離を使用して、各タスクを要素(例えば、メディアソース、メディアシンク、またはクラウド/ネットワークリソース)に割り当てることができる(370)。例えば、NBMPワークフローマネージャ320は、以下の条件が満たされるように各タスクを割り当てることができる:(i)割り当てられた要素がタスクを実行することができ、タスク要件を満たす、および(ii)タスクがタスクを実行することができるメディアソースおよびシンクの中でメディアソース/シンクまでの距離が最も小さい。実施形態によれば、NBMPワークフローマネージャ320は、メディアソース360、メディアシンク370、および/または1つまたは複数のMPE350ごとに取得されたケイパビリティ、ならびに各タスクの近接距離を使用して、各タスクの要素への割り当てを繰り返して、最も最適化された構成を取得することができる。
【0110】
[ワークフローの再構成]
ワークフローおよびメディアソース/シンクケイパビリティに応じて、NBMPワークフローマネージャ320は、ワークフローの一部を置き換えるか、またはワークフロー内の中間タスクを追加することによってワークフローを再構成することができる。そのような再構成は、ワークフローの効率を高めることができる。その理由は、メディアソース360またはメディアシンク370がより効率的な組み込み機能を有することができるため、それらへの配信フォーマットがワークフロー出力フォーマットとは異なる場合がある、またはデバイスのバッテリ制約により、ワークフローを異なるワークフローに置き換えることが強制される場合があるためであり得る。図7図8を参照して、再構成の2つの例を以下に説明する。
【0111】
図7は、1つまたは複数のMPE350(図3参照)とメディアシンク370との間で分割され、入力710に関連付けられ、出力720を提供することができるタスク701~705を最初に含むワークフロー700を示す。メディアシンク370の接続帯域幅が減少すると、ワークフローは必要なスループットで動作することができる。NBMPワークフローマネージャ320は、メディアシンク370の低減された接続帯域幅を識別することができ、次いでタスク706およびタスク707を追加することによってワークフローを更新することができる。タスク707は、メディアシンク370内の組み込み解凍機能であってもよく、タスク706は、エッジネットワークの一部であってもよいMPE350内の圧縮機能であってもよい。エッジネットワーク上の圧縮機能としてタスク706を使用すると、タスク706とタスク707との間の帯域幅は、メディアシンク370に対する利用可能な帯域幅に収まるように十分に低減される。
【0112】
図8を参照すると、メディアシンク370(例えば、シンクデバイス)のバッテリ残量が少ない使用ケースのための再構成ワークフローの一例が示されている。図8は、1つまたは複数のMPE350(例えば、クラウドノート)とメディアシンク370との間で分割され、入力810に関連付けられ、出力820を提供するタスク801~805を最初に含むワークフロー800を示す。タスク803~805は、メディアシンク370のバッテリを節約するためにかなりの処理能力を必要とする可能性があるので、コンテンツをメディアシンク370に配信するために使用される帯域幅が妥当であるように、タスク803~805をクラウドに移動させ、圧縮タスク806および808を追加することによって、ワークフローはNBMPワークフローマネージャ320によって再構成される。タスク807および809は、入力ストリームを解凍し、結果を出力820としてレンダリングする組み込みの効率的な解凍機能であってもよい。
【0113】
[ソースおよびシンクシステムイベント]
NBMPワークフローマネージャ320によって取得されるメディアソースおよびメディアシンク記述は、メディアソース/シンクシステムイベントのリストを含むことができる。これらのイベントは、典型的には以下の通りである。
1.特定の閾値からの処理能力の減少
2.特定の閾値からの利用可能なメモリの減少
3.特定の閾値からの利用可能なディスクスペースの減少
4.特定の閾値からのバッテリレベルの減少
【0114】
NBMPワークフローマネージャ350は、通知記述子を使用して上記のシステムイベントの全部または一部の通知をセットアップすることができる。そのようなイベントが発生した場合、NBMPワークフローマネージャは通知を受信し、通知の受信に基づいてイベントに対処するようにワークフローを再構成することができる。NBMPワークフローマネージャ350は、取得されたメディアソース/シンクシステムイベントのリストに基づいて通知をセットアップすることができる。
【0115】
[異なるネットワーク要素または異なるクラウドノード間の分割レンダリング]
上述した特徴およびプロセスは、ネットワーク要素およびエッジコンピューティングリソース間、ならびにクラウドプラットフォームの異なるノード間または複数クラウドプラットフォーム間でワークフロー実装を分割するために、NBMPシステム300によって実装することができる。
【0116】
[コンピュータコードの例]
本開示の実施形態によれば、コンピュータコードを記憶するメモリを有する少なくとも1つのプロセッサを提供することができる。コンピュータコードは、少なくとも1つのプロセッサによって実行されると、本開示の任意の数の態様を実行するように構成され得る。
【0117】
例えば、図9を参照すると、コンピュータコード900は、NBMPシステム300に実装されてもよい。例えば、コンピュータコードは、NBMPワークフローマネージャ320のメモリに記憶されてもよく、NBMPワークフローマネージャ320の少なくとも1つのプロセッサによって実行されてもよい。計算コードは、例えば、ワークフロー導出コード910、ケイパビリティ取得コード920、タスク近接取得コード930、タスク割り当てコード940、通知設定コード950、およびワークフロー再構成コードを含むことができる。
【0118】
ワークフロー導出コード910、ケイパビリティ取得コード920、タスク近接取得コード930、およびタスク割り当てコード940は、それぞれ、NBMPワークフローマネージャ320に、図6を参照して上述したプロセスの態様を実行させるように構成することができる。
【0119】
通知設定コード950は、特定のメディアソース/シンクシステムイベント(例えば、リソースの変更)が発生した場合にNBMPワークフローマネージャ320が通知を受信するように、NBMPワークフローマネージャ320に、取得したメディアソース/シンクシステムイベントのリストに基づいて通知を設定させるように構成することができる。
【0120】
ワークフロー再構成コード960は、NBMPワークフローマネージャ320に、ワークフローを再構成(例えば、タスクの追加もしくは削除、および/またはメディアソース360、メディアシンク370、および1つまたは複数のMPE350間のタスクの再分割)させるように構成することができる。例えば、ワークフロー再構成コード960は、通知の受信に基づいて、NBMPワークフローマネージャ320にワークフローを再構成させるように構成され得る。実施形態によれば、ワークフローの再構成は、動的であり、リソースの変更に対応するように、メディアソース360、メディアシンク370、および1つまたは複数のMPE350の中からの1つまたは複数に関連付けられたリソースの変更(例えば、削減)に基づくことができる。リソースは、例えば、メディアソース360、メディアシンク370、またはMPE350の利用可能なCPU、gpu、メモリ、帯域幅、ディスク、または電力であってもよい。実施形態によれば、ワークフローの再構成は動的であってもよく、MPE350の可用性の変化に基づいてもよい。再構成は、例えば、MPE350間のワークフローの少なくとも一部をそれらの可用性に基づいて再分割することを含み得る。
【0121】
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、実施形態(およびその方法)の各々が、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に格納されているプログラムを実行する。
【0122】
前述の開示は、例示および説明を提供しているが、網羅的であることも、実施態様を開示の正確な形態に限定することも意図されていない。改変形態および変形形態が、上記の開示に照らして可能であり、または実施態様の実施により取得され得る。
【0123】
本明細書で使用される場合、コンポーネントという用語は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組合せとして広く解釈されることを意図されている。
【0124】
特徴の組合せが特許請求の範囲に記載され、および/または本明細書に開示されているが、これらの組合せは、可能な実施態様の開示を限定することを意図するものではない。実際、これらの特徴の多くは、特許請求の範囲に具体的に記載されていない、および/または明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は1つの請求項のみに直接依存してもよいが、可能な実施態様の開示は、各従属請求項を請求項セット内の他の全ての請求項と組み合わせて含む。
【0125】
本明細書で使用される要素、動作、または命令は、そのように明示的に記載されていない限り、重要または必須であると解釈されるべきではない。また、本明細書で使用される場合、冠詞「a」および「an」は、1つまたは複数の項目を含むことを意図しており、「1つまたは複数」と交換可能に使用され得る。さらに、本明細書で使用される場合、「セット」という用語は、1つまたは複数の項目(例えば、関連項目、無関係な項目、関連項目と無関係な項目との組合せなど)を含むことを意図しており、「1つまたは複数」と互換的に使用され得る。1つの項目のみが意図される場合、「1つ」という用語または同様の用語が使用される。また、本明細書で使用される場合、「有する(has)」、「有する(have)」、「有する(having)」などの用語は、オープンエンド用語であることを意図している。さらに、「に基づいて」という語句は、特に明記しない限り、「少なくとも部分的に、基づいて」を意味することを意図している。
【符号の説明】
【0126】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
130 ネットワーク
200 デバイス
201 HTTPステータスコード
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
395 API
396 API
400 NBMPワークフロー
401 タスク
402 タスク
403 タスク
404 タスク
405 タスク
406 タスク
407 タスク
408 タスク
410 入力
420 出力
700 ワークフロー
701 タスク
702 タスク
703 タスク
704 タスク
705 タスク
706 タスク
707 タスク
710 入力
720 出力
800 ワークフロー
801 タスク
802 タスク
803 タスク
804 タスク
805 タスク
806 圧縮タスク
807 タスク
808 タスク
809 タスク
810 入力
820 出力
900 コンピュータコード
910 ワークフロー導出コード
920 ケイパビリティ取得コード
930 タスク近接取得コード
940 タスク割り当てコード
950 通知設定コード
960 ワークフロー再構成コード
図1
図2
図3
図4
図5
図6
図7
図8
図9