(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-05-11
(54)【発明の名称】タスクおよびワークフローのステートレス並列処理のための方法、装置およびコンピュータプログラム
(51)【国際特許分類】
G06F 9/48 20060101AFI20220428BHJP
G06F 15/80 20060101ALI20220428BHJP
【FI】
G06F9/48 300Z
G06F15/80
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021555527
(86)(22)【出願日】2020-09-23
(85)【翻訳文提出日】2021-09-14
(86)【国際出願番号】 US2020052236
(87)【国際公開番号】W WO2021061785
(87)【国際公開日】2021-04-01
(32)【優先日】2019-09-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-09-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
(57)【要約】
データストリームの並列処理のための方法が提供される。本方法では処理タスクが受信される。処理タスクは複数のセグメントを含むデータストリームを処理するように構成される。続いて、複数のセグメントをN個のサブストリームに分割するためにデータストリームに対して分割操作が実行され、N個のサブストリームの各々が複数のセグメントのうちの1つまたは複数のセグメントを含み、Nは正の整数である。さらに、N個のサブ処理タスクが、N個の処理されたサブストリームを生成するためにN個のサブストリームに対して実行される。マージ操作が、マージされた出力データストリームを生成するためにN個の処理されたサブストリームに対して実行される。マージされた出力データストリームは、処理タスクが分割操作なしでデータストリームに直接適用されるときに生成される出力データストリームと同一である。
【特許請求の範囲】
【請求項1】
データストリームの並列処理のための方法であって、
複数のセグメントを含む前記データストリームを処理するように構成された処理タスクを受信するステップと、
前記複数のセグメントをN個のサブストリームに分割するために前記データストリームに対して分割操作を実行するステップであって、前記N個のサブストリームの各々は前記複数のセグメントのうちの1つまたは複数のセグメントを含み、前記Nが正の整数である、ステップと、
N個の処理されたサブストリームを生成するために前記N個のサブストリームに対してN個のサブ処理タスクを実行するステップと、
マージされた出力データストリームを生成するために前記N個の処理されたサブストリームに対してマージ操作を実行するステップであって、前記マージされた出力データストリームは、前記処理タスクが前記分割操作なしで前記データストリームに直接適用されるときに生成される出力データストリームと同一である、ステップと
を含む、方法。
【請求項2】
前記N個のサブ処理タスクの各々は前記処理タスクと同じプロセスを実行する、請求項1に記載の方法。
【請求項3】
前記分割操作を実行する前記ステップは、
前記データストリームを前記N個のサブストリームに分割するように構成された分割バッファに前記データストリームを送信するステップであって、
前記分割バッファは、入力インデックス付き先入れ先出し(iFIFO)バッファと、前記入力iFIFOバッファに結合されたN個のサブ入力iFIFOバッファとを含み、
前記入力iFIFOバッファは、前記データストリームと前記データストリームの前記セグメントのインデックス情報とを受信し、前記データストリームの前記セグメントを前記N個のサブ入力iFIFOバッファに分配するように構成され、
前記N個のサブ入力iFIFOバッファの各々は、前記入力iFIFOバッファから前記1つまたは複数のセグメントを受信し、前記1つまたは複数のセグメントを含む対応するサブストリームを前記N個のサブ処理タスクのうちの異なるサブ処理タスクに出力する、ステップ
をさらに含む、請求項1に記載の方法。
【請求項4】
前記分割操作を実行する前記ステップは、
前記セグメントの境界に従って前記データストリームを分割するステップ
を含む、請求項3に記載の方法。
【請求項5】
前記データストリームの前記セグメントの各々の前記インデックス情報は、それぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを含む、請求項4に記載の方法。
【請求項6】
前記データストリームの前記セグメントの各々の前記それぞれの持続時間は、前記処理タスクのプロセスセグメント持続時間またはその倍数に等しい、請求項5に記載の方法。
【請求項7】
前記処理タスクの前記プロセスセグメント持続時間はフレーム数および秒数のうちの一方である、請求項6に記載の方法。
【請求項8】
前記処理タスクは、符号化プロセス、復号プロセス、ダウンサンプリングプロセス、アップスケーリングプロセス、フレームスティッチングプロセス、投影プロセス、抽出プロセス、およびインデックス付けプロセスのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項9】
前記N個のサブストリームに対してN個のサブ処理タスクを実行する前記ステップは、
前記N個のサブストリームに対して前記N個のサブ処理タスクを並列に実行するステップ
をさらに含む、請求項3に記載の方法。
【請求項10】
前記マージ操作を実行する前記ステップは、
前記N個の処理されたサブストリームを前記マージされた出力データストリームにマージするように構成されたマージバッファによって前記N個の処理されたサブストリームを受信するステップであって、
前記マージバッファは、出力iFIFOバッファと、前記出力iFIFOバッファに結合されたN個のサブ出力iFIFOバッファとを含み、
前記N個のサブ出力iFIFOバッファは、前記N個の処理されたサブストリームを受信するように構成され、
前記出力iFIFOバッファは、(i)前記N個のサブ出力iFIFOバッファから前記処理されたサブストリームを受信し、(ii)前記処理されたサブストリームの前記セグメントの前記インデックス情報に基づいて前記処理されたサブストリームをマージし、(iii)前記マージされた出力データストリームを出力するように構成される、ステップ
をさらに含む、請求項9に記載の方法。
【請求項11】
データストリームの並列処理のための装置であって、
複数のセグメントを含む前記データストリームを処理するように構成された処理タスクを受信し、
前記複数のセグメントをN個のサブストリームに分割するために前記データストリームに対して分割操作を実行し、前記N個のサブストリームの各々は前記複数のセグメントのうちの1つまたは複数のセグメントを含み、前記Nは正の整数であり、
N個の処理されたサブストリームを生成するために前記N個のサブストリームに対してN個のサブ処理タスクを実行し、
マージされた出力データストリームを生成するために前記N個の処理されたサブストリームに対してマージ操作を実行し、前記マージされた出力データストリームは、前記処理タスクが前記分割操作なしで前記データストリームに直接適用されるときに生成される出力データストリームと同一である、
ように構成された処理回路
を備える、装置。
【請求項12】
前記N個のサブ処理タスクの各々は前記処理タスクと同じプロセスを実行する、請求項11に記載の装置。
【請求項13】
前記処理回路は、
前記データストリームを前記N個のサブストリームに分割するように構成された分割バッファに前記データストリームを送信し、
前記分割バッファは、入力インデックス付き先入れ先出し(iFIFO)バッファと、前記入力iFIFOバッファに結合されたN個のサブ入力iFIFOバッファとを含み、
前記入力iFIFOバッファは、前記データストリームと前記データストリームの前記セグメントのインデックス情報とを受信し、前記データストリームの前記セグメントを前記N個のサブ入力iFIFOバッファに分配するように構成され、
前記N個のサブ入力iFIFOバッファの各々は、前記入力iFIFOバッファから前記1つまたは複数のセグメントを受信し、前記1つまたは複数のセグメントを含む対応するサブストリームを前記N個のサブ処理タスクのうちの異なるサブ処理タスクに出力する、
ようにさらに構成される、請求項11に記載の装置。
【請求項14】
前記処理回路は、
前記セグメントの境界に従って前記データストリームを分割する
ようにさらに構成される、請求項13に記載の装置。
【請求項15】
前記データストリームの前記セグメントの各々の前記インデックス情報は、それぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを含む、請求項14に記載の装置。
【請求項16】
前記データストリームの前記セグメントの各々の前記それぞれの持続時間は、前記処理タスクのプロセスセグメント持続時間またはその倍数に等しく、前記処理タスクの前記プロセスセグメント持続時間はフレーム数および秒数のうちの一方である、請求項15に記載の装置。
【請求項17】
前記処理タスクは、符号化プロセス、復号プロセス、ダウンサンプリングプロセス、アップスケーリングプロセス、フレームスティッチングプロセス、投影プロセス、抽出プロセス、およびインデックス付けプロセスのうちの少なくとも1つを含む、請求項11に記載の装置。
【請求項18】
前記処理回路は、
前記N個のサブストリームに対して前記N個のサブ処理タスクを並列に実行する
ように構成される、請求項13に記載の装置。
【請求項19】
前記処理回路は、
前記N個の処理されたサブストリームを前記マージされた出力データストリームにマージするように構成されたマージバッファによって前記N個の処理されたサブストリームを受信し、
前記マージバッファは、出力iFIFOバッファと、前記出力iFIFOバッファに結合されたN個のサブ出力iFIFOバッファとを含み、
前記N個のサブ出力iFIFOバッファは、前記N個の処理されたサブストリームを受信するように構成され、
前記出力iFIFOバッファは、(i)前記N個のサブ出力iFIFOバッファから前記処理されたサブストリームを受信し、(ii)前記処理されたサブストリームの前記セグメントの前記インデックス情報に基づいて前記処理されたサブストリームをマージし、(iii)前記マージされた出力データストリームを出力するように構成される、
ようにさらに構成される、請求項18に記載の装置。
【請求項20】
データストリームの並列処理のためのコンピュータによって実行されると、
複数のセグメントを含む前記データストリームを処理するように構成された処理タスクを受信するステップと、
前記複数のセグメントをN個のサブストリームに分割するために前記データストリームに対して分割操作を実行するステップであって、前記N個のサブストリームの各々は前記複数のセグメントのうちの1つまたは複数のセグメントを含み、前記Nは正の整数である、ステップと、
N個の処理されたサブストリームを生成するために前記N個のサブストリームに対してN個のサブ処理タスクを実行するステップと、
マージされた出力データストリームを生成するために前記N個の処理されたサブストリームに対してマージ操作を実行するステップであって、前記マージされた出力データストリームは、前記処理タスクが前記分割操作なしで前記データストリームに直接適用されるときに生成される出力データストリームと同一である、ステップと
を前記コンピュータに実行させる命令を記憶する、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年9月22日に出願された、「METHOD AND APPARATUS FOR STATELESS PARALLEL PROCESSING OF TASKS AND WORKFLOWS」と題する米国特許出願第17/028,125号に基づく優先権の利益を主張するものであり、同米国特許出願は、2019年9月28日に出願された、「STATELESS PARALLEL PROCESSING OF TASKS AND WORKFLOWS IN CLOUD COMPUTING」と題する米国仮特許出願第62/907,628号に基づく優先権の利益を主張している。これらの先行出願の開示全体は、参照によりその全体が本明細書に組み込まれる。
【0002】
本開示は、データ処理速度を高めるためのタスクまたはワークフローの並列処理を含むデータ処理に一般的に関連する実施形態を説明する。
【背景技術】
【0003】
本明細書で提供される背景技術の説明は、本開示の文脈を一般的に提示することを目的としている。この背景技術の項に記載されている限りにおいて、本明細書に記載されている発明者の研究、ならびに出願時に先行技術として本来認められることのない説明の態様は、本開示に対する先行技術として明示的にも黙示的にも認められない。
【0004】
ワークフローは、データ処理システムにおいてメディアデータなどのデータを処理するためにデータ処理において使用され得る。いくつかの例では、ワークフローは多数の処理タスクを含む。多数のタスクが、データを処理するためにクラウドプラットフォームなどのデータ処理システムによって実行されると、処理速度が低下し得る。処理速度を上げるには、データ処理システムの基礎となるプラットフォームの性能速度を上げる必要がある。しかしながら、基礎となるプラットフォームの性能速度を上げることは、常に可能であるとは限らないか非常にコストがかかり得る。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の態様は、メディアストリームなどのデータストリームの並列処理のための方法および装置を提供する。本方法では処理タスクが受信され得る。処理タスクは複数のセグメントを含むデータストリームを処理するように構成され得る。続いて、複数のセグメントをN個のサブストリームに分割するためにデータストリームに対して分割操作が実行され得、N個のサブストリームの各々は複数のセグメントのうちの1つまたは複数のセグメントを含み得る。Nは正の整数であり得る。さらに、N個のサブ処理タスクは、N個の処理されたサブストリームを生成するためにN個のサブストリームに対して実行され得る。マージ操作は、マージされた出力データストリームを生成するためにN個の処理されたサブストリームに対して実行され得る。マージされた出力データストリームは、処理タスクが分割操作なしでデータストリームに直接適用されるときに生成される出力データストリームと同一であり得る。
【0006】
本方法では、N個のサブ処理タスクの各々は処理タスクと同じプロセスを実行し得る。
【0007】
分割操作を実行するために、データストリームは、データストリームをN個のサブストリームに分割するように構成された分割バッファに送信され得る。分割バッファは、入力インデックス付き先入れ先出し(iFIFO)バッファと、入力iFIFOバッファに結合されたN個のサブ入力iFIFOバッファとを含み得る。入力iFIFOバッファは、データストリームとデータストリームのセグメントのインデックス情報とを受信し、データストリームのセグメントをN個のサブ入力iFIFOバッファに分配するように構成され得る。加えて、N個のサブ入力iFIFOバッファの各々は、入力iFIFOバッファからそれぞれの1つまたは複数のセグメントを受信し、対応するサブストリームをN個のサブ処理タスクのうちの異なるサブ処理タスクに出力し得、対応するサブストリームはそれぞれの1つまたは複数のセグメントを含み得る。
【0008】
いくつかの実施形態では、分割操作において、データストリームはセグメントの境界に従って分割され得る。
【0009】
いくつかの実施形態では、データストリームのセグメントの各々のインデックス情報は、それぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを含み得る。
【0010】
いくつかの実施形態では、データストリームのセグメントの各々のそれぞれの持続時間は、処理タスクのプロセスセグメント持続時間またはその倍数に等しくなり得る。処理タスクのプロセスセグメント持続時間は、フレーム数および秒数のうちの一方であり得る。
【0011】
本方法では、処理タスクは、符号化プロセス、復号プロセス、ダウンサンプリングプロセス、アップスケーリングプロセス、フレームスティッチングプロセス、投影プロセス、抽出プロセス、およびインデックス付けプロセスのうちの1つを含み得る。
【0012】
いくつかの実施形態では、N個のサブ処理タスクは、N個のサブストリームに対して並列に実行され得る。
【0013】
マージ操作を実行するために、N個の処理されたサブストリームは、N個の処理されたサブストリームをマージされた出力データストリームにマージするように構成されたマージバッファによって受信され得る。マージバッファは、出力iFIFOバッファと、出力iFIFOバッファに結合されたN個のサブ出力iFIFOバッファとを含み得る。N個のサブ出力iFIFOバッファは処理されたサブストリームを受信するように構成され得る。出力iFIFOバッファは、(i)N個のサブ出力iFIFOバッファから処理されたサブストリームを受信し、(ii)処理されたサブストリームのセグメントのインデックス情報に基づいて処理されたサブストリームをマージし、(iii)マージされた出力データストリームを出力するように構成され得る。
【0014】
いくつかの例では、データストリームの並列処理のための装置は、上述の方法のうちの1つまたは複数を実行するように構成された受信回路および処理回路を含む。
【0015】
本開示の態様はまた、データストリームの並列処理のためのコンピュータによって実行されると、上述の方法のうちの1つまたは複数をコンピュータに実行させる命令を記憶する非一時的コンピュータ可読媒体を提供する。
【0016】
開示される主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになる。
【図面の簡単な説明】
【0017】
【
図1】本開示の一実施形態による例示的なデータ処理システムを示す図である。
【
図2】本開示の一実施形態による、タスクをマルチインスタンス並列タスクに変換する概略図である。
【
図3】本開示の一実施形態による1:N分割機能の概略図である。
【
図4】本開示の一実施形態によるN:1マージ機能の概略図である。
【
図5】本開示の一実施形態によるインデックス付き先入れ先出し(iFIFO)機能の概略図である。
【
図6】本開示の一実施形態による、データストリームの並列処理のためのプロセスの概要を示すフローチャートである。
【
図7】一実施形態によるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0018】
本開示の態様は、クラウドプラットフォームにおけるタスクまたはワークフローの並列処理のための機構、ひいては処理の処理速度を高めるための機構に関する。
【0019】
一般に、ワークフローは処理タスクまたはタスク(例えば、メディア処理タスク)を含み得る。連結グラフは、処理タスク間の入力/出力関係を表すために連結を使用することによってワークフローを表すことができる。よって、ワークフローを処理タスクの連結グラフと考えることができる。各タスクは、ビデオ復号、ビデオスティッチング、および/またはビデオ符号化などの操作(例えば、メディア処理操作)を行い得る。ワークフローマネージャは、各タスクおよびワークフロー出力を構成および監視することによって、ワークフローの正しい操作を確実にすることができる。ワークフローマネージャは、例えばデータ処理ソース(例えば、NBMPソース)から受信されるワークフロー記述に基づいて、処理機能(例えば、メディア処理機能)を選択し、処理機能(例えば、メディア処理機能)をそれぞれのタスクとしてインスタンス化するように構成され得る。
【0020】
処理タスクを実行するように構成された処理エンティティ(例えば、メディア処理エンティティ)は、確立され、ロードされ、インスタンス化され、監視され得る。アプリケーションプログラミングインターフェース(API)などのインターフェースは、適切な機能(複数可)をディスカバリするために、データ処理ソースおよびワークフローマネージャ、ワークフローマネージャおよび処理タスク(複数可)、ならびにAPIの間に定義され得る。一般に、データ処理システムまたはプラットフォーム(例えば、NBMPプラットフォーム)は、データフォーマット(例えば、メディアフォーマット)およびプロトコルに依存しないものであり得る。データ処理システムは、データソース(例えば、メディアソース)、ワークフローマネージャ、およびタスクの間で交換されるデータのためのデータ(例えば、メディアデータ)、メタデータ、および補助情報フォーマットを識別し、シグナリングし得る。
【0021】
データ処理フレームワーク(例えば、NBMPフレームワーク)は、データフォーマットと、データ処理のためにデジタルネットワークを介して接続された様々なエンティティ間のAPIとの両方を含むインターフェースを定義し得る。ユーザは、効率的でインテリジェントな処理のためにリモートでユーザ操作にアクセスして構成し得る。ネットワークなどにデータをアップロードすることができ、処理タスクをインスタンス化することができ、処理タスクをさらに構成することができる。データ処理フレームワークは、データ処理パイプライン(例えば、メディア処理パイプライン)の動的作成、ならびにリアルタイムまたは遅延(deferred)方式での処理されたデータおよびメタデータへのアクセスを可能にし得る。データ処理パイプラインにおいてデータソース、ワークフローマネージャ、およびデータ処理エンティティの間で使用されるデータおよびメタデータフォーマットを指定することができる。
【0022】
データ処理フレームワークは、クライアント(例えば、デジタルメディアの作成者、サービスプロバイダ、および消費者)が、例えばネットワークにおいてデータ処理エンティティによって実行されるデータ処理操作を記述することを可能にし得る。ワークフローは、インターフェース(例えば、NBMP API)を介してアクセス可能な一組のデータ処理機能を構成することによって記述され得る。データ処理エンティティ(例えば、メディア処理エンティティ(MPE))は、データソース(複数可)または他のタスクから受信したデータおよび関連メタデータに対して適用される処理タスクを実行し得る。データ処理エンティティ(例えば、MPE)は、処理タスクを構成、管理、および監視するための能力を提供し得る。データ処理タスクは、データシンク(例えば、メディアシンク)または他のデータ処理タスク(例えば、メディア処理タスク)によって消費されるデータおよび関連メタデータ出力(複数可)を生成する、データおよびメタデータ入力(複数可)に適用されるプロセスであり得る。
【0023】
データ処理フレームワークは、ストリーミング、ファイル配信、プッシュベースのプログレッシブダウンロード、ハイブリッド配信、マルチパス、および異種ネットワーク環境などの様々な配信方法をサポートし得る。
【0024】
図1は、本開示の一実施形態による例示的なデータ処理システム(例えば、NBMPシステム、NBMP参照アーキテクチャ、NBMPアーキテクチャ)(100)を示す。データ処理システム(100)は、データソース(例えば、NBMPソース、NBMPソースエンティティ)(101)、ワークフローマネージャ(例えば、NBMPワークフローマネージャ)(103)、機能リポジトリ(105)、データソースもしくはデータソースエンティティ(例えば、メディアソース、メディアソースエンティティ)(111)、データ処理エンティティ(例えば、MPE)(113)、データシンクもしくはデータシンクエンティティ(例えば、メディアシンクまたはメディアシンクエンティティ)(115)、および/またはサードパーティエンティティなどの複数のエンティティを含み得る。データ処理システム(100)は、追加のデータソース(複数可)、データシンク(複数可)、および/またはデータ処理エンティティを含み得る。データ処理システム(100)は、ネットワーク内の1つまたは複数の処理エンティティにわたってデータを処理し得る。様々なデータおよびデータの制御情報(または制御データ)などの情報は、データ処理システム(100)内の複数のエンティティ間で通信され得る。
【0025】
説明のための文脈を提供するために、データ処理システム(100)は、以下ではNBMPシステム(100)として説明される。説明は、任意のデータ処理システムに適切に適合させることができる。
【0026】
NBMPソース(101)は、ネットワーク内のメディア処理を記述し、あるいは指示し得る。機能リポジトリ(105)は、様々なNBMP機能のNBMP機能記述を含み得る。NBMPソース(101)およびワークフローマネージャ(103)は、機能リポジトリ(105)からNBMP機能記述または機能を取得し得る。NBMP機能は、スタンドアロンの自己完結型メディア処理操作および/または操作の対応する記述の実装を指し得る。
【0027】
処理タスクまたはタスクは、MPE(113)によって実行されるNBMP機能のランタイムインスタンスを指し得る。NBMPワークフローまたはワークフローは、要求されたメディア処理を実現する1つまたは複数の連結されたタスク(複数可)のグラフ(例えば、有向非巡回グラフ(DAG))によって表され得る。ワークフローマネージャ(103)は、例えばワークフロー記述文書(WDD)に基づいて、ワークフローを作成、制御、管理、および監視するために、タスク(複数可)をプロビジョニングし、タスク(複数可)を連結することができる。
【0028】
メディアソース(111)は、ワークフローによって処理されるメディアコンテンツ(例えば、メディアデータ、補足情報)を提供し得る。補助情報は、メディアデータに関連するメタデータまたは補助情報を含み得る。メディアソース(111)は、ワークフローに入力を供給し得る。メディアシンク(115)は、ワークフローの出力を消費し得る。MPE(113)は、メディアコンテンツを処理するために1つまたは複数のメディア処理タスク(複数可)を実行し得る。
【0029】
NBMPシステム(100)内の異なるエンティティ(例えば、NBMPソース(101)、ワークフローマネージャ(103)、およびMPE(113))は、メディアサービス要求を呼び出してそれに応答するためにAPIを使用し得る。APIは、NBMPワークフローAPIまたはワークフローAPI、機能ディスカバリAPI、およびタスクAPIを含み得る。ワークフローAPIは、NBMPソース(101)とワークフローマネージャ(103)との間のインターフェースを提供し得る。タスクAPIは、ワークフローマネージャ(103)とメディア処理タスクとの間のインターフェースを提供し得る。機能ディスカバリAPIは、ワークフローマネージャ(103)/NBMPソース(101)と機能リポジトリ(105)との間のインターフェースを提供し得る。
【0030】
上述のNBMPインターフェースは、ネットワークにおいてメディア処理ワークフローを作成および制御するために使用され得る。NBMPシステム(100)は、制御プレーンとメディアプレーン(またはメディアデータプレーン)とに分割され得る。制御プレーンは、ワークフローAPI、機能ディスカバリAPI、およびタスクAPIを含み得る。
【0031】
ワークフローAPIは、メディア処理ワークフローを作成および制御するためにNBMPソース(101)によって使用され得る。NBMPソース(101)は、ネットワーク内のメディア処理を構成および制御するためにワークフローマネージャ(103)と通信するためにワークフローAPIを使用し得る。NBMPソース(101)が、ワークフローリソース(WR)をワークフローAPIの操作に含むことによってワークフローマネージャ(103)に要求を送信すると、ワークフローマネージャ(103)は、WR、含まれているWDD、および対応する記述子を解析し、要求された操作に従って適切なアクションを取ることができる。次いで、ワークフローマネージャ(103)は、応答を用いて要求を確認(acknowledge)することができる。ワークフローAPI操作は、ワークフローを作成すること(例えば、CreateWorkflow)、ワークフローを更新すること(例えば、UpdateWorkflow)、ワークフローを削除すること(例えば、DeleteWorkflow)、およびワークフローを取得すること(例えば、RetrieveWorkflow)などを含み得る。
【0032】
機能ディスカバリAPIは、ワークフローマネージャ(103)および/またはNBMPソース(101)が、メディア処理ワークフローの一部としてロードされ得るメディア処理機能をディスカバリするための手段を提供し得る。
【0033】
タスクAPIは、実行時にタスク(複数可)(例えば、MPE(113)によって実行されるタスク1およびタスク2)を構成および監視するためにワークフローマネージャ(103)によって使用され得る。タスクAPIは、例えばタスクのためのリソースがMPE(113)に割り当てられた後に、ワークフローマネージャ(103)によってメディア処理タスクを構成するためのインターフェース(複数可)を定義し得る。タスクAPI操作は、タスクを作成すること(例えば、CreateTask)、タスクを更新すること(例えば、UpdateTask)、タスクを取得すること(例えば、GetTask)、およびタスクを削除すること(例えば、DeleteTask)などを含み得る。
【0034】
メディアプレーンでは、NBMPソース(111)とタスク(複数可)との間およびタスク間のメディアフォーマット、メタデータ、および補足情報フォーマットが定義され得る。
【0035】
ワークフロー記述(WD)は、NBMPソース(101)からワークフローマネージャ(103)に渡され得る。WDは、入力データおよび出力データ、機能、ならびにワークフローの他の要件などの情報を記述し得る。
【0036】
ワークフローマネージャ(103)は、NBMPソース(101)からWDDを受信することができ、要求されたメディア処理のためのワークフローを構築することができる。ワークフロー手順では、メディア処理機能が、例えば機能リポジトリ(105)からを選択され得、次いで、対応するメディア処理タスクが構成され、一組の(例えば、MPE(113)を含む)1つまたは複数のMPEに分配され得る。
【0037】
機能リポジトリ(105)によって提供される一組の機能は、NBMPソース(101)およびワークフローマネージャ(103)によって読み取られ得る。一実施形態では、NBMPソース(101)は、機能リポジトリ(105)内の一組の機能を使用するワークフローの作成を要求する。したがって、NBMPソース(101)は、ワークフローのための機能を選択するように構成される。NBMPソース(101)は、以下に説明するように、ワークフローの作成を要求し得る。NBMPソース(101)は、ワークフローが作成されるメディア処理タスクの記述を使用することができ、メディア処理タスクの入力および出力の連結を定義するための連結マップを指定することができる。ワークフローマネージャ(103)がNBMPソース(101)から上記の情報を受信すると、ワークフローマネージャ(103)は、それぞれの機能名に基づいてメディア処理タスクをインスタンス化することができ、連結マップに従ってメディア処理タスクを連結することができる。
【0038】
あるいは、NBMPソース(101)は、ワークフローマネージャ(103)がワークフローを構築し得る一組のキーワードを使用して、ワークフローの作成を要求することができる。したがって、NBMPソース(101)は、ワークフローに挿入される一組の機能を認識しない場合がある。NBMPソース(101)は、以下に説明するように、ワークフローの作成を要求し得る。NBMPソース(101)は、ワークフローマネージャ(103)が適切な機能を見つけることができる一組のキーワードを使用することができ、適切なワークフロー記述を使用してワークフローの要件を指定することができる。
【0039】
ワークフローマネージャ(103)がNBMPソース(101)から上記の情報(例えば、一組のキーワード)を受信すると、ワークフローマネージャ(103)は、例えば処理記述子において指定されたキーワードを使用して適切な機能を探索することによって、ワークフローを作成することができる。次いで、ワークフローマネージャ(103)は、メディア処理タスクをプロビジョニングするためにワークフロー記述内の他の記述子を使用し、最終的なワークフローを作成するためにメディア処理タスクを連結することができる。
【0040】
ワークフローマネージャ(103)の処理モデルは、以下のように記述され得る。
【0041】
ワークフローマネージャ(103)は、利用可能なメディア処理機能を以下のようにディスカバリすることができる。NBMP機能リポジトリ(105)は、要求された処理を満たし得るメディア処理機能を外部エンティティが問い合わせることを可能にするための機能ディスカバリインターフェース(またはAPI)を提供することができる。ワークフローマネージャ(103)は、メディア処理機能の探索可能なリストを提供するディレクトリサービスにアクセスすることができる。ワークフローマネージャ(103)は、ワークフローのための適切な機能を見つけるためにワークフロー記述内のメディア処理タスクの記述を使用することができる。
【0042】
ワークフローに対するメディア処理タスクの選択が以下に説明され得る。NBMPソース(101)からメディア処理の要求を受信すると、ワークフローマネージャ(103)は、ワークフローを遂行し得るすべての利用可能な機能のリストを見つけるために機能リポジトリ(105)を探索し得る。NBMPソース(101)からのワークフロー記述を使用して、ワークフローマネージャ(103)は、ワークフローを実施するために機能リポジトリ(105)から機能を見つけることができ、このことは、NBMPソース(101)からのメディア処理のための情報に依存し得る。メディア処理のための情報は、入力および出力記述、要求された処理の記述、および機能ディレクトリ(105)内の機能に関する他の記述子における情報を含み得る。ワークフローに含まれる適切なメディア処理タスクへのソース要求のマッピングは、ネットワーク内のNBMPの実装の一部とすることができる。タスク作成時に入力ポート名および出力ポート名で入力ソースを参照およびリンクするために、入力ポートおよび出力ポートが入力ストリームを参照するために使用され得る。
【0043】
タスクとしてインスタンス化される適切な機能の探索は、ワークフローマネージャ(103)によって機能ディスカバリAPIを使用して実行され得る。あるいは、ワークフローマネージャ(103)は、機能ディスカバリAPIを使用して、機能リポジトリ(105)内の一部またはすべての適切な機能の詳細情報を取得することができる。次いで、ワークフローマネージャ(103)は、NBMPソース(101)からのメディア処理のための情報を各機能の異なる記述子と比較することができる。
【0044】
選択されたメディア処理タスクはワークフロー内で構成され得る。ワークフローに含まれる機能が特定されると、NBMPワークフローマネージャ(103)は、それぞれのタスクとして機能をインスタンス化し、ワークフローにタスクが追加され得るようにタスクを構成し得る。NBMPワークフローマネージャ(103)は、NBMPソース(101)から受信したメディア処理情報から構成データを抽出し、対応するタスクを構成することができる。タスクの構成はタスクAPI(例えば、NBMPタスクAPI)を使用して実行され得る。
【0045】
タスクの割り当ておよび分配の例が以下に説明される。ワークフローマネージャ(103)は、処理デプロイメントを行い、メディア処理エンティティを構成するためにワークフローを使用することができる。一例では、計算集約的なメディア処理要求の場合、ワークフローマネージャ(103)は、複数の計算インスタンスを設定し、複数の計算インスタンス間でワークロードを分散させることができる。よって、ワークフローマネージャ(103)は、必要に応じて複数の計算インスタンスを連結および構成することができる。一例では、ワークフローマネージャ(103)は、同じタスクを複数のインスタンスに割り当て、選択されたスケジューリングメカニズムを使用して複数のインスタンス間でワークロードを分散するようにロードバランサをプロビジョニングする。別の例では、ワークフローマネージャ(103)は、同じタスクの異なる操作を異なるインスタンス(例えば、並列操作)に割り当てる。上記の両方の例において、ワークフローマネージャ(103)は、インスタンス間にワークフロー経路を設定することができ、よって、適切なワークロードを首尾よく実現することができる。ワークフローマネージャ(103)は、処理されたメディアデータ/ストリームをワークフローグラフ内の次のタスクにプッシュする(またはプルメカニズムを介して利用可能にする)ようにタスクを構成し得る。
【0046】
ワークフローマネージャ(103)がNBMPソース(101)からWDDを受信すると、ワークフローマネージャ(103)は、ワークフローに挿入されるメディア処理機能の選択を実行することができる。ワークフローに含まれるタスクのリストがコンパイルされると、ワークフローマネージャ(103)は、ワークフローを用意するためにタスクを連結することができる。
【0047】
図2は、並列セグメント処理モードの例示的な実施形態を示す。
図2に示されるように、関連する例では、データストリーム(または入力データストリーム)(204)がタスクT(または処理タスクT)(202)を受けるために送信され得、データストリーム(204)は複数のセグメントを含むことができる。例えば、タスクT(202)は、メディア処理の場合、符号化プロセス、復号プロセス、ダウンサンプリングプロセス、アップスケーリングプロセス、フレームスティッチングプロセス、投影プロセス、抽出プロセス、およびインデックス付けプロセスのうちの1つであり得る。データストリーム(204)がタスクT(202)によって処理されると、出力データストリーム(または処理されたデータストリーム)(206)が生成され得る。本開示では、データストリーム(204)は1:N分割タスク(または分割操作、または分割機能)(208)に供給され得、ここでデータストリーム(204)は1:N分割タスクによってN個のサブストリーム(204_0)~(204_N-1)に分割され得る。N個のサブストリーム(204_0)~(204_N-1)の各々が、データストリーム(204)の1つまたは複数のセグメントを含み得る。いくつかの実施形態では、データストリーム(204)は1:N分割タスクによって不均等に分割され得る。他の実施形態では、データストリーム(204)は1:N分割タスクによって均等に分割され得る。
【0048】
N個のサブストリーム(204_0)~(204_N-1)は、N個のサブ処理タスクT
0~T
N-1(またはタスクTのN個のインスタンスT
0~T
N-1)にさらに供給され得る。
図2に示されるように、サブストリーム(204_0)~(204_N-1)の各々が、それぞれのサブ処理タスク(またはタスクTのそれぞれのインスタンス)によって処理され得る。いくつかの実施形態では、N個のサブ処理タスクT
0~T
N-1の各々が、処理タスクT(202)と同じプロセスを実行し得る。例えば、処理タスクT(202)が符号化プロセスである場合、N個のサブ処理タスクT
0~T
N-1も符号化プロセスであり得る。よって、サブストリーム(204_0)~(204_N-1)の各々が、それぞれの符号化プロセスによって処理され得る。加えて、N個のサブ処理タスクT
0~T
N-1は、並列にまたは独立して操作され得、このことは、N個のサブストリーム(204_0)~(204_N-1)が同時に処理される必要がないことを意味する。
【0049】
N個のサブストリーム(204_0)~(204_N-1)は、N個の処理されたサブストリーム(206_0)~(206_N-1)を生成するためにN個のサブ処理タスクT0~TN-1によって処理され得、N個の処理されたサブストリーム(206_0)~(206_N-1)の各々が、それぞれのサブ処理タスクによって生成される。例えば、サブストリーム(206_0)は、サブストリーム(204_0)を処理することによってサブ処理タスクT0により生成され得る。N個の処理されたサブストリーム(206_0)~(206_N-1)は、N:1マージ操作(またはマージタスク)(206)にさらに供給され得、N:1マージ操作は、出力ストリーム(206)を生成するためにN個の処理されたサブストリーム(206_0)~(206_N-1)をマージし得る。出力データストリーム206は、処理タスクT(またはタスクT)(202)が1:N分割操作(208)なしでデータストリーム(204)に直接適用されるときに生成される出力データストリーム(206)と同一であることに留意されたい。
【0050】
いくつかの実施形態では、メディアストリーム(またはデータストリーム、または入力データストリーム)204は連続である。よって、1:N分割タスク(または1:N分割操作)(208)は、メディアストリーム(204)をN個のメディアサブストリーム(またはN個のサブストリーム)(204_0)~(204_N-1)に分割するように構成される。サブストリーム(204_0)~(204_N-1)の各々が、対応するサブストリームを生成するためにタスクT(またはサブ処理タスク)のインスタンスによって処理される。処理されたサブストリーム(例えば、(206_0)~(206_N-1))は、タスクT(202)によって生成された出力メディアストリームに等しい出力メディアストリーム(またはデータストリーム)(206)を生成するために、一緒にインターリーブされ得る(または一緒にマージされ得る)。
【0051】
本開示では、1:N分割機能(または操作またはタスク)およびN:1マージ機能(または操作またはタスク)は、データストリーム(またはメディアストリーム)のセグメントの境界に対して作用し得る。セグメントの各々が、タスクT(202)のタスクセグメント持続時間(TSD)またはその倍数に等しい持続時間を有することができ、タスクT(202)のTSDは、フレームの数(例えば、5フレーム)および秒の数(例えば、5秒)とすることができる。このため、セグメント、ひいてはサブストリームは、サブ処理タスク(またはタスクTのインスタンス)T0,...,TN-1によって処理されるという点で互いに独立であり得る。タスクTのインスタンス(例えば、T0,...,TN-1)は、セグメントを同時に処理する必要はないことに留意されたい。セグメントおよびサブストリームは独立であるため、タスクTのインスタンスの各々がそれぞれの速度で実行することができる。
【0052】
加えて、対応するサブストリームにおけるセグメントの各々が、それぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを運ぶため、セグメントは正しい順序で一緒に多重化され得る。例えば、セグメントは、セグメントの開始時間に従って多重化され得る。
【0053】
1:N分割機能およびN:1マージ機能は、それぞれ
図3および
図4に示されるiFIFOバッファを使用して実装され得る。
図3に示されるように、1:N分割機能(208)は、データストリーム(204)をN個のサブストリーム(204_0)~(204_N-1)に分割するように構成された分割バッファ(300)を介して実装され得る。分割バッファ(300)は、入力iFIFOバッファ(302)と、入力iFIFOバッファ(302)に結合されたN個のサブ入力iFIFOバッファ(304_0)~(304_N-1)とを含み得る。入力iFIFOバッファ(302)は、データストリーム(例えば、(204))とデータストリームのセグメントのインデックス情報とを受信し、データストリームのセグメントをN個のサブ入力iFIFOバッファ(304_0)~(304_N-1)に分配するように構成される。インデックス付き情報は、セグメントの各々のそれぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを含み得る。N個のサブ入力iFIFOバッファ(304_0)~(304_N-1)の各々が、入力iFIFOバッファ(302)から1つまたは複数のセグメントを受信し、1つまたは複数のセグメントを含む対応するサブストリーム(例えば、(204_0)~(204_N-1))を出力し得る。さらに、サブストリームの各々が、対応するサブ処理タスク(例えば、T
0~T
N-1)を受けるために送信され得る。
【0054】
図4は、N:1マージ機能(212)が、N個の処理されたサブストリームを出力データストリームにマージするように構成されたマージバッファ(400)を介して実装され得ることを示す。
図4に示されるように、マージバッファ(400)は、出力iFIFOバッファ(402)と、出力iFIFOバッファ(402)に結合されたN個のサブ出力iFIFOバッファ(404_0)~(404_N-1)とを含み得る。
図4に示されるように、N個のサブ出力iFIFOバッファ(404_0)~(404_N-1)が処理されたサブストリーム(例えば、(206_0)~(206_N-1))を受信するように構成され、サブ出力iFIFOバッファの各々が対応する処理サブストリームを受信することができる。例えば、サブ出力iFIFOバッファ(404_0)は処理されたサブストリーム(206_0)を受信することができる。出力iFIFOバッファ(402)は、(i)N個のサブ出力iFIFOバッファ(404_0)から(404_N-1)から処理されたサブストリーム(例えば、(206_0)~(206_N-1))を受信し、(ii)処理されたサブストリームのセグメントのインデックス情報に基づいて処理されたサブストリームをマージし、(iii)出力データストリーム(206)を生成するように構成される。
【0055】
本開示では、分割タスクとマージタスクとの間の切り替えは、データストリームを均一にインターリーブすることを必要としない。iFIFOがオーバーフローしない限り、データストリームのセグメントの各々がそれぞれのタイミングを有し、処理後にセグメントのタイミングに従ってセグメントが正しい場所(例えば、正しい順序)に戻され得る(または一緒にマージされ得る)ため、任意の分割操作またはマージ操作がデータストリームに対して実行され得る。
【0056】
図5は、データストリームのセグメントのインデックス付き情報に従った順序で入力データストリームのセグメントを記憶するように構成されたiFIFOバッファによるiFIFO機能の概略図である。
図5に示されるように、入力データストリーム(502)は、入力iFIFOバッファ(302)または出力iFIFOバッファ(402)などの上述のiFIFOバッファと同じ機能を有し得るiFIFOバッファ(500)に送信され得る。入力データストリーム(502)はセグメント(502_0)~(502_N-1)を含むことができ、入力データストリーム(502)のセグメント(502_0)~(502_N-1)の各々が、開始時間s(msec)、持続時間d(msec)、およびそれぞれの長さl(バイト)を含むそれぞれのインデックス付き情報を有し得る。よって、セグメント(502_0)~(502_N-1)は、セグメント(502_0)~(502_N-1)のインデックス付き情報に従った順序、例えば開始時間に従った順序でiFIFOバッファ(500)に記憶される。iFIFOバッファ(500)では、最初の入力エントリが最初の出力エントリである。よって、セグメント(502_0)~(502_N-1)は、セグメント(502_0)~(502_N-1)がiFIFOバッファ(500)に記憶された順序に従って出力データストリーム(504)を形成するために出力される。例えば、セグメント(502_0)は、最初の開始時間を有し、そうすると、最初にiFIFOバッファ500に格納され得る。これにより、セグメント(502_0)が出力データストリーム(504)において最初に出力され得る。
【0057】
近年、クラウド上のコンテナ化されたアプリケーションが普及しており、タスク/機能の容易なスケーリングを可能にしている。しかしながら、クラウドコンテナは、多くの場合、状態を有さない。したがって、タスクの複数のインスタンスがコンテナとして実行される場合、タスクの複数のインスタンスは、それら自体のまたは他のものの状態および内部データに依存することができない。
【0058】
本開示では、セグメントに基づいて実行される1:N分割機能およびN:1マージ機能によって、セグメントの各々を独立して処理することができ、コンテナの状態を維持する必要がないため、コンテナ化されたメディアタスクおよびワークフローの使用が可能になる。
【0059】
図6は、本開示の一実施形態によるプロセス(600)の概要を示すフローチャートを示す。一例では、プロセス(600)は、メディアデータストリームまたはデータストリームなどの入力データを処理するためにデータ処理システム(例えば、NBMPシステム)(100)を使用して実装される。いくつかの実施形態では、プロセス(600)はソフトウェア命令において実施され、よって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(600)を行う。プロセスは(S602)において開始し、ここで処理タスクが受信され得る。処理タスクは複数のセグメントを含むデータストリームを処理するように構成される。
【0060】
次に、プロセス(600)は(S604)に進む。(S604)において、複数のセグメントをN個のサブストリームに分割するためにデータストリームに対して分割操作が実行され得、N個のサブストリームの各々が複数のセグメントのうちの1つまたは複数のセグメントを含み得、Nは正の整数であり得る。いくつかの実施形態では、分割操作を実行するために、データストリームは、データストリームをN個のサブストリームに分割するように構成された分割バッファに送信され得る。分割バッファは、入力iFIFOバッファと、入力iFIFOバッファに結合されたN個のサブ入力iFIFOバッファとを含み得る。入力iFIFOバッファは、データストリームとデータストリームのセグメントのインデックス情報とを受信し、データストリームのセグメントをN個のサブ入力iFIFOバッファに分配するように構成される。N個のサブ入力iFIFOバッファの各々は、入力iFIFOバッファからそれぞれの1つまたは複数のセグメントを受信し、それぞれの1つまたは複数のセグメントを含む対応するサブストリームをN個のサブ処理タスクのうちの異なるサブ処理タスクに出力することができる。いくつかの実施形態では、データストリームはセグメントの境界に従って分割される。
【0061】
(S606)において、N個のサブ処理タスクが、N個の処理されたサブストリームを生成するためにN個のサブストリームに対して実行され得る。いくつかの実施形態では、N個のサブ処理タスクの各々が処理タスクと同じプロセスを実行し得る。いくつかの実施形態では、N個のサブ処理タスクが、N個のサブストリームに対して並列に実行され得る。
【0062】
次いで、プロセス(600)は(S608)に進み、ここでマージ操作が、出力データストリームを生成するためにN個の処理されたサブストリームに対して実行され得る。出力データストリームは、処理タスクが分割操作なしでデータストリームに直接適用されるときに生成される出力データストリームと同一であり得る。いくつかの実施形態では、マージ操作を実行するために、N個の処理されたサブストリームが、N個の処理されたサブストリームを出力データストリームにマージするように構成されたマージバッファによって受信され得る。マージバッファは、出力iFIFOバッファと、出力iFIFOバッファに結合されたN個のサブ出力iFIFOバッファとを含み得る。N個のサブ出力iFIFOバッファは処理されたサブストリームを受信するように構成され得る。出力iFIFOバッファは、(i)N個のサブ出力iFIFOバッファから処理されたサブストリームを受信し、(ii)処理されたサブストリームのセグメントのインデックス情報に基づいて処理されたサブストリームをマージし、(iii)出力データストリームを出力するように構成され得る。
【0063】
上述の技術は、コンピュータ可読命令を使用し、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実装され得る。
【0064】
本開示の方法および実施形態は、別々に使用されてもよいし、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、機能、またはタスクの各々が、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
【0065】
上述の技術は、コンピュータ可読命令を使用し、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実装され得る。例えば、
図7は、開示された主題の特定の実施形態を実装するのに適した例示的なコンピュータシステム(700)を示す。
【0066】
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理ユニット(CPU)、およびグラフィックス処理ユニット(GPU)などによって直接、またはインタープリテーション、およびマイクロコード実行などを介して実行され得る命令を含むコードを作成するためにアセンブリ、コンパイル、またはリンクなどのメカニズムを経ることができる任意の適切な機械コードまたはコンピュータ言語を使用してコード化され得る。
【0067】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機器、およびモノのインターネットデバイスなどを含む様々な種類のコンピュータまたはその構成要素上で実行され得る。
【0068】
コンピュータシステム(700)に関して
図7に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することは意図されていない。また、構成要素の構成もコンピュータシステム(700)の例示的な実施形態に示されている構成要素のいずれか1つまたは組み合わせに関連する依存関係または要件を有するとして解釈されるべきではない。
【0069】
コンピュータシステム(700)は、特定のヒューマンインターフェース入力デバイスを含み得る。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した1人または複数人の人間のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスはまた、音声(audio)(音声(speech)、音楽、周囲音など)、画像(走査画像、静止画像カメラから取得された写真画像など)、ビデオ(二次元ビデオ、立体ビデオを含む三次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むためにも使用され得る。
【0070】
入力ヒューマンインターフェースデバイスは、キーボード(701)、マウス(702)、トラックパッド(703)、タッチスクリーン(710)、データグローブ(図示せず)、ジョイスティック(705)、マイクロフォン(706)、スキャナ(707)、およびカメラ(708)のうちの1つまたは複数を含み得る(それぞれ1つのみを図示している)。
【0071】
コンピュータシステム(700)はまた、特定のヒューマンインターフェース出力デバイスを含み得る。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数人の人間のユーザの感覚を刺激することができる。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(710)、データグローブ(図示せず)、またはジョイスティック(705)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る)、音声出力デバイス(スピーカ(709)、ヘッドホン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(710)であって、各々がタッチスクリーン入力機能を有するまたは有さず、各々が触覚フィードバック機能を有するまたは有さず、その一部は、二次元視覚出力または立体出力などの手段を介する三次元超の出力を出力し得、仮想現実グラス(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず)など)、およびプリンタ(図示せず)を含むことができる。
【0072】
コンピュータシステム(700)はまた、人間がアクセス可能な記憶デバイスおよびそれらの関連媒体、例えば、CD/DVDなどの媒体(721)を伴うCD/DVD ROM/RWを含む光学媒体(720)、サムドライブ(722)、リムーバブルハードドライブまたはソリッドステートドライブ(723)、テープおよびフロッピーディスク(図示せず)などのレガシー磁気媒体、およびセキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースのデバイスなどを含み得る。
【0073】
また、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことを当業者には理解されたい。
【0074】
コンピュータシステム(700)はまた、1つまたは複数の通信ネットワークに対するインターフェースを含み得る。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、広域、都市規模、車両および産業、リアルタイム、ならびに遅延耐性などのものであり得る。ネットワークの例としては、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、およびLTEなどを含むセルラネットワーク、ケーブルTV、衛星TV、および地上波放送TVを含むテレビ有線または無線広域デジタルネットワーク、ならびにCANBusを含む車両および産業用ネットワークなどが挙げられる。特定のネットワークは、一般に、特定の汎用データポートまたはペリフェラルバス(749)に取り付けられた外部ネットワークインターフェースアダプタを必要とし(例えば、コンピュータシステム(700)のUSBポートなど)、他のものは、一般に、後述するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラネットワークインターフェース)によってコンピュータシステム(700)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(700)は他のエンティティと通信することができる。そのような通信は、単方向かつ受信のみ(例えば、放送TV)、単方向かつ送信のみ(例えば、CANbusから特定のCANbusデバイス)、または例えばローカルまたは広域デジタルネットワークを使用する他のコンピュータシステムに対して双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースの各々で使用され得る。
【0075】
上述のヒューマンインターフェースデバイス、ヒューマンアクセス可能ストレージデバイス、およびネットワークインターフェースは、コンピュータシステム(700)のコア(740)に取り付けられ得る。
【0076】
コア(740)は、1つまたは複数の中央処理ユニット(CPU)(741)、グラフィックス処理ユニット(GPU)(742)、フィールドプログラマブルゲートエリア(FPGA)(743)の形態の専用プログラマブル処理ユニット、および特定のタスクのためのハードウェアアクセラレータ(744)などを含み得る。これらのデバイスは、読み取り専用メモリ(ROM)(745)、ランダムアクセスメモリ(746)、内部のユーザがアクセスできないハードドライブ、SSDなど(747)などの内部大容量ストレージと共に、システムバス(748)を介して接続され得る。いくつかのコンピュータシステムでは、システムバス(748)は、追加のCPU、およびGPUなどによる拡張を可能にするために1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺機器は、コアのシステムバス(748)に直接取り付けることも、ペリフェラルバス(749)を介して取り付けることもできる。ペリフェラルバスのアーキテクチャとしては、PCI、およびUSBなどが挙げられる。
【0077】
CPU(741)、GPU(742)、FPGA(743)、およびアクセラレータ(744)は、組み合わされて上述のコンピュータコードを構成し得る特定の命令を実行することができる。そのコンピュータコードは、ROM(745)またはRAM(746)に記憶され得る。過渡的なデータもRAM(746)に記憶することができ、一方、永続的なデータは、例えば内部大容量ストレージ(747)に記憶することができる。メモリデバイスのいずれかに対する高速記憶および検索は、1つまたは複数のCPU(741)、GPU(742)、大容量ストレージ(747)、ROM(745)、およびRAM(746)などと密接に関連付けられ得るキャッシュメモリの使用によって可能にされ得る。
【0078】
コンピュータ可読媒体は、様々なコンピュータ実施動作を実行するためのコンピュータコードを内部に有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよいし、コンピュータソフトウェア技術の当業者に周知で利用可能な種類のものであってもよい。
【0079】
限定ではなく、例として、アーキテクチャ(700)、特にコア(740)を有するコンピュータシステムは、プロセッサ(複数可)(CPU、GPU、FPGA、およびアクセラレータなどを含む)が1つまたは複数の有形のコンピュータ可読媒体で具現化されたソフトウェアを実行した結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザがアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(747)またはROM(745)などの非一時的な性質のコア(740)の特定のストレージに関連付けられた媒体であり得る。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア(740)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(740)に、また具体的には内部のプロセッサ(CPU、GPU、およびFPGAなどを含む)に、ソフトウェアによって定義されたプロセスに従ってRAM(746)に記憶されたデータ構造を定義することと、そのようなデータ構造を修正することとを含む、本明細書で説明される特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ロジックがハードワイヤードまたは他の方法で回路(例えば、アクセラレータ(744))に具現化された結果として機能を提供することができ、これは、本明細書で説明される特定のプロセスまたは特定のプロセスの特定の部分を実行するためにソフトウェアの代わりに、またはソフトウェアと共に動作することができる。ソフトウェアに言及する場合、必要に応じて、ロジックを包含することができ、逆もまた同様である。コンピュータ可読媒体に言及する場合、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアとの任意の適切な組み合わせを包含する。
【0080】
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る変更、置換、および様々な代替の均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないまたは説明されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案し得ることが理解されよう。
【符号の説明】
【0081】
100 データ処理システム/NBMPシステム
101 データソース/NBMPソース
103 ワークフローマネージャ
105 機能リポジトリ
111 データソースエンティティ/メディアソース
113 データ処理エンティティ
115 データシンクエンティティ/メディアシンク
202 処理タスク
204 データストリーム
204_0~204_N-1 サブストリーム
206 出力データストリーム
206_0~206_N-1 処理されたサブストリーム
208 分割操作
212 マージ操作
300 分割バッファ
302 入力iFIFOバッファ
304、304_0~304_N-1 サブ入力iFIFOバッファ
400 マージバッファ
402 出力iFIFOバッファ
404、404_0~404_N-1 サブ出力iFIFOバッファ
500 iFIFOバッファ
502_0~502_N-1 セグメント
502 入力データストリーム
504 出力データストリーム
600 プロセス
700 コンピュータシステム
701 キーボード
702 マウス
703 トラックパッド
705 ジョイスティック
706 マイクロフォン
707 スキャナ
708 カメラ
709 スピーカ
710 タッチスクリーン
720 CD/DVD ROM/RWを含む光学媒体
721 CD/DVDなどの媒体
722 サムドライブ
723 リムーバブルハードドライブまたはソリッドステートドライブ
740 コア
741 中央処理ユニット(CPU)
742 グラフィックス処理ユニット(GPU)
743 フィールドプログラマブルゲートエリア(FPGA)
744 アクセラレータ
745 読み取り専用メモリ(ROM)
746 ランダムアクセスメモリ
747 大容量ストレージ
748 システムバス
749 ペリフェラルバス
T 処理タスク
T0~TN-1 サブ処理タスク
【手続補正書】
【提出日】2021-09-14
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データ処理システムによって、データストリームの並列処理
を行うための方法であって、
複数のセグメントを含む前記データストリームを処理するように構成された処理タスクを受信するステップと、
前記複数のセグメントをN個のサブストリームに分割するために前記データストリームに対して分割操作を実行するステップであって、前記N個のサブストリームの各々は前記複数のセグメントのうちの1つまたは複数のセグメントを含み、前記Nが正の整数である、ステップと、
N個の処理されたサブストリームを生成するために前記N個のサブストリームに対してN個のサブ処理タスクを実行するステップと、
マージされた出力データストリームを生成するために前記N個の処理されたサブストリームに対してマージ操作を実行するステップであって、前記マージされた出力データストリームは、前記処理タスクが前記分割操作なしで前記データストリームに直接適用されるときに生成される出力データストリームと同一である、ステップと
を含む、方法。
【請求項2】
前記N個のサブ処理タスクの各々は前記処理タスクと同じプロセスを実行する、請求項1に記載の方法。
【請求項3】
前記分割操作を実行する前記ステップは、
前記データストリームを前記N個のサブストリームに分割するように構成された分割バッファに前記データストリームを送信するステップであって、
前記分割バッファは、入力インデックス付き先入れ先出し(iFIFO)バッファと、前記入力iFIFOバッファに結合されたN個のサブ入力iFIFOバッファとを含み、
前記入力iFIFOバッファは、前記データストリームと前記データストリームの前記
複数のセグメントのインデックス情報とを受信し、前記データストリームの前記
複数のセグメントを前記N個のサブ入力iFIFOバッファに分配するように構成され、
前記N個のサブ入力iFIFOバッファの各々は、前記入力iFIFOバッファから前記1つまたは複数のセグメントを受信し、前記1つまたは複数のセグメントを含む対応するサブストリームを前記N個のサブ処理タスクのうちの異なるサブ処理タスクに出力する、ステップ
をさらに含む、請求項1
または2に記載の方法。
【請求項4】
前記分割操作を実行する前記ステップは、
前記
複数のセグメントの境界に従って前記データストリームを分割するステップ
を含む、請求項3に記載の方法。
【請求項5】
前記データストリームの前記
複数のセグメントの各々の前記インデックス情報は、それぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを含む、請求項4に記載の方法。
【請求項6】
前記データストリームの前記
複数のセグメントの各々の前記それぞれの持続時間は、前記処理タスクのプロセスセグメント持続時間またはその倍数に等しい、請求項5に記載の方法。
【請求項7】
前記処理タスクの前記プロセスセグメント持続時間はフレーム数および秒数のうちの一方である、請求項6に記載の方法。
【請求項8】
前記処理タスクは、符号化プロセス、復号プロセス、ダウンサンプリングプロセス、アップスケーリングプロセス、フレームスティッチングプロセス、投影プロセス、抽出プロセス、およびインデックス付けプロセスのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項9】
前記N個のサブストリームに対して
前記N個のサブ処理タスクを実行する前記ステップは、
前記N個のサブストリームに対して前記N個のサブ処理タスクを並列に実行するステップ
をさらに含む、請求項3に記載の方法。
【請求項10】
前記マージ操作を実行する前記ステップは、
前記N個の処理されたサブストリームを前記マージされた出力データストリームにマージするように構成されたマージバッファによって前記N個の処理されたサブストリームを受信するステップであって、
前記マージバッファは、出力iFIFOバッファと、前記出力iFIFOバッファに結合されたN個のサブ出力iFIFOバッファとを含み、
前記N個のサブ出力iFIFOバッファは、前記N個の処理されたサブストリームを受信するように構成され、
前記出力iFIFOバッファは、(i)前記N個のサブ出力iFIFOバッファから前記
N個の処理されたサブストリームを受信し、(ii)前記
N個の処理されたサブストリームの前記
複数のセグメントの前記インデックス情報に基づいて前記
N個の処理されたサブストリームをマージし、(iii)前記マージされた出力データストリームを出力するように構成される、ステップ
をさらに含む、請求項9に記載の方法。
【請求項11】
データストリームの並列処理のための装置であって、
複数のセグメントを含む前記データストリームを処理するように構成された処理タスクを受信し、
前記複数のセグメントをN個のサブストリームに分割するために前記データストリームに対して分割操作を実行し、前記N個のサブストリームの各々は前記複数のセグメントのうちの1つまたは複数のセグメントを含み、前記Nは正の整数であり、
N個の処理されたサブストリームを生成するために前記N個のサブストリームに対してN個のサブ処理タスクを実行し、
マージされた出力データストリームを生成するために前記N個の処理されたサブストリームに対してマージ操作を実行し、前記マージされた出力データストリームは、前記処理タスクが前記分割操作なしで前記データストリームに直接適用されるときに生成される出力データストリームと同一である、
ように構成された処理回路
を備える、装置。
【請求項12】
前記N個のサブ処理タスクの各々は前記処理タスクと同じプロセスを実行する、請求項11に記載の装置。
【請求項13】
前記処理回路は、
前記データストリームを前記N個のサブストリームに分割するように構成された分割バッファに前記データストリームを送信し、
前記分割バッファは、入力インデックス付き先入れ先出し(iFIFO)バッファと、前記入力iFIFOバッファに結合されたN個のサブ入力iFIFOバッファとを含み、
前記入力iFIFOバッファは、前記データストリームと前記データストリームの前記
複数のセグメントのインデックス情報とを受信し、前記データストリームの前記
複数のセグメントを前記N個のサブ入力iFIFOバッファに分配するように構成され、
前記N個のサブ入力iFIFOバッファの各々は、前記入力iFIFOバッファから前記1つまたは複数のセグメントを受信し、前記1つまたは複数のセグメントを含む対応するサブストリームを前記N個のサブ処理タスクのうちの異なるサブ処理タスクに出力する、
ようにさらに構成される、請求項11
または12に記載の装置。
【請求項14】
前記処理回路は、
前記
複数のセグメントの境界に従って前記データストリームを分割する
ようにさらに構成される、請求項13に記載の装置。
【請求項15】
前記データストリームの前記
複数のセグメントの各々の前記インデックス情報は、それぞれの開始時間、それぞれの持続時間、およびそれぞれの長さを含む、請求項14に記載の装置。
【請求項16】
前記データストリームの前記
複数のセグメントの各々の前記それぞれの持続時間は、前記処理タスクのプロセスセグメント持続時間またはその倍数に等しく、前記処理タスクの前記プロセスセグメント持続時間はフレーム数および秒数のうちの一方である、請求項15に記載の装置。
【請求項17】
前記処理タスクは、符号化プロセス、復号プロセス、ダウンサンプリングプロセス、アップスケーリングプロセス、フレームスティッチングプロセス、投影プロセス、抽出プロセス、およびインデックス付けプロセスのうちの少なくとも1つを含む、請求項11に記載の装置。
【請求項18】
前記処理回路は、
前記N個のサブストリームに対して前記N個のサブ処理タスクを並列に実行する
ように構成される、請求項13に記載の装置。
【請求項19】
前記処理回路は、
前記N個の処理されたサブストリームを前記マージされた出力データストリームにマージするように構成されたマージバッファによって前記N個の処理されたサブストリームを受信し、
前記マージバッファは、出力iFIFOバッファと、前記出力iFIFOバッファに結合されたN個のサブ出力iFIFOバッファとを含み、
前記N個のサブ出力iFIFOバッファは、前記N個の処理されたサブストリームを受信するように構成され、
前記出力iFIFOバッファは、(i)前記N個のサブ出力iFIFOバッファから前記
N個の処理されたサブストリームを受信し、(ii)前記
N個の処理されたサブストリームの前記
複数のセグメントの前記インデックス情報に基づいて前記
N個の処理されたサブストリームをマージし、(iii)前記マージされた出力データストリームを出力するように構成される、
ようにさらに構成される、請求項18に記載の装置。
【請求項20】
データストリームの並列処理のための
装置のコンピュータに
、請求項1から10のうちいずれか一項に記載の方法を実行させる
ためのコンピュータプログラム。
【国際調査報告】