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

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

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

<>
  • 特許-ビデオコーディングのための方法と装置 図1
  • 特許-ビデオコーディングのための方法と装置 図2
  • 特許-ビデオコーディングのための方法と装置 図3
  • 特許-ビデオコーディングのための方法と装置 図4
  • 特許-ビデオコーディングのための方法と装置 図5
  • 特許-ビデオコーディングのための方法と装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-02
(45)【発行日】2023-10-11
(54)【発明の名称】ビデオコーディングのための方法と装置
(51)【国際特許分類】
   H04L 67/50 20220101AFI20231003BHJP
   H04L 67/12 20220101ALI20231003BHJP
【FI】
H04L67/50
H04L67/12
【請求項の数】 15
(21)【出願番号】P 2022544256
(86)(22)【出願日】2021-06-10
(65)【公表番号】
(43)【公表日】2023-03-16
(86)【国際出願番号】 US2021036824
(87)【国際公開番号】W WO2022076042
(87)【国際公開日】2022-04-14
【審査請求日】2022-07-21
(31)【優先権主張番号】63/087,730
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/326,049
(32)【優先日】2021-05-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ソーダガー,イラージ
【審査官】岩田 玲彦
(56)【参考文献】
【文献】国際公開第2020/190612(WO,A1)
【文献】米国特許出願公開第2020/0020077(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/50
H04L 67/12
(57)【特許請求の範囲】
【請求項1】
ネットワークベースメディア処理(NBMP)のための方法であって、
NBMPのためのクラウド内のデバイスの処理回路によって、NBMPのための前記クラウド内のエンティティに関連する情報を受信するステップと、
前記処理回路によって、前記エンティティに関連する前記情報からNBMPエンティティ識別子を取得するステップと、
前記処理回路によって、前記NBMPエンティティ識別子に基づいて前記エンティティに関連する前記情報を解釈するステップと、
を含む、方法。
【請求項2】
前記NBMPエンティティ識別子は、前記エンティティが準拠するサポート標準及び前記サポート標準のバージョンを示す、
請求項1記載の方法。
【請求項3】
前記NBMPエンティティ識別子は、前記サポート標準のバージョンを示す、
請求項2記載の方法。
【請求項4】
前記NBMPエンティティ識別子は、NBMPのための前記クラウド内の前記エンティティの関数を示す、
請求項1記載の方法。
【請求項5】
前記NBMPエンティティ識別子は、前記エンティティと通信するためのアプリケーションプログラミングインタフェースを示す、
請求項1記載の方法。
【請求項6】
前記NBMPエンティティ識別子は、ワークフローマネージャ、メディア処理エンティティ(MPE)、NBMPソース及び関数レポジトリのうちの1つを示す、
請求項1記載の方法。
【請求項7】
前記NBMPエンティティ識別子は、統一リソース名(URN)の形態である、
請求項1記載の方法。
【請求項8】
ネットワークベースメディア処理(NBMP)のための方法であって、
NBMPのためのクラウド内のデバイスの処理回路によって、NBMPのための前記クラウド内のエンティティに関連するNBMPエンティティ識別子を含むステップと、
前記デバイスのインタフェース回路によって、前記NBMPエンティティ識別子を含む情報を送信するステップと、
を含む方法。
【請求項9】
前記NBMPエンティティ識別子は、前記エンティティが準拠するサポート標準及び前記サポート標準のバージョンを示す、
請求項8記載の方法。
【請求項10】
前記NBMPエンティティ識別子は、前記サポート標準のバージョンを示す、
請求項9記載の方法。
【請求項11】
前記NBMPエンティティ識別子は、NBMPのための前記クラウド内の前記エンティティの関数を示す、
請求項8記載の方法。
【請求項12】
前記NBMPエンティティ識別子は、前記エンティティと通信するためのアプリケーションプログラミングインタフェースを示す、
請求項8記載の方法。
【請求項13】
前記NBMPエンティティ識別子は、ワークフローマネージャ、メディア処理エンティティ(MPE)、NBMPソース及び関数レポジトリのうちの1つを示す、
請求項8記載の方法。
【請求項14】
前記NBMPエンティティ識別子は、統一リソース名(URN)の形態である、
請求項8記載の方法。
【請求項15】
ネットワークベースメディア処理(NBMP)のための装置であって、
請求項1乃至14いずれか1項記載の方法を実行するように構成された処理回路を備える装置。
【発明の詳細な説明】
【技術分野】
【0001】
参照による援用
本願は、2020年10月5日に出願された米国仮出願第63/087,730号「NETWORK ENTITY IDENTIFIERS FOR MEDIA NETWORK ELEMENTS IN CLOUD(クラウド内のメディアネットワーク要素のためのネットワークエンティティ識別子)」に基づく優先権の利益を主張する2021年5月20日に出願された米国特許出願第17/326,049号「METHOD AND APPARATUS FOR CLOUD SERVICE(クラウドサービスのための方法及び装置)」に基づく優先権の利益を主張する。
先の出願の開示全体は、その全体が参照により本明細書に組み込まれる。
【0002】
技術分野
本開示は、概してクラウドサービスに関連する実施形態を記載する。
【背景技術】
【0003】
本明細書で提供される背景説明は、本開示のコンテキストを全般的に提示するためのものである。現在挙げられている発明者の研究は、その研究がこの背景部分に記載されている範囲において、また、出願時に他の点では先行技術として適格でないかもしれない説明の側面において、本開示に対する先行技術として明示的にも黙示的にも認められていない。
【0004】
様々なメディアアプリケーション及びサービスは、かなりの処理能力を必要とする。いくつかの例では、クライアントデバイス上で実行されていたはずのワークロードをリモートサーバにオフロードできるクラウド処理が好まれる。リモートサーバは非常に高い計算能力を有するため、複雑なメディア処理タスクをリモートサーバが実行し、最終結果又は最終に近い結果をクライアントデバイスに送ることができる。
【発明の概要】
【0005】
本開示の態様は、ネットワークベースメディア処理のための方法及び装置を提供する。いくつかの実施例では、ネットワークベースメディア処理(NBMP)のためのクラウド内の装置は、処理回路を含む。処理回路は、NBMPのためのクラウド内のエンティティに関連する情報を受信する。処理回路は、エンティティに関連する情報からNBMPエンティティ識別子を取得する。その後、処理回路は、NBMPエンティティ識別子に基づいてエンティティに関連する情報を解釈する。
【0006】
いくつかの実施例では、NBMPのためのクラウド内の装置の処理回路は、NBMPのためのクラウド内のエンティティと関連する情報にNBMPエンティティ識別子を含み、NBMPエンティティ識別子を含む情報を送信する。
【0007】
いくつかの実施形態では、NBMPエンティティ識別子は、エンティティが準拠するサポート標準を示す。さらに、実施例では、NBMPエンティティ識別子は、サポート標準のバージョンを示す。
【0008】
いくつかの実施例では、NBMPエンティティ識別子は、NBMPのためのクラウド内のエンティティの関数を示す。
【0009】
いくつかの実施例では、NBMPエンティティ識別子は、エンティティと相互作用するためのアプリケーションプログラミングインタフェース(API)を示す。
【0010】
いくつかの実施例では、NBMPエンティティ識別子は、ワークフローマネージャ、メディア処理エンティティ(MPE)、NBMPソース及び関数レポジトリのうちの1つを示す。
【0011】
いくつかの実施例では、NBMPエンティティ識別子は、統一リソース名(URN)スキームにある。
【0012】
本開示の態様はまた、クラウドサービスのためのコンピュータによって実行されると、クラウドサービスのための方法をコンピュータに実行させる命令を格納する非一時的コンピュータ可読媒体を提供する。
【図面の簡単な説明】
【0013】
開示された主題のさらなる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう。
図1図1は、本開示の一実施形態による例示的なメディア処理システムを示す。
図2図2は、本開示の一実施形態によるグラフの一例を示す。
図3図3は、本開示のいくつかの実施形態によるNBMPエンティティ識別子の表を示す。
図4図4は、本開示のいくつかの実施例におけるプロセスの概略を示すフローチャートを示す。
図5図5は、本開示のいくつかの実施例における別のプロセスを概説するフローチャートを示す。
図6図6は、一実施形態によるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0014】
クラウドコンピューティングは、ネットワーク(例えば、インターネット)上のリモートサーバのネットワークを使用して、情報コンピューティングサービス(例えば、クラウドサービス)を提供することを指す。クラウドサービスがサービス利用者(クライアントなど)に提供されるネットワークアーキテクチャ(ハードウェアやソフトウェアなど)は、クラウドと呼ばれる。クラウドコンピューティングは、データ処理、メディア処理、サーバ、ストレージ、ネットワーク、アプリケーション、オンラインサービスなどの広範なサービスへのアクセスを提供する。いくつかの例では、メディア処理は集中的に計算されるため、メディア処理クラウドを使用して、重要なメディア処理ワークロードをリモートサーバにオフロードすることができる。
【0015】
概して、クラウドコンピューティングシステムは、ネットワーク、1つ以上のサーバ、及び1つ以上のクライアントデバイスを含む。ネットワークは、サーバとクライアントデバイスとの間の通信を容易にする。クライアントデバイスは、例えば、スマートフォン、タブレットコンピュータ、ラップトップ、パーソナルコンピュータ、ウェアラブルデバイス、ヘッドマウントディスプレイ(HMD)などである。サーバは、1つ以上のクライアントデバイスに対してコンピューティングサービスを提供することができる任意の適切なコンピューティング又はプロセッシングデバイスを含むことができる。例えば、各サーバは、1つ以上の処理デバイスと、命令及びデータを格納する1つ以上のメモリと、ネットワークにわたる通信を容易にする1つ以上のネットワークインタフェースとを含むことができる。いくつかの実施形態では、サーバは、処理タスクを実行するために機能を選択し、ワークフローパイプラインを構築することができるワークフローマネージャを含む。
【0016】
本開示のいくつかの態様は、クラウド処理におけるネットワークベースのメディア処理エンティティを識別するための技術を提供する。ISO/IEC JTC1/SC29/WG11/N19439に記載されているようないくつかの関連する例では、単一の汎用識別子(single general identifier)は、ネットワークベースのメディア処理(NBMP)のクラウド内のエンティティに使用される。したがって、動作中に、ネットワークベースのメディア処理を展開するために、追加の処理時間又は通信が必要とされ、エンティティの様々な特性を認識する。
【0017】
本開示のいくつかの態様によれば、NBMPのためのクラウド内の各エンティティは、固有のNBMPエンティティ識別子で定義することができる。したがって、いくつかの実施形態では、固有のNBMPエンティティ識別子は、NBMPエンティティ識別子に基づく特性認識を可能にすることができ、したがって、ネットワークベースのメディア処理の展開をより効率的にすることができる。
【0018】
メディア処理システムは、ワークフローマネージャ、機能リポジトリ、メディア処理エンティティ(MPE)、NBMPソースなど、異なる機能を有するものを含むことができる。
【0019】
メディア処理システムでは、NBMPソースは要求されたメディア処理を記述し、メディアデータの性質とフォーマットに関する情報を提供する。したがって、NBMPワークフローマネージャは、メディア処理ワークフローを確立し、NBMPソースにワークフローの準備ができていることを通知し、メディア処理を開始することができる。例えば、(1つ以上の)メディアソースは、処理のためにネットワークにメディアを送信し始めることができる。
【0020】
いくつかの実施形態では、NBMPワークフローは、メディア処理タスク間の入出力関係に基づいて接続される媒体処理タスクを含む。各メディア処理タスクは、ビデオデコーディング、ビデオステッチング、ビデオエンコーディング等のメディア処理動作を実行する。一実施例では、第1メディア処理タスクは、入力に基づいてメディア処理動作を実行し、出力を生成する。第1メディア処理タスクの出力は、第1メディア処理タスクに接続された第2メディア処理タスクへの入力として使用することができる。換言すると、NBMPワークフローはメディア処理タスクの接続グラフと見なすことができる。
【0021】
ワークフローマネージャは、各タスク及びワークフロー出力を構成及びモニタすることにより、ワークフローの正しい動作を確実にすることができる。いくつかの例では、ワークフローマネージャは、NBMPソースから受信したワークフロー記述に基づくタスクとして、メディア処理機能を選択し、メディア処理機能をインスタンス化するように構成されている。
【0022】
メディア処理システムでは、適切なインタラクションを実行して、メディア処理タスクを実行するメディア処理エンティティを確立し、ロードし、インスタンス化し、モニタすることができる。いくつかの例では、アプリケーションプログラミングインタフェース(API)を、NBMPソースとワークフローマネージャの間、ワークフローマネージャとタスクの間で定義することができ、APIを適切な(1つ以上の)機能を検出するために定義することができる。いくつかの例では、メディア処理システムは、メディアフォーマット及びプロトコルに依存しない(agnostic)ように構成されている。メディア処理システムは、メディアソース、ワークフローマネージャ、及びタスク間で交換されるデータのメディア、メタデータ、及び補足情報フォーマットを識別し、シグナリングすることができる。
【0023】
いくつかの実施例では、メディア処理のために、デジタルネットワークを介して接続されたエンティティ間のデータフォーマット及びアプリケーションプログラミングインタフェース(API)の両方を含むインタフェースを定義することができる。ユーザは、効率的でインテリジェントな処理のために、ユーザ動作にリモートでアクセスし、構成することができる。メディアデータに適用するワークフローを記述し、管理することができる。メディアデータをネットワークにアップロードし、メディア処理タスクをインスタンス化し、構成することができる。いくつかの実施形態では、メディア処理パイプラインの動的作成、並びに処理されたメディアデータ及びメタデータへのリアルタイムでの又は遅延した方法でのアクセスが可能である。メディア処理パイプライン内のメディアソース、ワークフローマネージャ、及びメディア処理エンティティ間で使用されるメディアフォーマット及びメタデータフォーマットも特定する。
【0024】
一実施例では、クライアント(例えば、クリエータ、サービスプロバイダ、及びデジタルメディアの消費者)は、ネットワーク内のメディア処理エンティティによって実行されるメディア処理動作を記述することができる。ワークフローは、インタフェース(例えば、NBMP API)を通してアクセス可能な一連のメディア処理機能を構成することによって記述することができる。メディア処理エンティティ(MPE)は、メディア上で適用された処理タスクと、(1つ以上の)メディアソース又はその他のタスクから受信した関連するメタデータを実行することができる。MPEは、処理タスクを構成、管理、及びモニタする能力を提供することができる。メディア処理タスクは、(1つ以上の)メディア及びメタデータ入力に適用され、メディアシンク又はその他のメディア処理タスクによって消費されるべき(1つ以上の)データ及び関連するメタデータ出力を生成するプロセスであり得る。
【0025】
メディア処理システムは、ストリーミング、ファイル配送、プッシュベースのプログレッシブダウンロード、ハイブリッド配送、マルチパス、及び異種ネットワーク環境などの様々な配送方法をサポートすることができる。
【0026】
図1は、本開示の一実施形態による、例示的なメディア処理システム(例えば、NBMPシステム、NBMP参照アーキテクチャ、NBMPアーキテクチャ)(100)を示す。メディア処理システム(100)は、NBMPソース(101)、ワークフローマネージャ(例えば、NBMPワークフローマネージャ)(103)、機能リポジトリ(105)、メディアソース(111)、メディア処理エンティティ(MPE) (113)、メディアシンク(115)、第三者エンティティなどの複数のエンティティを含むことができる。メディア処理システム(100)は、追加のメディアソース、メディアシンク、及び/又はメディア処理エンティティを含むことができる。メディア処理システム(100)は、ネットワーク内の1つ以上の処理エンティティにわたってメディアデータを処理することができる。メディアにのための様々なメディア及び制御情報(又は制御データ)などの情報は、メディア処理システム(100)内の複数のエンティティ間で通信され得る。
【0027】
議論の目的でコンテキストを提供するために、メディア処理システム(100)は、以下ではNBMPシステム(100)として説明される。説明は、任意のメディア処理システムに適切に適合させることができる。
【0028】
NBMPソース(101)は、ネットワーク内のメディア処理を記述するか、又は他の方法で示すことができる。関数リポジトリ(105)は、様々なNBMP関数のNBMP関数記述を含むことができる。NBMPソース(101)及びワークフローマネージャ(103)は、関数リポジトリ(105)からNBMP関数の説明又は関数を取り出すことができる。NBMP関数は、スタンドアロンの自己完結型メディア処理動作の実装及び/又は動作の対応する説明を参照できる。
【0029】
処理タスク又はタスクは、MPE(113)によって実行されるNBMP関数のランタイムインスタンスを参照することができる。NBMPワークフロー又はワークフローは、要求されたメディア処理を達成する1つ以上の接続されたタスクのグラフ(例えば、有向非巡回グラフ(DAG))によって表すことができる。ワークフローマネージャ(103)は、例えば、ワークフロー記述ドキュメント(WDD)に基づいて、ワークフローを作成、制御、管理、及びモニタするために、(1つ以上の)タスクを提供し接続することができる。
【0030】
メディアソース(111)は、ワークフローによって処理されるメディアコンテンツ(例えば、メディアデータ、補足情報)を提供することができる。補足情報には、メディアデータに関連するメタデータ又は補足情報を含めることができる。メディアソース(111)は、ワークフローへの入力を提供することができる。メディアシンク(115)は、ワークフローの出力を消費することができる。MPE(113)は、1つ以上のメディア処理タスクを実行して、メディアコンテンツを処理することができる。
【0031】
NBMPシステム(100)の異なるエンティティ(例えば、NBMPソース(101)、ワークフローマネージャ(103)及びMPE(113))は、メディアサービスリクエストを呼び出して応答するためにAPIを使用することができる。APIは、NBMPワークフローAPI、ワークフローAPI、機能検出API(function discovery API)、タスクAPIを含むことができる。ワークフローAPIは、NBMPソース(101)とワークフローマネージャ(103)との間のインタフェースを提供することができる。タスクAPIは、ワークフローマネージャ(103)とメディア処理タスクとの間のインタフェースを提供することができる。関数検出APIは、ワークフローマネージャ(103)/NBMPソース(101)と機能リポジトリ(105)との間のインタフェースを提供することができる。
【0032】
上述のNBMPインタフェースは、ネットワーク内のメディア処理ワークフローを作成及び制御するために使用できる。NBMPシステム(100)は、コントロールプレーンとメディアプレーン(又はメディアデータプレーン)に分割することができる。コントロールプレーンには、ワークフローAPI、関数検出API、及びタスクAPIを含めることができる。
【0033】
ワークフローAPIを、NBMPソース(101)がメディア処理ワークフローを作成及び制御するために使用することができる。NBMPソース(101)は、ワークフローAPIを使用して、ネットワーク内のメディア処理を構成し制御するためにワークフローマネージャ(103)と通信することができる。NBMPソース(101)がワークフローAPIの動作にワークフローリソース(WR)を含めることによってワークフローマネージャ(103)にリクエストを送信する場合、ワークフローマネージャ(103)は、WR、含まれるWDD及び対応する記述子をパースすることができ、リクエストされた動作に応じて適切なアクションを取ることができる。その後、ワークフローマネージャ(103)は、要求を応答で確認することができます。ワークフローAPI動作は、ワークフローの作成(例えばCreateWorkflowなど)、ワークフローの更新(例えばUpdateWorkflowなど)、ワークフローの削除(例えばDeleteWorkflowなど)、ワークフローの検索(例えばRetrieveWorkflowなど)などを含む。
【0034】
機能検出APIは、ワークフローマネージャ(103)及び/又はNBMPソース(101)が、メディア処理ワークフローの一部としてロードできるメディア処理関数を検出する手段を提供することができる。
【0035】
タスクAPIは、ワークフローマネージャ(103)がランタイムにタスク(例えば、MPE(113)が実行するタスク2及びタスク1)を構成及びモニタするために使用することができる。タスクAPIは、例えば、タスクのリソースがMPE(113)に割り当てられた後に、ワークフローマネージャ(103)がメディア処理タスクを構成するための(1つ以上の)インタフェースを定義することができる。タスクAPIの動作は、タスクの生成(例えばCreateTask)、タスクの更新(例えばUpdateTask)、タスクの取得(例えばGetTask)、タスクの削除(例えばDeleteTask)などを含む。
【0036】
メディアプレーン上では、NBMPソース(111)とタスクとの間、及びタスク間の、メディアフォーマット、メタデータ、及び補足情報フォーマットを定義することができる。
【0037】
ワークフロー記述(WD)は、NBMPソース(101)からワークフローマネージャ(103)に渡すことができる。WDは、入力データ、出力データ、関数、ワークフローに対するその他の要求などの情報を記述することができる。
【0038】
ワークフローマネージャ(103)は、NBMPソース(101)からWDDを受信し、要求されたメディア処理のためのワークフローを構築することができる。ワークフロー手順では、メディア処理関数は、例えば、関数リポジトリ(105)から選択することができ、その後、対応するメディア処理タスクを構成し、一連の1つ以上のMPE(例えば、MPE(113)を含む)に配布することができる。
【0039】
関数リポジトリ(105)によって提供される一連の関数は、NBMPソース(101)及びワークフローマネージャ(103)によって読み取ることができる。一実施形態では、NBMPソース(101)は、関数リポジトリ(105)内の一連の関数を使用するワークフローの作成をリクエストする。したがって、NBMPソース(101)は、ワークフローのための関数を選択するように構成される。NBMPソース(101)は、後述するようにワークフローの作成をリクエストできる。NBMPソース(101)は、ワークフローが作成されるメディア処理タスクの説明を使用することができ、メディア処理タスクの入出力の接続を定義するために接続マップを指定することができる。ワークフローマネージャ(103)は、NBMPソース(101)から上記情報を受信する場合、ワークフローマネージャ(103)は、それぞれの関数名に基づくメディア処理タスクをインスタンス化することができ、接続マップにしたがってメディア処理タスクを接続することができる。
【0040】
あるいは、NBMPソース(101)は、ワークフローマネージャ(103)がワークフローを構築することができる一連のキーワードを用いたワークフローの作成をリクエストすることができる。従って、NBMPソース(101)は、ワークフローに挿入されるべき一連の機能を認識しない場合がある。NBMPソース(101)は、後述のようにワークフローの作成をリクエストできる。NBMPソース(101)は、ワークフローマネージャ(103)が適切な機能を見つけることができる一連のキーワードを使用することができ、適切なワークフロー記述を使用してワークフローの要件を指定することができる。
【0041】
ワークフローマネージャ(103)は、NBMPソース(101)から上記の情報(例えば、キーワードのセット)を受信する場合、ワークフローマネージャ(103)は、例えば、処理記述子で指定されたキーワードを使用して適切な関数をサーチすることによってワークフローを作成することができる。その後、ワークフローマネージャ(103)は、ワークフロー記述内の他の記述子を使用してメディア処理タスクを提供し、メディア処理タスクを接続して最終的なワークフローを作成することができる。
【0042】
ワークフローマネージャ(103)の処理モデルは、以下のように記述できる。
【0043】
ワークフローマネージャ(103)は、使用可能なメディア処理関数を以下のように検出することができる。NBMP関数リポジトリ(105)は、関数検出インタフェース(又はAPI)を提供することができ、外部エンティティが要求された処理を満たすことができるメディア処理関数を問い合わせることを可能にすることができる。ワークフローマネージャ(103)は、メディア処理関数の検索可能なリストを提供するディレクトリサービスにアクセスすることができる。ワークフローマネージャ(103)は、ワークフロー記述内のメディア処理タスクの記述を使用して、ワークフローに適切な関数を見出すことができる。
【0044】
ワークフローのメディア処理タスクの選択は、以下に説明します。NBMPソース(101)からメディア処理のリクエストを受信する場合、ワークフローマネージャ(103)は、関数リポジトリ(105)をサーチして、ワークフローを満たすことができるすべての利用可能な関数のリストを見出すことができる。NBMP Source (101)のワークフロー記述を使用して、ワークフローマネージャ(103)は、関数リポジトリ(105)から関数を見出してワークフローを実装することができ、NBMPソース(101)からのメディア処理のための情報に依存することができる。メディア処理のための情報は、入出力記述、要求された処理の記述、及び関数ディレクトリ(105)の関数の他の記述子の情報を含むことができる。ワークフローに含まれるべき適切なメディア処理タスクへのソースリクエストのマッピングは、ネットワークにおけるNBMPの実装の一部であることができる。タスク生成時に入力ソースを入力ポート名及び出力ポート名で参照及びリンクするには、入力ポート及び出力ポートを使用して入力ストリームを参照することができる。
【0045】
タスクとしてインスタンス化されるべき適切な関数のサーチは、ワークフローマネージャ(103)が関数検出APIを使用して実行できる。あるいは、ワークフローマネージャ(103)は、関数検出APIを使用して、関数リポジトリ(105)内のいくつか又はすべての適切な関数の詳細情報を取り出すことができる。その後、ワークフローマネージャ(103)は、NBMPソース(101)からのメディア処理の情報を、各関数の異なる記述子と比較することができる。
【0046】
選択したメディア処理タスクは、ワークフローで設定できます。ワークフローに含まれるべき関数を識別する場合、NBMPワークフローマネージャ(103)は、それぞれのタスクとして関数をインスタンス化してタスクを構成することができ、したがってワークフローにタスクを追加することができる。NBMPワークフローマネージャ(103)は、NBMPソース(101)から受信したメディア処理情報から構成データを抽出し、対応するタスクを構成することができる。タスクの構成は、タスクAPI(例えばNBMPタスクAPI)を用いて行うことができる。
【0047】
タスク割り当て及び分配は、後述することができる。ワークフローマネージャ(103)は、ワークフローを使用して、処理の展開を実行し、メディア処理エンティティを構成することができる。一実施例として、計算集約的メディア処理リクエストのために、ワークフローマネージャ(103)は、複数の計算インスタンスをセットアップし、複数の計算インスタンス間でワークロードを分散することができる。したがって、ワークフローマネージャ(103)は、必要に応じて複数の計算インスタンスを接続し、構成することができる。例えば、ワークフローマネージャ(103)は、同じタスクを複数のインスタンスに割り当て、選択されたスケジューリングメカニズムを使用して、複数のインスタンス間でワークロードを分散するロードバランサを提供する。代替例では、ワークフローマネージャ(103)は、同じタスクの異なる動作を異なるインスタンス(例えば、並列動作)に割り当てる。上記の両方の例において、ワークフローマネージャ(103)は、インスタンス間のワークフローパスを設定することができ、したがって、適切なワークロードを成功裏に実現することができる。ワークフローマネージャ(103)は、処理されたメディアデータ/ストリームをワークフローグラフ内の次のタスクにプッシュするようにタスクを構成することができる(又はプルメカニズムを介してそれらを利用可能にする)。
【0048】
ワークフローマネージャ(103)は、NBMPソース(101)からWDDを受信する場合、ワークフローマネージャ(103)は、ワークフローに挿入されるべきメディア処理関数の選択を実行できます。ワークフローに含まれるタスクのリストがコンパイルされる場合、ワークフローマネージャ(103)は、ワークフローを準備するタスクを接続することができる。
【0049】
ワークフローマネージャ(103)は、WDDからのグラフ(例:DAG)で表されるように、ワークフローを生成することができる。図2は、本開示の一実施形態によるグラフ(例えば、DAG)(200)の一例を示す。DAG(200)は、複数のノード(T1)~(T6)及び複数のリンク(又は接続)(202)~(208)を含むことができる。例では、DAG(200)はワークフロー(200)を表す。
【0050】
DAG(200)の各ノードは、ワークフロー(200)におけるメディア処理タスクを表すことができる。DAG(200)の第1ノード(例えば、ノード(T1))を第2ノード(例えば、ノード(T2))に接続するリンク(例えば、リンク(202))は、第2ノード(例えば、ノード(T2))への入力として、第1ノード(例えば、ノード(T1))の出力の転送を表すことができる。
【0051】
概して、ワークフローは、任意の適切な数の(1つ以上の)入力(又はワークフロー入力)及び任意の適切な数の(1つ以上の)出力(又はワークフロー出力)を含むことができる。(1つ以上の)ワークフロー入力は、メディアソース(111)、(1つ以上の)他のワークフロー、及び/又は類似のものに接続することができ、(1つ以上の)ワークフロー出力は、メディアシンク(115)、(1つ以上の)他のワークフロー及び/又は類似のものに接続することができる。ワークフロー(200)は、入力(201)及び出力(209)及び(210)を有する。ワークフロー(200)は、いくつかの実施形態において、中間ノードからの1つ以上の出力を有することができる。
【0052】
本開示のいくつかの態様によれば、メディア処理システム(100)などのメディア処理システム内の各エンティティに対して、別々のNBMPエンティティ識別子が使用される。例えば、メディア処理システム(100)は、4つのNBMPエンティティ:ワークフローマネージャ、関数リポジトリ、MPE、及びNBMPソースを含み、したがって、4つのNBMPエンティティ識別子は、それぞれ、ワークフローマネージャ、関数リポジトリ、MPE、及びNBMPソースを示すために使用される。例えば、第1NBMPエンティティ識別子はワークフローマネージャを示し、第2NBMPエンティティ識別子は関数リポジトリを示し、第3NBMPエンティティ識別子はMPEを示し、第4NBMPエンティティ識別子はNBMPソースを示すために用いられる。したがって、NBMPエンティティ識別子は、エンティティの関数得を示すために使用することができる。
【0053】
例えば、エンティティに関連付けられるエンティティ情報が第1NBMPエンティティ識別子を含む場合、エンティティはワークフローマネージャであり、ワークフローマネージャの関数を実行することができ、エンティティに関連付けられるエンティティ情報が第2NBMPエンティティ識別子を含む場合、エンティティは関数リポジトリであり、関数リポジトリの関数を実行することができ、エンティティに関連付けられるエンティティ情報が第3NBMPエンティティ識別子を含む場合、エンティティはMPEであり、MPEの関数を実行することができ、エンティティに関連付けられたエンティティ情報が第4NBMPエンティティ識別子を含む場合、エンティティはNBMPソースであり、NBMPソースの関数を実行することができる。
【0054】
開示の一態様によれば、NBMPエンティティ識別子は、エンティティが遵守するサポート標準を示すことができる。いくつかの実施例において、NBMPエンティティ識別子は、サポート標準のバージョンを示すことができる。一実施例では、エンティティに関連するエンティティ情報が受信され、エンティティ情報は、エンティティが準拠するサポート標準及びサポート標準のバージョンを示すNBMPエンティティ識別子を含む。いくつかの例では、サポート標準のバージョンは、エンティティ情報を解釈するための言語として使用することができる。
【0055】
さらに、いくつかの例では、サポート標準及びサポート標準のバージョンは既知であり、アプリケーションプログラミングインタフェース(API)などのインタフェースを決定することができる。インタフェースは、エンティティとの相互作用に使用できる。
【0056】
いくつかの実施例では、NBMPエンティティ識別子は統一リソース名(URN)スキームに含まれることができる。
【0057】
図3は、本開示のいくつかの実施形態による、URNスキームにおけるNBMPエンティティ識別子の表(300)を示す。図3に示すように、各NBMPエンティティは、NBMPエンティティに関連する別個の識別子(NBMPエンティティ識別子とも称される)を有する。具体的には、ワークフローマネージャの第1NBMPエンティティ識別子は(301)で示され、関数リポジトリの第2NBMPエンティティ識別子は(302)で示され、MPEの第3NBMPエンティティ識別子は(303)で示され、NBMPソースの第4NBMPエンティティ識別子は(304)で示される。
【0058】
図3の例では、NBMPエンティティ識別子(301)~(304)において、「urn:mpeg:mpegi:nbmp」は、サポート標準(仕様)を示すことができ、「2020」は、サポート標準のバージョンを認識することができるサポート標準の年である。
【0059】
本開示の一態様によれば、NBMPエンティティ識別子(301)~(304)は、他の識別子内で使用することができる。例えば、NBMPエンティティ識別子(301)~(304)は、普遍的に一意のURNで使用することができる。URNは、NBMPエンティティ識別子(例えば、(301)-(304)の1つ)及び他の適切な識別子を含むことができることに留意されたい。
【0060】
図4は、本開示の一実施形態によるプロセス(400)の概略を示すフローチャートを示す。一例として、プロセス(400)は、メディア処理システム(100)内の任意のデバイスであるクラウド内のデバイスの処理回路によって実行される。いくつかの実施形態では、プロセス(400)は、ソフトウェア命令で実施され、したがって、処理回路がソフトウェア命令を実行すると、処理回路は、プロセス(400)を実行する。プロセスは(S401)から始まり、(S410)に進む。
【0061】
(S410)において、ネットワークベースのメディア処理(NBMP)のためのクラウド内のエンティティに関連する情報が受信される。一実施例では、エンティティに関連する情報は、エンティティからのアナウンスメントである。別の実施例では、エンティティに関連する情報は、問い合わせに応答するエンティティからの応答である。別の実施例では、エンティティに関連する情報は、エンティティによって送出されるメッセージ内にある。別の実施例では、エンティティに関連する情報は、サービス検出に受信される。
【0062】
(S420)では、情報からNBMPエンティティ識別子が取得される。一実施例では、処理回路は、NBMPエンティティ識別子を取得するために情報をパースする。NBMPエンティティ識別子は、ワークフローマネージャ、関数リポジトリ、MPE、NBMPソースなどのうちの1つを一意に示すように、複数のNBMPエンティティのうちの1つを一意に示す。
【0063】
NBMPエンティティ識別子は、NBMPのためのクラウド内のエンティティの関数を示す。いくつかの実施例において、NBMPエンティティ識別子は、図3の(301)~(304)によって示されるように、統一リソース名(URN)の形式である。いくつかの実施形態では、NBMPエンティティ識別子は、エンティティが準拠するサポート標準を示す。また、NBMPエンティティ識別子は、サポート標準のバージョンを示す。いくつかの実施形態では、NBMPエンティティ識別子は、エンティティと相互作用するためのアプリケーションプログラミングインタフェース(API)を示す。
【0064】
(S430)において、NBMPエンティティ識別子に基づいて、エンティティに関連する情報を解釈する。その後、プロセスは(S499)に進み、終了する。
【0065】
方法(400)は、適切に適合されることができる。プロセス(400)の(1つ以上の)ステップは、変更及び/又は省略することができる。(1つ以上の)追加ステップは、加えられることができる。実施のいかなる適切な順序も、用いられることができる。
【0066】
図5は、本開示の一実施形態によるプロセス(500)の概略を示すフローチャートを示す。一実施例において、プロセス(500)は、クラウド内のエンティティ(メディア処理システム(100)内のエンティティ)の処理回路によって実行される。いくつかの実施形態では、プロセス(500)は、ソフトウェア命令で実施され、したがって、処理回路がソフトウェア命令を実行すると、処理回路は、プロセス(500)を実行する。プロセスは(S501)から始まり、(S510)に進む。
【0067】
(S510)において、NBMPエンティティ識別子は、ネットワークベースのメディア処理のためのクラウド内のエンティティに関連する情報に含まれる。一実施例において、エンティティに関連する情報は、エンティティからのアナウンスメントである。別の実施例では、エンティティに関連する情報は、問い合わせに応答するエンティティからの応答である。別の実施例では、エンティティに関連する情報は、エンティティによって送出されるメッセージ内にある。
【0068】
NBMPエンティティ識別子は、ワークフローマネージャ、関数リポジトリ、MPE、NBMPソースなどのうちの1つを一意に示すように、複数のNBMPエンティティのうちの1つを一意に示す。
【0069】
NBMPエンティティ識別子は、NBMPのためのクラウド内のエンティティの関数を示す。いくつかの実施例において、NBMPエンティティ識別子は、図3の(301)~(304)によって示されるように、統一リソース名(URN)の形式である。いくつかの実施形態では、NBMPエンティティ識別子は、エンティティが準拠するサポート標準を示す。また、NBMPエンティティ識別子は、サポート標準のバージョンを示す。いくつかの実施形態では、NBMPエンティティ識別子は、エンティティと相互作用するためのアプリケーションプログラミングインタフェース(API)を示す。
【0070】
(S520)では、NBMPエンティティ識別子を含む情報を送信する。したがって、情報がクラウド内の他のデバイスによって受信される場合、NBMPエンティティ識別子は情報から取得され、情報の解釈とエンティティとのさらなる相互作用を可能にする。その後、プロセスは(S599)に進み、終了する。
【0071】
方法(500)は、適切に適合されることができる。プロセス(500)の(1つ以上の)ステップは、変更及び/又は省略することができる。(1つ以上の)追加ステップは、加えられることができる。実施のいかなる適切な順序も、用いられることができる。
【0072】
上記の技術は、コンピュータ可読命令を用いたコンピュータソフトウェアとして行うことができて、物理的に一つ以上のコンピュータ可読媒体に格納されることができる。
【0073】
本開示の方法及び実施形態は、別々に、又は任意の順序で組み合わせて使用され得る。さらに、各方法(又は実施形態)、関数、又はタスクは、処理回路(例えば、1つ以上のプロセッサ、又は1つ以上の集積回路)によって実施されてもよい。一実施例では、1つ以上のプロセッサは、非一時的コンピュータ可読媒体に格納されたプログラムを実行する。
【0074】
上記の技術は、コンピュータ可読命令を用いたコンピュータソフトウェアとして行うことができて、物理的に一つ以上のコンピュータ可読媒体に格納されることができる。例えば、図6は、開示された主題の特定の実施形態を実施するのに適しているコンピュータシステム(600)を示す。
【0075】
コンピュータソフトウェアは、アセンブリ、コンパイル、リンク、又は類似のメカニズムの対象となり得る任意の適切な機械コード若しくはコンピュータ言語を使用してコーディングされることができ、直接実行されることができるか、又は、1つ以上のコンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)等による、実施、マイクロコード実行等を介して実行されることができる命令を含むコードを作成する。
【0076】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、物品のインターネット等を含む種々のタイプのコンピュータ又はその構成要素上で実行されることができる。
【0077】
コンピュータシステム(600)のための図6に示されるコンポーネントは、例示的な性質のものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲又は機能性に関する制限を示唆することを意図するものではない。また、コンポーネントの構成は、コンピュータシステム(600)の例示的な実施形態に示されるコンポーネントのいずれか1つ又は組み合わせに関連する依存性又は要件を有すると解釈されるべきではない。
【0078】
コンピュータシステム(600)は、特定のヒューマンインタフェース入力デバイスを含み得る。このようなヒューマンインタフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スイッピング、データグローブの動き)、音声入力(例えば、音声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介して、一人又は複数の人間ユーザによる入力に応答し得る。また、ヒューマンインタフェースデバイスは、オーディオ(例えば、音声、音楽、周囲の音声)、画像(例えば、走査画像、静止画像カメラから得られる写真画像)、ビデオ(例えば、2次元ビデオ、立体画像を含む3次元ビデオ)等の、人間による意識的入力に必ずしも直接関係しない特定の媒体を捕捉するために用いられ得る。
【0079】
入力ヒューマンインタフェースデバイスには、次のものが1つ以上含まれ得る(それぞれ1つのみ表されている):キーボード(601)、マウス(602)、トラックパッド(603)、タッチスクリーン(610)、データグローブ(図示せず)、ジョイスティック(605)、マイクロホン(606)、スキャナ(607)、カメラ(608)。
【0080】
コンピュータシステム(600)はまた、特定のヒューマンインタフェース出力デバイスを含み得る。かかるヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光、及び嗅覚/味覚を通して、1人又は複数の人間ユーザの感覚を刺激し得る。かかるヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(610)、データグローブ(図示せず)、又はジョイスティック(605)による触覚フィードバックであることができるが、入力デバイスとして働かない触覚フィードバックデバイスであることもできる)と、オーディオ出力デバイス(例えば、スピーカー(609)、ヘッドフォン(図示せず))と、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(610)であり、各々が触覚フィードバック能力を有するか又は有さず、各々が触覚フィードバック能力を有するか又は有さず、そのうちのいくつかは、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)等の立体出力のような手段を介して2次元視出力又は3次元以上の出力を可能にし得るもの)と、プリンタ(図示せず)と、を含み得る。
【0081】
コンピュータシステム(600)はまた、人間がアクセス可能な記憶デバイスと、それらのアクセス可能な媒体とを含むことができ、媒体は、例えば、CD/DVD等の媒体(621)によるCD/DVD ROM/RWを含む光学媒体ドライブ(620)、USBメモリ(622)、着脱可能ヘッドドライブ又はソリッドステートドライブ(623)、テープ、フロッピーディスク(図示せず)等の従来の磁気媒体、セキュリティドングル等の特殊化されたROM/ASIC/PLDベースデバイス等である。
【0082】
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語は、伝送媒体、搬送波、又は他の一時的な信号を包含しないことを理解されたい。
【0083】
コンピュータシステム(600)はまた、1つ以上の通信ネットワーク(655)へのインタフェース(654)を含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークは、さらに、ローカル、広域、大都市、車両及び工業、リアルタイム、遅延耐性等であり得る。ネットワークの例としては、イーサネット、無線LAN、GSM、3G、4G、5G、LTE等を含むセルラーネットワーク、ケーブルTV、衛星TV、及び地上放送TV、CANBusを含む産業用及び車両用を含む。特定のネットワークは、一般に、特定の汎用データポート又はペリフェラルバス(649)(たとえば、コンピュータシステム(600)のUSBポート)に接続された外部ネットワークインタフェースアダプタを必要とする;他には、一般に、以下に説明するようにシステムバス(たとえば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインタフェース)に接続することによってコンピュータシステム(600)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(600)は、他のエンティティと通信することができる。かかる通信は、単指向性通信、受信のみ(例えば、放送テレビ)通信、単指向性送信専用(例えば、特定のCANバスデバイスへのCANバス)通信、又は、例えばローカル又は広域デジタルネットワークを使用する他のコンピュータシステムへの、双方向通信であることができる。特定のプロトコル及びプロトコルスタックは、上述のように、それらのネットワーク及びネットワークインタフェースの各々で使用されることができる。
【0084】
前述のヒューマンインタフェースデバイス、人間がアクセス可能な記憶デバイス、及びネットワークインタフェースは、コンピュータシステム(600)のコア(640)に接続されることができる。
【0085】
コア(640)は、1つ以上の中央処理デバイス(CPU)(641)、グラフィック処理デバイス(GPU)(642)、フィールドプログラマブルゲートエリア(FPGA)(643)の形態の特殊なプログラマブル処理デバイス、特定のタスクのためのハードウェアアクセラレータ(644)、グラフィックアダプタ(650)等を含むことができる。これらのデバイスは、読出し専用メモリ(ROM) (645)、ランダムアクセスメモリ(646)、内部大容量記憶デバイス、例えば内部非ユーザアクセス可能ハードドライブ、SSD等(647)と共に、システムバス(648)を介して接続され得る。いくつかのコンピュータシステムでは、システムバス(648)は、追加のCPU、GPU等による拡張を可能にするために、1つ又は複数の物理プラグの形態でアクセス可能である。周辺デバイスは、コアのシステムバス(648)に直接接続するか、又は周辺バス(649)を介して接続することができる。実施例において、スクリーン(610)は、グラフィックアダプタ(650)に接続されることができる。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0086】
CPU(641)、GPU(642)、FPGA(643)、及びアクセラレータ(644)は、組み合わされて、上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(645)又はRAM(646)に格納されることができる。移行データは、RAM(646)に格納されることもできるが、永久データは例えば内部大容量記憶デバイス(647)に格納されことができる。1つ以上のCPU(641)、GPU(642)、大容量記憶デバイス(647)、ROM(645)、RAM(646)等と密接に関連付けることができるキャッシュメモリを使用することによって、メモリデバイスのいずれかへの高速記憶及び検索を可能にすることができる。
【0087】
コンピュータ可読媒体は、各種のコンピュータ実施動作(computer-implemented operations)を実行するためにその上のコンピュータコードを有することができる。メディア及びコンピュータコードは特別に設計されたそれらであることができて、本開示のために作成されることができる、又は、それらはよく公知で、コンピュータソフトウェア技術の技術を有するそれらが利用できる種類でありえる。
【0088】
一実施例として、限定するものではなく、図6に示すアーキテクチャ(600)、具体的にはコア(640)を有するコンピュータシステムは、1つ以上の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行する(1つ以上の)プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として機能性を提供することができる。かかるコンピュータ可読媒体は、コア-内部大容量記憶デバイス(647)又はROM(645)等の一時的でない性質のコア(640)の特定の記憶デバイスと同様に、上述のようにユーザがアクセス可能な大容量記憶デバイスに関連する媒体であってもよい。本開示の様々な実施形態を実装するソフトウェアは、かかるデバイスに記憶され、コア(640)によって実行され得る。コンピュータ読取可能媒体は、特定のニーズに応じて、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(640)及びその中の具体的にプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(646)に記憶されたデータ構造を定義し、ソフトウェアによって定義されたプロセスにしたがって、かかるデータ構造を変更することを含む、本明細書に記載された特定のプロセス又は特定の部分を実行させることができる。付加的に又は代替的に、コンピュータシステムは、回路(例えば、アクセラレータ(644))内に配線された、又は他の方法で具現化されたロジックの結果として、機能性を提供することができ、これは、本明細書に記載される特定のプロセス又は特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに、又はソフトウェアと共に動作することができる。ソフトウェアへの言及は、論理を含み、また、必要に応じて、その逆も可能である。コンピュータ読取り可能媒体への参照は、実行のためのソフトウェアを記憶する(集積回路(IC)等の)回路、実行のためのロジックを具体化する回路、又は適切な場合にはその両方を含むことができる。本開示は、ハードウェア及びソフトウェアの任意の適切な組み合わせを包含する。
【0089】
本開示はいくつかの例示的な実施形態を説明しているが、本発明の範囲内に入る、変更、置換、及び様々な均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は記載されていないが、本発明の原理を実施し、したがってその概念及び範囲内にある多数のシステム及び方法を創造することができることが理解されよう。
図1
図2
図3
図4
図5
図6