(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-21
(54)【発明の名称】クラウドプラットフォーム上のワークフローにおける非必須の入力、出力、およびタスクシグナリング
(51)【国際特許分類】
G06F 9/50 20060101AFI20221214BHJP
【FI】
G06F9/50 150C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022523175
(86)(22)【出願日】2021-06-22
(85)【翻訳文提出日】2022-04-18
(86)【国際出願番号】 US2021038472
(87)【国際公開番号】W WO2021262713
(87)【国際公開日】2021-12-30
(32)【優先日】2020-06-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-06-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ソダガァ,イラジ
(57)【要約】
NBMP(Network Based Media Processing)ワークフローを管理するためのシステム及び方法が提供される。少なくとも1つのプロセッサによって実行される方法を含む方法が提供される。本方法は、NBMPワークフローを導出することと、NBMPワークフローに含まれる少なくとも1つのタスク、少なくとも1つのタスクによって受信される少なくとも1つの入力、または少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得することと、少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定すること、複数の必須タスクを、NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てることと、を含む。
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサによって実行される方法であって、
ネットワークベースのメディア処理(NBMP)ワークフローを導出するステップと、
NBMPワークフローに含まれる少なくとも1つのタスク、少なくとも1つのタスクによって受信される少なくとも1つの入力、または少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得するステップと、
前記少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定するステップと、
前記複数の必須タスクを、前記NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てるステップと、を含む、方法。
【請求項2】
前記少なくとも1つの第1の構文要素は、前記少なくとも1つのタスクの一般的記述子に含まれる第1のフラグを含み、
前記第1のフラグは、前記少なくとも1つのタスクが非必須であることを示す、請求項1に記載の方法。
【請求項3】
前記複数の必須タスクは、前記第1のフラグに基づいて判定される、請求項2に記載の方法。
【請求項4】
前記少なくとも1つの第1の構文要素は、前記少なくとも1つの出力の出力記述子に含まれる第1のパラメータを含み、
前記第1のパラメータは、前記少なくとも1つの出力が非必須であることを示す、請求項1に記載の方法。
【請求項5】
前記複数の必須タスクは、前記第1のパラメータに基づいて判定される、請求項4に記載の方法。
【請求項6】
前記NBMPワークフローに関連する少なくとも1つのメディアセグメントの並列処理情報を示す少なくとも1つの第2の構文要素を含むステップ記述子を取得するステップとと、
前記並列処理情報に基づいて前記複数の必須タスクを割り当てるステップとと、をさらに含む、請求項1に記載の方法。
【請求項7】
前記少なくとも1つの第2の構文要素は、メディアセグメントの持続時間が変動し得ることを示す第2のフラグと、前記持続時間の最大継続時間を示す第2のパラメータと、を含む、請求項6に記載の方法。
【請求項8】
前記少なくとも1つの第2の構文要素は、前記少なくとも1つのメディアセグメントの時間的重複、前記少なくとも1つのメディアセグメントの次元の数、前記少なくとも1つのメディアセグメントの次元の記述、又は前記少なくとも1つのメディアセグメントの次元の重複のうちの少なくとも1つを示す第3のパラメータを含む、請求項6に記載の方法。
【請求項9】
前記NBMPワークフローに含まれる機能のインスタンスに対応する機能制限リストを取得するステップをさらに含み、
前記機能制限リストは、前記NBMPワークフローに対応するワークフロー記述文書において前記機能の前記インスタンスに対して除外される記述子を指定するブラックリスト配列を含む、請求項1に記載の方法。
【請求項10】
前記機能制限リストは第1の機能制限リストであり、前記機能の前記インスタンスは前記機能の第1のインスタンスであり、
前記機能の第2のインスタンスに対応する第2の機能制限リストは、ブラックリスト配列を含まない、請求項9に記載の方法。
【請求項11】
メディアシステムのワークフローマネージャであって、
少なくとも1つのプロセッサと、
コンピュータコードを含むメモリと、を含み、前記コンピュータコードは、
前記少なくとも1つのプロセッサに、ネットワークベースのメディア処理(NBMP)ワークフローを導出させるように構成されているワークフロー導出コードと、
前記少なくとも1つのプロセッサに、前記NBMPワークフローに含まれる少なくとも1つのタスク、前記少なくとも1つのタスクによって受信される少なくとも1つの入力、または前記少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得させるように構成されている第1の取得コードと、
前記少なくとも1つのプロセッサに、前記少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定させるように構成されている判定コードと、
前記少なくとも1つのプロセッサに、前記複数の必須タスクを、前記NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てさせるように構成されている割り当てコードと、を含む、ワークフローマネージャ。
【請求項12】
前記少なくとも1つの第1の構文要素は、前記少なくとも1つのタスクの一般的記述子に含まれる第1のフラグを含み、
前記第1のフラグは、前記少なくとも1つのタスクが非必須であることを示す、請求項11に記載のワークフローマネージャ。
【請求項13】
前記判定コードは、前記少なくとも1つのプロセッサに、前記第1のフラグに基づいて前記複数の必須タスクを判定させるようにさらに構成されている、請求項12に記載のワークフローマネージャ。
【請求項14】
前記少なくとも1つの第1の構文要素は、前記少なくとも1つの出力の出力記述子に含まれる第1のパラメータを含み、
前記第1のパラメータは、前記少なくとも1つの出力が非必須であることを示す、請求項11に記載のワークフローマネージャ。
【請求項15】
前記判定コードは、前記少なくとも1つのプロセッサに、前記第1のパラメータに基づいて前記複数の必須タスクを判定させるようにさらに構成されている、請求項14に記載のワークフローマネージャ。
【請求項16】
前記コンピュータコードは、前記少なくとも1つのプロセッサに、前記NBMPワークフローに関連する少なくとも1つのメディアセグメントの並列処理情報を示す少なくとも1つの第2の構文要素を含むステップ記述子を取得させるように構成されている第2の取得コードをさらに含み、
前記判定コードは、前記少なくとも1つのプロセッサに、前記並列処理情報に基づいて前記複数の必須タスクを割り当てさせるようにさらに構成されている、請求項11に記載のワークフローマネージャ。
【請求項17】
前記少なくとも1つの第2の構文要素は、メディアセグメントの持続時間が変動し得ることを示す第2のフラグと、前記持続時間の最大継続時間を示す第2のパラメータと、を含む、請求項16に記載のワークフローマネージャ。
【請求項18】
前記少なくとも1つの第2の構文要素は、前記少なくとも1つのメディアセグメントの時間的重複、前記少なくとも1つのメディアセグメントの次元の数、前記少なくとも1つのメディアセグメントの次元の記述、又は前記少なくとも1つのメディアセグメントの次元の重複のうちの少なくとも1つを示す第3のパラメータを含む、請求項16に記載のワークフローマネージャ。
【請求項19】
前記コンピュータコードは、前記少なくとも1つのプロセッサに、前記NBMPワークフローに含まれる機能の第1のインスタンスに対応する第1の機能制限リストを取得させるように構成されている第3の取得コードをさらに含み、
前記第1の機能制限リストは、前記NBMPワークフローに対応するワークフロー記述文書において前記機能の前記第1のインスタンスに対して除外される記述子を指定するブラックリスト配列を含み、
前記機能の第2のインスタンスに対応する第2の機能制限リストは、前記ブラックリスト配列を含まない、請求項11に記載のワークフローマネージャ。
【請求項20】
コンピュータコードであって、前記コンピュータコードは、メディアシステムのワークフローマネージャを実装する少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、
ネットワークベースのメディア処理(NBMP)ワークフローを導出するステップと、
前記NBMPワークフローに含まれる少なくとも1つのタスク、前記少なくとも1つのタスクによって受信される少なくとも1つの入力、または前記少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得するステップと、
前記少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定するステップと、
前記複数の必須タスクを、前記NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てるステップと、を行わせるように構成されている、コンピュータコード。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年6月22日に出願された米国仮出願第63/042,480号、2020年10月5日に出願された米国仮出願第63/087,746号、2020年10月5日に出願された米国仮出願第63/087,748号、2020年10月5日に出願された米国仮出願第63/087,751号、および2021年6月21日に出願された米国仮出願第17/352,616号からの優先権を主張し、これらの開示の全体が参照により本明細書に組み込まれる。
【0002】
本開示の実施形態は、MPEG(Moving Picture Experts Group)NBMP(Network Based Media Processing、ネットワークベースのメディア処理)を対象にし、より詳細には、NBMPワークフローの管理を対象にする。
【背景技術】
【0003】
MPEG NBMP(Network Based Media Processing)プロジェクトは、クラウド上のメディアを処理する概念を開発した。NBMP Draft International Specificationは、メディア処理効率の向上、より高速でより低いコストのメディアサービスの展開、公共、プライベート又はハイブリッド型クラウドサービスの活用による大規模展開を提供する能力の大きな可能性を示す。
【0004】
ただし、現在のNBMP仕様では、ワークフローに必須であるタスクと非必須であるタスクとを区別していない。
【0005】
さらに、同じ持続時間のセグメントを有するメディアストリームの分割は、多くの用途に有用であるが、いくつかの用途においては、セグメントの持続時間は、異なる理由により変動することがある。したがって、固定された持続時間のセグメントは、これらの場合において動作しない。
【0006】
追加的に、NBMP規格は、互いに独立した、または並列の時間的セグメントにおいてメディアを処理するのためのステップ記述子を定義する。時間におけるメディアストリームの分割は、並列処理の第一のレベルであるが、大きなビデオデータまたはボリュームデータの場合、他の次元におけるセグメント化が、メディアデータのさらなる並列化または独立処理をさらに提供することができ、データを処理するためにより多くの並列タスク/マイクロサービスを使用することを可能にする。このような多次元並列処理は、NBMP規格では十分に対処されていない。
【0007】
追加的に、NBMP規格は、必要な処理を定義するためにWorkflow Descriptionを定義している。しかし、機能インスタンスのいくつかの除外は、現在の設計では不可能である。NBMPワークフロー記述は、ワークフローを実行するための詳細な要件を提供するが、ワークフロー全体に適用される記述からいくつかの機能インスタンスを除外することを可能にしていない。
【発明の概要】
【0008】
NBMP Draft International Specificationは、メディア処理効率を向上させ、より高速でより低いコストのメディアサービスの展開の提供し、公共、プライベート又はハイブリッド型クラウドサービスの活用による大規模展開を提供する能力を有する大きな可能性を示す。
【0009】
本開示の実施形態は、NBMP規格における様々な変更を実装するためのメカニズムを提供する。
【0010】
実施形態において、非必須の入力、出力、およびタスクを識別し、タスクの必須性から入力および出力の必須性を導出するためのシグナリングメカニズムが提供される。
【0011】
実施形態において、クラウド内で異なる持続時間またはサイズを有し得るメディアセグメントの独立処理のための方法が提供され、これは、可変持続時間/次元を有するセグメントの独立処理をサポートするためにNBMP規格を拡張することを伴うことがある。
【0012】
実施形態において、多次元セグメントを定義するために、NBMP規格のステップ記述子の拡張が提供される。
【0013】
実施形態において、ワークフロー全体に適用される記述からいくつかの機能インスタンスを除外するための方法が提供される。
【0014】
1つ以上の実施形態によれば、少なくとも1つのプロセッサによって実行される方法が提供される。本方法は、ネットワークベースのメディア処理(NBMP)ワークフローを導出することと、NBMPワークフローに含まれる少なくとも1つのタスク、少なくとも1つのタスクによって受信される少なくとも1つの入力、または少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得することと、少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定すること、複数の必須タスクを、NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てることと、を含む。
【0015】
1つ以上の実施形態によれば、メディアシステムのワークフローマネージャが提供される。ワークフローマネージャは、少なくとも1つのプロセッサ、およびコンピュータコードを含むメモリを含む。コンピュータコードは、少なくとも1つのプロセッサに、ネットワークベースのメディア処理(NBMP)ワークフローを導出させるように構成されているワークフロー導出コードと、少なくとも1つのプロセッサに、NBMPワークフローに含まれる少なくとも1つのタスク、少なくとも1つのタスクによって受信される少なくとも1つの入力、または少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得させるように構成されている第1の取得コードと、少なくとも1つのプロセッサに、少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定させるように構成されている判定コードと、少なくとも1つのプロセッサに、複数の必須タスクを、NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てさせるように構成されている割り当てコードと、を含む。
【0016】
1つ以上の実施形態によれば、コンピュータコードを記憶する非一時的コンピュータ可読媒体が提供される。コンピュータコードは、メディアシステムのワークフローマネージャを実装する少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、ネットワークベースのメディア処理(NBMP)ワークフローを導出することと、NBMPワークフローに含まれる少なくとも1つのタスク、少なくとも1つのタスクによって受信される少なくとも1つの入力、または少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得することと、少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定すること、複数の必須タスクを、NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てることと、を行わせるように構成されている。
【図面の簡単な説明】
【0017】
開示された主題のさらなる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう。
【0018】
【
図1】実施形態による、本明細書で説明される方法、装置、およびシステムが実装され得る環境の図である。
【0019】
【
図2】
図1の1つ以上のデバイスの例示的なコンポーネントのブロック図である。
【0020】
【
図3】実施形態による、NBMPシステムのブロック図である。
【0021】
【
図4】実施形態による、必須のタスクおよび非必須のタスクを有するワークフローの一例の図である。
【
図5】
図4のワークフロー内の1つの必須のパスを示す図である。
【0022】
【
図6】実施形態による、ワークフローにおける必須のタスクを識別するためのプロセスの図である。
【0023】
【
図7】実施形態による、異なる持続時間またはサイズを有し得るメディアセグメントの独立処理のためのプロセスの図である。
【0024】
【
図8】実施形態による、ワークフロー管理プロセスの一例のブロック図である。
【0025】
【
図9】実施形態による、コンピュータコードの一例のブロック図である。
【発明を実施するための形態】
【0026】
図1は、実施形態による、本明細書で説明される方法、装置、およびシステムが実装され得る環境100の図である。
図1に示すように、環境100は、ユーザデバイス110、プラットフォーム120、およびネットワーク130を含み得る。環境100のデバイスは、有線接続、無線接続、または有線および無線接続の組み合わせを介して相互接続し得る。
【0027】
ユーザデバイス110は、プラットフォーム120に関連する情報を受信、生成、記憶、処理、および/または提供することが可能な1つ以上のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話等)、ウェアラブルデバイス(例えば、一対のスマートグラス若しくはスマートウオッチ)、又は類似のデバイスを含み得る。いくつかの実装において、ユーザデバイス110は、プラットフォーム120から情報を受信し、および/またはプラットフォーム120に情報を送信し得る。
【0028】
プラットフォーム120は、本明細書の他の箇所で説明されるように、1つ以上のデバイスを含む。いくつかの実装において、プラットフォーム120は、クラウドサーバまたはクラウドサーバのグループを含み得る。いくつかの実装において、プラットフォーム120は、ソフトウェアコンポーネントが特定のニーズに応じてスワップイン又はスワップアウトされるように、モジュール化されるように設計されてもよい。そのようなものとして、プラットフォーム120は、異なる使用のために容易に及び/又は迅速に再構成され得る。
【0029】
いくつかの実装において、図示のように、プラットフォーム120は、クラウドコンピューティング環境122においてホストされ得る。特に、本明細書で説明される実装は、プラットフォーム120をクラウドコンピューティング環境122内でホストされるものとして説明するが、いくつかの実装において、プラットフォーム120は、クラウドベースではなくてもよいし(すなわち、クラウドコンピューティング環境の外部で実装されてもよい)、部分的にクラウドベースであってもよい。
【0030】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含む。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステムおよび/またはデバイスの物理的な位置および設定のエンドユーザ(例えば、ユーザデバイス100)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供し得る。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(まとめて「コンピューティングリソース124」と呼ぶか、個々に「コンピューティングリソース124」と呼ぶ)を含み得る。
【0031】
コンピューティングリソース124は、1つ以上のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、または他のタイプの計算および/または通信デバイスを含む。いくつかの実装において、コンピューティングリソース124はプラットフォーム120をホストし得る。クラウドリソースは、コンピューティングリソース124において実行する計算インスタンス、計算リソース124において提供されるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含み得る。いくつかの実装において、コンピューティングリソース124は、有線接続、無線接続、または有線および無線接続の組み合わせを介して、他のコンピューティングリソース124と通信し得る。
【0032】
図1にさらに示すように、計算リソース124は、1つ以上のアプリケーション(「APP」)124-1、1つ以上の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つ以上のハイパーバイザ(「HYP」)124-4などのクラウドリソースのグループを含む。
【0033】
アプリケーション124-1は、ユーザデバイス110および/またはプラットフォーム120に提供されるか、またはこれらによってアクセスされ得る1つ以上のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールして実行する必要を除去し得る。例えば、アプリケーション124-1は、プラットフォーム120に関連するソフトウェア、および/またはクラウドコンピューティング環境122を介して提供可能な他の任意のソフトウェアを含み得る。いくつかの実装において、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つ以上の他のアプリケーション124-1に情報を送信する/これらから情報を受信し得る。
【0034】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2によるあらゆる実マシンへの使用および対応の程度に応じて、システム仮想マシンまたはプロセス仮想マシンのいずれであり得る。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供し得る。プロセス仮想マシンは、単一のプログラムを実行し、単一のプロセスをサポートし得る。いくつかの実装において、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)に代わって実行し得、データ管理、同期、または長い持続時間のデータ転送などのクラウドコンピューティング環境122のインフラストラクチャを管理し得る。
【0035】
仮想化ストレージ124-3は、コンピューティングリソース124の記憶システムまたはデバイス内で仮想化技術を使用する1つ以上のストレージシステムおよび/または1つ以上のデバイスを含む。いくつかの実装において、ストレージシステムの文脈内で、仮想化のタイプは、ブロック仮想化およびファイル仮想化を含み得る。ブロック仮想化は、物理ストレージまたは異種構造に関係なくストレージシステムにアクセスできるように、物理ストレージからの論理ストレージの抽象化(または分離)を指してもよい。この分離により、ストレージシステムの管理者は、エンドユーザに対するストレージを管理する方法に柔軟性を持たせることが可能となる。ファイル仮想化は、ファイルレベルでアクセスされるデータと、ファイルが物理的に記憶される場所との間の依存関係を排除し得る。これにより、ストレージの使用、サーバの統合、および/または継続的なファイル移行のパフォーマンスの最適化を可能にし得る。
【0036】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)が、コンピュータリソース124などのホストコンピュータで同時に実行することを可能にするハードウェア仮想化技術を提供し得る。ハイパーバイザ124-4は、ゲストオペレーティングシステムに対して仮想オペレーティングプラットフォームを提示し得、ゲストオペレーティングシステムの実行を管理し得る。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共有してもよい。
【0037】
ネットワーク130は、1つ以上の有線および/または無線ネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公衆陸上移動体網(PLMN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話網(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、および/またはこれらまたは他のタイプのネットワークの組み合わせを含み得る。
【0038】
図1に示すデバイスおよびネットワークの数および配置は、一例として提供される。実際には、
図1に示されたものよりも、追加のデバイスおよび/またはネットワーク、より少ないデバイスおよび/またはネットワーク、異なるデバイスおよび/またはネットワーク、または異なる配置のデバイスおよび/またはネットワークがあってもよい。さらに、
図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてもよいし、
図1に示す単一のデバイスは、複数の分散されたデバイスとして実装されてもよい。追加的または代替的に、環境100のデバイスのセット(例えば、1つ以上のデバイス)は、環境100の別のデバイスのセットによって実行されるものとして説明される1つ以上の機能を実行してもよい。
【0039】
図2は、
図1の1つ以上のデバイスの例示的なコンポーネントのブロック図である。デバイス200は、ユーザデバイス110および/またはプラットフォーム120に対応してもよい。
図2に示すように、デバイス200は、バス210、プロセッサ220、メモリ230、ストレージコンポーネント240、入力コンポーネント250、出力コンポーネント260、および通信インターフェース270を含み得る。
【0040】
バス210は、デバイス200のコンポーネント間の通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組み合わせで実装される。プロセッサ220は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、加速処理ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または別のタイプの処理コンポーネントである。いくつかの実装において、プロセッサ220は、機能を実行するようにプログラムされることが可能な1つ以上のプロセッサを含む。メモリ230は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、および/または、プロセッサ220による使用のための情報および/または命令を記憶する別のタイプのダイナミックまたはスタティックストレージデバイス(例えば、フラッシュメモリ、磁気メモリ、および/または、光メモリ)を含む。
【0041】
ストレージコンポーネント240は、デバイス200の動作および使用に関する情報および/またはソフトウェアを記憶する。例えば、記憶コンポーネント240は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/またはソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、および/または他のタイプの非一時的コンピュータ可読媒体を、対応するドライブと共に含み得る。
【0042】
入力コンポーネント250は、デバイス200がユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロホン)を介して情報を受信することを可能にするコンポーネントを含む。追加的又は代替的に、入力コンポーネント250は、情報(例えば、全地球測位システム(GPS)コンポーネント、加速度計、ジャイロスコープ、および/またはアクチュエータ)を感知するためのセンサを含み得る。出力コンポーネント260は、デバイス200からの出力情報を提供するコンポーネント(例えば、ディスプレイ、スピーカ、および/または1つ以上の発光ダイオード(LED))を含む。
【0043】
通信インターフェース270は、デバイス200が有線接続、無線接続、または有線および無線接続の組み合わせを介して他のデバイスと通信することを可能にするトランシーバ状のコンポーネント(例えば、トランシーバおよび/または別個の受信機および送信機)を含む。通信インターフェース270は、デバイス200が別のデバイスから情報を受信し、および/または別のデバイスに情報を提供することを可能にしてもよい。例えば、通信インターフェース270は、Ethernet(登録商標)インターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数(RF)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、Wi-Fi(登録商標)インターフェース、セルラーネットワークインターフェースなどを含み得る。
【0044】
デバイス200は、本明細書で説明される1つ以上のプロセスを実行してもよい。デバイス200は、メモリ230および/またはストレージコンポーネント240などの非一時的コンピュータ可読媒体によって記憶されたソフトウェア命令をプロセッサが実行することに応答して、これらのプロセスを実行してもよい。コンピュータ可読媒体は、本明細書において、非一時的メモリデバイスとして定義される。メモリデバイスは、単一の物理ストレージデバイス内のメモリスペース、または複数の物理ストレージデバイスに拡散したメモリスペースを含む。
【0045】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェース270を介して別のデバイスから、メモリ230および/またはストレージコンポーネント240に読まれ得る。実行されるときに、メモリ230および/またはストレージコンポーネント240に記憶されたソフトウェア命令は、プロセッサ220に本明細書で説明される1つ以上のプロセスを実行させ得る。追加的または代替的に、ハードワイヤード回路を、本明細書で説明される1つ以上のプロセスを実行するために、ソフトウェア命令の代わりに、またはそれと組み合わせて使用してもよい。したがって、本明細書で説明される実施形態は、ハードウェア回路とソフトウェアのいかなる特定の組み合わせにも限定されない。
【0046】
図2に示すコンポーネントの数および配置が、一例として提供される。実際には、デバイス200は、
図2に示されるものよりも追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、または異なる配置のコンポーネントを含み得る。追加的または代替的に、デバイス200のコンポーネントのセット(例えば、1つ以上のコンポーネント)は、デバイス200の別のコンポーネントのセットによって実行されるものとして説明される1つ以上の機能を実行してもよい。
【0047】
本開示の一実施形態において、NBMPシステム300が提供される。
図3を参照すると、NBMPシステム300は、NBMPソース310、NBMPワークフローマネージャ320、機能リポジトリ330、1つ以上のメディア処理エンティティ350、メディアソース360、およびメディアシンク370を含む。
【0048】
NBMPソース310は、第三者エンティティからの命令を受信してもよく、NBMPワークフローAPI392を介してNBMPワークフローマネージャ320と通信してもよく、機能ディスカバリAPI391を介して機能リポジトリ330と通信してもよい。例えば、NBMPソース310は、ワークフロー記述文書(WDD)をNBMPワークフローマネージャ320に送信してもよく、機能リポジトリ330に記憶された機能の機能記述を読んでもよく、その機能は、機能リポジトリ330のメモリに記憶されたメディア処理機能、例えば、メディア復号、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンド、後処理、および符号化の機能などである。NBMPソース310は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPソース310の機能を実行させるように構成されているコードを記憶するメモリとを含むか、またはそれらによって実装されてもよい。
【0049】
NBMPソース310は、ワークフロー記述文書を送信することによって、1つ以上のメディア処理エンティティ350によって実行されるタスク352を含むワークフローを作成するようNBMPワークフローマネージャ320に要求してもよく、このワークフロー記述文書は、複数の記述子を含むことができ、各記述子は、複数のパラメータを有してもよい。
【0050】
例えば、NBMPソース310は、機能リポジトリ330に記憶された機能を選択し、入力および出力データ、必要な機能、およびワークフローの要件などの記述詳細のための様々な記述子を含むワークフロー記述文書をNBMPワークフローマネージャ320に送信してもよい。ワークフロー記述文書は、1つ以上のメディア処理エンティティ350によって実行されるタスク352のタスク記述のセットと、入力および出力の接続マップと、を含み得る。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信するときに、NBMPワークフローマネージャ320は、機能名に基づいてタスクをインスタンス化し、接続マップに従ってタスクを接続することによってワークフローを作成してもよい。
【0051】
代替的または追加的に、NBMPソース310は、キーワードのセットを使用することによって、ワークフローを作成するようにNBMPワークフローマネージャ320に要求してもよい。例えば、NBMPソース310は、NBMPワークフローマネージャ320に、NBMPワークフローマネージャ320が機能リポジトリ330に記憶された適切な機能を見つけるために使用し得るキーワードのセットを含み得るワークフロー記述文書を送信してもよい。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信するときに、NBMPワークフローマネージャ320は、ワークフロー記述文書の処理記述子に指定され得るキーワードを使用して適切な機能を検索することによってワークフローを作成し、ワークフロー記述文書内の他の記述子を使用して、タスクを提供し、それらを接続してワークフローを作成してもよい。
【0052】
NBMPワークフローマネージャ320は、機能ディスカバリAPI391と同じまたは異なるAPIであり得る機能ディスカバリAPI393を介して機能リポジトリ330と通信してもよいし、API394(例えば、NBMPタスクAPI)を介してメディア処理エンティティ350の1つ以上と通信してもよい。NBMPワークフローマネージャ320は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPワークフローマネージャ320の機能を実行させるように構成されているコードを記憶するメモリとを含むか、またはそれらによって実装されてもよい。
【0053】
NBMPワークフローマネージャ320は、API394を使用して、1つ以上のメディア処理エンティティ350によって実行可能なワークフローの1つ以上のタスク352をセットアップ、設定、管理、および監視してもよい。一実施形態において、NBMPワークフローマネージャ320は、API394を使用してタスク352を更新および破棄してもよい。ワークフローのタスク352を設定、管理、および監視するために、NBMPワークフローマネージャ320は、リクエストなどのメッセージを1つ以上のメディア処理エンティティ350に送信してもよく、各メッセージは複数の記述子を有し、記述子の各々は複数のパラメータを有してもよい。タスク352は各々、メディア処理機能354およびメディア処理機能354のための設定353を含み得る。
【0054】
一実施形態では、タスクのリストを含まない(例えば、タスクのリストの代わりにキーワードのリストを含む)NBMPソース310からワークフロー記述文書を受信した後、NBMPワークフローマネージャ320は、ワークフロー記述文書内のタスクの記述に基づいてタスクを選択し、機能ディスカバリAPI393を介して、機能リポジトリ330を検索して、現在のワークフローのタスク352として実行されるべき適切な機能を見つけてもよい。例えば、NBMPワークフローマネージャ320は、ワークフロー記述文書において提供されるキーワードに基づいてタスクを選択してもよい。適切な機能が、NBMPソース310によって提供されるキーワードまたはタスク記述のセットを使用して識別された後、NBMPワークフローマネージャ320は、API 394を使用して、ワークフロー内の選択されたタスクを設定してもよい。例えば、NBMPワークフローマネージャ320は、NBMPソースから受信した情報から設定データを抽出し、設定データに基づいてタスク352を設定してもよい。
【0055】
1つ以上のメディア処理エンティティ350は、メディアソース360からメディアコンテンツを受信し、NBMPワークフローマネージャ320によって作成されたタスク352を含むワークフローに従ってメディアコンテンツを処理し、処理されたメディアコンテンツをメディアシンク370に出力するように構成され得る。1つ以上のメディア処理エンティティ350は、少なくとも1つのプロセッサと、少なくともプロセッサにメディア処理エンティティ350の機能を実行させるように構成されているコードを記憶するメモリとを含むか、またはそれらによって実装されてもよい。
【0056】
メディアソース360は、メディアを記憶するメモリを含んでもよいし、NBMPソース310と一体化されているか、またはNBMPソース310から分離されていてもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知することができ、メディアソース360は、ワークフローが準備されたという通知に基づいて、メディア処理エンティティ350のうちの1つ以上にメディアコンテンツを送信してもよい。
【0057】
メディアシンク370は、少なくとも1つのプロセッサと、1つ以上のメディア処理エンティティ350によって処理されるメディアを表示するように構成されている少なくとも1つのディスプレイとを含むか、またはそれらによって実装されてもよい。
【0058】
上記に論じたように、NBMPソース310からNBMPワークフローマネージャ320へのメッセージ(例えば、ワークフローの作成を要求するためのワークフロー記述文書)、およびNBMPワークフローマネージャ320から1つ以上のメディア処理エンティティ350へのメッセージ(例えば、ワークフローを実行するためのメッセージ)は、複数の記述子を含んでもよく、記述子の各々は複数のパラメータを有してもよい。場合によっては、APIを使用するNBMPシステム300のコンポーネントのいずれか間の通信は、複数の記述子を含んでもよく、記述子の各々は複数のパラメータを有してもよい。
[ワークフローにおける非必須の入力、出力、およびタスクシグナリング]
【0059】
実施形態は、クラウドプラットフォームで実行されるワークフローにおける非必須の入力、出力、およびタスクを識別し、シグナリングするための方法に関連してもよい。
【0060】
ワークフローの必須の出力は、ワークフローが適切に動作しているとみなされるためのデータを生成しなければならないそのワークフローの出力であり得る。ワークフローの必須の入力は、ワークフローがその必須の出力を作成するために処理されなくてはならない入力であり得る。適切に動作するワークフローは、その必須の入力のすべてを処理し、その必須の出力のすべてを生成するワークフローであり得る。ワークフローの必須のタスクは、適切に動作し、適切に動作するワークフローに必要なデータを処理するために必要なタスクであり得る。例えば、必須のタスクは、必須の入力を処理する、および/または必須の出力を生成するタスクであり得る。実施形態において、必須の入力は、必須タスクが動作するために必要な入力であってもよく、必須の出力は、必須のタスクの必須の入力として必要とされる出力、または全体としてワークフローのための出力として必要とされる出力であり得る。非必須の入力は、ワークフローの必須の出力を生成するためにワークフローによって必要とされない入力であり得る。例えば、必須の入力のすべてが提供されていれば、たとえなんら非必須の入力が提供されていなくても、ワークフローは必須出力のすべてを生成し得る。非必須のタスクは、ワークフローに含まれるが、必須のタスクではないタスクであり得る。例えば、非必須のタスクは、非必須の入力を処理し、非必須の出力を生成し得る。
【0061】
図4は、実施形態による、必須タスクおよび非必須タスクを有するワークフロー400の一例を示す。
【0062】
ワークフロー400において、必須でないタスクは灰色の影付き円で示されている。したがって、
図4に示すように、タスク1、タスク3、タスク5、タスク8が必須である。また、
図5に示す例では、タスク2、タスク4、タスク6、タスク7は非必須である。
【0063】
したがって、ワークフロー400において、入力1を必須の入力として分類することができ、入力2を非必須の入力として分類することができる。同様に、出力2は必須の出力として分類することができ、出力1および出力3は非必須の出力として分類することができる。
[ワークフローにおける必須性のシグナリング]
【0064】
実施形態において、フラグが使用されて、与えられたワークフローにおけるタスクの必須性をシグナルしてもよい。ワークフローの必須および非必須のすべてのタスクを定義することによって、必須および非必須の入力および出力も定義または判定され得る。
【0065】
表1は、非必須性フラグがタスクの一般的記述子に追加されている例を示す。表1において、および本開示全体を通して、イタリック体を使用して、追加を示す。
【表1】
【0066】
追加されたパラメータをイタリック体で示す。非必須のパラメータの例を表2に定義する。
【表2】
【0067】
ワークフローがタスクのグラフで定義されており、タスクが必須および非必須として識別される場合、ワークフローの入力または出力は必須または非必須として識別され得る。
【0068】
必須および非必須タスクのグラフとしてワークフローが与えられる場合、任意の入力と出力のペアに対して、入力が少なくとも1つの必須のパスを介して出力に接続され得る場合、入力および出力の両方が必須である。上記の条件を満たすことができない任意の他の入出力は非必須である。
【0069】
ワークフロー内のパスは、1つの入力と1つの出力のみを有するワークフローのサブセットであってもよく、入力は、パス内のタスクを接続する矢印のセットを介して出力に接続されてもよく、2つのタスク間の各接続の方向は、入力を出力に直接接続する矢印と同じ方向である。ワークフローの必須のパスは、パスに含まれるすべてのタスクが必須のパスであり得る。
【0070】
図5は、破線の矢印を有するワークフロー400内の1つの必須のパスを示す。
【0071】
[入力と出力の必須性のシグナリング]
【0072】
ワークフローグラフが、上記に示したように、そのタスクの定義された必須性で定義されている場合、ワークフローの入力と出力の必須性が導出され得る。
【0073】
しかし、場合によっては、ワークフロー記述において、その入力と出力のみが定義されることがあり、導出される正確なワークフローがワークフローマネージャに残される。この場合、ワークフロー記述は、その入力と出力の必須性を含むか、または示してもよい。
【0074】
実施形態において、非必須性パラメータは、表3、表4、表5および表6に示すように、出力記述子内の各出力に対して定義されてもよい。例えば、非必須性パラメータは、入力、出力、タスクまたは他のオブジェクトが必須か、非必須かを示してもよい。
【表3】
【表4】
【表5】
【表6】
【0075】
実施形態において、メディアパラメータとメタデータパラメータの両方が非必須である場合、出力は非必須である。
[ワークフローの入力と出力からのタスクの必須性と非必須性の導出]
【0076】
ワークフローの入力と出力の必須性が定義されている場合、ワークフローのタスク(およびその入力)の必須性が導出され得る。
【0077】
タスクのグラフと識別された必須の出力としてワークフローが与えられる場合、以下のプロセスを使用して、必須タスクを識別し得る。
・ 第一に、各非必須の入力に対して、他のすべての対応するタスクの入力も非必須である場合、タスクの出力は非必須であるとマークされてもよく、タスクが削除されてもよい。このプロセスは、適用される非必須の入力がこのプロセスに残らなくなるまで、すべての新規の非必須の入力に適用され得る。
・ 第二に、各非必須出力に対して、他のすべての対応するタスクの出力も非必須である場合、タスクの入力は非必須であるとマークされてもよく、タスクが削除され得る。このプロセスは、適用される非必須の入力がこのプロセスに残らなくなるまで、適用され得る。
【0078】
図6は、このようなプロセスの一例を示す。例えば、
図6は、入力の必須性のみが既知であるワークフロー600Aを示す。
図6に見られるように、入力1は必須であることが知られており、入力2は非必須であることが知られており、出力2は必須であることが知られており、出力1および出力3は非必須であることが知られている。
【0079】
図6はまた、ワークフロー600Aに対して動作610が実行された結果であるワークフロー600Bを示す。動作610は、上述のプロセスの第1の部分に対応し得る。たとえば、入力2は非必須であり、タスク2は他の入力を有さないため、タスク2の出力(入力2.1として示されている)も非必須としてマークされ、タスク2が削除される。
【0080】
図6はまた、ワークフロー600Bに対して動作620が実行された結果であるワークフロー600Cを示す。動作620は、上述のプロセスの第2の部分に対応し得る。たとえば、入力2は非必須であり、タスク2は他の入力を有さないため、タスク6の入力(出力1.2として示されている)も非必須としてマークされ、タスク6が削除される。同様に、タスク4には必須の出力がないため、タスク4の入力(出力1.1として示されている)も非必須としてマークされ、タスク4が削除される。さらに、出力3は非必須であり、タスク7は他の出力を持たないため、タスク7の入力(出力3として示されている)も非必須としてマークされ、タスク7が削除される。
【0081】
したがって、動作610および620の結果、タスク2、タスク4、タスク6、およびタスク7が削除されるため、これらのタスクは非必須のタスクとして判定され得る。同様に、タスク1、タスク3、タスク5、およびタスク8が残っているため、これらのタスクは必須のタスクとして判定され得る。
【0082】
実施形態は、ワークフローにおける入力、出力、およびタスクの必須性を定義するための方法に関してもよく、ここで、入力、出力、またはタスクは、ワークフローの残りの部分に対して非必須であるとして定義することができ、そのエンティティが除去される場合、ワークフローは、依然として適切に動作する。
【0083】
実施形態は、タスクの必須性をシグナリングするための方法に関してもよく、フラグは、その記述においてタスクの非必須性をシグナリングするために使用される。
【0084】
実施形態は、1つの入力または1つの出力の必須性をシグナリングするための方法に関してもよく、フラグは、その記述において入力または出力の非必須性をシグナリングするために使用される。
【0085】
実施形態は、ワークフローのタスクの必須性が識別されるときに、ワークフローの入力および出力の必須性を導出する方法に関してもよく、ワークフローの必須のパスおよび対応する必須の入出力ペアが識別される。
【0086】
実施形態は、ワークフローの入力および/または出力の必須性が識別されるときに、ワークフローのタスクの必須性を導出する方法に関してもよく、この方法を使用すると、ワークフローグラフは、すべての非必須のタスクが識別されるまで単純化される。
[クラウド上で可変持続時間を有するメディアセグメントの独立処理]
【0087】
図7は、実施形態による、クラウド内で異なる持続時間またはサイズを有し得るメディアセグメントの独立処理のための方法に関してもよい。
【0088】
図7は、セグメントの並列処理のためにスプリット/マージを使用するプロセス700の一例を示す。
図7において、タスクTは、並列に実行されるタスクT(タスクT
0,タスクT
1,...,タスクT
N-1)のn個のインスタンスに変換される。
【0089】
図7において、メディアストリームは連続している。ただし、1:Nスプリット機能はメディアストリームをN個のメディアサブストリームに変換する。各サブストリームはTのインスタンスによって処理され、次いで、タスクTの出力ストリームと同等の出力を生成するためにサブストリーム同士がインターリーブされる。
【0090】
1:NスプリットおよびN:1マージ機能は、セグメント境界で作業する。各セグメントは、1つ以上のTのTSD(Task Segment Duration、タスクセグメント持続時間)と等しい持続時間を有するため、タスクTによって処理されるという点で、セグメントひいてはサブストリームは互いに独立している。タスクT0,...,TN-1は、同時にセグメントを処理する必要はないことに留意する。セグメントとサブストリームは独立しているため、タスクの各インスタンスはその速度で実行され得る。
【0091】
各サブストリームにおける各セグメントはその開始時間、持続時間、および長さを搬送するため、それらは正しい順序で一緒に多重化され得る。
【0092】
NBMP修正は、上記の動作のためのスプリッタおよびマージ機能テンプレートを定義する。
【0093】
NBMP規格は、表7に示すように、各機能の処理モードと時間セグメント持続時間を記述するステップ記述子を含む。
【表7】
【0094】
表7に示すように、セグメント持続時間はすべてのセグメントに対して同じである。
[ステップ記述子の拡張]
【0095】
実際には、セグメント持続時間はセグメントごとに変動し得る。したがって、動作パラメータとしてのセグメント持続時間の代わりに、実施形態は、セグメントの分離のためのセグメントマーカーを含み得る。この場合、最大セグメント持続時間を有することは有用である。実施形態はまた、可変セグメント持続時間が許容されるかどうかをシグナリングしてもよい。
【表8】
【0096】
可変セグメント持続時間を有するメディアストリームを、スプリッタ機能を使用して複数ストリームに変換し、次いで、マージャ機能を使用して処理した後にそれらを結合するために、実施形態は、以下のNBMPスプリッタおよびマージャ参照機能テンプレートを拡張してもよい。
[スプリッタ]
[NBMPブランド名]
【0097】
urn:mpeg:mpegi:nbmp:2020:split
[記述]
【0098】
これらの要件は、入力メディアストリームがギャップなしに連続的であると仮定する。本項において、[a,b[は、a以上b未満の時間範囲を意味する。
【0099】
スプリッタ機能は、以下の要件を満たし得る。
・ 1つの入力およびN個の出力FIFOバッファであり、Nは、スプリットの数の設定パラメータである。
・ 各時間で1つの入力で動作させ、N個の出力セグメントを生成する。
・ 各入力セグメントは、以下の要件を満たすものとする。
o 連続したサンプルのセット
o 時間スケールTのスケールおけるN*Dの最大持続時間であって、DおよびTが設定パラメータである。
o 以下のメタデータおよび制約を含む。
■ 開始時間s(msec)
■ 時間スケールt
■ 最大持続時間N*dであって、d=D*T/tは整数であり、すなわち、D*Tはtで割ることが可能である。
■ 長さl(バイト)
■ variable-duration=「True」であるときのセグメントマーカーであって、セグメントマーカーは各セグメントの開始時間を示す。
o 他の入力セグメントと重複しないサンプル
・ 入力セグメントのセットは、入力の時間時間全体をカバーするものとし、すなわち、総持続時間から入力のサンプルが除外されない。
・ 入力セグメントに対してインクリメント順序で動作する、すなわち、時間のより早い持続時間をカバーするセグメントは、より遅い持続時間をカバーするセグメントの前に処理されるものとする。
・ 任意の時間での各出力バッファでのメディアストリームは、ゼロ以上の出力セグメントからなる。各出力セグメントは、以下の要件を満足するものとする。
o 連続したサンプルのセット
o 時間スケールtのスケールにおけるdの最大持続時間
o 以下のメタデータを含む。
■ 開始時間s(msec)
■ 時間スケールt
■ 時間スケールtのスケールにおけるdの最大持続時間
■ 長さl(バイト)
・ すべての出力バッファのすべての出力セグメントの集合はまとめて、有力の持続時間全体をカバーするものとし、すなわち、出力セグメントの集合から入力のサンプルが除外されない。
・ スプリッタは、以下の方法で、すべての1つの入力セグメントに対して動作し、これをN個の出力セグメントに分割するものとする。
o すべての出力バッファは、1つの出力セグメントを受信する。
o 各入力セグメントは、s
0,s
1,...,s
N-1の順序でN個の出力セグメントに分割され、セグメントs
iは、セグメントs
i-1およびs
i+1の直後のメディアの持続時間をカバーする。
o 出力バッファは、O
0,O
1,...,O
N-1として順序付けされる。
o 出力セグメントsiは、バッファOiに置かれる
[機能記述テンプレート]
【表9】
【表10】
【表11】
【表12】
【表13】
【表14】
【0100】
urn:mpeg:mpegi:nbmp:2020:merge
[記述]
【0101】
要件は、入力メディアストリームがギャップなしに連続的であると仮定する。本項において、[a,b[は、a以上b未満の時間範囲を意味する。
【0102】
マージャ機能は、以下の要件を満たすものとする。
・ N個の入力および1つの出力FIFOバッファであり、Nは、スプリットの数の設定パラメータである。
・ 各入力バッファから1つの入力セグメント、合計N個のセグメントを各時間で動作させ、1つの出力セグメントを生成する。
・ 各入力セグメントは、以下の要件を満たすものとする。
o 連続したサンプルのセット
o 時間スケールTのスケールおけるDの最大持続時間であって、DおよびTが設定パラメータである。
o 以下のメタデータを含む。
■ 開始時間s(msec)
■ 時間スケールt
■ tのスケールにおける最大持続時間dであって、d=D*T/tは整数であり、すなわち、D*Tはtで割ることが可能である。
■ 長さl(バイト)
■
o 他の入力セグメントと重複しないサンプル
・ Nバッファの入力セグメントのセットは、入力の時間時間全体をカバーするものとし、すなわち、総持続時間から入力のサンプルが除外されない。
・ 入力セグメントに対してインクリメント順序で動作する、すなわち、時間のより早い持続時間をカバーするセグメントは、より遅い持続時間をカバーするセグメントの前に処理されるものとする。
・ 任意の時間での出力バッファでのメディアストリームは、ゼロ以上の出力セグメントからなる。各出力セグメントは、以下の要件を満足するものとする。
o 連続したサンプルのセット
o tのスケールにおけるN*dの持続時間
o 以下のメタデータを含む。
■ 開始時間s(msec)
■ tの時間スケール
■ 持続時間N*d
■ 長さl(バイト)
■ variable-duration=「True」であるときのセグメントマーカーであって、セグメントマーカーは各セグメントの開始時間を示す。
・ すべての出力バッファの出力セグメントの集合はまとめて、入力の持続時間全体をカバーするものとし、すなわち、出力セグメントの集合から入力のサンプルが除外されない。
・ スプリッタは、以下の方法で、各入力バッファからのすべての1つの入力セグメントに対して動作し、これを1つの出力セグメントにマージするものとする。
o 各入力バッファからの1つのセグメントは、それぞれ、入力バッファI
0、I
1、...、I
N-1からs
0,s
1,...,s
N-1に処理される。セグメントs
iは、s
i-1とs
i+1の時間間隔の正確な時間間隔のサンプルを含む。
o セグメントs
0,s
1,...,s
N-1は、示された順序で1つの出力セグメントに連結され、出力セグメントが、セグメントs
0,s
1,...,s
N-1のすべてのサンプルを含み、繰り返しサンプルがなく、EPTの最も早い提示を伴うようにする。
[機能記述テンプレート]
【表15】
【表16】
【表17】
【表18】
【表19】
【表20】
【0103】
実施形態は、可変持続時間セグメントを有するメディアのセグメント化を記述するための方法に関してもよく、メディアは、可変持続時間を有する独立セグメントによって処理され、ステップ記述子は拡張されて、可変セグメント持続時間のための機能のサポートをシグナリングするように拡張される。
【0104】
実施形態は、メディアストリームを複数のメディアサブストリームにスプリットし、複数のメディアサブストリームからメディアストリームをマージするための方法に関してもよく、スプリットおよびマージ機能は、可変持続時間を有するセグメントに対して実行され、セグメントの境界が定義され、スプリットおよびマージのプロセスがこれらの境界で実行される。
[クラウド上での多次元メディアセグメントの処理]
【0105】
実施形態は、クラウド内でメディアセグメントを独立して処理するための多次元メディアセグメント方法に関してもよい。実施形態は、多次元セグメントを定義するために、NBMP規格のステップ記述子を拡張し得る。
【0106】
NBMP規格は、表21に示すように、各機能の処理モードと時間セグメント持続時間を記述するステップ記述子を含む。
【表21】
【0107】
実施形態は、セグメント次元を時間軸の他の次元に拡張し得る。表22は、この拡張の一例を示す。
【表22】
・ 例1:例えば、ビデオフレームを、ステップ処理のためにタイルに分割することは、以下の設定によって達成され得る。
o higher-dimensions-size=2
o higher-dimensions-description=[width,height]
o high-segment-size=[w,h]であり、wおよびhは各独立タイルの幅と高さを表す。
・ 例2:3つの色コンポーネントを含むビデオの場合、
o higher-dimensions-size=1
o higher-dimensions-descriptions=[RGB]
o high-segment-size=[c]であり、cは色コンポーネントビデオを表す。
【0108】
パラメータoverlap-sizeは、各次元における重複の量を示す。例えば、例1における[16,16]の重複サイズは、近隣のタイルの幅および高さにおいて16サンプルの重複を示す。
[JSON実装]
【0109】
上述の概念のJSON実装を表23に示す。
【表23】
【0110】
実施形態は、各セグメントが独立して処理され得る多次元セグメントへの多次元メディア信号のセグメント化を記述するための方法に関してもよく、メディアセグメントの次元、及び、各次元におけるサイズ、及び、各次元における重複の量、並びに、処理セグメントの数を含むそのプロパティが、記述子に記述され、記述子は、機能記述に使用されて、機能のプロパティを記述するか、又は、ワークフロー又はタスク記述子に使用されて、動作ワークフローにおける機能の処理動作を記述し、それによって、これらの多次元セグメントの独立した又は並列の処理を可能にする。
[ワークフロー記述子設定とポリシーから機能インスタンスおよびタスクの除外]
【0111】
実施形態は、ワークフロー記述で定義された1つ以上の記述子から機能インスタンスおよびタスクを除外するための方法に関してもよい。
【0112】
NBMP修正1は、機能の除外のための以下の方法を含む。
[スコープ記述子]
【0113】
記述子は、表24に示すように、それらの記述子パラメータを無視すべきタスクを示すために、WDDにおいて定義されたそれらの記述子のパラメータスコープとして含まれ。
【表24】
【表25】
【0114】
表26は、スコープ記述子で使用されるパラメータを定義する。
【表26】
【0115】
上記の実装は、いくつかの問題を提示する。たとえば、スコープ記述子は、機能のサブセットに対してWDDにおける特定のディスクリプタを除外するために使用される。これは記述子内で使用され、スタンドアロンの記述子ではない。これは特定の記述子に適用され、すべてではない。これとともに使用される可能な記述子は、セキュリティ、要件、報告、および通知である。機能リストが機能の名前や識別子であることが明らかではない。
【0116】
したがって、ブラックアウトリストが適用され得る記述子の明確なリストは定義されていない。ワークフローにおける機能、機能インスタンス/タスクにブラックアウトが適用されるかどうかは明らかではない。ワークフロー記述文書(WDD)は、ワークフローを含んでも含まなくてもよい。WDDがワークフローを含む場合、接続マップと、場合によっては機能制限付きのオブジェクトの配列を有する。WDDがワークフローを含まない場合、記述子はWDDに適用され、機能およびタスクは定義されていない。ワークフローマネージャは、ワークフローを実現するために、1つ以上のリポジトリから異なる機能を選択してもよい。ブラックアウトリストはバイナリフラグであり、機能が記述子のブラックアウトリストにリストされている場合、その機能を実装するタスクには記述子は適用されないことを意味する。
【0117】
機能制限は、ワークフロー内の各機能の制限をリストするため、実施形態は、ブラックリストをその要素に追加することに関してもよい。
【0118】
例えば、以下の変更が行われてもよい。
機能制限
a)ブラックリスト機能に関係なく、上記の表にない他の記述子が追加されてもよい。
b)機能インスタンスに対して除外される記述子をリストするために、ブラックリストが配列に追加されてもよい。
【表27】
【0119】
【0120】
実施形態は、表28に示すように、各機能インスタンスに対して除外されるディスクリプタのリストの単純な配列を追加してもよい。
【表29】
【0121】
この修正はいくつかの利点を提供する。例えば、
1. 機能ではなく機能インスタンスに対して実行される。ワークフローにおいて、機能インスタンスがブラックリストにされる可能性があるが、その機能のすべてのインスタンスがブラックリストにされるわけではない。
2. function-restrictionは、すでに異なる記述子をリストにする。機能インスタンスに対して記述子をブラックアウトしたい場合、その配列においてフラグを立てることができる。
3. ブラックアウトは単一のパラメータであるため、それを定義するための独立した記述子を有する必要がない。
v4. WDDがワークフローを有さない場合、WDDはワークフローを導出し、更新されたWDDにおいてそれをNBMPに戻すことができる。NBMPソースは、所望の機能インスタンス/タスクにブラックアウトフラグを追加することができる。
【0122】
実施形態は、機能インスタンスからWDD(Workflow Description Document)内の任意の記述子を除外するための方法に関してもよく、その機能インスタンスがその特定の記述子を実装する必要がなく、各機能インスタンスは独自の除外リストを有してもよく、同じ機能の他の機能インスタンスは同じ除外を有していてもいなくてもよく、ワークフローが提供されるときにNBMP ソースがWDD内の除外リストを提供することができるか、またはワークフローが提供されないときに、ワークフローマネージャがワークフローを導出し、それをNBMPソースに提供することができ、次いで、NBMPソースが各機能インスタンス/タスクに対する除外リストでWDDに更新し、それを実装するためにワークフローマネージャに戻すように提供する。
【0123】
[例示的なプロセス]
【0124】
図3および
図8を参照して、ワークフローのスプリットレンダリングのためにNBMPワークフローマネージャ320によって実行されるプロセス800を以下に説明する。
【0125】
図8は、ビデオ復号のために現在のネットワーク抽象化レイヤ(NAL)ユニットを再構成するための例示的なプロセス800のフローチャートである。
【0126】
図8に示すように、プロセス800は、ネットワークベースのメディア処理(NBMP)ワークフローを導出すること(ブロック810)を含み得る。
【0127】
図8にさらに示すように、プロセス800は、NBMPワークフローに含まれる少なくとも1つのタスク、少なくとも1つのタスクによって受信される少なくとも1つの入力、または少なくとも1つのタスクによって生成される少なくとも1つの出力が非必須であることを示す少なくとも1つの第1の構文要素を取得すること(ブロック820)を含み得る。
【0128】
図8にさらに示すように、プロセス800は、少なくとも1つの第1の構文要素に基づいて複数の必須タスクを判定すること(ブロック830)を含み得る。
【0129】
図8にさらに示すように、プロセス800は、複数の必須タスクを、NBMPワークフローに含まれるメディアシンク、メディアソース、およびメディア処理エンティティのうちの少なくとも1つに割り当てること(ブロック840)を含み得る。
【0130】
実施形態において、少なくとも1つの第1の構文要素は、少なくとも1つのタスクの一般的記述子に含まれる第1のフラグを含み得、第1のフラグは、少なくとも1つのタスクが非必須であることを示し得る。実施形態において、第1のフラグは、表1の非本質のフラグに対応してもよい。
【0131】
実施形態において、複数の必須タスクは、第1のフラグに基づいて判定されてもよい。
【0132】
実施形態において、少なくとも1つの第1の構文要素は、少なくとも1つの出力の出力記述子に含まれる第1のパラメータを含み得、第1のパラメータは、少なくとも1つの出力が非必須であることを示し得る。実施形態において、第1のパラメータは、表3の非必須性パラメータに対応し得る。
【0133】
実施形態において、複数の必須タスクは、第1のフラグに基づいて判定され得る。
【0134】
実施形態において、プロセス800は、NBMPワークフローに関連する少なくとも1つのメディアセグメントの並列処理情報を示す少なくとも1つの第2の構文要素を含むステップ記述子を取得することと、並列処理情報に基づいて複数の必須タスクを割り当てることと、をさらに含み得る。
【0135】
実施形態において、少なくとも1つの第2の構文要素は、メディアセグメントの持続時間が変動し得ることを示す第2のフラグと、持続時間の最大継続時間を示す第2のパラメータと、を含み得る。実施形態において、第2のフラグは、上述の要素「可変持続時間」に対応し得、第2のパラメータは、上述の要素「セグメント持続時間」に対応し得る。
【0136】
実施形態において、少なくとも1つの第2の構文要素は、前記少なくとも1つのメディアセグメントの時間的重複、前記少なくとも1つのメディアセグメントの次元の数、前記少なくとも1つのメディアセグメントの次元の記述、又は前記少なくとも1つのメディアセグメントの次元の重複のうちの少なくとも1つを示す第3のパラメータを含み得る。実施形態において、第3のパラメータは、表21に示すパラメータのうちの少なくとも1つに対応し得る。
【0137】
実施形態において、プロセス800は、NBMPワークフローに含まれる機能のインスタンスに対応する機能制限リストを取得することをさらに含み得る。実施形態において、機能制限リストは、対応する機能の制限を示し得る。実施形態において、機能制限リストは、NBMPワークフローに対応するワークフロー記述文書において機能のインスタンスに対して除外される記述子を指定するブラックリスト配列を含み得る。
【0138】
実施形態において、機能制限リストは、第1の機能制限リストであり得、機能のインスタンスは、機能の第1のインスタンスであり得、機能の第2のインスタンスに対応する第2の機能制限リストは、ブラックリスト配列を含まなくてもよい。
【0139】
図8は、プロセス800の例示的なブロックを示し、いくつかの実装において、プロセス800は、
図8に示されるブロックよりも、追加のブロック、より少ないブロック、異なるブロック、又は異なる配置のブロックを含み得る。追加的又は代替的に、プロセス800のブロックのうちの2つ以上は、並列で実行されてもよい。
【0140】
さらに、提案された方法は、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施されてもよい。一例において、1つ以上のプロセッサは、提案された方法の1つ以上を実行するために、非一時的なコンピュータ可読媒体に記憶されたプログラムを実行する。
【0141】
[例示的なコンピュータコード]
【0142】
本開示の実施形態によれば、コンピュータコードを記憶するメモリを有する少なくとも1つのプロセッサが提供されてもよい。コンピュータコードは、少なくとも1つのプロセッサによって実行されるときに、本開示の任意の数の態様を実行するように構成され得る。
【0143】
例えば、
図9を参照すると、コンピュータコード900は、NBMPシステム300において実装され得る。例えば、コンピュータコードは、NBMPワークフローマネージャ320のメモリに記憶されてもよく、NBMPワークフローマネージャ320の少なくとも1つのプロセッサによって実行されてもよい。コンピュータコードは、例えば、ワークフロー導出コード910、第1の取得コード920、判定コード930、および割り当てコード940を含み得る。
【0144】
ワークフロー導出コード910、第1の取得コード920、判定コード930、および割り当てコード940は、NBMPワークフローマネージャ320に、それぞれ
図8を参照して上述されたプロセスの態様を実行させるように構成され得る。
【0145】
本開示の実施形態は、別々に、または任意の順序で組み合わせて使用されてもよい。さらに、実施形態(およびその方法)の各々は、処理回路(例えば、1つ以上のプロセッサまたは1つ以上の集積回路)によって実装されてもよい。一例において、1つ以上のプロセッサは、非一時的なコンピュータ可読媒体に記憶されたプログラムを実行する。
【0146】
前述の開示は、例示および説明を提供するが、網羅的であることを意図しておらず、また、実装を開示された正確な形態に限定することを意図していない。修正および変形は、上記の開示に照らして可能であるか、または実装の実施から取得されてもよい。
【0147】
本明細書で使用される場合、コンポーネントという用語は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組み合わせとして広く解釈されることを意図している。
【0148】
特徴の組み合わせが特許請求の範囲に規定され、および/または明細書に開示されているとしても、これらの組み合わせは、可能な実装の開示を限定するものではない。実際、これらの特徴の多くは、具体的に特許請求の範囲に規定されていない、および/または明細書に開示されていない方法で組み合わせられてもよい。以下に列挙される各従属請求項は、1のクレームのみに直接従属してもよいが、可能な実装の開示は、クレームセットにおいて、他の全てのクレームと組み合わせた各従属クレームを含む。
【0149】
本明細書中で使用されるいかなる要素、行為、または命令も、明示的に記述されない限り、重要または必須と解釈されるべきではない。また、本明細書で使用される場合、「a」および「an」という品詞は、1つ以上の項目を含むことを意図し、「1つ以上」と互換的に使用されてもよい。さらに、本明細書で使用される場合、「セット」という用語は、1つ以上の項目(例えば、関連項目、非関連項目、関連項目と非関連項目の組み合わせなど)を含むことを意図し、「1つ以上」と互換的に使用されてもよい。1つの項目のみが意図される場合、「1」という用語または類似の言語が使用される。また、本明細書で使用される場合、「有する(has)」、「有する(have)」、「有している(having)」などの用語は、オープンエンドの用語であることを意図している。さらに、「に基づく」という語句は、明示的に別段の記載がない限り、「少なくとも部分的に基づく」を意味することを意図している。
【国際調査報告】