(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-23
(45)【発行日】2023-07-03
(54)【発明の名称】セグメント化データストリーム処理のための方法、装置、およびプログラム
(51)【国際特許分類】
H04N 21/231 20110101AFI20230626BHJP
H04N 21/242 20110101ALI20230626BHJP
【FI】
H04N21/231
H04N21/242
(21)【出願番号】P 2021555823
(86)(22)【出願日】2020-09-25
(86)【国際出願番号】 US2020052659
(87)【国際公開番号】W WO2021062111
(87)【国際公開日】2021-04-01
【審査請求日】2021-09-15
(32)【優先日】2019-09-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-09-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】醍醐 一貴
(56)【参考文献】
【文献】特開2006-197401(JP,A)
【文献】特開2013-214800(JP,A)
【文献】米国特許出願公開第2017/0237794(US,A1)
【文献】特開2009-272706(JP,A)
【文献】Information technology-Coded representation of immersive media-Part8: Network Based Media Processing,2018年,PP.72-79,[online] ,<URL:https://mpeg.chiariglione.org/sites/default/files/files/standards/parts/docs/w18236_1.zip>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00-21/858
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
ストリーミングメディアの第1のデータストリームから区分された第1のセグメントの第1のシーケンスを受信するステップ
、および前記受信された第1のセグメントの各々に関連付けられたそれぞれの属性を受信するステップと、
第1の
先入れ先出し(FIFO
)バッファに前記第1のセグメント
および前記それぞれの属性を格納するステップであって、
各第1のセグメントおよび前記それぞれの属性が前記第1のFIFOバッファのエントリを形成し、各第1のセグメントに関連付けられた前記属性は、それぞれの第1のセグメントの開始時間、前記それぞれの第1のセグメントの持続時間、および前記それぞれの第1のセグメントのバイト数を示す前記それぞれの第1のセグメントの長さを含む、ステップと、
ネットワークベースのメディア処理(NBMP)システムにおけるワークフローの第1のメディア処理タスクを使用して、前記第1のFIFOバッファから
出力された前記第1のセグメントを処理するステップであって
、前記第1のセグメント
および前記それぞれの属性は、
前記第1のFIFOバッファからエントリごとに出力され、互いに独立して処理される、ステップと、
を含む方法。
【請求項2】
前記第1のセグメントの前記第1のシーケンスを受信する前記ステップが、
前記ストリーミングメディアの前記第1のデータストリームを連続ストリームからセグメント化ストリームに区分する連続からセグメント化への変換機能から前記第1のセグメントの前記第1のシーケンスを受信するステップ
を含む、請求項1に記載の方法。
【請求項3】
前記第1のセグメントの前記第1のシーケンスを受信する前記ステップが、
前記ストリーミングメディアの前記第1のデータストリームから区分された前記第1のセグメントの前記第1のシーケンスを、前記NBMPシステムにおける前記ワークフローの
第2のメディア処理タスクから受信するステップ
を含む、請求項1に記載の方法。
【請求項4】
前記ストリーミングメディアの前記第1のデータストリームが
、前記NBMPシステム内の前記ワークフローの
第3のメディア処理タスクから受信される、請求項1に記載の方法。
【請求項5】
各処理済みの第1のセグメントおよび各処理済みの第1のセグメントに関連付けられた属性が第2のFIFOバッファのエントリを形成する前記第2のFIFOバッファに、前記ワークフローの前記第1のメディア処理タスクから出力された前記処理済みの第1のセグメントを格納するステップであって、各処理済みの第1のセグメントに関連付けられた前記属性は
、それぞれの
処理済みの第1のセグメントの前記開始時間、前記それぞれの
処理済みの第1のセグメントの前記持続時間、および
前記それぞれの処理済みの第1のセグメントのバイト数を示す前記それぞれの処理済みの第1のセグメントの長さを含む、ステップ
をさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記第2のFIFOバッファに格納された前記エントリを、各処理済みの第1のセグメントに関連付けられた前記属性を持たない連続ストリームに変換するステップ
をさらに含む、請求項5に記載の方法。
【請求項7】
前記ストリーミングメディアの第2のデータストリームから区分された第2のセグメントの第2のシーケンスを受信するステップと、
各第2のセグメントおよび各第2のセグメントに関連付けられた属性が第3のFIFOバッファのエントリを形成する前記第3のFIFOバッファに前記第2のセグメントを格納するステップであって、各第2のセグメントに関連付けられた前記属性は、それぞれの第2のセグメントの開始時間、前記それぞれの第2のセグメントの持続時間、および前記それぞれの第2のセグメントのバイト数を示す前記それぞれの第2のセグメントの長さを含む、ステップと、
前記NBMPシステムにおける前記ワークフローの第
4のメディア処理タスクを使用して、前記第3のFIFOバッファから
出力された前記第2のセグメントを処理するステップであって、前記第3のFIFOバッファから
出力された前記第2のセグメントは互いに独立して処理される、ステップと、
をさらに含み、
前記第1のデータストリームから前記第1のセグメントの前記第1のシーケンスを区分することは、前記第1のデータストリームの各第1のセグメントおよび前記第2のデータストリームの
対応する同期された第2のセグメントが前記ストリーミングメディアの同じ時間スパンに対応するように、前記第2のデータストリームから前記第2のセグメントの前記第2のシーケンスを区分することと同期される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記第1のデータストリームの各第1のセグメントおよび前記第2のデータストリームの前記
対応する同期された第2のセグメントが、各第1または第2のセグメントに関連付けられたそれぞれの属性において同じ開始時間を有する、請求項7に記載の方法。
【請求項9】
請求項1から8のいずれか一項に記載の方法を実行するように構成された装置。
【請求項10】
コンピュータに請求項1から8のいずれか一項に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
参照による援用
本開示は、2020年9月22日に出願された米国特許出願第17/028,854号の“First-In First-Out Function for Segmented Data Stream Processing”に対する優先権の利益を主張し、同出願は、2019年9月28日に出願された米国仮出願第62/907,625号の“Indexed FIFO Functions for Segmented Processing in Cloud”に対する優先権の利益を主張する。先行出願の開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本開示は、コンピューティングプラットフォーム(例えば、コンピュータまたはクラウドプラットフォーム)上のセグメント化データストリーム処理のための先入れ先出し(FIFO)バッファに関する。いくつかの実施形態は、ネットワークベースのメディア処理(NBMP)に関する。
【背景技術】
【0003】
本明細書で提供される背景技術の説明は、本開示の文脈を一般的に提示することを目的としている。この背景技術セクションに記載されている範囲での、現在指名されている発明者の研究、および出願時に先行技術として適格ではない可能性のある説明の態様は、本開示に対する先行技術として明示的または黙示的に認められていない。
【0004】
マルチメディアサービスプロバイダは、顧客に到達するために、それらのサービスを複数のクラウドおよびネットワークサービスプロバイダに適合させるという課題に直面している。これらのクラウドおよびネットワークサービスプロバイダは、顧客に計算リソースを割り当てるために、独自のアプリケーションプログラミングインターフェース(API)を定義することが多い。フラグメンテーションに対処し、任意のクラウドプラットフォーム上および任意のIPネットワーク上でメディア処理を実行するための統一された方法を提供するために、ネットワークベースのメディア処理(NBMP)規格が開発されている。NBMPは、既製のメディア処理機能の実装を使用し、それらを一緒に構成してメディア処理ワークフローを作成することができるワークフローマネージャを定義する。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の態様は、セグメント化メディアデータ処理の方法を提供する。本方法は、ストリーミングメディアの第1のデータストリームから区分された第1のセグメントの第1のシーケンスを受信するステップと、第1のセグメントを第1の先入れ先出し(FIFO)バッファに格納するステップと、を含むことができる。第1のFIFOバッファにおいて、各第1のセグメントおよび各第1のセグメントに関連付けられた属性は、第1のFIFOバッファのエントリを形成する。各第1のセグメントに関連付けられた属性は、それぞれの第1のセグメントの開始時間、それぞれの第1のセグメントの持続時間、およびそれぞれの第1のセグメントのバイト数を示すそれぞれの第1のセグメントの長さを含むことができる。第1のFIFOバッファから受信された第1のセグメントは、ネットワークベースのメディア処理(NBMP)システムにおけるワークフローの第1のメディア処理タスクを使用して処理され得る。第1のFIFOバッファから受信された第1のセグメントは、互いに独立して処理され得る。
【0006】
一実施形態では、第1のセグメントの第1のシーケンスは、ストリーミングメディアの第1のデータストリームを連続ストリームからセグメント化ストリームに区分する連続からセグメント化への変換機能から受信される。一実施形態では、ストリーミングメディアの第1のデータストリームから区分された第1のセグメントの第1のシーケンスは、NBMPシステムにおけるワークフローのメディア処理タスクから受信される。一実施形態では、ストリーミングメディアの第1のデータストリームは、NBMPシステムのNBMPソースから、またはNBMPシステム内のワークフローのメディア処理タスクから受信される。
【0007】
本方法の一実施形態は、ワークフローの第1のメディア処理タスクから出力された処理済みの第1のセグメントを第2のFIFOバッファに格納するステップをさらに含むことができる。第2のFIFOバッファにおいて、各処理済みの第1のセグメントおよび各処理済みの第1のセグメントに関連付けられた属性は、第2のFIFOバッファのエントリを形成する。各処理済みの第1のセグメントに関連付けられた属性は、それぞれの第1のセグメントの開始時間、それぞれの第1のセグメントの持続時間、およびそれぞれの処理済みの第1のセグメントのバイト数を示すそれぞれの処理済みの第1のセグメントの長さを含むことができる。一実施形態では、第2のFIFOバッファに格納されたエントリは、各処理済みの第1のセグメントに関連付けられた属性を持たない連続ストリームに変換される。
【0008】
本方法の一実施形態は、ストリーミングメディアの第2のデータストリームから区分された第2のセグメントの第2のシーケンスを受信するステップと、第2のセグメントを第3のFIFOバッファに格納するステップと、をさらに含むことができる。第3のFIFOバッファにおいて、各第2のセグメントおよび各第2のセグメントに関連付けられた属性は、第3のFIFOバッファのエントリを形成する。各第2のセグメントに関連付けられた属性は、それぞれの第2のセグメントの開始時間、それぞれの第2のセグメントの持続時間、およびそれぞれの第2のセグメントのバイト数を示すそれぞれの第2のセグメントの長さを含むことができる。第3のFIFOバッファから受信された第2のセグメントは、NBMPシステムにおけるワークフローの第2のメディア処理タスクを使用して処理され得る。第3のFIFOバッファから受信された第2のセグメントは、互いに独立して処理される。
【0009】
第1のデータストリームから第1のセグメントの第1のシーケンスを区分することは、第1のデータストリームの各第1のセグメントおよび第2のデータストリームのそれぞれの第2のセグメントがストリーミングメディアの同じ時間スパンに対応するように、第2のデータストリームから第2のセグメントの第2のシーケンスを区分することと同期される。一実施形態では、第1のデータストリームの各第1のセグメントおよび第2のデータストリームのそれぞれの第2のセグメントは、各第1または第2のセグメントに関連付けられたそれぞれの属性において同じ開始時間を有する。
【0010】
本開示の態様は、装置を提供する。装置は、ストリーミングメディアの第1のデータストリームから区分された第1のセグメントの第1のシーケンスを受信し、第1のセグメントを第1のFIFOバッファに格納するように構成された回路を含むことができる。第1のFIFOバッファにおいて、各第1のセグメントおよび各第1のセグメントに関連付けられた属性は、第1のFIFOバッファのエントリを形成する。各第1のセグメントに関連付けられた属性は、それぞれの第1のセグメントの開始時間、それぞれの第1のセグメントの持続時間、およびそれぞれの第1のセグメントのバイト数を示すそれぞれの第1のセグメントの長さを含むことができる。第1のFIFOバッファから受信された第1のセグメントは、NBMPシステムにおけるワークフローの第1のメディア処理タスクを使用して処理され得る。第1のFIFOバッファから受信された第1のセグメントは、互いに独立して処理される。
【0011】
開示された主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかにされよう。
【図面の簡単な説明】
【0012】
【
図1】本開示の一実施形態による例示的なデータ処理システムを示す図である。
【
図2】本開示の一実施形態によるワークフローの一例を示す図である。
【
図3】本開示の一実施形態による例示的な先入れ先出し(FIFO)バッファを示す図である。
【
図4】本開示の一実施形態による例示的な連続からセグメント化への(C2S)変換機能を示す図である。
【
図5】本開示の一実施形態による例示的なセグメント化から連続への(S2C)変換機能を示す図である。
【
図6】本開示の一実施形態による例示的な処理経路を示す図である。
【
図7】本開示の一実施形態によるマルチインデックス付きセグメントFIFO(MiFIFO)機能を示す図である。
【
図8】本開示の一実施形態によるセグメント化データストリーム処理プロセスの例示的なプロセスを示す図である。
【
図9】本開示の一実施形態によるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0013】
I.ネットワークベースのメディア処理
本開示の態様は、ネットワークベースのメディア処理(NBMP)フレームワークに関連するセグメント化されたデータストリーム処理機構を説明する。NBMPフレームワークは、ネットワーク内のメディア処理を初期化および制御する(例えば、クラウドプラットフォーム上で)ために使用され得る。例えば、NBMPソースは、要求されたメディア処理を記述し、メディアデータの性質およびフォーマットに関する情報を提供する。それに応答して、NBMPワークフローマネージャは、メディア処理ワークフローを確立し、そして、ワークフローの準備ができており、要求されたメディア処理を開始できることをNBMPソースに通知することができる。次いで、メディアソースは、処理のためにネットワークへのメディアの送信を開始することができる。
【0014】
NBMPワークフローは、各々が明確に定義されたメディア処理動作を実行するメディア処理タスクの接続されたグラフとして理解され得る。ワークフローマネージャは、各タスクならびにワークフロー出力を構成および監視することによって、ワークフローの正しい動作を保証する。ワークフローマネージャは、NBMPソースから受信されたワークフロー記述に基づいて、メディア処理機能を選択し、選択された機能をタスクとしてインスタンス化する役割を担う。
【0015】
本明細書に開示された技術を使用することにより、連続データストリームをセグメントのシーケンスに変換することができる。次いで、セグメントは、各セグメントがそれぞれのセグメントの開始時間、持続時間、および長さなどの属性のセットに関連付けられた先入れ先出し(FIFO)バッファに格納され得る。そのようなセグメントは、ワークフロー内の1つまたは複数のタスクを介して独立して処理され得る。例えば、セグメントは、同じ機能の複数のインスタンスを使用して並列に処理され得る。したがって、クラウドコンピューティングプラットフォームのステートレスコンテナは、そのようなセグメント化されたメディアストリーム処理に適用され得る。
【0016】
図1は、本開示の一実施形態による例示的なNBMPシステム(100)を示している。NBMPシステム(100)は、ストリーミング、ファイル配信、プッシュベースのプログレッシブダウンロード、ハイブリッド配信、マルチパス、および異種ネットワーク環境などの既存のメディア配信方法をサポートすることができる。NBMPシステム(100)はまた、ネットワーク支援メディア品質強化(例えば、仮想現実(VR)スティッチング、ビデオアップスケーリング、アダプティブストリーミングのためのモバイルエッジエンコーディング、およびコンテンツ認識クラウドトランスコーディング)、ネットワーク支援メディア配信(例えば、ライブメディア取り込み、オンライントランスコーディング、およびメディア認識キャッシング)、ネットワーク支援メディア構成(例えば、拡張ビデオストリーミング、およびカスタマイズされたメディア構成)、没入型メディア処理(例えば、ネットワーク集約ポイントクラウドメディア)などの様々なクラウドベースのメディア処理能力を提供することによって、新興メディアアプリケーションを可能にすることもできる。
【0017】
図示のように、NBMPシステム(100)は、NBMPソース(101)と、NBMPワークフローマネージャ(103)と、機能リポジトリ(105)と、メディアソース(111)と、データ処理エンティティ(MPE)(113)と、メディアシンク(115)と、を含むことができる。NBMPシステム(100)は、追加のメディアソース、メディアシンク、および/またはMPEsを含むことができる。
【0018】
NBMPソース(101)は、メディア処理エンティティ(113)によって実行されるべきメディア処理動作を記述し、あるいは指示することができる。機能リポジトリ(105)は、様々なメディア処理機能を格納することができる。NBMPソース(101)およびNBMPワークフローマネージャ(103)は、機能リポジトリ(105)からメディア処理機能を取得することができる。メディア処理機能または機能は、360ビデオストリーミングサービスにおけるスティッチングプロセス、ビデオ配信サービスにおける人工知能(AI)ベースのビデオアップスケーリングプロセスなどの特定のメディア処理プロセスを実行するために使用され得る。
【0019】
メディア処理タスクまたはタスクは、MPE(113)によって実行される機能のランタイムインスタンスとすることができる。NBMPワークフローまたはワークフローを、要求されたメディア処理を達成する1つまたは複数の接続されたタスクのグラフ(例えば、有向非巡回グラフ(DAG))によって表すことができる。NBMPワークフローマネージャ(103)またはワークフローマネージャ(103)は、例えば、ワークフロー記述文書(WDD)に基づいて、ワークフローを作成、制御、管理、および監視するためにタスクをプロビジョニングし、タスクを接続することができる。
【0020】
メディアソース(111)は、ワークフローによって処理されるべきメディアコンテンツ(例えば、メディアデータ、補足情報)を提供することができる。補足情報は、メディアデータに関するメタデータまたは補助情報を含み得る。メディアソース(111)は、ワークフローに入力を提供することができる。メディアシンク(115)は、ワークフローの出力を消費することができる。MPE(113)は、メディアコンテンツを処理するために、1つまたは複数のメディア処理タスクを実行することができる。
【0021】
NBMPシステム(100)内の異なるエンティティ(例えば、NBMPソース(101)、ワークフローマネージャ(103)、およびMPE(113))は、
図1に示すように、メディアサービス要求を呼び出してそれに応答するためにAPIを使用することができる。APIは、NBMPワークフローAPI(またはワークフローAPI)、機能発見API、およびタスクAPIを含むことができる。ワークフローAPIは、NBMPソース(101)とワークフローマネージャ(103)との間のインターフェースを提供することができる。タスクAPIは、ワークフローマネージャ(103)とメディア処理タスクとの間のインターフェースを提供することができる。機能発見APIは、ワークフローマネージャ(103)/NBMPソース(101)と機能リポジトリ(105)との間のインターフェースを提供することができる。
【0022】
上述したNBMPインターフェースは、ネットワーク内のメディア処理ワークフローを作成および制御するために使用され得る。NBMPシステム(100)は、制御プレーンとメディアプレーン(またはメディアデータプレーン)とに分割され得る。制御プレーンは、ワークフローAPI、機能発見API、およびタスクAPIを含むことができる。
【0023】
ワークフローAPIは、メディア処理ワークフローを作成および制御するためにNBMPソース(101)によって使用され得る。NBMPソース(101)は、ネットワーク内のメディア処理を構成および制御するために、ワークフローAPIを使用してワークフローマネージャ(103)と通信することができる。NBMPソース(101)が、ワークフローリソース(WR)をワークフローAPIの動作に含めることによって、ワークフローマネージャ(103)に要求を送信すると、ワークフローマネージャ(103)は、WR、含まれるWDD、および対応する記述子を解析し、要求された動作に従って適切なアクションを実行することができる。次いで、ワークフローマネージャ(103)は、応答を用いて要求を承認することができる。ワークフローAPI動作は、ワークフローの作成(例えば、CreateWorkflow)、ワークフローの更新(例えば、UpdateWorkflow)、ワークフローの削除(例えば、DeleteWorkflow)、ワークフローの検索(例えば、RetrieveWorkflow)などを含むことができる。
【0024】
機能発見APIは、ワークフローマネージャ(103)および/またはNBMPソース(101)が、メディア処理ワークフローの一部としてロードすることができるメディア処理機能を発見するための手段を提供することができる。
【0025】
タスクAPIは、実行時にタスク(例えば、MPE(113)によって実行されるタスク1およびタスク2)を構成および監視するために、ワークフローマネージャ(103)によって使用され得る。タスクAPIは、例えば、タスク用のリソースがMPE(113)に割り当てられた後に、ワークフローマネージャ(103)によってメディア処理タスクを構成するためのインターフェースを定義することができる。タスクAPI動作は、タスクの作成(例えば、CreateTask)、タスクの更新(例えば、UpdateTask)、タスクの取得(例えば、GetTask)、タスクの削除(例えば、DeleteTask)などを含むことができる。
【0026】
メディアプレーンでは、NBMPソース(111)とタスクとの間、およびタスク間のメディアフォーマット、メタデータ、および補足情報フォーマットを定義することができる。
【0027】
ワークフロー記述(WD)を、NBMPソース(101)からワークフローマネージャ(103)に渡すことができる。WDは、入力データおよび出力データ、機能、ならびにワークフローの他の要件などの情報を記述することができる。
【0028】
ワークフローマネージャ(103)は、NBMPソース(101)からWDDを受信することができ、要求されたメディア処理のためのワークフローを構築することができる。ワークフロー手順では、例えば、機能リポジトリ(105)からメディア処理機能を選択することができ、次いで、対応するメディア処理タスクを構成し、1つまたは複数のMPE(例えば、MPE(113)を含む)のセットに分散させることができる。
【0029】
機能リポジトリ(105)によって提供される機能のセットを、NBMPソース(101)およびワークフローマネージャ(103)によって読み取ることができる。一実施形態では、NBMPソース(101)は、機能リポジトリ(105)内の機能のセットを使用してワークフローの作成を要求する。したがって、NBMPソース(101)は、ワークフローのための機能を選択するように構成される。NBMPソース(101)は、以下に説明するように、ワークフローの作成を要求することができる。NBMPソース(101)は、ワークフローが作成されるべきメディア処理タスクの記述を使用することができ、メディア処理タスクの入力および出力の接続を定義するための接続マップを指定することができる。ワークフローマネージャ(103)がNBMPソース(101)から上記の情報を受信すると、ワークフローマネージャ(103)は、それぞれの機能名に基づいてメディア処理タスクをインスタンス化することができ、接続マップに従ってメディア処理タスクを接続することができる。
【0030】
あるいは、NBMPソース(101)は、ワークフローマネージャ(103)がワークフローを構築することができるキーワードのセットを使用して、ワークフローの作成を要求することができる。したがって、NBMPソース(101)は、ワークフローに挿入されるべき機能のセットを認識していない可能性がある。NBMPソース(101)は、以下に説明するように、ワークフローの作成を要求することができる。NBMPソース(101)は、ワークフローマネージャ(103)が適切な機能を見つけることができるキーワードのセットを使用することができ、適切なワークフロー記述を使用してワークフローの要件を指定することができる。
【0031】
ワークフローマネージャ(103)が、NBMPソース(101)から上記の情報(例えば、キーワードのセット)を受信すると、ワークフローマネージャ(103)は、例えば処理記述子に指定されたキーワードを使用して適切な機能を検索することで、ワークフローを作成することができる。次いで、ワークフローマネージャ(103)は、ワークフロー記述内の他の記述子を使用してメディア処理タスクをプロビジョニングし、メディア処理タスクを接続して最終的なワークフローを作成することができる。
【0032】
ワークフローマネージャ(103)の処理モデルは、以下のように説明され得る。
【0033】
ワークフローマネージャ(103)は、利用可能なメディア処理機能を以下のように発見することができる。NBMP機能リポジトリ(105)は、要求された処理を実現できるメディア処理機能を外部エンティティが問い合わせることを可能にするための機能発見インターフェース(またはAPI)を提供することができる。ワークフローマネージャ(103)は、メディア処理機能の検索可能なリストを提供するディレクトリサービスにアクセスすることができる。ワークフローマネージャ(103)は、ワークフロー記述内のメディア処理タスクの記述を使用して、ワークフローの適切な機能を見つけることができる。
【0034】
ワークフローに対するメディア処理タスクの選択は、以下に説明され得る。NBMPソース(101)からメディア処理の要求を受信すると、ワークフローマネージャ(103)は、機能リポジトリ(105)を検索して、ワークフローを実現できるすべての利用可能な機能のリストを見つけることができる。NBMPソース(101)からのワークフロー記述を使用して、ワークフローマネージャ(103)は、機能リポジトリ(105)から機能を見つけてワークフローを実施することができ、これは、NBMPソース(101)からのメディア処理のための情報に依存することができる。メディア処理のための情報は、入出力記述、要求された処理の記述、および機能ディレクトリ(105)内の機能のための他の記述子内の情報を含むことができる。ワークフローに含まれる適切なメディア処理タスクへのソース要求のマッピングは、ネットワーク内のNBMPの実装の一部とすることができる。タスク作成時に入力ポート名および出力ポート名で入力ソースを参照およびリンクするために、入力ポートおよび出力ポートを使用して入力ストリームを参照することができる。
【0035】
タスクとしてインスタンス化される適切な機能の検索は、機能発見APIを使用して、ワークフローマネージャ(103)によって実行され得る。あるいは、ワークフローマネージャ(103)は、機能発見APIを使用して、機能リポジトリ(105)内の一部またはすべての適切な機能の詳細情報を検索することができる。次いで、ワークフローマネージャ(103)は、NBMPソース(101)からのメディア処理のための情報を、各機能の異なる記述子と比較することができる。
【0036】
選択されたメディア処理タスクは、ワークフロー内で構成され得る。ワークフローに含まれる機能が特定されると、NBMPワークフローマネージャ(103)は、それぞれのタスクとして機能をインスタンス化し、ワークフローにタスクを追加できるようにタスクを構成できる。NBMPワークフローマネージャ(103)は、NBMPソース(101)から受信されたメディア処理情報から構成データを抽出し、対応するタスクを構成することができる。タスクの構成は、タスクAPI(例えば、NBMPタスクAPI)を使用して実行され得る。
【0037】
タスクの割り当ておよび分配は、以下に説明され得る。ワークフローマネージャ(103)は、ワークフローを使用して処理展開を実行し、メディア処理エンティティを構成することができる。一例では、計算集約的なメディア処理要求の場合、ワークフローマネージャ(103)は、複数の計算インスタンスを設定し、複数の計算インスタンス間でワークロードを分散させることができる。したがって、ワークフローマネージャ(103)は、必要に応じて複数の計算インスタンスを接続および構成することができる。一例では、ワークフローマネージャ(103)は、同じタスクを複数のインスタンスに割り当て、選択されたスケジューリング機構を使用して複数のインスタンス間でワークロードを分散させるようにロードバランサをプロビジョニングする。別の例では、ワークフローマネージャ(103)は、同じタスクの異なる動作を異なるインスタンス(例えば、並列動作)に割り当てる。上記の両方の例において、ワークフローマネージャ(103)は、インスタンス間にワークフロー経路を設定することができ、したがって、適切なワークロードを首尾よく実現することができる。ワークフローマネージャ(103)は、処理されたメディアデータ/ストリームをワークフローグラフ内の次のタスクにプッシュする(またはプル機構を介して利用可能にする)ようにタスクを構成することができる。
【0038】
ワークフローマネージャ(103)がNBMPソース(101)からWDDを受信すると、ワークフローマネージャ(103)は、ワークフローに挿入すべきメディア処理機能の選択を実行することができる。ワークフローに含まれるタスクのリストがコンパイルされると、ワークフローマネージャ(103)は、タスクを接続してワークフローを準備することができる。
【0039】
ワークフローマネージャ(103)は、例えば、グラフ(例えば、DAG)で表されるようなワークフローを生成することができる。
図2は、本開示の一実施形態によるグラフ(例えば、DAG)(200)の一例を示している。DAG(200)は、複数のノード(T1)~(T6)および複数のリンク(または接続部)(202)~(208)を含むことができる。一例では、DAG(200)はワークフロー(200)を表す。
【0040】
DAG(200)の各ノードは、ワークフロー(200)におけるメディア処理タスクを表すことができる。第1のノード(例えば、ノード(T1))をDAG(200A)の第2のノード(例えば、ノード(T2))に接続するリンク(例えば、リンク(202))は、第1のノード(例えば、ノード(T1))の出力の転送を第2のノード(例えば、ノード(T2))への入力として表すことができる。
【0041】
一般に、ワークフローは、任意の適切な数の入力(またはワークフロー入力)および任意の適切な数の出力(またはワークフロー出力)を含むことができる。ワークフロー入力を、メディアソース(111)、他のワークフローなどに接続することができ、ワークフロー出力を、メディアシンク(115)、他のワークフローなどに接続することができる。ワークフロー(200)は、入力(201)と出力(209)および(210)を有する。いくつかの実施形態では、ワークフロー(200)は、中間ノードからの1つまたは複数の出力を有することができる。
【0042】
II.セグメント化データストリーム処理のための先入れ先出し(FIFO)機能
図3は、本開示の一実施形態による例示的なFIFOバッファ(300)を示している。FIFOバッファ(300)は、セグメント化データストリーム処理のためのFIFO機能を実現するために使用され得る。FIFOバッファ(300)は、入力セグメント(310)のシーケンスを入力として受信し、受信したセグメントをエントリ(301A~301N)として格納することができる。
【0043】
セグメント(310)のシーケンスは、連続からセグメント化への(C2S)変換機能から受信され得る。C2S機能は、例えば
図1の例のメディアソース(111)からストリーミングメディアのデータストリームを受信し、データストリームをセグメント(310)のシーケンスに区分することができる。例えば、ストリーミングメディアは、ストリーミングサービスプロバイダによるインターネットを介したデジタルコンテンツ(例えば、テレビ番組や映画)の配信とすることができる。データストリームは、ストリーミングメディアの様々なタイプのコンテンツのうちの1つを搬送するビットストリームとすることができる。データストリームの例は、ビデオストリーム、オーディオストリーム、メタデータストリーム、ポイントクラウドストリームなどを含むことができる。
【0044】
あるいは、セグメント(310)のシーケンスは、例えばNBMPシステム(100)内のワークフロー内のタスクから受信され得る。データストリームは、処理のためにタスクに供給される前にセグメントのシーケンスに区分され得る。その後、タスクはセグメント(310)のシーケンスを出力する。
【0045】
エントリ(310A~310N)はそれぞれ、セグメント(310)のシーケンスに属するセグメントと、セグメントに関連付けられた属性のセットと、を含むことができる。例えば、各セグメントの属性は、それぞれのセグメントが生成されたとき(例えば、データストリームから区分されたとき)、またはそれぞれがタスクによって処理された後に、それぞれのセグメントに関連付けることができる。
【0046】
一実施形態では、各エントリ内の属性は、それぞれのセグメントの開始時間を示すSiで示される開始時間、表示されたときのそれぞれのセグメントの持続時間を示す持続時間Di、およびそれぞれのセグメントの長さを、例えばそれぞれのセグメントのバイト数に関して示す長さLi(またはサイズ)を含む。パラメータiは、各セグメントに対応するインデックスを表す。図示されるように、エントリ(301A)は、属性S0、D0、およびL0を含み;エントリ(301B)は、属性S1、D1、およびL1を含み;エントリ(301B)は、属性Sn-1、Dn-1、およびLn-1を含む。
【0047】
一例では、セグメント(310)のシーケンス内の各セグメントの開始時間は、セグメントが区分されるデータストリームの開始時間に対する時間、または時間基準として指定されたデータストリームのスパン内の任意の時間であり得る。あるいは、開始時間は、クロック信号を提供するクロックなどのタイミング基準に対する時間とすることができる。セグメント(310)のシーケンスにおける各セグメントの持続時間は、ストリーミングメディアのデータストリームが表示されているときにセグメントを表示するための期間に対応する時間スパンとすることができる。各セグメントの開始時間および持続時間は、秒、ミリ秒などの単位で表すことができる。様々な実施形態において、セグメント(310)のシーケンスにおける各セグメントの持続時間は、同じであっても異なっていてもよい。
【0048】
一実施形態では、各セグメントの属性のセットは開始時間の属性のみを含み、持続時間および長さの属性は任意である。例えば、セグメントごとの持続時間と長さが等しい場合、持続時間と長さの属性を省略することができる。一実施形態では、各セグメントの属性のセットは、セグメント(310)のシーケンスにおける各セグメントの順序を示すインデックスを含む。一例では、インデックス属性が使用される場合、開始時間、持続時間、および長さの属性は任意であり得る。開始時間属性とインデックス属性の両方は、各セグメントにインデックス付けする目的を果たすことができる。したがって、インデックス付けされたセグメントを格納するFIFOバッファ(300)は、iFIFOで表されるインデックス付けされたセグメントFIFOと呼ぶことができる。
【0049】
一実施形態では、各エントリ(301A~301N)は、FIFOバッファ(300)から読み出されて、先入れ先出し方式で出力セグメント(320)のシーケンスを提供することができる。一例では、入力セグメント(310)のシーケンスは、ワークフローの1つまたは複数のタスクによって処理され、次いでFIFOバッファ(300)に格納されている。FIFOバッファ(300)から読み出された出力セグメント(320)は、その後、セグメント化から連続への(S2C)変換機能によって連結され、連続データストリームを形成する。次いで、連続データストリームをワークフローから出力することができる。
【0050】
一例では、入力セグメント(310)のシーケンスは、前のステップでストリーミングメディアのデータストリームから区分される。FIFOバッファ(300)から読み出された出力セグメント(320)は、次に、処理のためにワークフローのタスクに入力される。一例では、入力セグメント(310)のシーケンスは、ワークフローの1つまたは複数のタスクによって処理され、次いでFIFOバッファ(300)に格納されている。FIFOバッファ(300)から読み出された出力セグメント(320)は、その後、さらなる処理のためにワークフローの次のタスクに入力される。
【0051】
一実施形態では、FIFOバッファ(300)は、構成パラメータのセットで構成され得る。一例では、構成パラメータは、例えばいくつかのエントリにおけるFIFOバッファ(300)のサイズ、およびFIFOバッファ(300)内のエントリの最大サイズを含むことができる。一例では、構成パラメータは、FIFOバッファ(300)がワークフローにおいてどのように構成および動作されるべきかを指定する
図1の例のNBMPソース(101)から受信され得る。一例では、構成パラメータは、NBMPソース(101)から受信された情報に基づいて、NBMPワークフローマネージャ(103)によって決定される。例えば、情報は、ワークフローで処理されるストリーミングメディアのデータストリームを記述するパラメータ、および/またはワークフロー内のFIFOバッファ(300)の前または後の機能を記述するパラメータを含むことができる。次いで、NBMPワークフローマネージャ(103)は、その情報に基づいて、ワークフロー内のFIFOバッファ(300)をどのように構成するかを決定することができる。
【0052】
図4は、本開示の一実施形態による例示的なC2S変換機能(400)を示している。C2S変換機能(400)は、ストリーミングメディアの連続データストリーム(410)を受信し、連続データストリーム(410)をセグメント化データストリーム(420)に区分するように構成され得る。
【0053】
セグメント化データストリーム(420)は、それぞれのセグメントの開始時間、持続時間、および長さの属性などの属性のセットにそれぞれ関連付けられたセグメントのシーケンス(421A~421N)を含むことができる。セグメント化データストリーム420は、次に、FIFO機能(300)などのFIFO機能に入力され得る。
【0054】
データストリーム(410)は、メディアソース(111)から受信されたデータストリームとすることができ、処理のためのワークフローに入る前にC2S変換機能(400)に入力される。あるいは、データストリーム(410)は、C2S変換機能(400)に到達する前にワークフローの機能によって処理されたデータストリームとすることができる。
【0055】
C2S変換機能(400)の区分動作は、結果として生じるセグメント(421A~421N)がその後独立して処理され得るように実行され得る。一例では、結果として生じるセグメント(421A~421N)は、処理速度を加速するために、ワークフロー内の同じメディア処理機能の複数のインスタンスを用いてワークフロー内で並列に処理され得る。
【0056】
一例では、結果として生じるセグメント(421A~421N)は、ステップモードで処理され得る。例えば、リソースが限られているコンピューティングプラットフォーム(例えば、コンピュータまたはクラウドプラットフォーム)では、同じワークフローに属するタスクが同時に実行されない場合がある。代わりに、直列に接続されたタスクは、セグメントのグループを処理するために連続的にインスタンス化され得る。セグメントの現在のグループは、次のセグメントのグループがワークフローに入ることができる前に、ワークフローを通過するステップごと(タスクごと)に処理され得る。
【0057】
一実施形態では、コンテナ化されたタスクは、タスクが単一のオペレーティングシステムカーネルの上で動作し、基礎となるハードウェアではなくオペレーティングシステムをエミュレートするステートレスコンテナ内で実行することができるクラウドコンピューティング環境で使用される。したがって、C2S変換機能(400)から生じる独立したセグメント(421A~421N)は、並列またはステップモードのいずれかでそのようなコンテナ内で適切に処理され得る。
【0058】
C2S変換機能(400)における区分動作は、データストリーム(410)の内部構造に依存し得る。様々な例では、データストリーム(410)は様々なタイプのものであってもよく、様々なフォーマットを有してもよく、例えば、ポイントクラウドデータストリーム、ビデオストリーム、オーディオストリームなどであってもよい。各タイプのデータストリームは、特定の内部構造を有してもよい。C2S変換機能(400)は、異なる構造を識別し、したがって、それぞれのデータストリームをセグメントに区分することができる。区分中に、それぞれのセグメントの属性のセット(例えば、開始時間、持続時間、長さ(サイズ)など)を決定し、それぞれのセグメントに関連付けることができる。
【0059】
例えば、データストリーム(410)は、ピクチャ群(GOP)の構造を含むビデオとすることができる。GOP内のピクチャ(またはフレーム)は、インター予測コーディングのためにGOPの他のメンバを参照することができる。しかしながら、ビデオ内の各GOPは独立して処理され得る。これにより、区分はGOP単位で実行され得る。例えば、ビデオ内の1つまたは複数のGOPを1つのセグメントに含めることができる。したがって、結果として生じるセグメントは独立して処理され得る。
【0060】
別の例では、高効率ビデオコーディング(HEVC)規格に準拠したビデオは、ユーザがビデオの特定の部分にジャンプするのを容易にするために、ランダムアクセスポイント(RAP)ピクチャの構造を含み得る。このようなRAPピクチャ(例えば、瞬時デコーディングリフレッシュ(IDR)ピクチャ)は、区分動作のためのセグメントの開始として使用され得る。
【0061】
また、上記の区分動作の例では、ビデオを区分しているが、各セグメントの開始時間は、ビデオにおいて区分動作が行われた位置に基づいて決定され得る。例えば、上記の例では、各ピクチャを、ビデオ内のピクチャの順序を示すピクチャ順序カウント(POC)に関連付けることができる。POC情報に基づいて、区分が行われるピクチャのタイミングを決定し、それぞれのセグメントと関連付けることができる。同様に、ビデオの内部構造の情報に基づいて、ビデオを区分しながらそれぞれのセグメントの持続時間および長さ(サイズ)を決定することができる。
【0062】
図5は、本開示の一実施形態による例示的なS2C変換機能(500)を示している。S2C変換機能(500)は、セグメント化データストリーム(510)を受信し、セグメント化データストリーム(510)を連続データストリーム(520)に変換するように構成され得る。セグメント化データストリーム(510)は、各々が属性のセットに関連付けられたセグメントのシーケンス(511A~511N)を含むことができる。例えば、属性のセットは、それぞれのセグメントの開始時間、持続時間、および長さを含むことができる。セグメントのシーケンス(511A~511N)は、ワークフローにおけるタスクの出力とすることができる。
【0063】
一例では、S2C変換機能(500)は、セグメント(511A~511N)に関連付けられた属性を除去し、セグメントのシーケンス(511A~511N)を連結して連続データストリーム(520)を生成する。次いで、連続データストリーム(520)は、さらなる処理のためにワークフローの次のタスクに入力され得る。あるいは、連続データストリーム(520)は、ワークフローの出力としてメディアシンクに送信され得る。
【0064】
図6は、本開示の一実施形態による例示的な処理経路(600)を示している。処理経路は、NBMPシステムにおけるワークフローの一部とすることができる。処理経路(600)は、一連のC2S変換機能(601)と、第1のiFIFOバッファ(602)と、タスク(603)と、第2のiFIFOバッファ(604)と、S2C変換機能(605)と、を含む。
【0065】
連続データストリーム(610)がC2S変換機能(601)において受信される。連続データストリーム(610)は、前のタスクの出力とすることができ、または
図1の例のメディアソース(111)などのメディアソースから送信され得る。C2S変換機能(601)は、連続ストリーム(601)を、各々が属性のセット(例えば、開始時間、持続時間、長さなど)に関連付けられたセグメントのシーケンスに区分する。セグメントのシーケンスは、C2S変換機能(601)からセグメント化データストリーム(620)として出力される。iFIFOバッファ(602)は、セグメント化データストリーム(620)を受信し、セグメントおよび関連付けられた属性をエントリとして格納する。
【0066】
次いで、エントリはiFIFOバッファ(602)から読み出され、タスク(603)によって処理される。タスク(603)は、メディア処理機能からインスタンス化されたメディア処理タスクとすることができる。一例では、タスク(603)は、同じ機能の複数のインスタンスであるように構成され得る。したがって、iFIFOバッファ(602)内のセグメントを複数のインスタンスに供給し、並列に処理することができる。一例では、タスク(603)は、ステップモードで動作するように構成され得る。具体的には、タスク(603)をインスタンス化して、iFIFOバッファ(602)から受信されたセグメントのグループを処理し、次いで終了することができる。
【0067】
iFIFOバッファ(604)は、タスク(603)から属性にそれぞれ関連付けられた処理済みセグメントを受け取り、処理済みセグメントおよび属性をエントリの形態で格納する。そして、iFIFOバッファ(604)のエントリがセグメント化データストリーム(630)としてS2C変換機能(605)に入力される。S2C変換機能(605)は、セグメント化データストリーム(630)内のセグメントを連結して、連続データストリーム(640)を生成する。
【0068】
処理経路(600)には1つのタスク(603)のみが示されているが、他の例ではタスク(603)の代わりに複数のタスクが構成されてもよい。これらのタスクのうちの連続するタスクのペアの間には、タスクのペアを接続するために使用されるiFIFOバッファが存在することができる。もちろん、連続するタスクのいくつかの対は、iFIFOバッファなしで各対に直接接続され得る。
【0069】
図7は、本開示の一実施形態によるマルチインデックス付きセグメントFIFO(MiFIFO)機能(700)を示している。MiFIFO機能(700)は、並列に動作する複数のFIFOバッファ(730A~730N)を含むことができる。MiFIFO機能(700)は、複数のFIFOバッファ(730A~730N)において複数のセグメント入力(710A~710N)(例えば、2、3、またはそれ以上のセグメント入力)をそれぞれ受信することができる。各セグメント入力(710A~710N)は、それぞれ属性のセットに関連付けられたセグメントのシーケンスとすることができる。セグメントのシーケンスおよび関連付けられた属性は、各FIFOバッファ(730A~730N)にエントリとして格納される。例えば、FIFOバッファ(730A)はエントリ(701A~701N)を含むことができ、FIFOバッファ(730B)はエントリ(702A~702N)を含むことができ、FIFOバッファ(730N)はエントリ(703A~703N)を含むことができる。各FIFOバッファ(730A~730N)内のエントリは、複数のセグメント出力(720A~720N)として先入れ先出し方式で読み出すことができる。
【0070】
一例では、セグメント入力(710A~710N)に対応するデータストリームは、同じストリーミングメディアに属することができる。例えば、データストリームは、1つまたは複数のビデオストリーム、1つまたは複数のオーディオストリーム、1つまたは複数のメタデータストリームなどを含むことができる。表示されるとき、異なるデータストリームに属するが同じ時間スパンに対応するコンテンツを同期して表示することができる。この目的を果たすために、異なるデータストリームに属するが同じスパンに対応するコンテンツは、ワークフローによって同期して処理されることが望ましい。
【0071】
したがって、一実施形態では、各セグメント入力(710A~710N)内のセグメントのセグメント化を同期して実行することができる。例えば、セグメント化が行われる各データストリーム内の位置は、時間的に整合され得る。結果として、同じ時間スパンに重なる結果として生じるセグメントは、時間的に整合され、同じ開始時間および同じ持続時間を有することができる。例えば、エントリ701A、702A、および703Aは、同じ開始時間および同じ持続時間を有することができる。ワークフロー内のMiFIFO機能(700)の前または後の1つまたは複数の機能による処理中に、異なるデータストリームに属するが同じ時間スパンに対応するセグメントは、異なるデータストリームのコンテンツであるが同じ時間スパンのコンテンツを適切に表示する使用のために配信することができるように同期して処理され得る。
【0072】
様々な実施形態において、セグメント入力(710A~710N)はそれぞれ、異なるC2S変換機能または異なるメディア処理機能から出力され得る。あるいは、2つ以上のセグメント入力(710A~710N)が、同じC2S変換機能または同じメディア処理機能から出力され得る。同様に、セグメント出力(720A~720N)が、それぞれ異なるS2C変換機能または異なるメディア処理機能に出力され得る。あるいは、2つ以上のセグメント出力(720A~720N)が、同じS2C変換機能または同じメディア処理機能に提供され得る。
【0073】
複数のタスクおよび複数の処理経路を含むワークフローでは、MiFIFO機能は、2つのタスクグループをそれぞれ接続するように構成され得、一方のタスクグループは入力側に存在し、他方のタスクグループはそれぞれのMiFIFO機能の出力側に存在する。
【0074】
本明細書で開示されるFIFOバッファ機構は、いくつかの例ではiFIFO機能およびMiFIFO機能がNBMPの文脈で説明されているが、NBMPシステムに限定されないことに留意されたい。FIFOバッファは、複数のタスクを含むワークフローのようなプロセスが採用されるメディアデータまたは非メディアデータ処理シナリオに適用され得る。
【0075】
加えて、本明細書に開示されるFIFO機能は、処理回路(例えば、1つまたは複数のプロセッサあるいは1つまたは複数の集積回路)によって実装され得る。あるいは、本明細書に開示されるFIFO機能はそれぞれ、非一時的コンピュータ可読記憶媒体に格納されたプログラムの命令として実装され得る。命令は、1つまたは複数のプロセッサによって実行されるとき、プロセッサにFIFO機能を実行させることができる。
【0076】
III.セグメント化データストリーム処理の例示的なプロセス
図8は、本開示の一実施形態によるセグメント化データストリーム処理プロセスの例示的なプロセス(800)を示している。プロセス(800)は、NBMPシステムにおけるワークフローを使用するメディア処理のためのプロセスの一部とすることができる。プロセス(800)は、(S801)から開始して(S810)に進むことができる。
【0077】
(S810)において、ストリーミングメディアのデータストリームから区分されたセグメントのシーケンスが受信され得る。例えば、セグメントのシーケンスは、C2S変換機能から、またはNBMPシステムにおけるワークフローのメディア処理タスクから受信され得る。ストリーミングメディアは、1つまたは複数のデータストリームを含むことができ、ネットワーク(例えば、インターネット)を介してメディアソースから送信され得る。
【0078】
(S820)において、セグメントは、第1のFIFOバッファに格納され得る。例えば、各セグメントおよび関連付けられた1つまたは複数の属性は、第1のFIFOバッファにエントリとして格納され得る。属性は、それぞれのセグメントの開始時間、持続時間、および長さのうちの1つまたは複数を含むことができる。
【0079】
(S830)において、セグメントは、第1のFIFOバッファから読み出され、ワークフロー内のタスクによって処理される。例えば、セグメントは互いに独立して処理される。一例では、セグメントは並列に処理される。一例では、ワークフロー内のタスクはステップモードで動作する。したがって、セグメントは、ワークフローによってそれぞれ独立して処理され、ステップごとにワークフローを通過するグループに編成され得る。
【0080】
(S840)において、(S830)において処理された後、セグメントは、その後、関連付けられた属性を有する第2のFIFOバッファに格納され得る。例えば、各処理済みセグメントの属性は、(S830)で処理される前のセグメントに関連付けられた属性と同じ開始時間および持続時間を有することができる。各処理済みセグメントは、処理前の長さと比較して変化した可能性がある処理済みセグメントのサイズ(例えば、バイト数)を示す長さ属性を有することができる。
【0081】
次いで、(S850)において、処理済みセグメントは、第2のFIFOバッファから読み出され、S2C機能に入力され、連続データストリームに変換され得る。一例では、連続データストリームはワークフローから出力され得る。次いで、プロセス(800)は(S899)に進み、(S899)で終了することができる。
【0082】
IV.コンピュータシステム
本明細書で開示される方法、実施形態、エンティティ、または機能は、処理回路(例えば、1つまたは複数のプロセッサあるいは1つまたは複数の集積回路)によって実装され得る。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に格納されたプログラムを実行して、本明細書に開示された方法、実施形態、または機能を実行する。プログラムは、1つまたは複数のCPU、GPUなどによって直接、または間接的に、マイクロコード実行などを介して実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構を対象とし得る任意の適切な機械コードまたはコンピュータ言語を使用してコード化され得る。命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む様々な種類のコンピュータまたはその構成要素上で実行され得る。
【0083】
図9は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(900)を示している。コンピュータシステム(900)について
図9に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する制限を示唆することを意図していない。構成要素の構成は、コンピュータシステム(900)の例示的な実施形態に示されている構成要素のいずれか1つまたは組み合わせに関する依存関係または要件を有すると解釈されるべきではない。
【0084】
コンピュータシステム(900)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した1人または複数の人間のユーザによる入力に応答してもよい。ヒューマンインターフェースデバイスは、オーディオ(例えば、スピーチ、音楽、周囲音)、画像(例えば、走査画像、静止画像カメラから取得された写真画像)、ビデオ(例えば、2次元ビデオ、立体ビデオを含む3次元ビデオ)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むために使用されてもよい。
【0085】
入力ヒューマンインターフェースデバイスは、キーボード(901)、マウス(902)、トラックパッド(903)、タッチスクリーン(910)、データグローブ(図示せず)、ジョイスティック(905)、マイクロフォン(906)、スキャナ(907)、カメラ(908)のうちの1つまたは複数(各々のうちのただ1つ)を含んでもよい。
【0086】
コンピュータシステム(900)はまた、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間のユーザの感覚を刺激してもよい。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(910)、データグローブ(図示せず)、またはジョイスティック(905)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る)、音声出力デバイス(例えば、スピーカ(909)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(910)であって、それぞれがタッチスクリーン入力機能を有するかまたは有さず、それぞれが触覚フィードバック機能を有するかまたは有さず、その一部は、ステレオ出力などの手段を介して二次元視覚出力または三次元以上の出力を出力することができてもよい;仮想現実メガネ(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず))、およびプリンタ(図示せず)を含んでもよい。
【0087】
コンピュータシステム(900)はまた、ヒューマンアクセス可能な記憶デバイスおよびそれらの関連媒体、例えば、CD/DVDなどの媒体(921)を有するCD/DVD ROM/RW(920)を含む光学媒体、サムドライブ(922)、リムーバブルハードドライブまたはソリッドステートドライブ(923)、テープおよびフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースのデバイスなどを含むことができる。
【0088】
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことを理解すべきである。
【0089】
コンピュータシステム(900)はまた、1つまたは複数の通信ネットワーク(955)へのインターフェース(954)を含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業、リアルタイム、遅延耐性などであり得る。ネットワークの例には、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラネットワーク、ケーブルTV、衛星TV、および地上波放送TVを含むTV有線または無線広域デジタルネットワーク、CANBusを含む車両および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(949)に取り付けられた外部ネットワークインターフェースアダプタを必要とする(例えば、コンピュータシステム(900)のUSBポートなど)、他のものは、一般に、後述するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラネットワークインターフェース)によってコンピュータシステム(900)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(900)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータシステムに対して、単方向受信のみ(例えば、放送TV)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向であり得る。特定のプロトコルおよびプロトコルスタックは、本明細書で説明するように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用され得る。
【0090】
前述のヒューマンインターフェースデバイス、ヒューマンアクセス可能な記憶デバイス、およびネットワークインターフェースを、コンピュータシステム(900)のコア(940)に取り付けることができる。
【0091】
コア(940)は、1つまたは複数の中央処理装置(CPU)(941)、グラフィックス処理装置(GPU)(942)、フィールドプログラマブルゲートエリア(FPGA)(943)の形態の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(944)、グラフィックスアダプタ(950)などを含むことができる。これらのデバイスは、読み取り専用メモリ(ROM)(945)、ランダムアクセスメモリ(946)、内部非ユーザアクセス可能ハードドライブやSSDなどの内部大容量記憶装置(947)と共に、システムバス(948)を介して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(948)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺機器を、コアのシステムバス(948)に直接取り付けることも、周辺バス(949)を介して取り付けることもできる。一例では、スクリーン(910)をグラフィックスアダプタ(950)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
【0092】
CPU(941)、GPU(942)、FPGA(943)、およびアクセラレータ(944)は、組み合わせて上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(945)またはRAM(946)に格納され得る。移行データはまた、RAM(946)に格納され得、一方、永続データは、例えば内部大容量記憶装置(947)に格納され得る。メモリデバイスのいずれかへの高速記憶および検索は、1つまたは複数のCPU(941)、GPU(942)、大容量記憶装置(947)、ROM(945)、RAM(946)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
【0093】
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知で利用可能な種類のものであってもよい。
【0094】
限定ではなく、例として、アーキテクチャ(900)、特にコア(940)を有するコンピュータシステムは、1つまたは複数の有形のコンピュータ可読媒体で実現されたソフトウェアを実行する1つまたは複数のプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量記憶装置、ならびにコア内部大容量記憶装置(947)またはROM(945)などの非一時的な性質のコア(940)の特定の記憶装置に関連付けられた媒体とすることができる。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに格納され、コア(940)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(940)、具体的にはその中のプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(946)に格納されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、上述した特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ハードワイヤードまたは他の方法で回路(例えば、アクセラレータ(944))に実現された論理の結果として機能を提供することができ、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行することができる。ソフトウェアへの参照は、適切な場合には、論理を包含することができ、逆もまた同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを格納する回路(集積回路(IC)など)、実行のための論理を実現する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアとの任意の適切な組み合わせを包含する。
【0095】
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る変更、置換、および様々な代替の等価物がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。
【符号の説明】
【0096】
100 NBMPシステム
101 NBMPソース
103 NBMPワークフローマネージャ
105 機能リポジトリ
111 メディアソース
113 メディア処理エンティティ、MPE
115 メディアシンク
200 ワークフロー
201 入力
202~208 リンク
209 出力
210 出力
300 FIFOバッファ
301 エントリ
310 入力セグメント
320 出力セグメント
400 C2S変換機能
410 データストリーム
420 セグメント化データストリーム
421 セグメント
500 S2C変換機能
510 セグメント化データストリーム
511 セグメント
520 連続データストリーム
601 C2S変換機能
602 iFIFOバッファ
603 タスク
604 iFIFOバッファ
605 S2C変換機能
610 連続データストリーム
620 セグメント化データストリーム
630 セグメント化データストリーム
640 連続データストリーム
700 MiFIFO機能
701 エントリ
702 エントリ
703 エントリ
710 セグメント入力
720 セグメント出力
730 FIFOバッファ
900 コンピュータシステム
901 キーボード
902 マウス
903 トラックパッド
905 ジョイスティック
906 マイクロフォン
907 スキャナ
908 カメラ
909 スピーカ
910 タッチスクリーン
920 CD/DVD ROM/RW
921 媒体
922 サムドライブ
923 リムーバブルハードドライブまたはソリッドステートドライブ
940 コア
941 中央処理装置
942 グラフィックス処理装置
943 フィールドプログラマブルゲートエリア
944 ハードウェアアクセラレータ
945 読み取り専用メモリ
946 ランダムアクセスメモリ
947 大容量記憶装置
948 システムバス
949 周辺バス
950 グラフィックスアダプタ
954 ネットワークインターフェース
955 通信ネットワーク