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

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

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

特表2023-547604メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置
<>
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図1
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図2
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図3
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図4
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図5
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図6
  • 特表-メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-13
(54)【発明の名称】メディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置
(51)【国際特許分類】
   H04N 21/234 20110101AFI20231106BHJP
【FI】
H04N21/234
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023523180
(86)(22)【出願日】2022-04-12
(85)【翻訳文提出日】2023-04-14
(86)【国際出願番号】 US2022024348
(87)【国際公開番号】W WO2023282950
(87)【国際公開日】2023-01-12
(31)【優先権主張番号】63/219,234
(32)【優先日】2021-07-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/702,096
(32)【優先日】2022-03-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【テーマコード(参考)】
5C164
【Fターム(参考)】
5C164FA06
5C164SB01P
5C164SB21S
5C164SB29S
(57)【要約】
少なくとも1つのプロセッサによって実行される、ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための方法および装置が提供される。方法は、1つまたは複数のセグメントを含む入力ストリームを取得するステップと、セグメント内の開始コードを識別するステップであって、開始コードがセグメントの先頭に存在し、開始コードがセグメントの開始を示す固有のコードである、ステップと、セグメント内のシーケンス番号を識別するステップであって、シーケンス番号がセグメント内のセグメントの位置を示す、ステップと、開始コードおよびシーケンス番号に基づいて、入力ストリームをサブストリームに分割し、サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングするステップと、開始コードおよびシーケンス番号に基づいて、サブストリームをマージし、共通ヘッダの位置をシグナリングし、出力ストリームを生成するステップとを含む。
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサによって実行される、ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための方法であって、
セグメントを含む入力ストリームを取得するステップであって、前記入力ストリームが前記セグメント内に第1の共通ヘッダを含む、ステップと、
前記セグメント内の開始コードを識別するステップであって、前記開始コードがセグメントの先頭に存在し、前記開始コードが前記セグメントの開始を示す固有のコードである、ステップと、
複数のセグメントの各々におけるシーケンス番号を識別するステップであって、前記シーケンス番号が前記複数のセグメント内の各セグメントの位置を示す、ステップと、
前記開始コードおよび前記シーケンス番号に基づいて、NBMPスプリッタ機能を使用して前記入力ストリームをサブストリームに分割し、前記サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングするステップと、
前記開始コードおよび前記シーケンス番号に基づいて、NBMPマージ機能を使用して前記サブストリームをマージし、第2の共通ヘッダの位置をシグナリングするステップと、
マージされた前記サブストリームに基づいて出力ストリームを生成するステップであって、前記出力ストリームが前記第2の共通ヘッダを含む、ステップと
を含む方法。
【請求項2】
前記サブストリームの各々における前記それぞれの共通ヘッダが同一である、請求項1に記載の方法。
【請求項3】
前記サブストリームの各々における前記それぞれの共通ヘッダの前記位置において前記サブストリームの各々に前記第1の共通ヘッダをコピーするステップであって、前記サブストリームの各々における前記それぞれの共通ヘッダの前記位置が固有である、ステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記サブストリームのうちの1つから前記出力内の前記第2の共通ヘッダの前記位置に前記第1の共通ヘッダをコピーするステップをさらに含む、請求項1に記載の方法。
【請求項5】
前記入力ストリームに含まれる前記セグメントの各々が、前記サブストリームのうちの1つに対応する、請求項1に記載の方法。
【請求項6】
前記入力ストリームに含まれる前記セグメントが、前記入力ストリームの持続時間全体をカバーする、請求項1に記載の方法。
【請求項7】
前記サブストリームが、前記シーケンス番号に基づいて昇順で処理される、請求項1に記載の方法。
【請求項8】
前記第2の共通ヘッダが、前記出力において一度だけ再生され、前記第2の共通ヘッダのセグメントが、前記出力の第1のセグメントであり、0の持続時間を有する、請求項1に記載の方法。
【請求項9】
ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための装置であって、
プログラムコードを記憶するように構成された少なくとも1つのメモリと、
前記プログラムコードを読み取り、前記プログラムコードによって指示された通りに動作するように構成された少なくとも1つのプロセッサと
を備え、前記プログラムコードが、
前記少なくとも1つのプロセッサに、セグメントを含む入力ストリームを取得させるように構成された取得コードであって、前記入力ストリームが前記セグメント内に第1の共通ヘッダを含む、取得コードと、
前記少なくとも1つのプロセッサに、前記セグメント内の開始コードを識別させるように構成された第1の識別コードであって、前記開始コードがセグメントの先頭に存在し、前記開始コードが前記セグメントの開始を示す固有のコードである、第1の識別コードと、
前記少なくとも1つのプロセッサに、複数のセグメントの各々におけるシーケンス番号を識別させるように構成された第2の識別コードであって、前記シーケンス番号が前記複数のセグメント内の各セグメントの位置を示す、第2の識別コードと、
前記少なくとも1つのプロセッサに、前記開始コードおよび前記シーケンス番号に基づいて、NBMPスプリッタ機能を使用して前記入力ストリームをサブストリームに分割させ、前記サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングさせるように構成された分割コードと、
前記少なくとも1つのプロセッサに、前記開始コードおよび前記シーケンス番号に基づいて、NBMPマージ機能を使用して前記サブストリームをマージさせ、第2の共通ヘッダの位置をシグナリングさせるように構成されたマージコードと、
前記少なくとも1つのプロセッサに、マージされた前記サブストリームに基づいて出力ストリームを生成させるように構成された生成コードであって、前記出力ストリームが前記第2の共通ヘッダを含む、生成コードと
を含む、装置。
【請求項10】
前記サブストリームの各々における前記それぞれの共通ヘッダが同一である、請求項9に記載の装置。
【請求項11】
前記分割コードが、前記少なくとも1つのプロセッサに、前記サブストリームの各々における前記それぞれの共通ヘッダの前記位置において前記サブストリームの各々に前記第1の共通ヘッダをコピーさせるようにさらに構成され、前記サブストリームの各々における前記それぞれの共通ヘッダの前記位置が固有である、請求項9に記載の装置。
【請求項12】
前記マージコードが、前記少なくとも1つのプロセッサに、前記サブストリームのうちの1つから前記出力内の前記第2の共通ヘッダの前記位置に前記第1の共通ヘッダをコピーさせるようにさらに構成される、請求項9に記載の装置。
【請求項13】
前記入力ストリームに含まれる前記セグメントの各々が、前記サブストリームのうちの1つに対応する、請求項9に記載の装置。
【請求項14】
前記入力ストリームに含まれる前記セグメントが、前記入力ストリームの持続時間全体をカバーする、請求項9に記載の装置。
【請求項15】
前記サブストリームが、前記シーケンス番号に基づいて昇順で処理される、請求項9に記載の装置。
【請求項16】
前記第2の共通ヘッダが、前記出力において一度だけ再生され、前記第2の共通ヘッダのセグメントが、前記出力の第1のセグメントであり、0の持続時間を有する、請求項9に記載の装置。
【請求項17】
命令を記憶した非一時的なコンピュータ可読媒体であって、前記命令が、ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための装置の少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、
セグメントを含む入力ストリームを取得することであって、前記入力ストリームが前記セグメント内に第1の共通ヘッダを含む、ことと、
前記セグメント内の開始コードを識別することであって、前記開始コードがセグメントの先頭に存在し、前記開始コードが前記セグメントの開始を示す固有のコードである、ことと、
複数のセグメントの各々におけるシーケンス番号を識別することであって、前記シーケンス番号が前記複数のセグメント内の各セグメントの位置を示す、ことと、
前記開始コードおよび前記シーケンス番号に基づいて、NBMPスプリッタ機能を使用して前記入力ストリームをサブストリームに分割し、前記サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングすることと、
前記開始コードおよび前記シーケンス番号に基づいて、NBMPマージ機能を使用して前記サブストリームをマージし、第2の共通ヘッダの位置をシグナリングすることと、
マージされた前記サブストリームに基づいて出力ストリームを生成することであって、前記出力ストリームが前記第2の共通ヘッダを含む、ことと
を行わせる1つまたは複数の命令を含む、非一時的なコンピュータ可読媒体。
【請求項18】
前記入力ストリームに含まれる前記セグメントの各々が、前記サブストリームのうちの1つに対応し、前記入力ストリームに含まれる前記セグメントが、前記入力ストリームの持続時間全体をカバーし、前記サブストリームが、前記シーケンス番号に基づいて昇順で処理される、請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記命令が、前記少なくとも1つのプロセッサに、前記サブストリームのうちの1つから前記出力における前記第2の共通ヘッダの前記位置に前記共通ヘッダをコピーすることをさらに行わせ、
前記第2の共通ヘッダが、前記出力において一度だけ再生され、前記第2の共通ヘッダのセグメントが、前記出力の第1のセグメントであり、0の持続時間を有する、請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記命令が、前記少なくとも1つのプロセッサに、前記サブストリームの各々における前記共通ヘッダの前記位置において前記サブストリームの各々に前記共通ヘッダをコピーすることをさらに行わせ、
前記サブストリームの各々における前記共通ヘッダの前記位置が固有であり、前記サブストリームの各々における前記共通ヘッダが同一である、請求項17に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年7月7日に出願された米国仮特許出願第63/219,234号に基づき、それに対する優先権を主張し、その開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本開示の実施形態は、ネットワークベースのメディア処理(NBMP)のセグメントベースのスプリッタおよびマージ機能基準テンプレートへの拡張に関する。拡張は、共通ヘッダのサポート、ならびに開始コードの使用およびメタデータのシーケンスナンバリングなどの、セグメントベースのスプリッタおよびマージ機能に対する追加機能を提供する。
【背景技術】
【0003】
ネットワークおよびクラウドプラットフォームは、様々なアプリケーションを実行するために使用される場合がある。NBMP規格は、等しい持続時間を有するメディアセグメントの独立した処理のためのツールのセットを定義する。NBMP AMD1は、スプリッタおよびマージ機能テンプレートを定義する。セグメントベースのスプリッタおよびマージ機能は、メディアデータを並列サブストリームに分割するために使用され、各ストリームは独立して処理することができ、次いで、処理されたストリームは、元のストリームの処理結果を作成するために一緒にマージされる。
【0004】
NBMPスプリッタおよびマージ機能は、明確な境界を有するメディアストリームの並列処理を実行することができる。しかしながら、これらのNBMP機能は、メディアストリームまたはそれらのサブストリーム内の共通ヘッダをアドレス指定することができない。したがって、NBMPスプリッタおよびマージ機能は、それらの先頭にヘッダを有するメディアストリームを処理することができない。さらに、NBMP標準設計は、セグメント境界を見つけるためのタイミングメタデータのみをサポートし、開始コードを有するストリームでは機能しない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示の態様は、これらの問題に対処し、メタデータの共通ヘッダおよびシーケンスナンバリングをサポートするメディアの並列処理用のセグメントベースの分割およびマージ機能を記載する。
【課題を解決するための手段】
【0006】
本開示の1つまたは複数の例示的な実施形態は、クラウドプラットフォーム上のメディアの並列処理用のセグメントベースの分割およびマージ機能のための方法および装置を提供する。
【0007】
実施形態によれば、少なくとも1つのプロセッサによって実行される、ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための方法が提供される。方法は、セグメントを含む入力ストリームを取得するステップであって、入力ストリームがセグメント内に第1の共通ヘッダを含む、ステップと、セグメント内の開始コードを識別するステップであって、開始コードがセグメントの先頭に存在し、開始コードがセグメントの開始を示す固有のコードである、ステップと、複数のセグメントの各々におけるシーケンス番号を識別するステップであって、シーケンス番号が複数のセグメント内の各セグメントの位置を示す、ステップと、開始コードおよびシーケンス番号に基づいて、NBMPスプリッタ機能を使用して入力ストリームをサブストリームに分割し、サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングするステップと、開始コードおよびシーケンス番号に基づいて、NBMPマージ機能を使用してサブストリームをマージし、第2の共通ヘッダの位置をシグナリングするステップと、マージされたサブストリームに基づいて出力ストリームを生成するステップであって、出力ストリームが第2の共通ヘッダを含む、ステップとを含んでもよい。
【0008】
実施形態によれば、ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための装置が提供される。装置は、プログラムコード(命令)を記憶する少なくとも1つのメモリと、プログラムコードを読み取り、プログラムコードによって指示された通りに動作するように構成された少なくとも1つのプロセッサとを含んでもよい。プログラムコードは、少なくとも1つのプロセッサに、セグメントを含む入力ストリームを取得させるように構成された取得コードであって、入力ストリームがセグメント内に第1の共通ヘッダを含む、取得コードと、少なくとも1つのプロセッサに、セグメント内の開始コードを識別させるように構成された第1の識別コードであって、開始コードがセグメントの先頭に存在し、開始コードがセグメントの開始を示す固有のコードである、第1の識別コードと、少なくとも1つのプロセッサに、複数のセグメントの各々におけるシーケンス番号を識別させるように構成された第2の識別コードであって、シーケンス番号が複数のセグメント内の各セグメントの位置を示す、第2の識別コードと、少なくとも1つのプロセッサに、開始コードおよびシーケンス番号に基づいて、NBMPスプリッタ機能を使用して入力ストリームをサブストリームに分割させ、サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングさせるように構成された分割コードと、少なくとも1つのプロセッサに、開始コードおよびシーケンス番号に基づいて、NBMPマージ機能を使用してサブストリームをマージさせ、第2の共通ヘッダの位置をシグナリングさせるように構成されたマージコードと、少なくとも1つのプロセッサに、マージされたサブストリームに基づいて出力ストリームを生成させるように構成された生成コードであって、出力ストリームが第2の共通ヘッダを含む、生成コードとを含んでもよい。
【0009】
1つまたは複数の実施形態によれば、コンピュータコードを記憶した非一時的なコンピュータ可読媒体が提供されてもよい。コンピュータコードは、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、セグメントを含む入力ストリームを取得することであって、入力ストリームがセグメント内に第1の共通ヘッダを含む、ことと、セグメント内の開始コードを識別することであって、開始コードがセグメントの先頭に存在し、開始コードがセグメントの開始を示す固有のコードである、ことと、複数のセグメントの各々におけるシーケンス番号を識別することであって、シーケンス番号が複数のセグメント内の各セグメントの位置を示す、ことと、開始コードおよびシーケンス番号に基づいて、NBMPスプリッタ機能を使用して入力ストリームをサブストリームに分割し、サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングすることと、開始コードおよびシーケンス番号に基づいて、NBMPマージ機能を使用してサブストリームをマージし、第2の共通ヘッダの位置をシグナリングすることと、マージされたサブストリームに基づいて出力ストリームを生成することであって、出力ストリームが第2の共通ヘッダを含む、こととを行わせるように構成されてもよい。
【0010】
さらなる態様は、以下の説明に部分的に記載され、部分的に、説明から明らかになるか、または本開示の提示された実施形態の実践によって実現されてもよい。
【0011】
本開示の実施形態の上記および他の態様、特徴、および態様は、以下の添付図面と併せて以下の説明からより明らかになるであろう。
【図面の簡単な説明】
【0012】
図1】1つまたは複数の実施形態による、通信システムの概略図である。
図2】1つまたは複数の実施形態による、ストリーミング環境の簡略化された例示的な図である。
図3】1つまたは複数の実施形態による、NBMPシステムのブロック図である。
図4】1つまたは複数の実施形態による、NBMPスプリッタおよびマージプロセスの例示的な図である。
図5】時間メタデータを使用して共通ヘッダを含む入力メディアストリームを処理するための例示的なプロセスのフローチャートである。
図6】1つまたは複数の実施形態による、共通ヘッダを有するセグメントを含むメディアストリームを処理するための例示的なプロセスのブロック図である。
図7】1つまたは複数の実施形態による、共通ヘッダを有するセグメントを含むメディアストリームを処理するためのコンピュータコードの一例のブロック図である。
【発明を実施するための形態】
【0013】
本開示は、メディアストリーム内のセグメントの分割およびマージ機能の並列処理のための方法および装置に関する。
【0014】
本開示の実施形態は、添付図面を参照して包括的に記載される。しかしながら、実装例は、様々な複数の形態で実装されてもよく、本開示は、本明細書に記載された例に限定されると解釈されるべきではない。逆に、実装例は、本開示の技術的解決策をより包括的かつ完全にし、実装例の概念を当業者に包括的に伝達するために提供される。添付図面は、本開示の例示にすぎず、必ずしも縮尺通りに描かれていない。添付図面内の同じ参照番号は同じまた同様の構成要素を表すので、構成要素の重複する説明は省略される。
【0015】
以下で説明される提案された機能は、別々に使用されるか、または任意の順序で組み合わされてもよい。添付図面に示されたいくつかのブロック図は機能エンティティであり、必ずしも物理的または論理的に独立したエンティティに対応するとは限らない。さらに、実施形態は、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されるか、あるいはソフトウェアの形態で実装されるか、あるいは異なるネットワークおよび/またはプロセッサ装置および/またはマイクロコントローラ装置に実装されてもよい。一例では、1つまたは複数のプロセッサは、1つまたは複数の非一時的なコンピュータ可読媒体に記憶されたコンピュータプログラムを実行する。
【0016】
図1は、実施形態による、本明細書に記載される方法、装置、およびシステムが実装され得る環境100の図である。図1に示されたように、環境100は、ユーザデバイス110と、プラットフォーム120と、ネットワーク130とを含んでもよい。環境100のデバイスは、有線接続、無線接続、または有線接続と無線接続の組合せを介して相互接続されてもよい。
【0017】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信、生成、記憶、処理、および/または提供することが可能な1つまたは複数のデバイスを含んでもよい。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、一対のスマートグラスもしくはスマートウォッチなど)、または同様のデバイスを含んでもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、かつ/またはプラットフォーム120に情報を送信することができる。
【0018】
プラットフォーム120は、本明細書の他の箇所に記載される1つまたは複数のデバイスを含んでもよい。いくつかの実装形態では、プラットフォーム120は、クラウドサーバ、またはクラウドサーバのグループを含んでもよい。いくつかの実装形態では、プラットフォーム120は、特定の必要性に応じてソフトウェアコンポーネントがスワップインまたはスワップアウトされ得るようにモジュール式に設計されてもよい。そのため、プラットフォーム120は、異なる用途向けに、容易に、かつ/または迅速に再構成されてもよい。
【0019】
いくつかの実装形態では、図示されたように、プラットフォーム120は、クラウドコンピューティング環境122内でホストされてもよい。特に、本明細書に記載された実装形態は、クラウドコンピューティング環境122内でホストされるものとしてプラットフォーム120を記載するが、いくつかの実装形態では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部に実装されてもよく)、部分的にクラウドベースであってもよい。
【0020】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含んでもよい。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステムおよび/またはデバイスの物理的な位置および構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供することができる。図示されたように、クラウドコンピューティング環境122は、(「コンピューティングリソース124」と総称され、個別に「コンピューティングリソース124」と呼ばれる)コンピューティングリソース124のグループを含んでもよい。
【0021】
コンピューティングリソース124は、1つまたは複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、または他のタイプの計算デバイスおよび/もしくは通信デバイスを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120をホストすることができる。クラウドリソースは、コンピューティングリソース124内で実行される計算インスタンス、コンピューティングリソース124内で提供されるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、または有線接続と無線接続の組合せを介して他のコンピューティングリソース124と通信することができる。
【0022】
図1にさらに示されたように、コンピューティングリソース124は、1つまたは複数のアプリケーション(「APP」)124-1、1つまたは複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つまたは複数のハイパーバイザ(「HYP」)124-4などのクラウドリソースのグループを含んでもよい。
【0023】
アプリケーション124-1は、ユーザデバイス110および/もしくはプラットフォーム120に提供され得るか、またはユーザデバイス110および/もしくはプラットフォーム120によってアクセスされ得る、1つまたは複数のソフトウェアアプリケーションを含んでもよい。アプリケーション124-1は、ユーザデバイス110上でソフトウェアアプリケーションをインストールし実行する必要を除去することができる。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェア、および/またはクラウドコンピューティング環境122を介して提供することが可能な任意の他のソフトウェアを含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つまたは複数の他のアプリケーション124-1との間で情報を送受信することができる。
【0024】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装形態を含んでもよい。仮想マシン124-2は、仮想マシン124-2による用途および任意の実マシンとの対応関係の程度に応じて、システム仮想マシンまたは処理仮想マシンのいずれかであってもよい。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供することができる。プロセス仮想マシンは、単一のプログラムを実行することができ、単一のプロセスをサポートすることができる。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)の代わりに実行することができ、データ管理、同期、または長時間データ転送などの、クラウドコンピューティング環境122の基盤を管理することができる。
【0025】
仮想化ストレージ124-3は、コンピューティングリソース124のストレージシステムまたはデバイス内で仮想化技法を使用する1つもしくは複数のストレージシステムおよび/または1つもしくは複数のデバイスを含んでもよい。いくつかの実装形態では、ストレージシステムのコンテキスト内で、仮想化のタイプは、ブロック仮想化およびファイル仮想化を含んでもよい。ブロック仮想化は、ストレージシステムが物理ストレージであるか異種構造であるかに関係なくアクセスされ得るように、物理ストレージから論理ストレージを抽出する(または分離する)ことを指してもよい。分離は、ストレージシステムの管理者がエンドユーザ向けのストレージを管理する方法における柔軟性を可能にする。ファイル仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に記憶された場所との間の依存関係を除去することができる。これにより、ストレージ使用の最適化、サーバ統合、および/または非破壊的なファイル移行の実行が可能になり得る。
【0026】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)が、コンピューティングリソース124などのホストコンピュータ上で同時に実行することを可能にするハードウェア仮想化技法を提供することができる。ハイパーバイザ124-4は、ゲストオペレーティングシステムに仮想オペレーティングプラットフォームを提示することができ、ゲストオペレーティングシステムの実行を管理することができる。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共有することができる。
【0027】
ネットワーク130は、1つまたは複数の有線ネットワークおよび/または無線ネットワークを含んでもよい。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公的地域モバイルネットワーク(PLMN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話網(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、および/または上記その他のタイプのネットワークの組合せを含んでもよい。
【0028】
図1に示されたデバイスおよびネットワークの数および配置は、一例として提供されている。実際には、図1に示されたものに比べて、さらなるデバイスおよび/もしくはネットワーク、より少ないデバイスおよび/もしくはネットワーク、異なるデバイスおよび/もしくはネットワーク、または異なる配置のデバイスおよび/もしくはネットワークが存在してもよい。さらに、図1に示された2つ以上のデバイスが単一のデバイス内に実装されてもよく、または図1に示された単一のデバイスが複数の分散型デバイスとして実装されてもよい。追加または代替として、環境100のデバイスのセット(例えば、1つまたは複数のデバイス)は、環境100のデバイスの別のセットによって実行されるものとして記載された1つまたは複数の機能を実行することができる。
【0029】
図2は、図1の1つまたは複数のデバイスの例示的な構成要素のブロック図である。デバイス200は、ユーザデバイス110および/またはプラットフォーム120に対応してもよい。図2に示されたように、デバイス200は、バス210と、プロセッサ220と、メモリ230と、ストレージコンポーネント240と、入力コンポーネント250と、出力コンポーネント260と、通信インターフェース270とを含んでもよい。
【0030】
バス210は、デバイス200の構成要素間の通信を可能にする構成要素を含んでもよい。プロセッサ220は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組合せに実装されてもよい。プロセッサ220は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または別のタイプの処理構成要素であってもよい。いくつかの実装形態では、プロセッサ220は、機能を実行するようにプログラムされることが可能な1つまたは複数のプロセッサを含んでもよい。メモリ230は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、ならびに/またはプロセッサ220による使用のための情報および/もしくは命令を記憶する別のタイプの動的もしくは静的なストレージデバイス(例えば、フラッシュメモリ、磁気メモリ、および/もしくは光メモリ)を含んでもよい。
【0031】
ストレージコンポーネント240は、デバイス200の動作および使用に関連する情報および/またはソフトウェアを記憶することができる。例えば、ストレージコンポーネント240は、対応するドライブとともに、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/もしくはソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、ならびに/または別のタイプの非一時的なコンピュータ可読媒体を含んでもよい。
【0032】
入力コンポーネント250は、デバイス200がユーザ入力などを介して情報を受け取ることを可能にする構成要素(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)を含んでもよい。追加または代替として、入力コンポーネント250は、情報を検知するためのセンサ(例えば、全地球測位システム(GPS)コンポーネント、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含んでもよい。出力コンポーネント260は、デバイス200からの出力情報を提供する構成要素(例えば、ディスプレイ、スピーカ、および/または1つもしくは複数の発光ダイオード(LED))を含んでもよい。
【0033】
通信インターフェース270は、デバイス200が、有線接続、無線接続、または有線接続と無線接続の組合せなどを介して他のデバイスと通信することを可能にする、トランシーバ様の構成要素(例えば、トランシーバならびに/または別個の受信機および送信機)を含んでもよい。通信インターフェース270は、デバイス200が別のデバイスから情報を受信し、かつ/または別のデバイスに情報を提供することを可能にすることができる。例えば、通信インターフェース270は、イーサネットインターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数(RF)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、Wi-Fiインターフェース、セルラーネットワークインターフェースなどを含んでもよい。
【0034】
デバイス200は、本明細書に記載された1つまたは複数のプロセスを実行することができる。デバイス200は、プロセッサ220がメモリ230および/またはストレージコンポーネント240などの非一時的なコンピュータ可読媒体によって記憶されたソフトウェア命令を実行することに応答して、これらのプロセスを実行することができる。コンピュータ可読媒体は、本明細書では非一時的なメモリデバイスとして定義される。メモリデバイスは、単一の物理ストレージデバイス内のメモリ空間、または複数の物理ストレージデバイスにわたって広がるメモリ空間を含む。
【0035】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェース270を介して別のデバイスから、メモリ230および/またはストレージコンポーネント240に読み取られてもよい。実行されると、メモリ230および/またはストレージコンポーネント240に記憶されたソフトウェア命令は、本明細書に記載された1つまたは複数のプロセスをプロセッサ220に実行させることができる。追加または代替として、本明細書に記載された1つまたは複数のプロセスを実行するために、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤード回路が使用されてもよい。したがって、本明細書に記載された実装形態は、ハードウェア回路とソフトウェアのいかなる特定の組合せにも限定されない。
【0036】
図2に示された構成要素の数および配置は、一例として提供されている。実際には、デバイス200は、図2に示された構成要素に比べて、さらなる構成要素、より少ない構成要素、異なる構成要素、または異なる配置の構成要素を含んでもよい。追加または代替として、デバイス200の構成要素のセット(例えば、1つまたは複数の構成要素)は、デバイス200の構成要素の別のセットによって実行されるものとして記載された1つまたは複数の機能を実行することができる。
【0037】
本開示の実施形態では、ネットワークベースのメディア処理(NBMP)システムが提供される。図3は、本明細書の実施形態によるNBMPシステムアーキテクチャを示し、クラウド処理に関して実装される場合がある。NBMPシステム300は、NBMPソース310と、NBMPワークフローマネージャ320と、機能リポジトリ330と、1つまたは複数のメディア処理エンティティ(MPE)340と、メディアソース350と、メディアシンク360とを備える。NBMPソース310、NBMPワークフローマネージャ320、機能リポジトリ330、MPE340、メディアソース350、およびメディアシンク360は、少なくとも1つまたは複数のプロセッサと、それぞれ、NBMPソース310、NBMPワークフローマネージャ320、機能リポジトリ330、MPE340、メディアソース360、およびメディアシンク360の機能を少なくとも1つまたは複数のプロセッサに実行させるように構成されたコードを記憶するメモリとを含むか、またはそれらによって実装されてもよい。
【0038】
NBMPソース310は、NBMPワークフローAPI311を介してNBMPワークフローマネージャ320とワークフロー記述を通信することができる。NBMPソース310はまた、機能発見API313を介して機能リポジトリ330と機能記述を通信することができる。例えば、NBMPソース310は、ワークフロー記述文書(WDD)をNBMPワークフローマネージャ320に送信することができ、機能リポジトリ330に記憶された機能の機能記述を読み取ることができ、機能は、例えば、メディア復号、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンディング、後処理、および符号化の機能などの、機能リポジトリ330のメモリに記憶されたメディア処理機能である。NBMPワークフローマネージャ320は、機能発見API313と同じかまたは異なるAPIであり得る機能発見API312を介して機能リポジトリ330と通信することができ、API314(例えば、MPE API)を介してMPE340のうちの1つまたは複数と通信することができる。
【0039】
メディア処理エンティティ340は、1つまたは複数のタスク341を含んでもよい。NBMPワークフローマネージャ320はまた、API315(例えば、NBMPタスクAPI)を介してタスク341と通信することができる。NBMPワークフローマネージャ320は、API315を使用して、1つまたは複数のMPE340によって実行可能なワークフローの1つまたは複数のタスク341をセットアップ、構成、管理、および監視することができる。ワークフローのタスク341を構成、管理、および監視するために、NBMPワークフローマネージャ320は、MPE340および/またはタスク341のうちの1つまたは複数に要求などのメッセージを送信することができ、各メッセージは、それらの各々がいくつかのパラメータを有するいくつかの記述子を有してもよい。さらに、NBMPソース310、NBMPワークフローマネージャ320、機能リポジトリ330、およびMPE340の間の通信は、制御フローと見なされてもよい。
【0040】
タスク341は、各々、メディア処理機能343と、メディア処理機能343用の構成342とを含んでもよい。それぞれのメディア処理エンティティ340内のタスク341の各々はまた、タスク間のデータフローを容易にするために互いに通信することができる。一実施形態では、NBMPワークフローマネージャ320は、WDD内のタスクの記述に基づいてタスクを選択して、機能発見API312を介して機能リポジトリ330を検索し、現在のワークフロー用のタスク341として実行する適切な機能を見つけることができる。1つまたは複数のMPE340は、メディアソース350からメディアコンテンツを受け取り、NBMPワークフローマネージャ320によって作成された、タスク341を含むワークフローに従ってメディアコンテンツを処理し、処理されたメディアコンテンツをメディアシンク360に出力するように構成されてもよい。一実施形態では、1つまたは複数のMPE340は、それぞれ、メディアソース350とメディアシンク360との間の複数のメディアフロー316および317に対して並列に提供されてもよい。
【0041】
メディアソース350は、メディアを記憶するメモリを含んでもよく、NBMPソース310と統合されるか、または別個であってもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知することができ、メディアソース350は、ワークフローが準備されたという通知に基づいて1つまたは複数のMPE340にメディアコンテンツを送信することができ、1つまたは複数のMPE340は、メディアシンク360にメディアコンテンツを送信することができる。メディアソース350、MPE340、およびメディアシンク360の間の通信は、データフローと見なされてもよい。
【0042】
図4は、並列処理のためにNBMPがメディアストリームのセグメントを分割しマージする一例を示す。図4に示されたように、NBMPスプリッタおよびマージプロセス400は、スプリッタ420およびマージャ430を備える。図4において、タスクTはタスクTのn個のインスタンスに変換され、n個のインスタンスは並行して実行される。タスクTに入力される入力メディアストリーム410は連続していてもよい。スプリッタ420は、メディアストリームをN個のメディアサブストリームに変換する。各サブストリームはTのインスタンスによって処理される。次いで、マージャ430は、サブストリームを一緒にインターリーブして出力450を生成する。出力450は、タスクT(すなわち、メディアストリーム440)の出力ストリームの等価物である。
【0043】
1:Nスプリッタ420およびN:1マージャ430の機能は、図4に示されたように、セグメント境界上で働く。各セグメントは、それに関連付けられた開始、持続時間、および長さのメタデータを有する。セグメントは独立しているので、結果としてサブストリームはタスクTによって処理されるという観点から互いに独立している。実施形態では、タスクT0、…、TN-1はタスクTのインスタンスであり、セグメントを同時にまたは別々に処理することができる。セグメントおよびサブストリームは独立しているので、タスクTの各インスタンス(すなわち、T0、…、TN-1)は、それ自体の速度で実行することができる。
【0044】
実施形態によれば、共通ヘッダを有するサブストリームにストリームを分割し、サブストリームをマージし、開始コードおよびシーケンス番号を使用してセグメント境界を検出するために、スプリッタ420およびマージャ430の機能に2つの概念が追加されてもよい。
【0045】
[共通ヘッダ処理]
いくつかの実施形態では、スプリッタ420に入力されたメディアストリームは、セグメントの前のストリーム内に共通ヘッダを有することができる。例えば、ビデオエレメンタリストリーム内のVPS/SPSヘッダ、またはDASH/CMAF内のセグメント初期化/CMAFマスタヘッダである。
【0046】
いくつかの実施形態では、スプリッタ420からのN個の出力サブストリームは、適合ストリームであってもよい。したがって、共通ヘッダは、N個すべての出力サブストリーム内で複製されてもよい。マージャ430は、そのN個の入力の各々においてヘッダを受け取ることができるが、出力450は、1つのヘッダだけをもたなければならず、入力ヘッダの繰り返しは回避されなければならない。そのため、NBMPスプリッタおよびマージ機能は、共通ヘッダの取り扱いを適切にサポートすることができる必要がある。
【0047】
実施形態によれば、共通ヘッダに関する情報は、スプリッタ420およびマージャ430に入力メタデータとして提供されてもよい。スプリッタ420に入力される任意のストリーム(例えば、入力メディアストリーム410および/またはメディアストリーム440)は、多くとも単一の共通ヘッダを有することができる。さらに、マージャ430に入力されるすべてのストリーム(例えば、セグメントがタスクT0、…、TN-1によって処理された後に出力されるN個のストリーム)は、それらの間で同一である多くとも1つの共通ヘッダをもたなければならない。共通ヘッダの位置は、時間メタデータならびに/または開始コードおよびシーケンス番号によって提供されてもよい。共通ヘッダの位置が時間メタデータによって提供されるとき、共通ヘッダの開始、持続時間、および長さの制約が定義される。例えば、メディアセグメントの持続時間制約が0である場合、メディアストリームのすべての他のメディアセグメントは非ゼロの持続時間をもたなければならない。共通ヘッダの位置が開始コードおよびシーケンス番号によって提供されるとき、メディアセグメントの共通ヘッダは、他のメディアセグメントと同じ開始コードを有する。しかしながら、メディアセグメントのシーケンス番号が0である場合、メディアストリームのすべての他のメディアセグメントは非ゼロのシーケンス番号をもたなければならない。
【0048】
共通ヘッダの位置が時間メタデータによって提供されるときの共通ヘッダの処理の一例が、図5を参照して以下に記載される。処理は、NBMPワークフローマネージャ320によって実行されてもよい。
【0049】
図5は、時間メタデータを使用して共通ヘッダを含む入力メディアストリームを処理するための例示的なプロセス500のフローチャートである。
【0050】
図5に示されたように、S501において、スプリッタ420は、メディアストリーム内の共通ヘッダセグメントを見つける。次いで、プロセス500は、メディアセグメントメタデータを継続し、図4の実施形態に記載されたようにメディアストリームを分割する。すなわち、メディアストリームは、N個のサブストリームに分割される(S502)。S503において、スプリッタ420は、N個のサブストリームの各々に共通ヘッダをコピーする。次いで、S504において、N個のサブストリームは、例えば、タスクのインスタンスT0、…、TN-1によって処理され、各出力メタデータ(すなわち、処理されたN個のサブストリーム)における共通ヘッダがマークされる。次いで、プロセス500はマージャ430に進む。
【0051】
S505において、マージャ430は、マージャ430に入力されたN個のサブストリームの中で、S503においてN個のサブストリームにコピーされたすべての共通ヘッダセグメントを見つける。S506において、マージャ430は、N個のサブストリームセグメントのうちの1つからの共通ヘッダのうちの1つのみをコピーし、他のサブストリームからの他の共通ヘッダを廃棄する。次いで、マージャ430は、図4の実施形態に記載されたように、N個のサブストリームを一緒にマージする(S507)。S508において、マージャ430は、S507からのマージされた出力メタデータ内の共通ヘッダをマークする。
【0052】
共通ヘッダはまた、その位置が開始コードおよびシーケンス番号によって提供されるときに処理されてもよい。NBMP AMD1は、スプリッタおよびマージ機能のそのメタデータ入力内の以下の情報(すなわち、以下に記載されるSDLT)を使用してこの処理を実行する。
S:Tスケール内のセグメントの開始。
D:Tスケール内のセグメントの持続時間。
L:バイト単位のセグメントの長さ。
T:タイムスケール(1秒の中のティック数)。
【0053】
本開示の実施形態は代替の手法を提供する。すなわち、入力ストリーム内で、各セグメントは、セグメントまたは他のセグメントのいずれかの他の場所で繰り返されない固有のコードで始まる。固有のコードは、各セグメントの先頭にのみあり得る。したがって、開始コードは、新しいセグメントの開始を示す署名であってもよい。
【0054】
入力セグメントが同一の開始パターンを有する場合、各セグメントの開始時間および持続時間を有する必要はない。しかしながら、マージャ430に関して、セグメントは正しい順序でマージされなければならない。したがって、シーケンス番号メタデータがマージャ430の入力に追加されてもよい。実施形態では、各セグメントの順序を示すシーケンス番号メタデータも、均一性を維持するためにスプリッタ420の入力に追加されてもよい。メディアセグメントシーケンス番号は、時間とともに単調に増加する非ゼロ番号である。
【0055】
実施形態によれば、NBMPワークフローマネージャ320のスプリッタ機能に、以下の拡張機能が提供されてもよい。具体的には、拡張機能はスプリッタ420に提供されてもよい。
urn:mpeg:mpegi:nbmp:2020:split
【0056】
実施形態では、入力メディアストリームがいかなるギャップもなく連続していると仮定すると、(上記の拡張機能を含む)スプリッタ420は、機能要件のセットに従うことができる。スプリッタ420の機能要件のセットが以下に記載される。
【0057】
スプリッタ420は、1つの入力バッファおよびN個の出力バッファを含んでもよく、ここで、Nは分割数についての構成パラメータである。入力バッファおよび出力バッファは、例えば、先入れ先出し(FIFO)バッファであってもよい。
【0058】
スプリッタ420は、一度に1つの入力セグメントを操作し、N個の出力セグメントを生成する。入力セグメントは、サンプルの連続するセットと、時間スケールTのスケール内のDの最大持続時間とを有し、DとTの両方は構成パラメータである。入力セグメントは、タイミングメタデータまたはシーケンスメタデータを含んでもよい。タイミングメタデータは、メタデータとして、タイムスケールt=T、タイムスケールt内の開始時刻s、タイムスケールt内の継続時間d、および長さl(バイト)、ならびに機能制約を含む。シーケンスメタデータは、すべての他の入力セグメントと同一で固有の開始コードと、増加する連続的な順序のシーケンス番号とを含む。入力セグメントは、他の入力セグメントと重複するサンプルをもたない。
【0059】
スプリッタ420への入力セグメントのセットは、入力の持続時間全体をカバーする。すなわち、入力のサンプルは持続時間全体から除外されない。スプリッタ420は、入力セグメントに対して昇順で動作する。すなわち、より早い持続時間をカバーする入力セグメントは、より遅い持続時間をカバーする任意の入力セグメントの前に処理されるものとする。
【0060】
任意の時間におけるすべての出力バッファにおいて出力されるメディアストリームは、0以上の出力セグメントを含んでもよい。出力セグメントは、時間スケールtのスケール内でDの最大持続時間を有するサンプルの連続する持続時間を含んでもよい。出力セグメントも、タイミングメタデータまたはシーケンスメタデータを含んでもよい。タイミングメタデータは、メタデータとして、タイムスケールt=T、タイムスケールt内の開始時刻s、タイムスケールt内の継続時間d、および長さl(バイト)、ならびに機能制約を含む。シーケンスメタデータは、他のN個の出力セグメントのすべてと同一で固有の開始コードと、増加する連続的な順序のシーケンス番号とを含む。スプリッタ420のN個の出力バッファからのすべての出力セグメントの集合は、入力メディアストリームの持続時間全体を一緒にカバーする(すなわち、入力のサンプルは出力セグメントの集合から除外されない)。
【0061】
スプリッタ420は、入力セグメントに対して動作し、それをN個の出力セグメントに分割する。N個の出力バッファの各々は、N個の出力セグメントのうちの1つを受け取ることができる。入力セグメントは、以下のs0、s1、…、sN-1の順序でN個の出力セグメントに分割されてもよく、セグメントsiは、セグメントsi-1およびsi+1の直後のメディアの持続時間をカバーする。出力バッファは、O0、O1、…、ON-1として順序付けられてもよい。したがって、出力セグメントsiはバッファOiに配置されてもよく、以下同様である。
【0062】
実施形態では、共通ヘッダが存在する場合、スプリッタ420は、すべての出力において共通ヘッダを繰り返すことができる。例えば、入力メディアストリーム410(および同様にメディアストリーム440)が共通ヘッダを有する場合、スプリッタ420は、すべてのサブストリームにおいて共通ヘッダを繰り返す。さらに、第1のセグメントは共通ヘッダセグメントであってもよく、第1のセグメントの持続時間は0であってもよい。
【0063】
表1は、実施形態によるスプリッタ機能記述テンプレートの一例を示す。表1に示されたように、スプリッタ機能記述テンプレートは、記述子、パラメータ、パラメータタイプ、およびそれらそれぞれの説明を含む。
【0064】
【表1】
【0065】
表2は、実施形態による例示的なスプリッタ構成パラメータを示す。表2に示されたように、スプリッタ構成パラメータは、単位、タイプ、および有効範囲を含んでもよい。スプリッタ構成パラメータの定義も表2に示されている。表1のスプリッタ構成パラメータは、スプリッタ420に提供されてもよい。
【0066】
【表2A】
【表2B】
【0067】
表3は、パラメータの単位、タイプ、および有効範囲を含む、実施形態によるスプリッタ可変パラメータ(例えば、管理インターフェースFIFO(MIFIFO)バッファパラメータ)を示す。
【0068】
【表3】
【0069】
実施形態によれば、NBMPワークフローマネージャ320のマージ機能に、以下の拡張機能が提供されてもよい。具体的には、拡張機能はマージャ430に提供されてもよい。
urn:mpeg:mpegi:nbmp:2020:merge
【0070】
実施形態では、入力メディアストリームがいかなるギャップもなく連続していると仮定すると、(上記の拡張機能を含む)マージャ430は、機能要件のセットに従うことができる。マージャ430の機能要件のセットが以下に記載される。
【0071】
マージャ430は、N個の入力バッファおよび1つの出力バッファを含み、ここで、Nは分割数についての構成パラメータである。出力バッファは、例えば、先入れ先出し(FIFO)バッファであってもよい。
【0072】
マージャ430は、入力バッファごとに1つの入力セグメント、合計N個のセグメントを一度に操作し、1つの出力セグメントを生成する。入力セグメントの各々は、サンプルの連続するセットと、時間スケールTのスケール内のDの最大持続時間とを有してもよく、DとTの両方は構成パラメータである。入力セグメントの各々も、タイミングメタデータまたはシーケンスメタデータを含んでもよい。タイミングメタデータは、タイムスケールt=T、タイムスケールt内の開始時刻s、タイムスケールt内の継続時間d、および長さl(バイト)を含む。シーケンスメタデータは、入力セグメントのすべてと同一で固有の開始コードと、昇順のシーケンス番号とを含む。入力セグメントは、他の入力セグメントと重複するサンプルをもたない。
【0073】
マージャ430に入力された、N個のバッファの入力セグメントのセットは、入力の持続時間全体をカバーする。すなわち、入力のサンプルは持続時間全体から除外されない。マージャ430は、入力セグメントに対して昇順で動作する。すなわち、より早い持続時間をカバーするセグメントは、より遅い持続時間をカバーする任意のセグメントの前に処理される。
【0074】
任意の時間における出力バッファにおけるメディアストリームは、0以上の出力セグメントを含んでもよい。各出力セグメントは、時間スケールtのスケール内でN*Dの最大持続時間を有するサンプルの連続する持続時間を含んでもよい。出力セグメントも、タイミングメタデータまたはシーケンスメタデータを含んでもよい。タイミングメタデータは、タイムスケールt=T、タイムスケールt内の開始時刻s、タイムスケールt内の継続時間d、および長さl(バイト)を含む。シーケンスメタデータは、N個の出力セグメントのすべてと同一で固有の開始コードと、昇順のシーケンス番号とを含む。メディアストリーム内のすべての出力バッファの出力セグメントの集合は、入力メディアストリームの持続時間全体を一緒にカバーする(すなわち、入力のサンプルは出力セグメントの集合から除外されない)。
【0075】
マージャ430は、各入力バッファからのすべての入力セグメントに対して動作し、入力セグメントを1つの出力セグメントにマージする。各入力バッファからの1つのセグメントs0、s1、…、sN-1は、それぞれ、入力バッファI0、I1、…、IN-1から処理されてもよい。セグメントsiは、si-1およびsi+1の時間間隔のちょうど間の時間間隔のサンプルを含んでもよい。セグメントs0、s1、…、sN-1は、昇順で1つの出力セグメントに連結されてもよい。すなわち、s0はs1と連結されてもよく、次いでs2と連結されてもよく、sN-1まで以下同様である。セグメントs0、s1、…、sN-1は、出力セグメントが、反復サンプルをもたずに、EPTの最も早い提示を有するか、またはそれらのシーケンス番号が増加するセグメントs0、s1、…、sN-1のすべてのサンプルを含むように連結されてもよい。
【0076】
実施形態では、マージャ430への各入力に共通ヘッダが存在する場合、マージャ430は、その出力において共通ヘッダを一度繰り返すことができる。例えば、N個の処理されたサブストリームが各々共通ヘッダを有する場合、マージャ430は、出力450内に共通ヘッダの1つのインスタンスのみを有することができる。1つまたは複数の実施形態では、出力450の最初のセグメントは共通ヘッダであってもよく、最初のセグメントの持続時間は0であってもよい。そのため、マージャ430は、ただ1つの共通ヘッダを保持し、スプリッタ420によって生成されたサブストリーム内に存在する他の入力セグメントの共通ヘッダを廃棄することができる。
【0077】
表4は、実施形態によるマージ機能記述テンプレートの一例を示す。表4に示されたように、マージ機能記述テンプレートは、記述子、パラメータ、パラメータタイプ、およびそれらそれぞれの説明を含む。
【0078】
【表4】
【0079】
表5は、実施形態によるマージ構成パラメータを示す。表5に示されたように、マージ構成パラメータは、単位、タイプ、および有効範囲を含んでもよい。マージ構成パラメータの定義も表5に示されている。表5のマージ構成パラメータは、マージャ430に提供されてもよい。
【0080】
【表5A】
【表5B】
【0081】
表6は、パラメータの単位、タイプ、および有効範囲を含む、実施形態によるマージ可変パラメータ(例えば、管理インターフェースFIFO(MIFIFO)バッファパラメータ)を示す。
【0082】
【表6】
【0083】
図6は、1つまたは複数の実施形態による、固有の開始コードを有するセグメント内のセグメント境界を識別するための例示的な方法600のフローチャートである。
【0084】
いくつかの実装形態では、図6の1つまたは複数のプロセスブロックは、プラットフォーム120によって実行されてもよい。いくつかの実装形態では、図6の1つまたは複数のプロセスブロックは、ユーザデバイス110などの、プラットフォーム120とは別個であるか、またはプラットフォーム120を含む別のデバイスまたはデバイスのグループによって実行されてもよい。
【0085】
図6に示されたように、動作610において、方法600は、セグメントを含む入力ストリームを取得するステップを含んでもよく、入力ストリームはセグメント内に第1の共通ヘッダを含む。
【0086】
動作620において、方法600は、セグメント内の開始コードを識別するステップを含んでもよい。開始コードは、セグメントの先頭に存在してもよい。開始コードは、セグメントの開始を示す固有のコードである。
【0087】
動作630において、方法600は、複数のセグメントの各々においてシーケンス番号を識別するステップを含んでもよい。シーケンス番号は、複数のセグメント内の各セグメントの位置を示す。すなわち、シーケンス番号は、入力ストリームのサブストリームが処理される順序を決定するために使用されてもよい。
【0088】
動作640において、方法600は、開始コードおよびシーケンス番号に基づいて、スプリッタ420またはNBMPスプリッタ機能を使用して入力ストリームをサブストリームに分割し、サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングするステップを含んでもよい。
【0089】
動作650において、方法600は、開始コードおよびシーケンス番号に基づいて、マージャ430またはNBMPマージ機能を使用してサブストリームをマージし、第2の共通ヘッダの位置をシグナリングするステップを含んでもよい。
【0090】
動作650において、方法600は、出力ストリームの第1のセグメントにおいて一度生成された共通ヘッダを有する出力ストリームを生成するステップを含んでもよい。
【0091】
図6は、方法の例示的なブロックを示すが、いくつかの実装形態では、方法は、図6に描写されたブロックに比べて、さらなるブロック、より少ないブロック、異なるブロック、または異なる配置のブロックを含んでもよい。追加または代替として、方法のブロックのうちの2つ以上が並行して実行されてもよい。方法はNBMPシステム300において実行されてもよいが、これに限定されない。
【0092】
図7は、1つまたは複数の実施形態による、固有の開始コードを有するセグメント内のセグメント境界を識別するためのコンピュータコードの一例のブロック図である。
【0093】
本開示の実施形態によれば、コンピュータコードを記憶するメモリとともに少なくとも1つのプロセッサが提供されてもよい。コンピュータコードは、少なくとも1つのプロセッサによって実行されると、本開示の任意の数の態様を実行するように構成されてもよい。
【0094】
例えば、図7を参照して、コンピュータコード700はNBMPシステム300に実装されてもよいが、これに限定されない。
【0095】
図7に示されたように、コンピュータコード700は、取得コード710と、第1の識別コード720と、第2の識別コード730と、分割コード740と、マージコード750と、生成コード760とを含んでもよい。
【0096】
取得コード710は、セグメントを含む入力ストリームを少なくとも1つのプロセッサに取得させるように構成されてもよく、入力ストリームはセグメント内に第1の共通ヘッダを含む。
【0097】
第1の識別コード720は、セグメント内の開始コードを少なくとも1つのプロセッサに識別させるように構成されてもよい。開始コードはセグメントの先頭に存在してもよく、開始コードはセグメントの開始を示す固有のコードである。
【0098】
第2の識別コード730は、複数のセグメントの各々においてシーケンス番号を少なくとも1つのプロセッサに識別させるように構成されてもよい。シーケンス番号は、複数のセグメント内の各セグメントの位置を示し、セグメントの処理順序を決定するために使用されてもよい。
【0099】
分割コード740は、開始コードおよびシーケンス番号に基づいて、スプリッタ420またはNBMPスプリッタ機能を使用して入力ストリームをサブストリームに分割し、サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングすることを少なくとも1つのプロセッサに行わせるように構成されてもよい。
【0100】
マージコード750は、開始コードおよびシーケンス番号に基づいて、マージャ430またはNBMPマージ機能を使用してサブストリームをマージし、第2の共通ヘッダの位置をシグナリングすることを少なくとも1つのプロセッサに行わせるように構成されてもよい。
【0101】
生成コード760は、マージされたサブストリームに基づいて出力ストリームを少なくとも1つのプロセッサに生成させるように構成されてもよく、出力ストリームは第2の共通ヘッダを含む。
【0102】
図7は、実施形態による装置またはデバイスのコンピュータコード700の例示的なブロックを示すが、いくつかの実装形態では、装置は、図7に描写されたブロックに比べて、さらなるブロック、より少ないブロック、異なるブロック、または異なる配置のブロックを含んでもよい。追加または代替として、装置のブロックのうちの2つ以上が組み合わされてもよい。
【0103】
上述された入力メディアストリームを処理するときに共通ヘッダをシグナリングするための技法は、別々に使用されるか、または任意の順序で組み合わされてもよい。さらに、方法(または実施形態)の各々は、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてもよい。一例では、1つまたは複数のプロセッサは、非一時的なコンピュータ可読媒体に記憶されたプログラムを実行することができる。
【0104】
本開示は、例示および説明を提供するが、網羅的であること、または実装形態を開示されたまさにその形態に限定することを意図するものではない。修正形態および変形形態は、本開示に照らして実現可能であるか、または実装形態の実践から取得されてもよい。
【0105】
本明細書で使用される構成要素という用語は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組合せとして広く解釈されることを意図している。
【0106】
本明細書に記載されたシステムおよび/または方法は、様々な形態のハードウェア、ファームウェア、またはハードウェアとソフトウェアの組合せに実装され得ることは明らかであろう。これらのシステムおよび/または方法を実装するために使用される実際の専用の制御ハードウェアまたはソフトウェアコードは、実装形態を限定するものではない。したがって、システムおよび/または方法の動作および挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェアおよびハードウェアは、本明細書の説明に基づいてシステムおよび/または方法を実装するように設計され得ることが理解される。
【0107】
特徴の組合せが、特許請求の範囲に列挙され、かつ/または本明細書に開示されている場合でも、これらの組合せは、可能な実装形態の開示を限定することを意図していない。実際には、これらの特徴の多くは、特許請求の範囲に具体的に列挙されておらず、かつ/または本明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は1つの請求項のみに直接従属する場合があるが、可能な実装形態の開示は、請求項のセット内のあらゆる他の請求項と組み合わせた各従属請求項を含む。
【0108】
本明細書で使用される要素、活動、または指示は、明示的にそのように記載されていない限り、重要または必須であると解釈されなくてもよい。また、本明細書で使用される冠詞「a」および「an」は、1つまたは複数の項目を含むものであり、「1つまたは複数」と同じ意味で使用されてもよい。さらに、本明細書で使用される「セット」という用語は、1つまたは複数の項目(例えば、関連項目、非関連項目、関連項目と非関連項目の組合せなど)を含むものであり、「1つまたは複数」と同じ意味で使用されてもよい。1つの項目のみが対象とされる場合、「1つ」という用語または同様の言葉が使用される。また、本明細書で使用される「有する(has)」、「有する(have)」、「有する(having)」などの用語は、オープンエンド用語であることが意図される。さらに、「に基づいて」という語句は、特に明記されない限り、「に少なくとも部分的に基づいて」を意味するものである。
【符号の説明】
【0109】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション(APP)
124-2 仮想マシン(VM)
124-3 仮想化ストレージ(VS)
124-4 ハイパーバイザ(HYP)
130 ネットワーク
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 ストレージコンポーネント
250 入力コンポーネント
260 出力コンポーネント
270 通信インターフェース
300 ネットワークベースのメディア処理(NBMP)システム
310 NBMPソース
311 NBMPワークフローAPI
312 機能発見API
313 機能発見API
314 MPE API
315 NBMPタスクAPI
316 メディアフロー
317 メディアフロー
320 NBMPワークフローマネージャ
330 機能リポジトリ
340 メディア処理エンティティ(MPE)
341 タスク
342 構成
343 メディア処理機能
350 メディアソース
360 メディアシンク
400 NBMPスプリッタおよびマージプロセス
410 入力メディアストリーム
420 スプリッタ
430 マージャ
440 メディアストリーム
450 出力
600 方法
700 コンピュータコード
710 取得コード
720 第1の識別コード
730 第2の識別コード
740 分割コード
750 マージコード
760 生成コード
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2023-04-14
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサによって実行される、ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための方法であって、
セグメントを含む入力ストリームを取得するステップであって、前記入力ストリームが前記セグメント内に第1の共通ヘッダを含む、ステップと、
前記セグメント内の開始コードを識別するステップであって、前記開始コードがセグメントの先頭に存在し、前記開始コードが前記セグメントの開始を示す固有のコードである、ステップと、
複数のセグメントの各々におけるシーケンス番号を識別するステップであって、前記シーケンス番号が前記複数のセグメント内の各セグメントの位置を示す、ステップと、
前記開始コードおよび前記シーケンス番号に基づいて、NBMPスプリッタ機能を使用して前記入力ストリームをサブストリームに分割し、前記サブストリームの各々におけるそれぞれの共通ヘッダの位置をシグナリングするステップと、
前記開始コードおよび前記シーケンス番号に基づいて、NBMPマージ機能を使用して前記サブストリームをマージし、第2の共通ヘッダの位置をシグナリングするステップと、
マージされた前記サブストリームに基づいて出力ストリームを生成するステップであって、前記出力ストリームが前記第2の共通ヘッダを含む、ステップと
を含む方法。
【請求項2】
前記サブストリームの各々における前記それぞれの共通ヘッダが同一である、請求項1に記載の方法。
【請求項3】
前記サブストリームの各々における前記それぞれの共通ヘッダの前記位置において前記サブストリームの各々に前記第1の共通ヘッダをコピーするステップであって、前記サブストリームの各々における前記それぞれの共通ヘッダの前記位置が固有である、ステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記サブストリームのうちの1つから前記出力ストリーム内の前記第2の共通ヘッダの前記位置に前記第1の共通ヘッダをコピーするステップをさらに含む、請求項1に記載の方法。
【請求項5】
前記入力ストリームに含まれる前記セグメントの各々が、前記サブストリームのうちの1つに対応する、請求項1に記載の方法。
【請求項6】
前記入力ストリームに含まれる前記セグメントが、前記入力ストリームの持続時間全体をカバーする、請求項1に記載の方法。
【請求項7】
前記サブストリームが、前記シーケンス番号に基づいて昇順で処理される、請求項1に記載の方法。
【請求項8】
前記第2の共通ヘッダが、前記出力ストリームにおいて一度だけ再生され、前記第2の共通ヘッダのセグメントが、前記出力ストリームの第1のセグメントであり、0の持続時間を有する、請求項1に記載の方法。
【請求項9】
ネットワークベースのメディア処理(NBMP)機能を介して、共通ヘッダを有するセグメントを含むメディアストリームを処理するための装置であって、
プログラムコードを記憶するように構成された少なくとも1つのメモリと、
前記プログラムコードを読み取り、前記プログラムコードによって指示された通りに動作するように構成された少なくとも1つのプロセッサと
を備え、前記プログラムコードが、前記少なくとも1つのプロセッサに、請求項1から8のいずれか一項に記載の方法を行わせる、装置。
【請求項10】
コンピュータに、請求項1から8のいずれか一項に記載の方法を行わせる、コンピュータプログラム。
【国際調査報告】