(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-02
(45)【発行日】2024-07-10
(54)【発明の名称】DASHおよびCMAFインバンド・イベントを処理するための拡張されたW3Cメディア拡張のための方法、装置およびプログラム
(51)【国際特許分類】
H04N 21/435 20110101AFI20240703BHJP
H04N 21/434 20110101ALI20240703BHJP
【FI】
H04N21/435
H04N21/434
(21)【出願番号】P 2022562445
(86)(22)【出願日】2021-10-08
(86)【国際出願番号】 US2021054125
(87)【国際公開番号】W WO2022225552
(87)【国際公開日】2022-10-27
【審査請求日】2022-10-13
(32)【優先日】2021-04-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-10-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ソダガァ,イラジ
【審査官】醍醐 一貴
(56)【参考文献】
【文献】米国特許出願公開第2021/0099506(US,A1)
【文献】米国特許出願公開第2018/0210756(US,A1)
【文献】米国特許出願公開第2021/0006871(US,A1)
【文献】DASH Player's ApplicationEvents and Timed Metadata Processing Models and APIs, [online],2019年06月14日,[令和5年11月27日検索], インターネット<URL:https://dashif-documents.azurewebsites.net/Events/master/event.html>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00-21/858
H04L 51/00-51/58
H04L 67/00-67/75
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実行される、メディア・ストリームにおけるイベントを処理する方法であって:
メディア・データを取得する段階と;
前記メディア・データから一つまたは複数のイベント・セグメントを生成する段階と;
前記一つまたは複数のイベント・セグメントを第1のイベント処理バッファに付加する段階であって、前記一つまたは複数のイベント・セグメントは、前記一つまたは複数のイベント・セグメントのそれぞれが前記第1のイベント処理バッファに付加される時刻に基づく、前記一つまたは複数のイベント・セグメントのそれぞれについてのイベント開始オフセットを含む、段階と;
前記一つまたは複数のイベント・セグメントを第2のイベント処理バッファに付加する段階であって、前記一つまたは複数のイベント・セグメントは、前記一つまたは複数のイベント・セグメントのそれぞれについてのイベント発送情報を含む、段階と;
前記第1のイベント処理バッファおよび前記第2のイベント処理バッファ内のイベント発送情報に基づいて、前記一つまたは複数のイベント・セグメントを発送する段階とを含
み、
当該方法が:
一つまたは複数の新しいイベント・セグメントを生成する段階と;
前記一つまたは複数の新しいイベント・セグメントのイベント継続時間に基づいて、前記第1のイベント処理バッファおよび前記第2のイベント処理バッファにおいて前記一つまたは複数のイベント・セグメントを分割する段階と;
前記一つまたは複数の新しいイベント・セグメントの前記イベント継続時間に基づいて、前記第1のイベント処理バッファおよび前記第2のイベント処理バッファ内の前記一つまたは複数のイベント・セグメントを上書する段階とをさらに含み、
前記一つまたは複数のイベント・セグメントを上書きすることは:
前記第1のイベント処理バッファ内の前記一つまたは複数のイベント・セグメントが同じメディア・セグメントに関連付けられていないことを判別し;
前記第2のイベント処理バッファから前記一つまたは複数のイベント・セグメントを削除し;
前記第1のイベント処理バッファから前記一つまたは複数のイベント・セグメントを削除し;
前記一つまたは複数の新しいイベント・セグメントを前記第1のイベント処理バッファと前記第2のイベント処理バッファに付加することを含む、
方法。
【請求項2】
前記第1のイベント処理バッファへの前記一つまたは複数のイベント・セグメントの付加は、前記一つまたは複数のイベント・セグメントのそれぞれに、前記一つまたは複数のイベント・セグメントの該それぞれの呈示時間および継続時間を、メディア・バッファ内の少なくとも1つの関連するメディア・サンプルのそれぞれの呈示時間および継続時間と整列させる、
請求項1に記載の方法。
【請求項3】
前記イベント発送情報は、イベント初期化、イベント付加、イベント・パージ、イベント継続時間、またはイベント上書きのうちの少なくとも1つを示す情報を含む、
請求項1または2に記載の方法。
【請求項4】
前記一つまたは複数のイベント・セグメントを前記第2のイベント処理バッファに付加することは、前記一つまたは複数のイベント・セグメントを前記第1のイベント処理バッファに付加することを複製することを含む、
請求項1ないし3のうちいずれか一項に記載の方法。
【請求項5】
前記一つ
または複数のイベント・セグメントを前記第2のイベント処理バッファに付加することは、前記一つまたは複数のイベント・セグメントのそれぞれについての前記イベント発送情報に基づく、
請求項1ないし3のうちいずれか一項に記載の方法。
【請求項6】
前記一つまたは複数のイベント・セグメントを発送することは:
前記一つまたは複数のイベント・セグメントが発送イベント・テーブルに含まれているかどうかを判定し;
前記一つまたは複数のイベント・セグメントが前記発送イベント・テーブルに含まれていないと判定することに基づいて、前記一つまたは複数のイベント・セグメントをアプリケーションに発送することを含む、
請求項1ないし5のうちいずれか一項に記載の方法。
【請求項7】
前記一つまたは複数のイベント・セグメントを発送した後に、前記一つまたは複数のイベント・セグメントを発送イベント・テーブルに追加する段階をさらに含む、
請求項1ないし6のうちいずれか一項に記載の方法。
【請求項8】
前記一つまたは複数のイベント・セグメントのそれぞれがメディア・バッファ内の少なくとも1つのメディア・サンプルに関連付けられている、請求項1ないし
7のうちいずれか一項に記載の方法。
【請求項9】
メディア・ストリームにおけるイベントを処理するための装置であって、当該装置は:
コンピュータ・プログラム・コードを記憶するように構成された少なくとも1つのメモリと;
前記コンピュータ・プログラム・コードにアクセスし、前記コンピュータ・プログラム・コードによって命令されるように動作するように構成された少なくとも1つのプロセッサとを有しており、前記コンピュータ・プログラム・コードは前記少なくとも1つのプロセッサに請求項1ないし
7のうちいずれか一項に記載の方法を実行させるものである、
装置。
【請求項10】
コンピュータに請求項1ないし
7のうちいずれか一項に記載の方法を実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本願は、2021年4月19日に出願された米国仮出願第63/176,748号、および2021年10月6日に出願された米国出願第17/495,299号に対する優先権を主張し、その内容は、参照により本願に明示的に組み込まれる。
【0002】
分野
本開示の実施形態は、ストリーミング・メディア・コンテンツに、より詳細には、ハイパーテキスト転送プロトコルを通じた動画像専門家グループ(Moving Picture Experts Group、MPEG)動的適応ストリーミング(dynamic adaptive streaming over hypertext transfer protocol、DASH)に基づくストリーミング・メディア・コンテンツに向けられる。
【背景技術】
【0003】
MPEG DASHは、IPネットワークを通じたストリーミング・メディア・コンテンツについての標準を提供する。MPEG DASHでは、メディア呈示記述(media presentation description、MPD)およびインバンド・イベントが、メディア・タイムライン関連イベントをクライアントに送達するために使用される。DASHは、メディア・セグメントがインバンド・イベントを伝達するための機構を提供する。同様に、共通メディア・アプリケーション・フォーマット(Common Media Application Format、CMAF)は、CMAFチャンクがインバンド・イベントを伝達するための機構を提供する。ひとつの一般的なDASHイベントは、インバンドMPD有効性期限満了イベントである。他のイベントは、SCTE-35(「ケーブル用デジタル・プログラム挿入キューイング・メッセージ(Digital Program Insertion Cueing Message for Cable)」)イベントなどのアプリケーション・イベントを含む。
【0004】
DASHプレーヤーを含むストリーミング・プレーヤーは、ブラウザまたはユーザー・エージェントがメディア・セグメントを処理できるようにするメディア・ソース拡張(Media Source Extensions、MSE)を使用する。しかしながら、現在のMSE仕様は、DASHまたはCMAFメディア・セグメントに埋め込まれたインバンド・イベントをパースして処理することをサポートしない。現在のMSE仕様を利用するブラウザまたはユーザー・エージェントは、DASHまたはCMAFインバンド・イベントをネイティブに処理し、それらのインバンド・イベントをそれぞれのアプリケーションに発送することはできない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は、一つまたは複数の技術的問題に対処する。本開示は、MSEがDASHおよびCMAFインバンド・イベント・ボックスをネイティブに処理することを可能にする技術的解決策を提供する。本開示は、MSEがメディア・セグメントに含まれるDASHまたはCMAFインバンド・イベントをパースして処理することを許容する技術的解決策を提供する。よって、本開示に基づくMSEを利用するブラウザまたはユーザー・エージェントは、DASHおよびCMAFインバンド・イベント・ボックスをネイティブに処理し、それらをそれぞれのアプリケーションに送ることができる。
【0006】
本開示はまた、インバンド・イベントとそれぞれのアプリケーションとの間の時間同期にも対処する。従来の方法は、アプリケーションにおけるイベントを処理する際に、MSEにおいてイベントの開始時刻を使用することが含む。しかしながら、そのような従来の方法は、共通の時間基準を維持することを必要とする。本開示は、発送時間に基づくイベントの開始時間を示すオフセット開始時間を使用する、時間同期のための代替的な態様を提供する。オフセット時間を使用すると、ネットワーク・オーバーヘッド、サーバーの計算オーバーヘッド、およびアプリケーションの計算オーバーヘッドが削減される。
【課題を解決するための手段】
【0007】
本開示の実施形態は、MSEがメディア・セグメントに含まれるDASHおよびCMAFインバンド・イベント・ボックスをネイティブに処理することを可能にする解決策を提供する。
【0008】
本開示は、コンピュータ・プログラム・コードを記憶するように構成されたメモリと、該コンピュータ・プログラム・コードにアクセスし、該コンピュータ・プログラム・コードによって命令されるように動作するように構成されたプロセッサ(単数または複数)とを含む方法および装置を含む。コンピュータ・プログラム・コードは、前記少なくとも1つのプロセッサにメディア・データを取得させるように構成された第1取得コードと、前記少なくとも1つのプロセッサに、前記メディア・データから一つまたは複数のイベント・セグメントを生成させるように構成された第1生成コードと、前記少なくとも1つのプロセッサに、前記一つまたは複数のイベント・セグメントを第1のイベント処理バッファに付加させるように構成された第1付加コードであって、前記一つまたは複数のイベント・セグメントは、前記一つまたは複数のイベント・セグメントのそれぞれが前記第1のイベント処理バッファに付加される時刻に基づく、前記一つまたは複数のイベント・セグメントのそれぞれについてのイベント開始オフセットを含む、第1付加コードと、前記少なくとも1つのプロセッサに、前記一つまたは複数のイベント・セグメントを第2のイベント処理バッファに付加させるように構成された第2付加コードであって、前記一つまたは複数のイベント・セグメントは、前記一つまたは複数のイベント・セグメントのそれぞれについてのイベント発送情報を含む、第2付加コードと、前記少なくとも1つのプロセッサに、前記第1のイベント処理バッファおよび前記第2のイベント処理バッファ内のイベント発送情報に基づいて、前記一つまたは複数のイベント・セグメントを発送させるように構成された第1発送コードとを含む。
【0009】
例示的な実施形態によれば、第1のイベント処理バッファへの前記一つまたは複数のイベント・セグメントの付加は、前記一つまたは複数のイベント・セグメントのそれぞれに、前記一つまたは複数のイベント・セグメントの該それぞれの呈示時間および継続時間を、メディア・バッファ内の少なくとも1つの関連するメディア・サンプルのそれぞれの呈示時間および継続時間と整列させる。
【0010】
例示的な実施形態によれば、前記一つまたは複数のイベント・セグメントを前記第2のイベント処理バッファに付加することは、前記一つまたは複数のイベント・セグメントを前記第1のイベント処理バッファに付加することを複製することを含む。
【0011】
例示的な実施形態によれば、前記一つまたは複数のイベント・セグメントを前記第2のイベント処理バッファに付加することは、前記一つまたは複数のイベント・セグメントのそれぞれについてのイベント発送情報に基づく。
【0012】
例示的な実施形態によれば、イベント発送情報は、イベント初期化、イベント付加、イベント・パージ、イベント継続時間、またはイベント上書きのうちの少なくとも1つを示す情報を含む。
【0013】
例示的な実施形態によれば、第1発送コードは、前記少なくとも1つのプロセッサに、前記一つまたは複数のイベント・セグメントが発送イベント・テーブルに含まれているかどうかを判定させるように構成された第1判定コードと、前記一つまたは複数のイベント・セグメントが発送イベント・テーブルに含まれていないと判定することに基づいて、前記少なくとも1つのプロセッサに、前記一つまたは複数のイベント・セグメントをアプリケーションに発送させるように構成された第2発送コードとをさらに含む。
【0014】
例示的な実施形態によれば、コンピュータ・プログラム・コードは、前記少なくとも1つのプロセッサに、前記一つまたは複数のイベント・セグメントを発送した後に、前記一つまたは複数のイベント・セグメントを発送イベント・テーブルに追加させるように構成された第1追加コードをさらに含む。
【0015】
例示的な実施形態によれば、コンピュータ・プログラム・コードは、前記少なくとも1つのプロセッサに、一つまたは複数の新しいイベント・セグメントを生成させるように構成された第2生成コードと、前記少なくとも1つのプロセッサに、前記一つまたは複数の新しいイベント・セグメントのイベント継続時間に基づいて、前記第1のイベント処理バッファおよび前記第2のイベント処理バッファにおいて前記一つまたは複数のイベント・セグメントを分割させるように構成された第1分割コードと、前記少なくとも1つのプロセッサに、前記一つまたは複数の新しいイベント・セグメントの前記イベント継続時間に基づいて、前記第1のイベント処理バッファおよび前記第2のイベント処理バッファ内の前記一つまたは複数のイベント・セグメントを上書きさせるように構成された第1上書きコードとを含む。
【0016】
例示的な実施形態によれば、前記第1上書きコードは、前記少なくとも1つのプロセッサに、前記第1のイベント処理バッファ内の前記一つまたは複数のイベント・セグメントが同じメディア・セグメントに関連付けられていないことを判別させるように構成された第2判別コードと、前記少なくとも1つのプロセッサに、前記第2のイベント処理バッファから前記一つまたは複数のイベント・セグメントを削除させるように構成された第1削除コードと、前記少なくとも1つのプロセッサに、前記第1のイベント処理バッファから前記一つまたは複数のイベント・セグメントを削除させるように構成された第2削除コードと、前記少なくとも1つのプロセッサに、前記一つまたは複数の新しいイベント・セグメントを前記第1のイベント処理バッファと前記第2のイベント処理バッファに付加させるように構成された第3付加コードとをさらに含む。
【0017】
例示的な実施形態によれば、前記一つまたは複数のイベント・セグメントのそれぞれは、メディア・バッファ中の少なくとも1つのメディア・サンプルに関連付けられる。
【図面の簡単な説明】
【0018】
開示される主題のさらなる特徴、性質、およびさまざまな利点は、以下の詳細な説明および添付の図面からより明白となるであろう。
【
図1】実施形態による通信システムの簡略化された図解である。
【0019】
【
図2】実施形態によるストリーミング環境における構成要素の配置の例示的な図解である。
【0020】
【
図3】実施形態によるDASH処理モデルの簡略化されたブロック図である。
【0021】
【
図4】実施形態によるDASH処理モデルの簡略化されたブロック図である。
【0022】
【
図5】実施形態によるメディア・バッファおよびイベント・バッファの簡略化された図である。
【0023】
【
図6】実施形態によるメディア・バッファおよびイベント・バッファの簡略化された図である。
【0024】
【
図7】実施形態によるメディア・バッファおよびイベント・バッファの簡略化された図である。
【0025】
【
図8A】実施形態による、DASHおよびCMAFインバンド・イベントを処理するためのプロセスを示す簡略化されたフローチャートである。
【0026】
【
図8B】実施形態による、DASHおよびCMAFインバンド・イベントを処理するプロセスを示す簡略化されたフローチャートである。
【0027】
【
図9】実施形態による、DASHおよびCMAFインバンド・イベントを処理するプロセスを示す簡略化されたフローチャートである。
【0028】
【
図10】実施形態によるコンピュータ・システムの簡略化された図である。
【発明を実施するための形態】
【0029】
以下で議論される提案される特徴は、別々に、または任意の順序で組み合わせて使用されうる。さらに、実施形態は、処理回路(たとえば、一つまたは複数のプロセッサまたは一つまたは複数の集積回路)によって実装されてもよい。一例では、前記一つまたは複数のプロセッサは、非一時的なコンピュータ読み取り可能媒体に格納されたプログラムを実行する。
【0030】
図1は、本開示のある実施形態による通信システム100の簡略化されたブロック図を示す。通信システム100は、ネットワーク105を介して相互接続された少なくとも2つの端子102および103を含んでいてもよい。データの一方向伝送のために、第1の端末103は、ネットワーク105を介した他方の端末102への伝送のために、ローカル位置でのビデオ・データを符号化することができる。第2の端末102は、ネットワーク105から他方の端末の符号化されたビデオ・データを受信し、符号化されたデータを復号し、復元されたビデオ・データを表示することができる。一方向データ伝送は、メディア提供アプリケーション等において一般的でありうる。
【0031】
図1は、たとえば、ビデオ会議中に発生しうる符号化されたビデオの双方向伝送をサポートするために設けられた第2の対の端末101および104を示す。データの双方向伝送のためには、各端末101および/または104は、ネットワーク105を介した他方の端末への伝送のために、ローカル位置で捕捉されたビデオ・データを符号化することができる。各端末101および/または104はまた、他方の端末によって送信された符号化されたビデオ・データを受信してもよく、符号化されたデータを復号してもよく、復元されたビデオ・データをローカル・ディスプレイ装置において表示してもよい。
【0032】
図1において、端末101、102、103および/または104は、サーバー、パーソナルコンピュータおよびスマートフォンとして示されることがあるが、本開示の原理は、それに限定されない。本開示の実施形態は、ラップトップ・コンピュータ、タブレット・コンピュータ、メディア・プレーヤー、および/または専用のビデオ会議装置への適用を見出す。ネットワーク105は、たとえば、有線および/または無線通信ネットワークを含む端末101、102、103および/または104の間で、符号化されたビデオ・データを伝達する任意の数のネットワークを表す。通信ネットワーク105は、回線交換および/またはパケット交換チャネルにおいてデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。今の議論の目的のためには、ネットワーク105のアーキテクチャーおよびトポロジーは、以下に説明しない限り、本開示の動作には重要ではないことがありうる。
【0033】
図2は、一例として、ストリーミング環境におけるビデオエンコーダおよびデコーダの配置を示す。実施形態は、たとえば、ビデオ会議、デジタルTV、CD、DVD、メモリスティック等を含むデジタルメディア上の圧縮ビデオの記憶などを含む、他のビデオ対応アプリケーションに適用可能でありうる。
【0034】
ストリーミング・システムは、たとえば非圧縮ビデオ・サンプル・ストリーム213を生成するビデオ・ソース201、たとえばデジタル・カメラを含むことができる捕捉サブシステム203を含むことができる。このサンプル・ストリーム213は、エンコードされたビデオ・ビットストリームと比べた場合に、高データ・ボリュームとして強調されてもよく、ビデオ・ソース201に結合されたエンコーダ202によって処理されることができる。エンコーダ202は、以下でより詳細に説明する実施形態の諸側面を可能にし、または実施するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。サンプル・ストリームと比べた場合に、より低いデータ・ボリュームとして強調されうるエンコードされたビデオ・ビットストリーム204は、将来の使用のために、ストリーミング・サーバー205に記憶されることができる。一つまたは複数のストリーミング・クライアント212および207は、ストリーミング・サーバー205にアクセスして、エンコードされたビデオ・ビットストリーム204のコピーであってもよいエンコードされたビデオ・ビットストリーム208および206を取得することができる。クライアント212は、エンコードされたビデオ・ビットストリーム208の入力コピーをデコードし、ディスプレイ209または他のレンダリング装置でレンダリングされることができる出力ビデオ・サンプル・ストリーム210を生成するビデオ・デコーダ211を含むことができる。いくつかのストリーミング・システムでは、エンコードされたビデオ・ビットストリーム204、206および208は、あるビデオ符号化標準および/またはビデオ圧縮標準に従ってエンコードされることができる。これらの標準の例は、上述され、本明細書にさらに記載される。
【0035】
5Gメディアストリーミング(5G media streaming、5GMS)システムは、下りリンク・メディア・ストリーミング・サービスまたは上りリンク・メディアストリーミングサービス、またはその両方をサポートする5Gメディア・ストリーミング・アーキテクチャーからのアプリケーション機能、アプリケーション・サーバー、およびインターフェースの集合体でありうる。5GMSアプリケーション・プロバイダーは、5GMSシステムの機能と対話し、5GMSシステムの機能と対話する5GMSアウェア・アプリケーションを供給する当事者を含むことができる。5GMSアウェア・アプリケーションは、5GMSアプリケーション・サービスのサービス論理を含み、5GMSアーキテクチャーにおいて定義されたインターフェースおよびアプリケーションプログラミングインターフェース(API)を介して他の5GMSクライアントおよびネットワーク機能と対話する、5GMSアプリケーション・プロバイダーによって提供されるユーザー装置(UE)内のアプリケーション指してもよい。5GMSクライアントは、5GMS下りリンク(5GMSd)クライアントまたは5GMS上りリンク(5GMSu)クライアントのいずれか、またはその両方であるUE機能を指してもよい。
【0036】
5GMSdクライアントは、少なくとも5Gメディア・ストリーミング・プレーヤーと下りリンク・ストリーミングのためのメディア・セッション・ハンドラとを含み、よく定義されたインターフェース/APIを通じてアクセスされうるUE機能を指してもよい。5GMSuクライアントは、よく定義されたインターフェース/APIを通じてアクセスされうる5GMSuサービスの発信者〔オリジネータ〕を指してもよい。5GMSuメディア・ストリーマは、5GMSアプリケーション・プロバイダーのアプリケーション・サーバー(AS)機能へのストリーミング・メディア・コンテンツの上りリンク送達を可能にするとともに、メディア捕捉およびその後のストリーミングのための5GMSuアウェア・アプリケーションとメディア・セッション制御のためのメディア・セッション・ハンドラの両方と対話するUE機能を指しうる。
【0037】
動的ポリシーは、メディア・セッション中の上りリンクまたは下りリンク・アプリケーション・フローのための動的なポリシーおよび課金制御(policy and charging control、PCC)規則を指しうる。エジェスト(egest)・セッションは、5GMS ASから5GMSuアプリケーション・プロバイダーのほうへの上りリンク・メディア・ストリーミング・セッションを指しうる。摂取〔インジェスト(ingest)〕セッションは、メディア・コンテンツを5GMSd ASにアップロードするセッションを指しうる。ポリシー・テンプレートは、5GMSアプリケーション・プロバイダーに固有の(半静的な)ポリシーまたは制御機能(Policy or Control Function、PCF)/ネットワーク公開機能(Network Exposure Function、NEF)APIパラメータの集合と、結果として得られるPCC規則とを指しうる。ポリシー・テンプレートIDは、所望されるポリシー・テンプレートを識別しうる。該所望されるポリシー・テンプレートは、PCFが所望されるPCC規則をコンパイルできるように、5Gシステムに対して適切なPCF/NEF APIを選択するために、5GMSdアプリケーション機能(AF)によって使用される。メディア・プレーヤー・エントリーは、メディア呈示を定義する文書または文書へのポインタ(たとえば、DASHのためのメディア呈示記述(media presentation description、MPD)またはビデオクリップファイルへの一様リソース位置指定子(uniform resource locator、URL))を指しうる。メディア・ストリーマ・エントリーは、上りリンク・メディア・ストリーミング・セッションのエントリー・ポイントを定義する(たとえば、URLの形の)ポインタを参照することができる。呈示エントリーは、HTML5文書のような、アプリケーション呈示を定義する文書または文書へのポインタを指しうる。
【0038】
プロビジョニング・セッションは、5GMSdアウェア・アプリケーションの集合に関連する5GMSd機能を構成する5GMSdアプリケーション・プロバイダーによってインターフェース(M1d)において供給されるデータ構造を指しうる。5GMSdメディア・プレーヤーは、メディア再生エントリーに基づいてメディア呈示の再生およびレンダリングを可能にし、再生、一時停止、シーク、停止などのいくつかの基本的なコントロールを5GMSdアウェア・アプリケーションに公開するUE機能を指しうる。サーバー・アクセス情報は、ストリーミング・セッションの受信をアクティブにするために必要とされるパラメータおよびアドレス(5GMSd AFおよび5GMSd ASアドレスを含む)の集合を指しうる。サービスおよびコンテンツ・ディスカバリーは、エンドユーザーが利用可能なストリーミング・サービスおよびコンテンツのオファーを発見し、アクセスのための特定のサービスまたはコンテンツ項目を選択することを可能にする、5GMSdアプリケーション・プロバイダーによって5GMSアウェア・アプリケーションに提供される機能および手順を指しうる。サービス告知は、5GMSアウェア・アプリケーションが5GMSサービス・アクセス情報を直接、またはその情報への参照の形で取得できるように、5GMSアウェア・アプリケーションと5GMSアプリケーション・プロバイダーの間で行われる手続きを指しうる。
【0039】
サードパーティーのプレーヤーは、メディア・コンテンツを再生するために選択された5GMSd機能を行使するためにAPIを使用するアプリケーションの一部を指しうる。サードパーティーの上りリンクストリーマは、メディア・コンテンツを捕捉しストリーミングするために選択された5GMSu機能を行使するためにAPIを使用するアプリケーションの一部を指しうる。
【0040】
図3は、DASHおよびCMAFイベントを処理するためのサンプル・クライアント・アーキテクチャーのような、サンプルとなるDASH処理モデル300を示す。DASH処理モデル300では、クライアントによるメディア・セグメントの要求は、マニフェスト303における記載されたアドレスに基づくことができる。マニフェスト303はまた、クライアントがそこからメタデータ・トラックのセグメントにアクセスし、それらをパースし、それらをアプリケーション301に送ることができるところのメタデータ・トラックを記述する。
【0041】
マニフェスト303は、MPDイベントまたはインバンド・イベントを含み、インバンド・イベントおよび「moof」パーサー306は、MPDイベント・セグメントまたはインバンド・イベント・セグメントをパースし、イベント・セグメントを、イベントおよびメタデータ・バッファ330に付加してもよい。インバンド・イベントおよび「moof」パーサー306は、メディア・セグメントを取り出し、メディア・バッファ340に付加してもよい。イベントおよびメタデータ・バッファ330は、イベントおよびメタデータ情報を、イベントおよびメタデータ同期器および発送器335に送信することができる。イベントおよびメタデータ同期器および発送器335は、特定のイベントをDASHプレーヤーの制御、選択、ヒューリスティック論理302に、またアプリケーション関連イベントおよびメタデータ・トラックをアプリケーション301に発送〔ディスパッチ〕することができる。
【0042】
いくつかの実施形態によれば、MSEは、メディア・バッファ340およびメディア・デコーダ345を含んでいてもよい。MSE 320は、メディア・セグメントの論理バッファであり、ここで、メディア・セグメントは、そのメディア・セグメントの呈示時間に基づいて追跡され、順序付けられうる。各メディア・セグメントは、メディア・セグメントのタイムスタンプ・オフセットに基づいて、メディア・バッファ340に追加または付加〔アペンド〕されることができ、タイムスタンプ・オフセットは、メディア・バッファ340内のメディア・セグメントを順序付けるために使用されうる。
【0043】
メディア・バッファ340にメディア・セグメントが存在する限り、イベントおよびメタデータ・バッファ330は対応するイベント・セグメントおよびメタデータを維持する。
図3によれば、MSE 320は、メディア・バッファ340およびメディア・デコーダ345のみを含む。イベントおよびメタデータ・バッファ330ならびにイベントおよびメタデータ同期器および発送器335は、MSE 320にネイティブではなく、MSE 320がネイティブにイベントを処理し、それらをアプリケーションに送信することを妨げる。
【0044】
図4は、DASHおよびCMAFイベントを処理するためのサンプルとしてのクライアント・アーキテクチャーなどのサンプルとしてのDASH処理モデル400を示す。DASH処理モデル400では、メディア・セグメントのクライアント要求は、マニフェスト403における記載されたアドレスに基づくことができる。マニフェスト403はまた、クライアントがそこからメタデータ・トラックのセグメントにアクセスし、それらをパースし、それらをアプリケーション401に送ることができるところのメタデータ・トラックを記述する。
【0045】
マニフェスト403は、MPDイベントまたはインバンド・イベントを含み、インバンド・イベントおよび「moof」パーサー406は、MPDイベント・セグメントまたはインバンド・イベント・セグメントをパースし、イベント・セグメントをイベント・パージング・バッファ430に付加することができる。メディア・データまたはメディア・ストリームおよびマニフェスト403内の情報に基づいて、インバンド・イベントおよび「moof」パーサー406は、メディア・セグメントを取り出し、メディア・バッファ440に付加することができる。イベント・パージング・バッファ430は、イベント同期器および発送器435にイベントおよびメタデータ情報を送信することができる。イベント同期器および発送器435は、特定のイベントをDASHプレーヤーの制御、選択、およびヒューリスティック論理402に、またアプリケーション関連イベントおよびメタデータ・トラックをアプリケーション401に発送することができる。
【0046】
例示的な実施形態によれば、
図4において、MSEは、メディア・バッファ340、メディア・デコーダ345、イベント・パージング・バッファ430、イベント同期器および発送器435、ならびに発送済みイベント・テーブル450を含むように拡張される。発送済みイベント・テーブル450は、すでにアプリケーション401に発送されたイベントを記録することができる。イベント・パージング・バッファ430およびイベント同期器および発送器435の拡張は、MSEがインバンド・イベントをネイティブに処理することを可能にし、発送済みイベント・テーブル450の作成は、すでに発送されているイベント・メッセージの記録および追跡を可能にする。
【0047】
例示的な実施形態において、MSE 420またはその構成要素は、イベント・セグメントのイベント固有オフセットに基づいてイベントを発送してもよい。例は、イベント開始時刻オフセットを含む。MSE 420またはその構成要素は、イベント・セグメントについてのイベント開始時間オフセットを決定してもよく(ここで、開始時間オフセットは、イベント呈示時間を基準として決定される)、イベント・パージング・バッファ430またはイベント同期器および発送器435におけるイベントを順序付けし、発送するために、該イベント開始時間オフセットを使用してもよい。例示的な実施形態では、イベント開始時間オフセットおよびタイムスタンプ・オフセットは等価であってもよく、イベント開始時間オフセットは、イベント・パージング・バッファ430またはイベント同期器および発送器435におけるイベント・セグメントを指し、タイムスタンプ・オフセットは、メディア・バッファ440内のメディア・セグメントを指す。
【0048】
例示的な実施形態では、MSE 420は、関連するイベントおよびメディアについて、イベント・セグメントおよびメディア・セグメントのパージおよび上書きを扱うことができる。MSE 420は、イベントに関連するメディア・セグメントがメディア・バッファ440内に保持される場合、イベント・パージング・バッファ430またはイベント同期器および発送器435内にイベントを保持してもよい。MSE 420は、関連するメディア・セグメントのタイミングおよび継続時間に基づいて、イベント・セグメントのタイミングおよび継続時間を管理することができる。
【0049】
例示的な実施形態では、アプリケーション401は、タイムスタンプ・オフセットまたはイベント・タイムスタンプ・オフセットを設定することができる。アプリケーション401は、スキームURI/値および該スキームURI/値についての発送モードを設定することもできる。MSE 420は、スキームURI/値、イベントID、イベント・セグメントに関連付けられたメディア・セグメントを示すイベント関連付けID、イベント・セグメントの呈示時間、イベントの開始時間オフセット、およびイベント継続時間に基づいて、イベントを発送することができる。
【0050】
図5は、メディア・セグメントおよびイベント・セグメントを処理する例示的なメディアおよびイベント・バッファ・セット500を示す。各メディア・ストリーム510は、メディア・セグメント(S0、S1、S2、S3)およびイベント・セグメント(E0、E1、E2)を含んでいてもよい。メディア・セグメントは、メディア・ソース・バッファまたはメディア・バッファ520に付加されうる。
【0051】
インバンド・イベントおよび「moof」パーサー406は、メディア・ストリームをパースしてもよく、メディア・セグメントおよびイベント・セグメントを生成してもよい。各メディア・セグメントは、タイムスタンプ・オフセットに基づいて、メディア・ソース・バッファまたはメディア・バッファ520に付加されうる。メディア・ソース・バッファまたはメディア・バッファ520に付加される各メディア・セグメントは、一意的なイベント関連付けIDを有することができる。生成されたイベント・セグメント(E0、E1、E2)は、それぞれのメディア・セグメントのイベント関連付けIDを使用して、特定のメディアセグメント(S0、S1、S2、S3)と関連付けられてもよい。例示的な実施形態では、あるメディア・セグメントに複数のイベント・セグメントが関連付けられてもよい。
【0052】
例示的な実施形態では、イベント・セグメント(E0、E1、E2)は、イベント・パージ・バッファ530内のイベント・セグメントのイベント開始時間およびイベント継続時間を、メディア・バッファ520内の関連するメディア・セグメント(S0、S1、S2、S3)の開始時間および継続時間と整列させることによって、イベント・パージ・バッファ530に付加されてもよい。一例として、イベント・パージ・バッファ530内の一つまたは複数のイベント・セグメントの呈示時間もしくはイベント開始時間オフセットおよび継続時間は、メディア・バッファ620内の関連するメディア・セグメントの呈示時間および継続時間と整列されてもよい。いくつかの例示的な実施形態では、2つ以上のイベント・セグメントが同じメディア・セグメントに関連付けられている場合、各イベント・セグメントのイベント開始時間オフセットは、関連するメディア・セグメントの呈示時間に基づいて調整されてもよい。
【0053】
いくつかの例示的な実施形態では、イベント・パージ・バッファ530におけるそれぞれのイベント・セグメントのイベント開始時間および継続時間を複製することによって、イベント発送バッファ540にイベント・セグメントが付加されてもよい。いくつかの実施形態では、イベント・セグメントの順序、呈示時間、および継続時間は、イベント・パージ・バッファ530およびイベント発送バッファ540の両方において等価でありうる。一例として、アプリケーションがスキームを「on_receive」として設定した場合、イベント発送バッファ540におけるイベント・セグメントの呈示時間またはイベント開始時間オフセットおよび継続時間は、関連するメディア・セグメントの呈示時間および継続時間と整列されてもよい。すなわち、イベント発送バッファ540は、イベント・パージ・バッファ530の複製であってもよい。
【0054】
図6は、メディア・セグメントおよびイベント・セグメントを処理する例示的なメディアおよびイベント・バッファ・セットを示す。各メディア・ストリーム610は、メディア・セグメント(S0、S1、S2、S3)およびイベント・セグメント(E0、E1、E2)を含んでいてもよい。メディア・セグメントは、メディア・ソース・バッファまたはメディア・バッファ620に付加されうる。
【0055】
インバンド・イベントおよび「moof」パーサー406は、メディア・ストリームをパースしてもよく、メディア・セグメントおよびイベント・セグメントを生成してもよい。各メディア・セグメントは、タイムスタンプ・オフセットに基づいて、メディア・ソース・バッファまたはメディア・バッファ620に付加されうる。メディア・ソース・バッファまたはメディア・バッファ620に付加される各メディア・セグメントは、一意的なイベント関連付けIDを有することができる。生成されたイベント・セグメント(E0、E1、E2)は、それぞれのメディア・セグメントのイベント関連付けIDを使用して、特定のメディアセグメント(S0、S1、S2、S3)と関連付けられてもよい。例示的な実施形態では、あるメディア・セグメントに複数のイベント・セグメントが関連付けられてもよい。
【0056】
例示的な実施形態では、イベント・セグメント(E0、E1、E2)は、イベント・パージ・バッファ630内のイベント・セグメントのイベント開始時間およびイベント継続時間をメディア・バッファ620内の関連するメディア・セグメント(S0、S1、S2、S3)の開始時間および継続時間と整列させることによって、イベント・パージ・バッファ630に追加されうる。一例として、イベント・パージ・バッファ630内の一つまたは複数のイベント・セグメントの呈示時間またはイベント開始時間のオフセットおよび継続時間は、メディア・バッファ620内の関連するメディア・セグメントの呈示時間および継続時間と整列されてもよい。いくつかの例示的な実施形態では、2つ以上のイベント・セグメントが同じメディア・セグメントに関連付けられている場合、各イベント・セグメントのイベント開始時間オフセットは、関連するメディア・セグメントの呈示時間に基づいて調整されるべきである。
【0057】
例示的な実施形態では、イベント・セグメントのイベント開始時間オフセットがイベント発送バッファ640におけるイベントの呈示時間であり、イベント・セグメントの継続時間がイベント発送バッファ640におけるイベントの継続時間であるようにイベント・セグメントを追加することによって、イベント発送バッファ640にイベント・セグメントが付加されてもよい。一例として、アプリケーションがスキームを「on_start」として設定している場合、イベント発送バッファ640内のイベント・セグメントの呈示時間および継続時間は、イベント・セグメントのイベント開始時間のオフセットおよび継続時間を反映しうる。いくつかの実施形態では、イベント発送バッファ640は、イベント・セグメントのイベント開始時刻および継続時間を反映してもよく、すなわち、イベント・セグメントは、該イベント・セグメントが該イベント・セグメントの開始から該イベント・セグメントの終了までイベント発送バッファ640内にあるように付加されてもよい。このように、いくつかの実施形態では、イベント・パージ・バッファ630およびイベント発送バッファ640は、等価でなくてもよい。
【0058】
図7は、メディア・セグメントおよびイベント・セグメントを処理するための例示的なメディアおよびイベント・バッファ・セット700を示す。各メディア・ストリーム710は、メディア・セグメント(S0、S1、S2、S3)およびイベント・セグメント(E0、E1、E2)を含んでいてもよい。メディア・セグメントは、メディア・ソース・バッファまたはメディア・バッファ720に付加されうる。
【0059】
例示的な実施形態では、イベント・パージ・バッファ730およびイベント発送バッファ740におけるイベント・セグメント(E0、E1、E2)は、除去、パージ、または上書きされうる。いくつかの実施形態において、イベント・セグメントは、部分的に除去、パージ、または上書きされてもよい。イベント・セグメントを除去、削除、または上書きするために、イベント・セグメントは、イベント・パージ・バッファ730およびイベント発送バッファ740から除去されてもよい。一例として、ひとたびメディア・セグメントがメディア・バッファ720において上書きされると、上書きされたメディア・セグメントに関連するイベント・パージ・バッファ730およびイベント発送バッファ740内の対応するイベント・セグメントも上書きされうる。
【0060】
いくつかの実施形態では、イベント・セグメントを部分的に除去または上書きするために、イベント・セグメントは、イベント・パージ・バッファ730およびイベント発送バッファ740内のより小さいセクションに分割されてもよく、新しいイベント・セグメントと重複するイベント・セグメントのセクションのみが除去、パージ、または上書きされてもよく、代わりに新しいイベント・セグメント・セクションが追加されてもよい。一例として、新しいイベント・セグメントが、イベント・パージ・バッファ730またはイベント発送バッファ740内の現在のイベント・セグメントよりも小さい場合、イベント・パージ・バッファ730内の現在のイベント・セグメントは、新しいイベント・セグメントと一致するように、より小さいセクションに分割されてもよい。新しい、より小さいイベント・セグメントと重複するイベント・パージ・バッファ730内のイベント・セグメントのセクションは、除去、パージ、または上書きされてもよい。
【0061】
いくつかの実施形態では、新しいイベント・セグメントと重複するイベント・パージ・バッファ730内のイベント・セグメントのみが除去、パージ、または上書きされてもよい。いくつかの実施形態では、新しいイベント・セグメントと重複するイベント発送バッファ740内のイベント・セグメントのみが除去、パージ、または上書きされてもよい。イベント・パージ・バッファ730が上書きされてもよく、次いで、イベント・パージ・バッファ730とイベント発送バッファ740が等価でありうるように、イベント発送バッファ740が上書きされてもよい。一例として、アプリケーションがスキームを「on_receive」として設定していた場合、イベント・パージ・バッファ730およびイベント発送バッファ740の両方における新しいイベント・セグメントと重複するイベント・セグメントまたはイベント・セグメント・セクションが上書きされてもよい。
【0062】
いくつかの例示的な実施形態では、イベント・セグメントの除去、パージ、または上書きは、同じメディア・セグメントに関連するイベント・パージ・バッファ730内に他のイベント・セグメントがないことを判別することを要求してもよい。いくつかの例示的な実施形態では、同じメディア・セグメントに関連するイベント・パージ・バッファ730内に他のイベント・セグメントがない場合、イベント発送バッファ740内の対応するイベントが除去、パージ、または上書きされうる。一例として、2つ以上のイベント・セグメントがイベント・パージ・バッファ730内の新しいイベント・セグメントと重複する場合、重複イベント・セグメントを上書きすることは、同じメディア・セグメントに関連するすべてのイベント・セグメントが、イベント・パージ・バッファ730内の重複イベント・セグメントを上書きする前に発送されることを要求してもよい。いくつかの実施形態では、イベント・パージ・バッファ730内に同じメディア・セグメントに関連するイベント・セグメントがない場合、重複するイベント・セグメントは、イベント・パージ・バッファ730内で上書きされてもよい。一例として、アプリケーションがスキームを「on_start」に設定していた場合、イベント・パージ・バッファ730内の重複イベント・セグメントを上書きすることは、同じメディア・セグメントに関連するすべてのイベント・セグメントが、イベント・パージ・バッファ730内の重複イベント・セグメントを上書きする前に、発送されることを要求してもよい。いくつかの実施形態では、ひとたびイベント・パージ・バッファ730においてイベント・セグメントが除去、パージ、または上書きされると、対応するイベント・セグメントは、イベント発送バッファ740において除去、パージ、または上書きされうる。一例として、アプリケーションがスキームを「on_start」に設定していた場合、イベント発送バッファ740において上書きされるべき重複セグメントは、イベント・パージ・バッファ730における重複イベント・セグメントが上書きされた後に上書きされてもよい。
【0063】
図8Aは、DASHおよびCMAFインバンド・イベントの処理に関するプロセス800を示す例示的なフローチャートを示す。ここで、例示的な実施形態によれば、イベント・セグメントが、イベント・パージ・バッファおよびイベント発送バッファに付加されうる。810において、メディア・データが取得される。メディア・データは、任意のタイプのメディア・データであってもよい。一例として、メディア・データは、オーディオデータ、ビデオ・データ、文書、またはそれらの任意の組み合わせであってもよい。取得されたメディア・データは、イベントデータをも含んでいてもよい。
【0064】
815において、取得されたメディア・データからイベント・セグメントが生成されうる。いくつかの実施形態では、MSEまたはMSEのパーサー・コンポーネントは、得られたメディア・データからイベント・セグメントを生成することができる。イベント・セグメントは、クライアントまたはアプリケーションにメディア・タイムライン関連のイベントを送達するために、MPDおよびインバンド・イベントを含んでいてもよい。一例として、インバンド・イベントおよび「moof」パーサー(306または406)が、取得されたメディア・データからイベント・セグメントを生成してもよい。いくつかの実施形態では、パーサーは、メディア・セグメントおよびメディア・セグメントに対応するイベント・セグメントの両方を生成してもよい。たとえば、インバンド・イベントおよび「moof」パーサー(306または406)は、メディア・データから、メディア・セグメントおよび関連するイベント・セグメントを生成してもよい。イベント・セグメントは、イベント関連付けIDを使用してイベント・セグメントと関連付けられてもよく、イベント関連付けIDは、メディア・セグメントと関連付けられた一意的なIDであってもよい。いくつかの実施形態では、複数のイベント・セグメントが、同じメディア・セグメントに関連付けられてもよい。同じメディア・セグメントに関連するイベント・セグメントは、そのイベント関連付けIDを有していてもよい。
【0065】
820において、イベント・セグメントのイベント開始時間オフセットが決定される。いくつかの実施形態において、MSEまたはその構成要素は、イベント・パージ・バッファまたはイベント発送バッファに付加されるべき各イベント・セグメントについてのイベント開始時間オフセットを決定してもよい。いくつかの実施形態において、イベント・セグメントについてのイベント開始時間オフセットは、イベント・セグメントがイベント・パージング・バッファに付加される時間に基づいていてもよい。いくつかの実施形態では、イベント・セグメントについてのイベント開始時間オフセットは、イベント・セグメントがイベント発送バッファに付加される時間に基づいていてもよい。いくつかの実施形態では、イベント・セグメントのイベント開始時間オフセットは、MSE APIにおけるイベント・セグメントまたはメディア・セグメントの呈示時間に基づいていてもよい。イベント・セグメントの開始時間オフセットは、発送の瞬間からのイベントの開始時刻を示す。よって、イベント・セグメントがアプリケーションに送られる時、アプリケーションは、共通時間基準を比較する代わりに、発送の瞬間からイベントの相対的な開始を決定することができる。MSE API内の時間に基づくイベント・セグメントの開始時間オフセットを使用することにより、イベント・セグメントについての相対的な開始時間を決定する際に、アプリケーションが共通の時間基準を比較する必要がなくなり、アプリケーションの処理効率が向上し、帯域幅要件が低減する。
【0066】
825において、イベント・セグメントは、イベント・セグメントのイベント開始時間オフセットに基づいて、イベント・パージ・バッファに付加されうる。イベント・パージ・バッファは、イベント・セグメントの順序、それらの位置、および発送タイミングを追跡するために使用されうる。いくつかの実施形態では、イベント・セグメントをパージング・バッファに付加することは、イベント・セグメントの呈示時間および継続時間を、関連するメディア・セグメントのそれぞれの呈示時間および継続時間と整列させることを含んでいてもよい。一例として、メディア・セグメントに関連するイベント・セグメントは、それらのイベント・セグメントが各イベント・セグメントに関連するメディア・セグメントと同じ呈示時間および継続時間を有するように、イベント・パージ・バッファ内に配置されうる。
【0067】
830において、イベント・セグメントは、イベント・セグメントの発送情報に基づいてイベント発送バッファに付加されうる。いくつかの実施形態では、発送情報は、イベント初期化、イベント付加、イベント・パージ、イベント継続時間、イベント上書き、またはアプリケーションによって設定された属性のうちの少なくとも1つを示す情報を含んでいてもよい。アプリケーションによって設定された、またはアプリケーションによって設定された属性に基づくいくつかの属性は、スキームURI/値、id、イベント・セグメントのイベント開始時間オフセット、イベント・セグメントの開始呈示デルタ、およびイベント・セグメント継続時間を含みうる。
【0068】
いくつかの実施形態では、イベント発送バッファへのイベント・セグメントの付加は、イベント・パージ・バッファへのイベント・セグメントの付加の反復または複製することを含んでいてもよい。よって、イベント・セグメントの順序、呈示時間、および継続時間は、イベント・パージ・バッファおよびイベント発送バッファにおいて同じであってもよい。一例として、アプリケーションがスキームを「on_receive」として設定していた場合、イベント発送バッファにおける一つまたは複数のイベント・セグメントの呈示時間またはイベント開始時間オフセットおよび継続時間が、関連するメディア・セグメントの呈示時間および継続時間と整列されてもよい。すなわち、イベント発送バッファはイベント・パージ・バッファの複製であってもよい。
【0069】
いくつかの実施形態では、イベント・セグメントをイベント発送バッファに付加することは、イベント・セグメントのイベント開始時間オフセットがイベント発送バッファにおけるイベントの呈示時間であり、イベント・セグメントの継続時間がイベント発送バッファにおけるイベントの継続時間であるように、イベント・セグメントを追加することによって達成されてもよい。一例として、アプリケーションがスキームを「on_start」として設定していた場合、イベント発送バッファ内のイベント・セグメントの呈示時間と継続時間は、イベント・セグメントのイベント開始時間オフセットおよび継続時間を反映してもよい。いくつかの実施形態では、イベント発送バッファは、イベント・セグメントのイベント開始時間および継続時間を反映してもよく、すなわち、イベント・セグメントは、該イベント・セグメントが該イベント・セグメントの開始から該イベント・セグメントの終了までバッファ内にあるように、付加されてもよい。よって、いくつかの実施形態では、イベント・パージ・バッファおよびイベント発送バッファは等価でなくてもよい。
【0070】
835において、イベント・セグメントは、それぞれのイベント・セグメントについての発送情報に基づいてアプリケーションに発送されうる。発送情報は、イベント・セグメントの初期化、イベント関連付けID、イベント開始時間オフセット、イベント・セグメント継続時間、アプリケーション・スキームURI/値、およびイベント・パージング、イベント付加、イベント上書き属性に関する情報を含んでいてもよい。
【0071】
図8Bは、DASHおよびCMAFインバンド・イベントの処理に関するプロセス850を示す例示的なフローチャートを示す。ここで、例示的実施形態によれば、イベント・セグメントがイベント・パージ・バッファおよびイベント発送バッファから発送されうる。
【0072】
860において、特定の呈示時間についてのイベント発送バッファ内のイベント・セグメントが識別される。いくつかの実施形態において、MSEまたはその構成要素は、特定の呈示時間についてのイベント発送バッファ内の諸イベント・セグメントを識別することができる。いくつかの実施形態において、呈示時間は、MSE APIイベント呈示時間に基づいていてもよい。他の実施形態において、呈示時間は、メディア・セグメントのための呈示時間に基づいていてもよい。複数のイベント・セグメントが、あるイベント関連付けIDに関連付けられてもよい。すなわち、複数のイベント・セグメントが、同じメディア・セグメントに関連付けられてもよい。
【0073】
865では、特定の呈示時刻についてのイベント発送バッファにおける識別されたイベント・セグメントが、発送イベント・テーブルに含まれているかどうかが判定される。いくつかの実施形態では、MSEまたはその構成要素が、イベント・セグメントが発送イベント・テーブルに含まれるかどうかを決定することができる。発送イベント・テーブルは、すでにアプリケーションに発送されたイベント・セグメントまたはイベント・メッセージの記録を保持することができる。よって、イベント・セグメントが発送イベント・テーブルに含まれている場合、そのイベント・セグメントはすでにアプリケーションに発送されている可能性がある。呈示時のイベント発送バッファ内のイベント・セグメントが発送イベント・テーブルに含まれていない場合、そのイベント・セグメントはまだアプリケーションに発送されていない可能性が高いため、870でアプリケーションに発送されてもよい。一例として、呈示時のイベント発送バッファ内のイベント・セグメントのイベントIDが発送イベント・テーブルに存在しない場合、そのイベント・セグメントはアプリケーションに発送される。もう一つの例として、呈示時のイベント発送バッファ内のイベント・セグメントのイベントIDが発送イベント・テーブルに含まれていれば、そのイベント・セグメントはすでにアプリケーションに発送されている可能性がある。
【0074】
875では、アプリケーションに発送されたイベント・セグメントが発送イベント・テーブルに追加されてもよい。いくつかの実施形態では、発送イベント・テーブルに含まれていない、発送されたイベント・セグメントが、発送イベント・テーブルに追加される。一例として、あるイベント・セグメントがアプリケーションに発送された場合、そのイベント・セグメントのイベントIDが発送イベント・テーブルに追加され、そのイベント・セグメントが前記アプリケーションに発送されたとうい記録を維持することができる。
【0075】
図9は、DASHおよびCMAFインバンド・イベントの処理に関するプロセス900を示す例示的なフローチャートを示す。ここで、例示的な実施形態によれば、イベント・セグメントが、イベント・パージ・バッファおよびイベント発送バッファから除去、パージ、または上書きされうる。910において、新しいメディア・データからの新しいイベント・セグメントが生成される。いくつかの実施形態では、MSEまたはその構成要素は、新しいメディア・データから一つまたは複数の新しいイベント・セグメントを生成することができる。いくつかの例示的な実施形態では、新しいイベント・セグメントは、メディア・バッファに付加される新しいメディア・セグメントについて生成されてもよい。一例として、新しいメディア・セグメントがパースされ、メディア・バッファに付加される場合、新しいメディア・セグメントに対応する新しいイベント・セグメントがイベント・パージ・バッファおよびイベント発送バッファに付加されうる。
【0076】
915において、イベント・パージ・バッファ内の新しいイベント・セグメントと重複するイベント・セグメントは、それらの新しいイベント・セグメントのイベント継続時間、イベント開始時間オフセット、または呈示時間と一致するように分割されうる。新しいセグメントがイベント・パージ・バッファ内のイベント・セグメントよりも小さい場合、イベント・パージ・バッファ内の重複イベント・セグメントは、新しいイベント・セグメントのイベント継続時間にマッチするように分割されうる。一例として、イベント・パージ・バッファ内のイベント・セグメントと重複する新しいイベント・セグメントがより短いイベント継続時間を有する場合、イベント・パージ・バッファ内の重複イベント・セグメントは、新しいイベント・セグメントの該より短いイベント継続時間に対応する2つ以上のセクションに分割されうる。いくつかの実施形態では、重複するイベント・パージ・バッファ内のイベント・セグメント・セクションが新しいイベント・セグメントの継続時間に基づいて除去、パージ、または上書きされる。
【0077】
920では、イベント発送バッファ内の新しいイベント・セグメントと重複するイベント・セグメントは、新しいイベント・セグメントのイベント継続時間、イベント開始時間オフセット、または呈示時間と一致するように分割されうる。新しいセグメントがイベント発送バッファ内のイベント・セグメントより小さいまたは短い場合、イベント発送バッファ内の重複イベント・セグメントは、新しいイベント・セグメントのイベント継続時間、イベント開始時間オフセット、または呈示時間に一致するように分割されうる。一例として、イベント発送バッファ内のイベント・セグメントと重複する新しいイベント・セグメントがより短いイベント継続時間をもつ場合、イベント発送バッファ内の重複イベント・セグメントは、新しいイベント・セグメントの該より短いイベント継続時間に対応する2つ以上のセクションに分割されてもよい。いくつかの実施形態では、重複するイベント発送バッファ内のイベント・セグメント・セクションは、新しいイベント・セグメントの継続時間に基づいて除去、パージ、または上書きされる。
【0078】
925において、イベント・パージ・バッファおよびイベント発送バッファからのイベント・セグメントが除去、パージ、または上書きされうるかどうかが決定される。イベント・パージ・バッファまたはイベント発送バッファからのイベント・セグメントが除去、パージ、または上書きされるかどうかは、上書きされるメディア・セグメントに関連するすべてのイベント・セグメントが発送されるかどうかに依存する。新しいイベント・セグメントと重複するイベント・パージ・バッファからのイベント・セグメントが、同じメディア・セグメントに関連付けられていない場合、930において、新しいイベント・セグメントと重複するイベント・パージ・バッファからのイベント・セグメントは、イベント発送バッファから削除されてもよい。935では、新しいイベント・セグメントと重複するイベント・パージ・バッファからのイベント・セグメントがイベント・パージ・バッファから削除されてもよい。一例として、アプリケーションがスキームを「on_start」に設定し、新しいイベント・セグメントと重複するイベント・パージ・バッファからのイベント・セグメントが同じメディア・セグメントに関連付けられていない場合、新しいイベント・セグメントと重複するイベント・セグメントは、イベント・パージ・バッファから削除されてもよく、また、同じメディア・セグメントに関連付けられた他のイベントはすでに発送されている可能性が高いので、イベント発送バッファからも削除されてもよい。
【0079】
いくつかの実施形態では、イベント・パージ・バッファ内の重複イベント・セグメントが同じメディア・セグメントに関連付けられていないかどうかを決定するステップは、任意的に実行されてもよい。一例として、アプリケーションがスキームを「on_receive」に設定していた場合、イベント・パージ・バッファ内の重複イベント・セグメントが同じメディア・セグメントに関連付けられていないかどうかを決定するステップは実行されなくてもよい。
【0080】
930において、新しいイベント・セグメントと重複するイベント・セグメントは、イベント・パージ・バッファから削除されてもよい。935において、新しいイベント・セグメントと重複するイベント・セグメントは、イベント発送バッファから削除されてもよい。940において、新しいイベント・セグメントは、本開示の実施形態に従って、イベント・パージ・バッファおよびイベント発送バッファに付加されうる。
【0081】
図8A~8Bおよび
図9は、プロセス800、850、および900の例示的なブロックを示すが、実施形態では、プロセス800、850、および900は、
図8A~8Bおよび
図9に示されるのに比して、追加的なブロック、より少ないブロック、異なるブロック、または異なる配置のブロックを含んでいてもよい。実施形態において、プロセス800、850、および900の任意のブロックは、適宜、任意の量または順序で組み合わされ、または配列されてもよい。実施形態において、プロセス800、850、および900のブロックのうちの2つ以上が並列に実行されてもよい。
【0082】
上述の技法は、コンピュータ読み取り可能な命令を用いる、一つまたは複数のコンピュータ読み取り可能な媒体に物理的に記憶されたコンピュータ・ソフトウェアとして、または特定的に構成された一つまたは複数のハードウェアプロセッサによって、実装されうる。たとえば、
図10は、さまざまな実施形態を実装するのに適したコンピュータ・システム1000を示す。
【0083】
コンピュータ・ソフトウェアは、任意の好適な機械コードまたはコンピュータ言語を用いてコーディングされることができ、アセンブリ、コンパイル、リンク、または同様の機構の対象とされて、コンピュータ中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)などによって、直接的に、またはインタープリット、マイクロコード実行などを通じて実行可能な命令を含むコードを作成することができる。
【0084】
命令は、たとえば、パーソナルコンピュータ、タブレット・コンピュータ、サーバー、スマートフォン、ゲーム装置、モノのインターネット装置等を含むさまざまなタイプのコンピュータまたはそのコンポーネント上で実行されることができる。
【0085】
コンピュータ・システム1000について
図10に示されるコンポーネントは、例としての性質であり、本開示の実施形態を実装するコンピュータ・ソフトウェアの使用または機能の範囲に関する制限を示唆することを意図したものではない。コンポーネントの構成も、コンピュータ・システム1000の例示的実施形態において示されているコンポーネントの任意の1つまたは組み合わせに関する何らかの依存性または要件を有するものとして解釈されるべきではない。
【0086】
コンピュータ・システム1000は、ある種のヒューマン・インターフェース入力装置を含むことができる。そのようなヒューマン・インターフェース入力装置は、たとえば、触覚入力(たとえば、キーストローク、スワイプ、データグローブの動き)、音声入力(たとえば、声、拍手)、視覚入力(たとえば、ジェスチャー)、嗅覚入力を通じた一または複数の人間ユーザーによる入力に応答することができる。また、ヒューマン・インターフェース装置は、音声(たとえば、発話、音楽、周囲の音)、画像(たとえば、スキャンされた画像、スチール画像カメラから得られる写真画像)、ビデオ(たとえば、2次元ビデオ、立体視ビデオを含む3次元ビデオ)のような、人間による意識的入力に必ずしも直接関係しないある種のメディアを捕捉するために使用できる。
【0087】
入力ヒューマン・インターフェース装置は、キーボード1001、マウス1002、トラックパッド1003、タッチスクリーン1010、ジョイスティック1005、マイクロフォン1006、スキャナ1008、カメラ1007の一つまたは複数(それぞれの一つしか図示していない)を含んでいてもよい。
【0088】
コンピュータ・システム1000はまた、ある種のヒューマン・インターフェース出力装置を含んでいてもよい。そのようなヒューマン・インターフェース出力装置は、たとえば、触覚出力、音、光、および臭い/味を通じて、一または複数の人間ユーザーの感覚を刺激するものであってもよい。そのようなヒューマン・インターフェース出力装置は、触覚出力装置(たとえば、タッチスクリーン1010またはジョイスティック1005による触覚フィードバック;ただし、入力装置のはたらきをしない触覚フィードバック装置もありうる)、音声出力装置(たとえば、スピーカー1009、ヘッドフォン)、視覚出力装置(たとえば、CRT画面、LCD画面、プラズマスクリーン、OLED画面を含む画面1010;それぞれはタッチスクリーン入力機能があってもなくてもよく、それぞれは触覚フィードバック機能があってもなくてもよく、そのうちのいくつかは、2次元の視覚出力または立体視出力のような手段を通じた3次元より高い出力を出力することができる;仮想現実感眼鏡、ホログラフィーディスプレイおよび煙タンク)、およびプリンタを含んでいてもよい。
【0089】
コンピュータ・システム1000はまた、人間がアクセス可能な記憶装置および関連する媒体、たとえば、CD/DVD 1011または類似の媒体とともにCD/DVD ROM/RW 1020を含む光学式媒体、サムドライブ1022、取り外し可能なハードドライブまたはソリッドステートドライブ1023、テープおよびフロッピーディスクといったレガシー磁気媒体、セキュリティ・ドングルのような特化したROM/ASIC/PLDベースの装置などを含むことができる。
【0090】
当業者はまた、現在開示されている主題に関連して使用される用語「コンピュータ読み取り可能な媒体」は、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解すべきである。
【0091】
コンピュータ・システム1000はまた、一つまたは複数の通信ネットワーク1098へのインターフェース1099を含むことができる。ネットワーク1098は、たとえば、無線、有線、光学式でありうる。ネットワーク1098は、さらに、ローカル、広域、都市圏、車載および工業用、リアルタイム、遅延耐性などでありうる。ネットワーク1098の例は、イーサネット〔登録商標〕、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラー・ネットワーク、ケーブルテレビ、衛星テレビ、地上放送テレビを含むTV有線または無線の広域デジタルネットワーク、CANBusを含む車載および工業用などを含む。ある種のネットワーク1098は、普通、ある種の汎用データ・ポートまたは周辺バス(1050および1051)(たとえば、コンピュータ・システム1000のUSBポートなど)に取り付けられる外部ネットワーク・インターフェース・アダプターを必要とする。他は、普通、後述するようなシステム・バスへの取り付けによって、コンピュータ・システム1000のコアに統合される(たとえば、PCコンピュータ・システムへのイーサネット・インターフェースまたはスマートフォン・コンピュータ・システムへのセルラー・ネットワーク・インターフェース)。これらのネットワーク1098のいずれかを使用して、コンピュータ・システム1000は、他のエンティティと通信することができる。そのような通信は、一方向性、受信のみ(たとえば、放送テレビ)、一方向性送信専用(たとえば、ある種のCANbus装置へのCANbus)、または、たとえば、ローカルまたは広域デジタルネットワークを使用する他のコンピュータ・システムへの双方向性であってもよい。上述のようなそれらのネットワークおよびネットワークインターフェースのそれぞれで、ある種のプロトコルおよびプロトコルスタックが使用できる。
【0092】
前述のヒューマン・インターフェース装置、人間がアクセス可能な記憶装置、およびネットワークインターフェースは、コンピュータ・システム1000のコア1040に取り付けることができる。
【0093】
コア1040は、一つまたは複数の中央処理装置(CPU)1041、グラフィックス処理装置(GPU)1042、グラフィックスアダプター1017、フィールドプログラマブルゲートアレイ(FPGA)1043の形の特化したプログラマブル処理装置、ある種のタスクのためのハードウェアアクセラレータ1044、などを含むことができる。これらの装置は、読み出し専用メモリ(ROM)1045、ランダムアクセスメモリ1046、内部のユーザー・アクセス可能でないハードドライブ、ソリッドステートドライブ(SSD)などの内部大容量記憶装置1047とともに、システム・バス1048を通じて接続されうる。いくつかのコンピュータ・システムでは、追加のCPU、GPUなどによる拡張を可能にするために、システム・バス1048は、一つまたは複数の物理プラグの形でアクセス可能であってもよい。周辺装置は、コアのシステム・バス1048に直接取り付けられることも、周辺バス1051を通じて取り付けられることもできる。周辺バスのためのアーキテクチャーは、PCI、USBなどを含む。
【0094】
CPU 1041、GPU 1042、FPGA 1043、およびアクセラレータ1044は、組み合わせて上述のコンピュータ・コードを構成することができるある種の命令を、実行することができる。そのコンピュータ・コードは、ROM 1045またはRAM 1046に記憶できる。一時的データも、RAM 1046に記憶されることができ、一方、持続的データは、たとえば、内部大容量記憶装置1047に記憶されることができる。一つまたは複数のCPU 1041、GPU 1042、大容量記憶装置1047、ROM 1045、RAM 1046などと密接に関連付けることができるキャッシュメモリを使用することを通じて、メモリデバイスのいずれかへの高速な記憶および取り出しを可能にすることができる。
【0095】
コンピュータ読み取り可能な媒体は、さまざまなコンピュータ実装された動作を実行するためのコンピュータ・コードをその上に有することができる。媒体およびコンピュータ・コードは、本開示の目的のために特別に設計および構築されたものであってもよく、または、コンピュータ・ソフトウェア分野の技術を有する者に周知であり利用可能な種類のものであってもよい。
【0096】
限定ではなく一例として、示されるアーキテクチャー、具体的にはコア1040を有するコンピュータ・システム1000は、プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)が一つまたは複数の有形のコンピュータ可読媒体に具現化されたソフトウェアを実行することの結果として、機能性を提供することができる。そのようなコンピュータ読み取り可能媒体は、上記で紹介したようなユーザー・アクセス可能な大容量記憶ならびにコア内部の大容量記憶装置1047またはROM 1045のような非一時的な性質のコア1040のある種の記憶に関連する媒体であることができる。本開示のさまざまな実施形態を実装するソフトウェアは、そのような装置に記憶され、コア1040によって実行されることができる。コンピュータ読み取り可能媒体は、特定のニーズに応じて、一つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、RAM 1046に記憶されたデータ構造を定義し、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載された特定のプロセスまたは特定の特定部分を、コア1040および具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に実行させることができる。追加的または代替的に、コンピュータ・システムは、回路(たとえば、アクセラレータ1044)内に配線された、または他の仕方で具現された論理の結果として機能性を提供することができ、これは、本明細書に記載される特定のプロセスまたは特定のプロセスの特定部分を実行するためのソフトウェアの代わりに、またはそれと一緒に動作することができる。ソフトウェアへの言及は、論理を含み、適宜その逆も可能である。コンピュータ読み取り可能媒体への言及は、適宜、実行のためのソフトウェアを記憶する回路(たとえば集積回路(IC))、実行のための論理を具現する回路、またはその両方を包含することができる。本開示は、ハードウェアおよびソフトウェアの任意の好適な組み合わせを包含する。
【0097】
本開示は、いくつかの例示的実施形態を記載してきたが、変更、置換、およびさまざまな代替等価物があり、それらは本開示の範囲内にはいる。よって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現し、よって、本開示の精神および範囲内にある多くのシステムおよび方法を考案することができることが理解されるであろう。