JP7477645B2 - Process@appendおよびprocess@playモードを使用してメディアと共にdashおよびcmafインバンドイベントを処理するためのw3cメディア拡張 - Google Patents

Process@appendおよびprocess@playモードを使用してメディアと共にdashおよびcmafインバンドイベントを処理するためのw3cメディア拡張 Download PDF

Info

Publication number
JP7477645B2
JP7477645B2 JP2022564804A JP2022564804A JP7477645B2 JP 7477645 B2 JP7477645 B2 JP 7477645B2 JP 2022564804 A JP2022564804 A JP 2022564804A JP 2022564804 A JP2022564804 A JP 2022564804A JP 7477645 B2 JP7477645 B2 JP 7477645B2
Authority
JP
Japan
Prior art keywords
event
buffer
dispatch
media
purge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022564804A
Other languages
English (en)
Other versions
JP2023525669A (ja
Inventor
イーラジ・ソダガー
Original Assignee
テンセント・アメリカ・エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by テンセント・アメリカ・エルエルシー filed Critical テンセント・アメリカ・エルエルシー
Publication of JP2023525669A publication Critical patent/JP2023525669A/ja
Application granted granted Critical
Publication of JP7477645B2 publication Critical patent/JP7477645B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

関連出願の相互参照
本出願は、2021年4月21日に出願された米国仮特許出願第63/177,791号明細書に基づく優先権を主張し、その内容は、その全体が参照により本出願に明示的に組み込まれる。
本開示の実施形態は、ストリーミング・メディア・コンテンツに関し、より詳細には、Moving Picture Experts Group(MPEG)Dynamic Adaptive Streaming over hypertext transfer protocol(DASH)によるストリーミング・メディア・コンテンツに関する。
MPEG DASHは、IPネットワークを介してメディアコンテンツをストリーミングするための規格を提供する。MPEG DASHでは、メディアタイムライン関連イベントをクライアントに配信するために、メディアプレゼンテーション記述(MPD)およびインバンドイベントが、使用される。DASHは、インバンドイベントを搬送するために、メディアセグメントのメカニズムを提供する。ISO/IEC 23009-1 DASH規格は、メディアセグメントを用いてイベントを搬送するために、イベント・メッセージ・ボックスを定義している。ISO/IEC 23000-19 CMAF規格は、CMAFチャンク、フラグメント、およびセグメントを有するインバンドイベントを使用する。同様に、共通メディア・アプリケーション・フォーマット(CMAF)は、インバンドイベントを搬送するために、CMAFチャンクのメカニズムを提供する。1つの一般的なDASHイベントは、インバンドMPD有効期限イベントである。他のイベントには、SCTE-35(「ケーブル用デジタルプログラム挿入キューメッセージ」)イベントなどのアプリケーションイベントが含まれる。
DASHプレーヤを含むストリーミングプレーヤは、ブラウザまたはユーザエージェントがメディアセグメントを処理し得るメディアソース拡張(MSE)を使用する。しかしながら、現在のMSE仕様は、DASHまたはCMAFメディアセグメントに埋め込まれたインバンドイベントを解析すること、および処理することを、サポートしていない。現在のMSE仕様を利用するブラウザまたはユーザエージェントは、DASHまたはCMAFインバンドイベントをネイティブに処理することができず、さらにインバンドイベントをそれぞれのアプリケーションにディスパッチすることができない。
本開示の実施形態は、MSEがメディアセグメントに含まれるDASHおよびCMAFインバンド・イベント・ボックスをネイティブに処理し得る解決策を提供する。
メディアストリーム内のイベントを処理する方法が提供され得る。本方法は、メディアデータを取得するステップと、メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成するステップと、1つまたは複数のイベントセグメントからのそれぞれのイベントを解析して、イベント開始時間、イベント終了時間、およびディスパッチモードを決定するステップと、イベント開始時間と現在の再生位置との比較、およびそれぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づいて、1つまたは複数のイベントセグメントからのそれぞれのイベントを、イベント・ディスパッチ・バッファに追加するステップであって、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置が、それぞれのイベントのディスパッチモードに基づく、ステップと、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置、イベント開始時間、イベント終了時間、および現在の再生位置に基づいて、それぞれのイベントをディスパッチするステップと、を含み得る。
メディアストリーム内のイベントを処理する装置が提供され得る。本装置は、プログラムコードを記憶するように構成された少なくとも1つのメモリを含み、少なくとも1つのプロセッサは、プログラムコードを読み取り、さらにプログラムコードに命令されて動作するように構成され得る。プログラムコードは、少なくとも1つのプロセッサに、メディアデータを取得させるように構成された第1の取得コードと、少なくとも1つのプロセッサに、メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成させるように構成された第1の生成コードと、少なくとも1つのプロセッサに、1つまたは複数のイベントセグメントからのそれぞれのイベントを解析させて、イベント開始時間、イベント終了時間、およびディスパッチモードを決定させるように構成された第1の解析コードと、少なくとも1つのプロセッサに、イベント開始時間と現在の再生位置との比較、およびそれぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づいて、1つまたは複数のイベントセグメントからのそれぞれのイベントを、イベント・ディスパッチ・バッファに追加させるように構成された第1の追加コードであって、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置が、それぞれのイベントのディスパッチモードに基づく、第1の追加コードと、少なくとも1つのプロセッサに、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置、イベント開始時間、イベント終了時間、および現在の再生位置に基づいて、それぞれのイベントをディスパッチさせるように構成された第1のディスパッチコードと、を含み得る。
メディアストリーム内のイベントを処理する命令を記憶する非一時的コンピュータ可読媒体が提供され得る。命令は、少なくとも1つのプロセッサによって実行され、少なくとも1つのプロセッサに、メディアデータを取得することと、メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成することと、1つまたは複数のイベントセグメントからのそれぞれのイベントを解析させて、イベント開始時間、イベント終了時間、およびディスパッチモードを決定することと、イベント開始時間と現在の再生位置との比較、およびそれぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づいて、1つまたは複数のイベントセグメントからのそれぞれのイベントを、イベント・ディスパッチ・バッファに追加することであって、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置が、それぞれのイベントのディスパッチモードに基づく、追加することと、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置、イベント開始時間、イベント終了時間、および現在の再生位置に基づいて、それぞれのイベントをディスパッチすることと、を実施させ得る。
本開示の主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになるであろう。
実施形態による通信システムの簡略図である。 実施形態によるストリーミング環境における構成要素の配置の例示的な図である。 実施形態によるDASH処理モデルの簡略ブロック図である。 実施形態によるDASH処理モデルの簡略ブロック図である。 実施形態によるメディアバッファおよびイベントバッファの簡略図である。 実施形態によるメディアバッファおよびイベントバッファの簡略図である。 実施形態によるメディアバッファおよびイベントバッファの簡略図である。 実施形態によるメディアバッファおよびイベントバッファの簡略図である。 実施形態によるDASHおよびCMAFインバンドイベントを処理するためのプロセスを示す簡略化されたフローチャート図である。 実施形態によるコンピュータシステムの簡略図である。
本開示の実施形態は、MSEがDASHおよびCMAFインバンド・イベント・ボックスをネイティブに処理し得る技術的解決策を提供する。特に、本開示の実施形態は、DASHインバンド・メッセージ・ボックス(例えば、メッセージボックスv0およびv1)を処理するための処理モデルおよびアルゴリズムに関する。本開示の態様は、「on_receive」または「on_start」ディスパッチモードを有するスキームのためのDASHインバンドメッセージ処理に関する。本開示は、本開示に基づくMSEを利用するブラウザまたはユーザエージェントが、DASHおよびCMAFインバンド・イベント・ボックスをネイティブに処理し、それらをそれぞれのアプリケーションに送信することを可能にする。
以下で述べている提案された特徴は別々に使用されてもよいし、または任意の順序で組み合わされてもよい。さらに、実施形態は、処理回路(例えば、1つまたは複数のプロセッサまたは1つまたは複数の集積回路)によって実施されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
図1は、本開示の一実施形態による通信システム100の簡略化されたブロック図を例示する。通信システム100は、ネットワーク105を介して相互接続された少なくとも2つの端末102、103を含み得る。データの単方向伝送のために、第1の端末103は、ネットワーク105を介して他方の端末102に伝送するためにローカル位置でビデオデータをコーディングし得る。第2の端末102は、ネットワーク105から他方の端末のコーディング済みビデオデータを受信し、コーディング済みデータをデコードし、復元されたビデオデータを表示し得る。単方向データ伝送は、メディアサービング用途などで一般的であり得る。
図1は、例えばビデオ会議中に発生する可能性があるコーディング済みビデオの双方向伝送をサポートするために提供される端末101および104の第2のペアを例示する。データの双方向伝送のために、各端末101および104は、ネットワーク105を介して他方の端末に伝送するためにローカル位置で取り込んだビデオデータをコーディングし得る。各端末101および104もまた、他方の端末によって伝送されたコーディング済みビデオデータを受信し、コーディング済みデータをデコーディングし、さらに復元されたビデオデータをローカルの表示デバイスに表示し得る。
図1では、端末101、102、103および104は、サーバ、パーソナルコンピュータおよびスマートフォンとして例示され得るが、本開示の原理はそのように限定されるものではない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用ビデオ会議機器を用いるアプリケーションを見出す。ネットワーク105は、例えば有線および/または無線通信ネットワークを含む、端末101、102、103および104の間で、コーディング済みビデオデータを伝達する、任意の数のネットワークを表す。通信ネットワーク105は、回路交換および/またはパケット交換チャネルにおいてデータを交換し得る。代表的なネットワークは、電気通信ネットワーク、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークおよび/またはインターネットを含む。本考察の目的のために、ネットワーク105のアーキテクチャおよびトポロジは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない場合がある。
図2は、一例として、ストリーミング環境におけるビデオエンコーダおよびデコーダの配置を示す。実施形態は、例えば、ビデオ会議、デジタルTVを含み、さらにCD、DVD、およびメモリスティックなどを含むデジタルメディアへの圧縮ビデオの記憶などを含む、他のビデオ対応用途に適用可能とし得る。
ストリーミングシステムは、例えば非圧縮ビデオ・サンプル・ストリーム213を作成する、例えばデジタルカメラなどのビデオソース201を含み得るキャプチャサブシステム203を含み得る。そのサンプルストリーム213は、エンコード済みビデオビットストリームと比較したときに高いデータボリュームとして強調されてもよく、ビデオソース201に接続されたエンコーダ202によって処理され得る。エンコーダ202は、以下で詳細に説明するように、実施形態の態様を可能にするか、または実施するために、ハードウェア、ソフトウェア、またはそれらの組合せを含み得る。エンコード済みビデオビットストリーム204は、サンプルストリームと比較したときに低いデータボリュームとして強調されてもよく、将来の使用のためにストリーミングサーバ205に記憶され得る。1つまたは複数のストリーミングクライアント212および207は、ストリーミングサーバ205にアクセスして、エンコード済みビデオビットストリーム204のコピーであってもよいエンコード済みビデオビットストリーム208および206を取得し得る。クライアント212は、ビデオデコーダ211を含み得、ビデオデコーダ211は、エンコード済みビデオビットストリーム208の着信コピーをデコードし、ディスプレイ209または他のレンダリングデバイス上にレンダリングされ得る送出ビデオ・サンプル・ストリーム210を作成する。一部のストリーミングシステムでは、エンコード済みビデオビットストリーム204、206および208は、特定のビデオコーディング/圧縮規格に従ってエンコードされ得る。これらの規格の例は、上記で言及されており、本明細書でさらに説明される。
図3は、DASHおよびCMAFイベントを処理するためのサンプル・クライアント・アーキテクチャなどのサンプルDASH処理モデル300を示している。DASH処理モデル300では、メディアセグメントのクライアントの要求は、マニフェスト303内の記述されたアドレスに基づき得る。マニフェスト303はまた、クライアントがメタデータトラックのセグメントにアクセスし、それらを解析し、さらに、それらをアプリケーション301に送信し得るメタデータトラックを記述する。
マニフェスト303は、MPDイベントまたはインバンドイベントを含み、インバンドイベントおよび「moof」パーサ306は、MPDイベントセグメントまたはインバンド・イベント・セグメントを解析し、さらにイベントセグメントをイベントおよびメタデータバッファ330に追加し得る。インバンドイベントおよび「moof」パーサ306はまた、メディアセグメントをフェッチして、メディアバッファ340に追加し得る。イベントおよびメタデータバッファ330は、イベントおよびメタデータ情報を、イベントおよびメタデータシンクロナイザおよびディスパッチャ335に送信し得る。イベントおよびメタデータシンクロナイザおよびディスパッチャ335は、特定のイベントをDASHプレーヤ制御、選択、およびヒューリスティックロジック302にディスパッチし、アプリケーション関連のイベントおよびメタデータトラックをアプリケーション301にディスパッチし得る。
いくつかの実施形態によれば、MSEは、メディアバッファ340と、メディアデコーダ345と、を含んでもよい。MSE320は、メディアセグメントの論理バッファであり、メディアセグメントは、メディアセグメントの提示時間に基づいて、追跡および順序付けされ得る。各メディアセグメントは、メディアセグメントの開始時間、終了時間、またはタイムスタンプオフセットに基づいて、メディアバッファ340に付加または追加され、タイムスタンプオフセットは、メディアバッファ340内のメディアセグメントを順序付けるために使用され得る。
メディアセグメントが、メディアバッファ340内に存在する限り、イベントおよびメタデータバッファ330は、対応するイベントセグメントおよびメタデータを維持する。図3によれば、MSE320は、メディアバッファ340およびメディアデコーダ345のみを含み得る。イベントおよびメタデータバッファ330、ならびにイベントおよびメタデータシンクロナイザおよびディスパッチャ335は、MSE320にとってネイティブではなく、MSE320が、イベントをネイティブに処理することを阻止し、それらをアプリケーションに送信する。
図4は、DASHおよびCMAFイベントを処理するためのサンプル・クライアント・アーキテクチャなどのサンプルDASH処理モデル400を示している。DASH処理モデル400では、メディアセグメントのクライアント要求は、マニフェスト403内の記述されたアドレスに基づき得る。マニフェスト403はまた、クライアントがメタデータトラックのセグメントにアクセスし、それらを解析し、さらに、それらをアプリケーション401に送信し得るメタデータトラックを記述する。
マニフェスト403は、MPDイベントまたはインバンドイベントを含み、インバンドイベントおよび「moof」パーサ406は、MPDイベントセグメントまたはインバンド・イベント・セグメントを解析し、さらにイベントセグメントをイベント・パージング・バッファ430に追加し得る。マニフェスト403内のメディアデータまたはメディアストリームおよび情報に基づいて、インバンドイベントおよび「moof」パーサ406は、メディアセグメントをフェッチして、メディアバッファ440に追加し得る。イベント・パージング・バッファ330は、イベントおよびメタデータ情報を、イベントシンクロナイザおよびディスパッチャ435に送信し得る。イベントシンクロナイザおよびディスパッチャ435は、特定のイベントをDASHプレーヤ制御、選択、およびヒューリスティックロジック402にディスパッチし、アプリケーション関連のイベントおよびメタデータトラックをアプリケーション401にディスパッチし得る。
例示的な実施形態によれば、図4において、MSEは、メディアバッファ340、メディアデコーダ345、イベント・パージング・バッファ430、イベントシンクロナイザおよびディスパッチャ435、ならびに既にディスパッチされたイベントテーブル450を含むように拡張される。既にディスパッチされたイベントテーブル450は、アプリケーション401に既にディスパッチされたイベントを、記録し得る。イベント・パージング・バッファ430ならびにイベントシンクロナイザおよびディスパッチャ435の拡張により、MSEは、インバンドイベントをネイティブに処理することができ、さらに、既にディスパッチされたイベントテーブル450の作成は、既にディスパッチされたイベントメッセージの記録および追跡を可能にする。
例示的な実施形態では、MSE420またはその構成要素は、イベントセグメントの、またはイベントの、イベント開始時間、イベント終了時間、イベント固有のオフセット、イベント持続時間、または現在の再生時間/位置に基づいて、イベントをディスパッチしてもよい。一例は、イベント開始時間オフセット(いくつかの実施形態ではイベント開始時間と呼ばれることがある)を含んでもよい。MSE420またはその構成要素は、イベントセグメントのイベント開始時間オフセットを決定し得、開始時間オフセットは、イベント開始時間および現在の再生時間/位置を参照して決定され、MSE420またはその構成要素は、イベント開始時間オフセットを使用して、イベント・パージング・バッファ430内、またはイベントシンクロナイザおよびディスパッチャ435内のイベントを順序付けし、ディスパッチし得る。
例示的な実施形態では、MSE420は、関連するイベントおよびメディアに対する、イベントセグメントおよびメディアセグメントのパージおよび上書きを処理してもよい。イベントに関連付けられたメディアセグメントが、メディアバッファ440に保持されている場合、MSE420は、イベントをイベント・パージング・バッファ430内、またはイベントシンクロナイザおよびディスパッチャ435内に保持し得る。MSE420は、関連するメディアセグメントのタイミングおよび持続時間に基づいて、イベントセグメントのタイミングおよび持続時間を管理し得る。
例示的な実施形態では、アプリケーション401は、イベント時間、タイムスタンプオフセット、またはイベント・タイムスタンプ・オフセットを設定してもよい。アプリケーション401はまた、スキームURI/値、およびスキームURI/値に対するディスパッチモードを設定し得る。さらに、いくつかの実施形態では、アプリケーション401はまた、スキームURI/値の処理モードを設定してもよい。MSE420は、スキームURI/値に基づいて、イベントをディスパッチし得る。
いくつかの実施形態では、スキームURIの処理モードは、process@appendであってもよい。処理モードがprocess@appendであることにより、MSEは、関連するメディアセグメントをメディアバッファに追加するときに、メディアセグメントに関連付けられたイベントセグメントを処理し得る。したがって、処理モードがprocess@appendであることに基づいて、イベントセグメントは、関連するメディアセグメントをメディアバッファに追加するときに解析され、ディスパッチされ、または少なくともスケジューリングされ得る。
一例として、アプリケーションは、process@appendを反映するようにスキームURIを設定してもよい。スキームURIが、on_receiveディスパッチモードでのprocess@appendを含むとき、メディアセグメントがメディアバッファに追加されるときに、メディアセグメントに関連付けられた1つまたは複数のイベントが、処理され得る。いくつかの実施形態では、1つまたは複数のイベントのうちの1つのイベントが、現在の再生位置よりも小さくない終了時間である場合、イベントは、直ちにディスパッチされてもよい。すなわち、イベントは、現在の再生位置でイベント・ディスパッチ・バッファに追加され、アプリケーションにディスパッチされることになる。いくつかの実施形態では、イベント終了時間が、現在の再生位置よりも小さくなく、イベントが以前にディスパッチされていないとき、イベントは直ちにディスパッチされることになる。
いくつかの実施形態では、スキームURIは、on_startディスパッチモードでのprocess@appendを含んでもよい。ディスパッチモードがon_startであるとき、メディアセグメントがメディアバッファに追加されるときに、メディアセグメントに関連付けられた1つまたは複数のイベントからの1つのイベントが処理され得るが、イベントに関連付けられたイベント開始時間、イベント・タイムスタンプ・オフセット、イベント終了時間、またはイベント持続時間に基づいて、イベントは、ディスパッチされ得る。いくつかの実施形態では、スキームURIが、on_startディスパッチモードでのprocess@appendを含むとき、現在の再生位置が、イベント開始時間よりも小さくなく、現在の再生位置が、イベント終了時間以上でなく、イベントまたは同等物が、以前にディスパッチされていない場合に、イベントは、イベント開始時間に関連付けられた位置でイベント・ディスパッチ・バッファに記憶されてもよい。
いくつかの実施形態では、スキームURIの処理モードは、process@playであってもよい。処理モードがprocess@playであることにより、MSEは、関連するメディアセグメントの再生時に、メディアセグメントに関連付けられたイベントセグメントを処理し得る。いくつかの実施形態では、処理モードがprocess@playであることに基づいて、関連するメディアセグメントが、再生またはストリーミングされるときに、イベントセグメントは、解析され、ディスパッチされ、または少なくともスケジューリングされてもよい。いくつかの実施形態では、処理モードがprocess@playであるとき、イベントセグメントを含むメディアセグメントの少なくとも1つのメディアサンプルが、既に再生されていた場合に、イベントセグメントは、ディスパッチされてもよい。process@play処理モードを実施するために、MSEは、イベント・パージ・バッファ(パージバッファと呼ばれることがある)を利用して、ディスパッチされたイベントセグメントを追跡し続け得る。
スキームURIがon_receiveディスパッチモードでのprocess@playであることに基づいて、メディアセグメントが、メディアバッファに追加されるときに、メディアセグメントに関連付けられた1つまたは複数のイベントが、処理され得る。いくつかの実施形態では、イベントセグメントの処理は、即時ディスパッチ、すなわち、現在の再生位置でイベント・ディスパッチ・バッファに追加すること、またはイベントをアプリケーションに送信することを含んでもよい。即時ディスパッチは、現在の再生時間と比較したイベントの終了時間に基づき得る。一例として、イベントの電子メッセージ(esmg)またはイベントの識別子を含むメディアセグメントに関連付けられた現在の再生位置である場合、イベントの終了時間が、現在の再生位置よりも小さくない場合、およびイベントまたは同等物が、以前にディスパッチされていない場合、イベントは、直ちにディスパッチされてもよい。
スキームURIが、on_startディスパッチモードでのprocess@playを含む場合、メディアセグメントがメディアバッファに追加されるときに、メディアセグメントに関連付けられた1つまたは複数のイベントが、処理され得る。イベントの処理は、直ちにディスパッチされることを含み得る。一例として、現在の再生位置が、イベントの開始時間よりも小さくなく、現在の再生位置が、イベントの終了時間以上でなく、イベントが、イベントの電子メッセージ(esmg)またはイベントの識別子を含むメディアセグメントに関連付けられており、さらにイベントまたは同等物が、以前にディスパッチされていない場合、イベントは直ちにディスパッチされてもよい。
Figure 0007477645000001
以下の表(表1)は、スキームURIの異なる動作モード、処理モード、およびディスパッチモードの下でのイベントの処理を説明する。
メディアデータは、取得され、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントは、メディアデータから生成され得る。特定のまたはそれぞれのイベントは、1つまたは複数のイベントセグメントから解析され、さらにイベント開始時間、イベント終了時間、およびディスパッチモードが、決定され得る。
それぞれのイベントをイベント・ディスパッチ・バッファに追加することは、イベント開始時間と現在の再生位置との比較、およびそれぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づき得る。イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置は、それぞれのイベントのディスパッチモードに基づき得る。それぞれのイベントは、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置、そのイベント開始時間、そのイベント終了時間、および現在の再生位置に基づいて、ディスパッチされ得る。いくつかの実施形態では、パージバッファが使用されてもよい。それぞれのイベントをパージバッファに追加することは、それぞれのイベントをターゲット範囲に関連付けられた位置に追加することを含み、ターゲット範囲は、それぞれのイベントに関連付けられたメディアセグメントのメディアセグメント開始時間およびメディアセグメント終了時間に基づき得る。
本開示の実施形態によれば、処理モード「append」または「process@append」を有するイベントおよび/またはメディアセグメントは、以下に説明するように処理され得る。
いくつかの実施形態では、イベントの終了時間が、現在の再生位置よりも小さいこと、またはイベントの識別子(例えば、イベントのemsg.id)が、既にディスパッチされたバッファ内にあることに基づいて、そのイベントの処理は、終了してもよく、次のイベントが解析され、処理されてもよい。
いくつかの実施形態では、イベントのディスパッチモードが、on_receiveモードであることに基づいて、イベントは、直ちにディスパッチされ、すなわち、イベントは、現在の再生位置に関連付けられた位置でディスパッチバッファに追加されてもよい。追加の後、イベントまたはイベントの識別子は、既にディスパッチされたバッファに追加され得る。
本開示の実施形態によれば、イベントのディスパッチモードが、on_startモードであることに基づいて、イベント処理は、イベント開始時間およびイベント終了時間に基づいて、イベントのイベントディスパッチ範囲を計算することと、イベントを、イベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加することと、を含み得る。
一例として、イベントディスパッチ範囲は、以下に基づいて決定されてもよい。
For emsg v0(esmg.version=0):dispatch_range_start=segment_start+emsg.presentation_time_delta/emsg.time_scale (1)
For emsg v1(emsg.version=1):dispatch_range_start=emsg.presentation_time/emsg.timescale (2)
dispatch_range_end=dispatch_range_start+emsg.duration/emsg.timescale (3)
いくつかの実施形態では、イベントのイベントディスパッチ範囲に関連付けられた位置で、イベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在してもよい。イベントのイベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在し得るとの決定に基づいて、イベントディスパッチ範囲は、複数の部分範囲に分割され得、これにより、複数の部分範囲の各々は、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。
イベント・ディスパッチ・バッファを複数の部分範囲に分割した後、少なくとも1つのイベントで占有された複数の部分範囲の各々について、少なくとも1つのイベントは、複数の部分範囲のそれぞれの部分範囲に基づいて、分割され得る。これらの分割イベントは、それぞれの部分範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加され得る。いくつかの実施形態では、分割イベントの各々について、Emsg.scheme_id_uri、emsg.value、emsg.id、dispatch_range_start、dispatch_duration=emsg.duration/emsg.timescale、およびemsg.message_data()などのイベント特性および/またはプロパティが、追加されてもよい。
実施形態によれば、イベントの識別子(例えば、emsg.id)が、既にディスパッチされたバッファ内にないことに基づいて、現在の再生位置でイベント・ディスパッチ・バッファ内で発生するイベントは、ディスパッチされ得る。イベントをアプリケーションにディスパッチした後、イベントは、イベント・ディスパッチ・バッファから除去され、イベントの識別子は、既にディスパッチされたバッファに追加され得る。しかしながら、現在の再生位置でイベント・ディスパッチ・バッファ内で発生するイベントが、既にディスパッチされたバッファ内に、それらのイベント識別子を有するときの実施形態では、イベントは、イベント・ディスパッチ・バッファから除去されてもよい。
いくつかの実施形態では、メディアバッファの始まりまたは終わりからの範囲がパージされてもよい。パージされるメディアバッファ範囲は、「メディア部分範囲」と呼ばれることがある。パージすることは、メディアバッファからメディア部分範囲をパージすることと、イベント・ディスパッチ・バッファ内のメディア部分範囲に関連付けられた位置が、イベント・ディスパッチ・バッファ内のそれぞれのイベントのイベントディスパッチ範囲と重なり合うとの決定に基づいて、イベント・ディスパッチ・バッファから、重なり合う部分範囲をパージすることと、を含み得る。
本開示の実施形態によれば、処理モード「play」または「process@play」を有するイベントおよび/またはメディアセグメントは、以下に説明するように処理され得る。
いくつかの実施形態では、イベントの終了時間が、現在の再生位置よりも小さいこと、またはイベントの識別子(例えば、イベントのemsg.id)が、既にディスパッチされたバッファ内にあることに基づいて、そのイベントの処理は、終了してもよく、次のイベントが解析され、処理されてもよい。
いくつかの実施形態では、処理モードが「play」または「process@play」であることに基づいて、追加のパージバッファが、使用されてもよい。イベントは、ターゲット範囲に関連付けられた位置でパージバッファに追加され、ターゲット範囲は、イベントに関連付けられたメディアセグメントのセグメント開始時間およびセグメント終了時間に基づき得る。いくつかの実施形態では、イベントに関連付けられたメディアセグメントのセグメント開始時間およびセグメント終了時間は、1つまたは複数のメディアセグメントからの1つのメディアセグメントを解析し得るパーサを使用して決定されてもよい。
いくつかの実施形態では、ターゲット範囲は以下のように決定されてもよい。
purge_range_start=segment_start (4)
purge_range_end=segment_start+segment duration (5)
いくつかの実施形態では、ターゲット範囲に関連付けられた位置でパージバッファ内に重なり合うイベントが存在してもよい。ターゲット範囲に関連付けられた位置でパージバッファ内に重なり合うイベントが存在するとの決定に基づいて、パージバッファ内のターゲット範囲は、複数のパージ部分範囲に分割され得、複数のパージ部分範囲の各々は、空であるか、またはパージ部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。
パージバッファを複数のパージ部分範囲に分割した後、少なくとも1つのイベントで占有された複数のパージ部分範囲の各々について、少なくとも1つのイベントは、複数のパージ部分範囲のそれぞれのパージ部分範囲に基づいて、分割され得る。これらの分割イベントは、それぞれのパージ部分範囲に関連付けられた位置でパージバッファに追加され得る。いくつかの実施形態では、同じイベント関連付け識別子(EAI)は、ターゲット範囲に関連付けられた位置でパージバッファ内の少なくとも1つの分割イベントの各々に、割り当てられてもよい。いくつかの実施形態では、再生済みフラグは、それぞれのパージ部分範囲に関連付けられた位置でパージバッファ内の少なくとも1つの分割イベントの各々について、偽に設定されてもよく、少なくとも1つの分割イベントのそれぞれに関連付けられたメディアセグメントが再生されたか否かを、再生済みフラグは示してもよい。いくつかの実施形態では、分割イベントの各々について、EAI、Emsg.scheme_id_uri、emsg.value、emsg.id、dispatch_range_start、dispatch_duration=emsg.duration/emsg.timescale、およびemsg.message_data()などのイベント特性および/またはプロパティが、追加されてもよい。
いくつかの実施形態では、イベントのディスパッチモードが、on_receiveモードであることに基づいて、イベントは、直ちにディスパッチされ、すなわち、イベントは、現在の再生位置に関連付けられた位置でディスパッチバッファに追加されてもよい。追加の後、イベントまたはイベントの識別子は、既にディスパッチされたバッファに追加され得る。
いくつかの実施形態では、イベントのディスパッチモードが、on_startモードであることに基づいて、イベント処理は、イベント開始時間およびイベント終了時間に基づいて、イベントのイベントディスパッチ範囲を計算することと、イベントを、イベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加することと、を含んでもよい。
一例として、イベントディスパッチ範囲は、以下に基づいて決定されてもよい。
For emsg v0(esmg.version=0):dispatch_range_start=purge_range_start+emsg.presentation_time_delta/emsg.time_scale (6)
For emsg v1(emsg.version=1):dispatch_range_start=emsg.presentation_time/emsg.timescale (7)
dispatch_range_end=dispatch_range_start+
emsg.duration/emsg.timescale (8)
いくつかの実施形態では、イベントのイベントディスパッチ範囲に関連付けられた位置で、イベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在してもよい。イベントのイベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在し得るとの決定に基づいて、イベントディスパッチ範囲は、複数の部分範囲に分割され得、これにより、複数の部分範囲の各々は、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。
イベント・ディスパッチ・バッファを複数の部分範囲に分割した後、少なくとも1つのイベントで占有された複数の部分範囲の各々について、少なくとも1つのイベントは、複数の部分範囲のそれぞれの部分範囲に基づいて、分割され得る。これらの分割イベントは、それぞれの部分範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加され得る。いくつかの実施形態では、分割イベントの各々について、EAI、Emsg.scheme_id_uri、emsg.value、emsg.id、dispatch_range_start、dispatch_duration=emsg.duration/emsg.timescale、およびemsg.message_data()などのイベント特性および/またはプロパティが、追加されてもよい。一例として、同じイベント関連付け識別子(EAI)は、イベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファ内の少なくとも1つの分割イベントの各々に、割り当てられてもよい。
実施形態によれば、現在の再生位置でイベント・ディスパッチ・バッファ内で発生するイベントは、イベントの識別子(例えば、emsg.id)が既にディスパッチされたバッファ内にないことと、再生済みフラグ値が「真」であるこのイベントと同じEAIを有するパージされたバッファ内のイベントのうちの少なくとも1つと、に基づいて、ディスパッチされ得る。イベントをアプリケーションにディスパッチした後、イベントは、イベント・ディスパッチ・バッファから除去され、イベントの識別子は、既にディスパッチされたバッファに追加され得る。
いくつかの実施形態では、メディアバッファの始まりまたは終わりからの範囲がパージされてもよい。パージされるメディアバッファ範囲は、「メディア部分範囲」と呼ばれることがある。パージすることは、メディアバッファからメディア部分範囲をパージすることと、イベント・ディスパッチ・バッファ内のメディア部分範囲に関連付けられた位置が、イベント・ディスパッチ・バッファ内のそれぞれのイベントのイベントディスパッチ範囲と重なり合うか否かを決定することと、を含み得る。
いくつかの実施形態では、パージバッファ内のメディア部分範囲に関連付けられた位置とパージバッファ内のそれぞれのイベントのターゲット範囲との間に重なり合うパージ部分範囲が存在するとの決定に基づいて、重なり合うパージ部分範囲は、パージバッファからパージされてもよい。さらに、再生済みフラグが偽に設定されているパージバッファ内のメディア部分範囲に関連付けられた位置でパージバッファ内のすべてのイベントについて、パージバッファ内のメディア部分範囲に関連付けられた位置の外側のパージバッファ内のイベントに、除去されたイベントと同じEAIを有しているものがない場合、またはパージバッファ内のメディア部分範囲に関連付けられた位置の内側のパージバッファ内のイベントに、除去されたイベントと同じEAIを有しているものがなく、さらに再生済みフラグが真に設定されている場合、イベントは、パージバッファから除去され得る。
図5Aは、実施形態による、スキームURIの処理モードがprocess@appendであり、スキームURIのディスパッチモードがon_startであるとき、メディアセグメントおよびイベントセグメントを処理する例示的なメディアおよびイベント・ディスパッチ・バッファ・セット500Aを説明している。
図5Aに示すように、メディアストリーム510は、メディアセグメント(S0,S1,S2)およびイベント(E0,E1,E2)を備え得る。
パーサは、メディアデータを取得し、メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成し得る。パーサは、1つまたは複数のイベントセグメントからの1つまたは複数のイベントをさらに解析して、イベント開始時間、イベント終了時間、およびディスパッチモードを決定し得る。メディアセグメントは、メディアソースバッファまたはメディアバッファに追加され得る。一例として、メディアセグメントは、メディアセグメントが解析される順序で、またはメディアセグメントに関連付けられた再生時間で、メディアバッファ520に追加されてもよい。各メディアセグメントは、1つまたは複数のイベントに関連付けられ得る。いくつかの実施形態では、1つまたは複数のイベントおよびイベントセグメントは、メディアセグメントに関連付けられてもよい。
メディアセグメントが、メディアバッファに追加されるときに、イベントは、イベント・ディスパッチ・バッファに追加され得る。on_startモードでは、イベントは、それらのイベント開始時間に基づく位置でイベント・ディスパッチ・バッファに追加されてもよく、イベント・ディスパッチ・バッファにイベント持続時間をマッピングしてもよい。一例として、メディアセグメントS0およびS1が、メディアバッファ520に追加されると、イベントE0およびE1は、それらのそれぞれの開始時間に基づいて、イベント・ディスパッチ・バッファ530に追加されてもよく、それらのそれぞれの持続時間をディスパッチバッファ530にマッピングしてもよい。
いくつかの実施形態では、イベントのイベントディスパッチ範囲は、イベント開始時間およびイベント終了時間に基づいて計算されてもよい。それが、イベントのイベントディスパッチ範囲に関連付けられた位置(または範囲)でイベント・ディスパッチ・バッファ内のオーバーレイイベントであり得ると決定されたとき、イベント・ディスパッチ・バッファ内のイベントディスパッチ範囲は、複数の部分範囲に分割され得、複数の部分範囲の各々は、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。一例によれば、メディアセグメントS2が、メディアバッファ520に追加されるとき、関連するイベントE2は、イベントE2の開始時間および持続時間に基づく位置でイベント・ディスパッチ・バッファ540に追加されてもよい。図5Aに示すように、イベントE2のマッピング(またはイベントディスパッチ範囲)に関連付けられた位置でイベント・ディスパッチ・バッファ内に重なり合うイベント、例えばイベントE1が存在する場合、イベントディスパッチ範囲は、3つの部分範囲に分割され得、これにより、各部分範囲は、イベントがないか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントを有するか、のいずれかである。一例として、イベントE1は、新規のイベントE2のイベントディスパッチ範囲内のイベント・ディスパッチ・バッファ540内に存在してもよく、次いで、イベント・ディスパッチ・バッファ640は、3つの部分範囲に分割されてもよく、すなわち、第1の部分範囲542は、イベントE1の重なり合わない部分範囲によって占有されてもよく、第2の部分範囲544は、イベントE1とイベントE2との間の重なり合う部分範囲によって占有されてもよく、第3の部分範囲546は、イベントE2の重なり合わない部分範囲によって占有されてもよい。
図5Bは、実施形態による、スキームURIの処理モードが、process@appendであり、さらにスキームURIのディスパッチモードが、on_startであるときに実装されるメディアセグメントおよびイベントセグメントを処理する例示的なメディアおよびイベント・ディスパッチ・バッファ・セット500Bを説明している。
本開示の実施形態によれば、ディスパッチモードがon_startであるとき、メディアセグメントは、部分的に上書きされ、すなわち、ディスパッチモードが、on_startであるとき、既存のメディアセグメントが、新規のメディアセグメントによって部分的に上書きされる場合、メディアバッファのみが、イベント・ディスパッチ・バッファを変更することなく変更され得る。いくつかの実施形態では、既存のメディアセグメントの部分的に重なり合う部分のみが、新規のメディアセグメントによって上書きされてもよい。一例として、新規のメディアセグメントS2’が、メディアバッファ550に追加され、メディアセグメントS2’が、メディアセグメントS2と部分的に重なり合う場合、メディアバッファ上のメディアセグメントS2の重なり合う部分のみが、上書きされてもよい。
process@play処理モードでは、メディアバッファに追加されたすべてのメディアセグメントが、再生および/または順次再生されないので、どのメディアセグメントが再生され、どのメディアセグメントが再生されていないかは、別のバッファを使用して追跡され得る。一例として、パージバッファを使用して、メディアバッファ内のメディアサンプルとイベント・ディスパッチ・バッファ内のイベントとの間の関連を追跡または維持し続けてもよい。
図6Aは、実施形態による、スキームURIの処理モードが、process@playであり、スキームURIのディスパッチモードが、on_startであるときにメディアセグメントおよびイベントセグメントを処理する例示的なメディア、イベントディスパッチ、およびパージ・バッファ・セット600Aを説明している。
図6Aに示すように、メディアストリーム610は、メディアセグメント(S0,S1,S2,S4)と、イベント(E0,E1,E2)と、を含み、さらにメディアストリーム610を処理することは、メディアバッファ620と、パージバッファ630と、イベント・ディスパッチ・バッファ640と、を含み得る。
パーサは、メディアデータを取得し、メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成し得る。いくつかの実施形態では、1つまたは複数のメディアセグメントからの1つのメディアセグメントを解析して、セグメント開始時間およびセグメント終了時間を決定してもよく、1つまたは複数のイベントは、メディアセグメントに関連付けられてもよい。メディアセグメントが解析される順序、またはメディアセグメントに関連付けられた再生時間で、メディアセグメントは、メディアバッファ620に追加され得る。各メディアセグメントは、1つまたは複数のイベントに関連付けられ得る。
パーサは、1つまたは複数のイベントセグメントからの1つまたは複数のイベントをさらに解析して、イベント開始時間、イベント終了時間、およびディスパッチモードを決定し得る。メディアセグメントが、メディアバッファに追加されるときに、イベントは、イベント・ディスパッチ・バッファに追加され得る。on_startモードでは、イベントは、それらのイベント開始時間に基づく位置でイベント・ディスパッチ・バッファに追加されてもよく、イベント・ディスパッチ・バッファにイベント持続時間をマッピングしてもよい。一例として、メディアセグメントS0およびS1が、メディアバッファ620に追加されると、イベントE0およびE1は、それらのそれぞれの開始時間に基づいてイベント・ディスパッチ・バッファ6400に追加されてもよく、それらのそれぞれの持続時間をディスパッチバッファ640にマッピングしてもよい。
いくつかの実施形態では、イベントは、ターゲット範囲に関連付けられた位置でパージバッファに追加されてもよく、ターゲット範囲は、それぞれのイベントに関連付けられたメディアセグメントのセグメント開始時間およびセグメント終了時間に基づく。いくつかの実施形態では、イベントが、メディアバッファ内のそれぞれの関連するメディアセグメントと同様に、パージバッファ内で整列され得るように、パージバッファに追加されたイベントは、メディアセグメントの持続時間、開始時間、および終了時間をマッピングしてもよい。例示的な実施形態において、イベントセグメント(E0,E1,E2)は、イベント・パージ・バッファ630におけるイベントセグメントのイベント開始時間およびイベント持続時間を、メディアバッファ620内の関連するメディアセグメント(S0,S1,S2,S3)の開始時間および持続時間と揃えることによって、イベント・パージ・バッファ630に追加されてもよい。一例として、イベント・パージ・バッファ530内の1つまたは複数のイベントの開始時間およびイベント持続時間は、メディアバッファ620内のメディアセグメント開始時間、および関連するメディアセグメントの持続時間またはメディアセグメント終了時間と揃えられてもよい。いくつかの例示的な実施形態では、2つ以上のイベントセグメントが、同じメディアセグメントに関連付けられている場合、パージバッファ内の各イベントの開始時間は、関連するメディアセグメントの開始時間および終了時間に基づいて調整されてもよい。
いくつかの実施形態では、固有のイベント関連付けID(EAI)が、メディアバッファ内のメディアセグメントとイベント・ディスパッチ・バッファ内のイベントとの間の関連を示し得るパージバッファ内の各イベントに、割り当てられてもよい。いくつかの実施形態では、パージバッファ内のイベントの開始時間および終了時間は、関連するメディアセグメントの範囲と同一の範囲を有してもよいが、イベントの実際の開始時間および終了時間は、イベント・ディスパッチ・バッファ内にマッピングされてもよい。いくつかの実施形態では、パージバッファを使用して、再生されたメディアセグメントを追跡し、メディアバッファ内のメディアサンプルとイベント・ディスパッチ・バッファ内のイベントとの間の関連を維持し続け得てもよいので、イベント・ディスパッチ・バッファ内のイベントにもEAIを割り当ててもよい。
いくつかの実施形態では、イベントは、ターゲット範囲に関連付けられた位置でパージバッファに追加されてもよく、ターゲット範囲は、それぞれのイベントに関連付けられたメディアセグメントのセグメント開始時間およびセグメント終了時間に基づく。しかしながら、イベントをパージバッファに追加するとき、ターゲット範囲に関連付けられた位置でパージバッファ内に重なり合うイベントが存在する場合、パージバッファ内のターゲット範囲は、複数のパージ部分範囲に分割され得、複数のパージ部分範囲の各々は空であるか、またはパージ部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。
一例として、メディアセグメントS2が、メディアバッファに追加されるとき、関連するイベントE2は、イベントE2の開始時間および持続時間に基づく位置でイベント・ディスパッチ・バッファ640に追加されてもよく、さらにイベントE2は、メディアセグメントS2の開始時間および持続時間に基づく位置でパージバッファ630に追加されてもよい。新規のイベントのマッピングまたはイベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファ内に重なり合うイベントが存在する場合、新規のイベントのイベントディスパッチ範囲は、部分範囲に分割され得、これにより各部分範囲は、部分範囲全体に対して同じ状態を有するイベントによって占有される。一例として、イベントE1は、新規のイベントE2のイベントディスパッチ範囲内のイベント・ディスパッチ・バッファ640内に存在してもよく、次いで、イベント・ディスパッチ・バッファ640は、3つの部分範囲に分割されてもよく、すなわち、第1の部分範囲642は、イベントE1の重なり合わない部分範囲によって占有されてもよく、第2の部分範囲644は、イベントE1とイベントE2との間の重なり合う部分範囲によって占有されてもよく、第3の部分範囲646は、イベントE2の重なり合わない部分範囲によって占有されてもよい。
図6Bは、実施形態による、スキームURIの処理モードが、process@playであり、スキームURIのディスパッチモードが、on_startであるとき、メディアセグメントおよびイベントセグメントを処理する例示的なメディア、イベントディスパッチ、およびパージ・バッファ・セット600Bを説明している。
本開示の実施形態によれば、ディスパッチモードが、on_startであるとき、メディアセグメントが、部分的に上書きされ、すなわち、ディスパッチモードが、on_startであるとき、既存のメディアセグメントが、新規のメディアセグメントによって部分的に上書きされ、メディアバッファのみが、イベント・ディスパッチ・バッファを変更することなく変更され得る。いくつかの実施形態では、既存のメディアセグメントの部分的に重なり合う部分のみが、新規のメディアセグメントによって上書きされてもよい。一例として、新規のメディアセグメントS2’が、メディアバッファ660に追加され、メディアセグメントS2’が、メディアセグメントS2と部分的に重なり合う場合、メディアバッファ660上のメディアセグメントS2の重なり合う部分のみが、上書きされてもよい。いくつかの実施形態では、メディアバッファのみが変更されてもよい。いくつかの実施形態では、イベント、パージバッファは、メディアバッファを反映するように変更されてもよい。一例として、メディアセグメントS2に対応するパージバッファ670内のイベントE2が、メディアバッファ660内の上書きされたメディアセグメントS2を反映するように、パージされ、または上書きされ得る場合。
いくつかの実施形態では、既存のメディアセグメントの部分的に重なり合う部分のみが、新規のメディアセグメントによって上書きされてもよい。一例として、新規のメディアセグメントS2’が、メディアバッファ660に追加されてもよく、メディアセグメントS2’が、メディアセグメントS2と部分的に重複してもよく、次にメディアバッファ上のメディアセグメントS2の重なり合う部分のみが、上書きされてもよい。
いくつかの実施形態では、上記の開示の実施形態は、単一のディスパッチバッファで実施されてもよい。ディスパッチバッファ内の各イベントは、そのイベントのeメッセージが搬送されるメディア範囲のリストを維持し得る。最初に、リストは、メディアセグメントをカバーする1つのメディア範囲のみとし得る。しかしながら、様々な動作により、メディア範囲は、2つ以上の範囲に分割され得る。メディア範囲の各々について、イベントは、範囲が再生されるか否かを示すフラグも含み得る。メディア範囲のリスト内のメディア範囲を変更し、「再生済み」フラグを更新し、メディア範囲を2つ以上の範囲に分割し、そられそれぞれの「再生済み」フラグを更新することにより、1つのバッファのみを使用して本開示の実施形態を実施することができる。
図7は、実施形態による、メディアセグメントおよびイベントセグメントを処理するためのプロセス700の例示的なフローチャートである。
図7に示すように、プロセス700の動作710において、メディアデータが、取得され得る。一例として、パーサが、メディアデータを取得してもよい。
動作715において、1つまたは複数のイベントセグメントは、メディアデータから生成され得る。いくつかの実施形態では、それぞれのイベントは、1つまたは複数のイベントセグメントから解析され、イベント開始時間、イベント終了時間、およびディスパッチモードを決定してもよい。
動作720において、1つまたは複数のメディアセグメントは、メディアデータから生成され得る。いくつかの実施形態では、1つまたは複数のメディアセグメントからの1つのメディアセグメントを解析して、セグメント開始時間およびセグメント終了時間を決定してもよい。
いくつかの実施形態では、プロセス700において、1つまたは複数のイベントが、メディアセグメントに関連付けられ、それぞれのイベントが、メディアセグメントに関連付けられてもよい。
動作725において、1つまたは複数のイベントセグメントからのそれぞれのイベントは、イベント開始時間と現在の再生位置との比較、およびそれぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づいて、イベント・ディスパッチ・バッファに追加され、また、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置は、それぞれのイベントのディスパッチモードに基づき得る。
いくつかの実施形態では、動作725において、処理モードが、appendであることに基づいて、およびイベントのディスパッチモードが、on_startモードであることに基づいて、イベント処理は、イベント開始時間およびイベント終了時間に基づいて、イベントのイベントディスパッチ範囲を計算することと、イベントを、イベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加することと、を含んでもよい。いくつかの実施形態では、イベントのイベントディスパッチ範囲に関連付けられた位置で、イベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在してもよい。イベントのイベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在し得るとの決定に基づいて、イベントディスパッチ範囲は、複数の部分範囲に分割され得、これにより、複数の部分範囲の各々は、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。イベント・ディスパッチ・バッファを複数の部分範囲に分割した後、少なくとも1つのイベントで占有された複数の部分範囲の各々について、少なくとも1つのイベントは、複数の部分範囲のそれぞれの部分範囲に基づいて、分割され得る。これらの分割イベントは、それぞれの部分範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加され得る。
いくつかの実施形態では、動作725において、処理モードがplayであることに基づいて、およびイベントのディスパッチモードがon_startモードであることに基づいて、イベント処理は、イベント開始時間およびイベント終了時間に基づいてイベントのイベントディスパッチ範囲を計算することと、イベントディスパッチ範囲に関連付けられた位置でイベントをイベント・ディスパッチ・バッファに追加することと、を含んでもよい。いくつかの実施形態では、イベントのイベントディスパッチ範囲に関連付けられた位置で、イベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在してもよい。イベントのイベントディスパッチ範囲に関連付けられた位置でイベント・ディスパッチ・バッファ内に既存の重なり合うイベントが存在し得るとの決定に基づいて、イベントディスパッチ範囲は、複数の部分範囲に分割され得、これにより、複数の部分範囲の各々は、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。イベント・ディスパッチ・バッファを複数の部分範囲に分割した後、少なくとも1つのイベントで占有された複数の部分範囲の各々について、少なくとも1つのイベントは、複数の部分範囲のそれぞれの部分範囲に基づいて、分割され得る。これらの分割イベントは、それぞれの部分範囲に関連付けられた位置でイベント・ディスパッチ・バッファに追加され得る。
動作730において、処理モードがplayであることに基づいて、追加のパージバッファが、使用され得る。イベントは、ターゲット範囲に関連付けられた位置でパージバッファに追加され、ターゲット範囲は、イベントに関連付けられたメディアセグメントのセグメント開始時間およびセグメント終了時間に基づき得る。いくつかの実施形態では、イベントに関連付けられたメディアセグメントのセグメント開始時間およびセグメント終了時間は、1つまたは複数のメディアセグメントからの1つのメディアセグメントを解析し得るパーサを使用して決定されてもよい。いくつかの実施形態では、ターゲット範囲に関連付けられた位置でパージバッファ内に重なり合うイベントが存在してもよい。ターゲット範囲に関連付けられた位置でパージバッファ内に重なり合うイベントが存在するとの決定に基づいて、パージバッファ内のターゲット範囲は、複数のパージ部分範囲に分割され得、複数のパージ部分範囲の各々は、空であるか、またはパージ部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである。パージバッファを複数のパージ部分範囲に分割した後、少なくとも1つのイベントで占有された複数のパージ部分範囲の各々について、少なくとも1つのイベントは、複数のパージ部分範囲のそれぞれのパージ部分範囲に基づいて、分割され得る。これらの分割イベントは、それぞれのパージ部分範囲に関連付けられた位置でパージバッファに追加され得る。
動作735において、それぞれのイベントは、イベント・ディスパッチ・バッファ内のそれぞれのイベントに関連付けられた位置、イベント開始時間、イベント終了時間、および現在の再生位置に基づいて、ディスパッチされ得る。いくつかの実施形態では、イベントのディスパッチモードが、on_receiveモードであることに基づいて、イベントは、直ちにディスパッチされ、すなわち、イベントは、現在の再生位置に関連付けられた位置でディスパッチバッファに追加されてもよい。追加の後、イベントまたはイベントの識別子は、既にディスパッチされたバッファに追加され得る。
いくつかの実施形態では、処理モードがappendである場合、現在の再生位置でイベント・ディスパッチ・バッファ内で発生するイベントは、イベントの識別子(例えば、emsg.id)が既にディスパッチされたバッファ内にないことに基づいて、ディスパッチされてもよい。イベントをアプリケーションにディスパッチした後、イベントは、イベント・ディスパッチ・バッファから除去され、イベントの識別子は、既にディスパッチされたバッファに追加され得る。しかしながら、現在の再生位置でイベント・ディスパッチ・バッファ内で発生するイベントが、既にディスパッチされたバッファ内に、それらのイベント識別子を有するときの実施形態では、イベントは、イベント・ディスパッチ・バッファから除去されてもよい。
いくつかの実施形態では、処理モードがplayである場合、現在の再生位置でイベント・ディスパッチ・バッファ内で発生するイベントは、イベントの識別子(例えば、emsg.id)が既にディスパッチされたバッファ内にないことと、再生済みフラグ値が「真」であるこのイベントと同じEAIを有するパージされたバッファ内のイベントのうちの少なくとも1つと、に基づいて、ディスパッチされ得る。イベントをアプリケーションにディスパッチした後、イベントは、イベント・ディスパッチ・バッファから除去され、イベントの識別子は、既にディスパッチされたバッファに追加され得る。
動作740において、処理モードがappendであるときにイベントセグメントをパージすることは、パージされるべきメディアバッファの始まりまたは終わりからの範囲を含み得る。パージされるメディアバッファ範囲は、「メディア部分範囲」と呼ばれることがある。パージすることは、メディアバッファからメディア部分範囲をパージすることと、イベント・ディスパッチ・バッファ内のメディア部分範囲に関連付けられた位置が、イベント・ディスパッチ・バッファ内のそれぞれのイベントのイベントディスパッチ範囲と重なり合うとの決定に基づいて、イベント・ディスパッチ・バッファから、重なり合う部分範囲をパージすることと、を含み得る。
いくつかの実施形態では、処理モードがplayであるときにイベントセグメントをパージすることは、パージされるべきメディアバッファの始まりまたは終わりからの範囲を含んでもよい。パージされるメディアバッファ範囲は、「メディア部分範囲」と呼ばれることがある。パージすることは、メディアバッファからメディア部分範囲をパージすることと、イベント・ディスパッチ・バッファ内のメディア部分範囲に関連付けられた位置が、イベント・ディスパッチ・バッファ内のそれぞれのイベントのイベントディスパッチ範囲と重なり合うか否かを決定することと、を含み得る。
いくつかの実施形態では、パージバッファ内のメディア部分範囲に関連付けられた位置とパージバッファ内のそれぞれのイベントのターゲット範囲との間に重なり合うパージ部分範囲が存在するとの決定に基づいて、重なり合うパージ部分範囲は、パージバッファからパージされてもよい。さらに、再生済みフラグが偽に設定されているパージバッファ内のメディア部分範囲に関連付けられた位置でパージバッファ内のすべてのイベントについて、パージバッファ内のメディア部分範囲に関連付けられた位置の外側のパージバッファ内のイベントに、除去されたイベントと同じEAIを有しているものがない場合、またはパージバッファ内のメディア部分範囲に関連付けられた位置の内側のパージバッファ内のイベントに、除去されたイベントと同じEAIを有しているものがなく、さらに再生済みフラグが真に設定されている場合、イベントは、パージバッファから除去され得る。
上述した技術は、コンピュータ可読命令を使用し、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして、あるいは具体的に構成された1つまたは複数のハードウェアプロセッサによって、実施され得る。例えば、図10は、様々な実施形態の実施に適したコンピュータシステム1000を示している。
コンピュータソフトウェアは、コンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって、直接、またはインタープリテーション、マイクロコードの実行などを介して実行され得る命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構の適用を受け得る、任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ得る。
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、およびモノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはその構成要素上で実行され得る。
コンピュータシステム1000について図10に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する制限を示唆することを意図していない。構成要素の構成は、コンピュータシステム1000の例示的な実施形態に示される構成要素のいずれか、またはそれらの組合せに関連する依存関係または要件を有するものとして解釈されるべきではない。
コンピュータシステム1000は、いくつかのヒューマンインターフェース入力デバイスを備えてもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力を介して、1人または複数の人間ユーザによる入力に応答し得る。ヒューマン・インターフェース・デバイスを用いて、音声(発話、音楽、周囲音など)、画像(スキャン画像、静止画像カメラから取得される写真画像など)、ビデオ(二次元ビデオ、立体ビデオを含む三次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係ない特定のメディアを取り込むこともできる。
入力ヒューマン・インターフェース・デバイスは、キーボード1001、マウス1002、トラックパッド1003、タッチスクリーン1010、ジョイスティック1005、マイクロフォン1006、スキャナ1008、カメラ1007のうちの1つまたは複数(それぞれ1つのみ示されている)を含み得る。
コンピュータシステム1000は、いくつかのヒューマンインターフェース出力デバイスを備えてもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および臭い/味を通じて、1人または複数の人間のユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン1010またはジョイスティック1005による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る)と、音声出力デバイス(例えば、スピーカ1009、ヘッドホンなど)と、視覚出力デバイス(例えば、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン1010であって、それぞれにタッチスクリーン入力機能を備えたものと備えていないものとがあり、それぞれに触覚フィードバック機能を備えたものと備えていないものとがあり、これらの一部は、ステレオグラフィック出力、仮想現実メガネ、ホログラフィックディスプレイ、およびスモークタンクなどの手段を介して、二次元視覚出力または三次元超出力を出力することができてもよい)と、プリンタと、を備え得る。
コンピュータシステム1000はまた、人間がアクセス可能な記憶デバイスと、CD/DVD1011などの媒体を有するCD/DVD ROM/RW 1020を含む光学媒体、サムドライブ1022、リムーバブル・ハード・ドライブまたはソリッド・ステート・ドライブ1023、テープおよびフロッピーディスクなどのレガシー磁気媒体、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイスなどのそれらの関連媒体と、を含み得る。
当業者はまた、本開示の主題に関連して用いられる「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことを理解すべきである。
コンピュータシステム1000はまた、1つまたは複数の通信ネットワーク1098へのインターフェース1099を含み得る。ネットワーク1098は、例えば、無線、有線、光であってもよい。ネットワーク1098はさらに、ローカル、広域、都市、車両および産業、リアルタイム、遅延耐性などであってよい。ネットワーク1098の例は、例えば、イーサネットなどのローカル・エリア・ネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビおよび地上波テレビを含むテレビ有線または無線ワイド・エリア・デジタル・ネットワーク、CANBusを含む車載および工業用ネットワークなどを含む。特定のネットワーク1098は一般的に、特定の汎用データポートまたは周辺バス(1050および1051)(例えば、コンピュータシステム1000のUSBポートに接続される外部ネットワーク・インターフェース・アダプタを必要とし、他のネットワークは一般的に、以下に説明するようなシステムバス(例えば、PCコンピュータシステムへのイーサネットインターフェース、またはスマートフォン・コンピュータ・システムへのセルラー・ネットワーク・インターフェース)に接続されることによって、コンピュータシステム1000のコアに統合される。これらのネットワーク1098のいずれかを使用して、コンピュータシステム1000は、他のエンティティと通信し得る。そのような通信は、単方向の受信のみ(例えば、放送TV)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向、例えばローカルエリアまたはワイド・エリア・デジタル・ネットワークを使用する他のコンピュータシステムへの通信であり得る。特定のプロトコルおよびプロトコルスタックは、上記で説明したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用され得る。
前述のヒューマン・インターフェース・デバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム1000のコア1040に取り付けられ得る。
コア1040は、1つまたは複数の中央処理装置(CPU)1041、グラフィック処理装置(GPU)1042、グラフィックアダプタ1017、フィールド・プログラマブル・ゲート・エリア(FPGA)1043の形態の特殊なプログラマブル処理装置、特定のタスクのためのハードウェアアクセラレータ1044などを含み得る。このようなデバイスは、読出し専用メモリ(ROM)1045、ランダムアクセスメモリ1046、内部のユーザがアクセスできないハードドライブ、SSDなどの内部大容量記憶装置1047と共に、システムバス1048を介して接続されてもよい。いくつかのコンピュータシステムでは、システムバス1048は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺装置は、コアのシステムバス1048に直接取り付けることも、周辺バス1051を介して取り付けることもできる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU1041、GPU1042、FPGA1043、およびアクセラレータ1044は、組み合わせて上述のコンピュータコードを構成し得る特定の命令を実行し得る。そのコンピュータコードは、ROM1045またはRAM1046に記憶され得る。一時データもまた、RAM1046に記憶され得るが、永続データは、例えば内部大容量記憶装置1047に記憶されてもよい。任意のメモリデバイスへの高速記憶および検索は、1つまたは複数のCPU1041、GPU1042、大容量記憶装置1047、ROM1045、RAM1046などと密接に関連付けられ得るキャッシュメモリの使用によって可能にされ得る。
コンピュータ可読媒体は、様々なコンピュータ実施動作を実施するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよいし、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
一例として、かつ限定としてではなく、図示のアーキテクチャを有するコンピュータシステム1000、具体的にはコア1040は、1つまたは複数の有形のコンピュータ可読媒体内に具現化されたソフトウェアを(CPU、GPU、FPGA、アクセラレータなどを含む)プロセッサが実行する結果として、機能を実現してもよい。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量記憶装置、ならびにコア内部大容量記憶装置1047またはROM1045などの非一時的な性質のコア1040の特定の記憶装置に関連付けられた媒体であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア1040によって実行され得る。コンピュータ可読媒体は、特定のニーズに応じて、1つまたは複数のメモリデバイスまたはチップを含み得る。ソフトウェアは、コア1040、および具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM1046に記憶されたデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することと、を含む、本明細書に記載された特定のプロセス、または特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、回路(例えば、アクセラレータ1044)にハードワイヤードされた、または他の方法で具現化されたロジックの結果として機能性を提供してもよく、この回路はソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載された特定プロセス、または特定プロセスの特定の部分を実行し得る。ソフトウェアへの参照は、ロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具体化する回路、またはこれらの両方を包含し得る。本開示は、ハードウェアとソフトウェアの任意の適切な組合せを包含する。
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内にある修正例、置換例、および様々な代替均等例がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。
100 通信システム
101 端末
102 第2の端末
103 第1の端末
104 端末
105 通信ネットワーク
201 ビデオソース
202 エンコーダ
203 キャプチャサブシステム
204 エンコード済みビデオビットストリーム
205 ストリーミングサーバ
206 エンコード済みビデオビットストリーム
207 ストリーミングクライアント
208 エンコード済みビデオビットストリーム
209 ディスプレイ
210 送出ビデオ・サンプル・ストリーム
211 ビデオコーダ
212 ストリーミングクライアント
213 非圧縮ビデオ・サンプル・ストリーム
300 サンプルDASH処理モデル
301 アプリケーション
302 DASHプレーヤ制御、選択およびヒューリスティックロジック
303 マニフェスト
306 インバンドイベントおよび「moof」パーサ
320 MSE
330 イベントおよびメタデータバッファ
335 イベントおよびメタデータシンクロナイザおよびディスパッチャ
340 メディアバッファ
345 メディアデコーダ
400 サンプルDASH処理モデル
401 アプリケーション
402 DASHプレーヤ制御、選択およびヒューリスティックロジック
403 マニフェスト
406 インバンドイベントおよび「moof」パーサ
420 MSE
430 イベント・パージング・バッファ
435 イベントシンクロナイザおよびディスパッチャ
440 メディアバッファ
450 既にディスパッチされたイベントテーブル
500A メディアおよびイベント・ディスパッチ・バッファ・セット
500B メディアおよびイベント・ディスパッチ・バッファ・セット
510 メディアストリーム
520 メディアバッファ
530 イベント・ディスパッチ・バッファ
540 イベント・ディスパッチ・バッファ
542 第1の部分範囲
544 第2の部分範囲
546 第3の部分範囲
600A パージ・バッファ・セット
600B パージ・バッファ・セット
610 メディアストリーム
620 メディアバッファ
630 パージバッファ
640 イベント・ディスパッチ・バッファ
642 第1の部分範囲
644 第2の部分範囲
646 第3の部分範囲
660 メディアバッファ
670 パージバッファ
700 プロセス
1000 コンピュータシステム
1001 キーボード
1002 マウス
1003 トラックパッド
1005 ジョイスティック
1006 マイクロフォン
1007 カメラ
1008 スキャナ
1009 スピーカ
1010 タッチスクリーン
1011 CD/DVD
1017 グラフィックアダプタ
1020 CD/DVD ROM/RW
1022 サムドライブ
1023 ソリッド・ステート・ドライブ
1040 コア
1041 中央処理装置(CPU)
1042 グラフィック処理装置(GPU)
1043 フィールド・プログラマブル・ゲート・エリア(FPGA)
1044 ハードウェアアクセラレータ
1045 読出し専用メモリ、ROM
1046 ランダムアクセスメモリ、RAM
1047 コア内部大容量記憶装置
1048 システムバス
1050 汎用データポート
1051 周辺バス
1098 通信ネットワーク
1099 インターフェース

Claims (20)

  1. 少なくとも1つのプロセッサが実行するメディアストリーム内のイベントを処理する方法であって、前記方法は、
    メディアデータを取得するステップと、
    前記メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成するステップと、
    前記1つまたは複数のイベントセグメントからのそれぞれのイベントを解析して、イベント開始時間、イベント終了時間、およびディスパッチモードを決定するステップと、
    前記イベント開始時間と現在の再生位置との比較、および前記それぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づいて、前記1つまたは複数のイベントセグメントからの前記それぞれのイベントを、イベント・ディスパッチ・バッファに追加するステップであって、前記イベント・ディスパッチ・バッファ内の前記それぞれのイベントに関連付けられた位置が、前記それぞれのイベントの前記ディスパッチモードに基づく、ステップと、
    前記イベント・ディスパッチ・バッファ内の前記それぞれのイベントに関連付けられた前記位置、前記イベント開始時間、前記イベント終了時間、および前記現在の再生位置に基づいて、前記それぞれのイベントをディスパッチするステップと
    を含む、方法。
  2. 前記それぞれのイベントの前記イベント終了時間が、前記現在の再生位置よりも小さい、または前記それぞれのイベントが、前記既にディスパッチされたバッファに存在するとの決定に応じて、前記1つまたは複数のイベントセグメントから別のイベントを解析するステップ
    をさらに含む、請求項1に記載の方法。
  3. 前記それぞれのイベントの前記ディスパッチモードが、on_receiveモードであることに基づいて、前記それぞれのイベントを、前記現在の再生位置に関連付けられた位置で前記イベント・ディスパッチ・バッファに追加するステップと、
    前記それぞれのイベントを前記イベント・ディスパッチ・バッファに追加した後に、前記それぞれのイベントを前記既にディスパッチされたバッファに追加するステップと
    をさらに含む、請求項1に記載の方法。
  4. 前記それぞれのイベントを前記イベント・ディスパッチ・バッファに追加する前記ステップは、
    前記それぞれのイベントの前記ディスパッチモードが、on_startモードであると決定するステップと、
    前記イベント開始時間および前記イベント終了時間に基づいて、前記それぞれのイベントのイベントディスパッチ範囲を計算するステップと、
    前記それぞれのイベントの前記イベントディスパッチ範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファ内に重なり合うイベントが存在するとの決定に基づいて、前記イベント・ディスパッチ・バッファ内の前記イベントディスパッチ範囲を複数の部分範囲に分割するステップであって、前記複数の部分範囲の各々が、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである、ステップと
    を含む、請求項1に記載の方法。
  5. 少なくとも1つのイベントで占有された前記複数の部分範囲の各々について、前記複数の部分範囲のそれぞれの部分範囲に基づいて、前記少なくとも1つのイベントを分割するステップと、
    前記少なくとも1つの分割イベントを、前記それぞれの部分範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファに追加するステップと
    をさらに含む、請求項4に記載の方法。
  6. 前記1つまたは複数のメディアセグメントからの1つのメディアセグメントを解析して、セグメント開始時間およびセグメント終了時間を決定するステップであって、前記1つまたは複数のイベントが、前記メディアセグメントに関連付けられており、前記それぞれのイベントが、前記メディアセグメントに関連付けられている、ステップと、
    前記それぞれのイベントを、ターゲット範囲に関連付けられた位置でパージバッファに追加するステップであって、前記ターゲット範囲が、前記それぞれのイベントに関連付けられた前記メディアセグメントの前記セグメント開始時間および前記セグメント終了時間に基づく、ステップと
    をさらに含む、請求項1に記載の方法。
  7. 前記それぞれのイベントを前記パージバッファに追加する前記ステップは、
    前記ターゲット範囲に関連付けられた前記位置で前記パージバッファ内に重なり合うイベントが存在するとの決定に基づいて、前記パージバッファ内の前記ターゲット範囲を複数のパージ部分範囲に分割するステップであって、前記複数のパージ部分範囲の各々が、空であるか、またはパージ部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである、ステップと、
    少なくとも1つのイベントで占有された前記複数のパージ部分範囲の各々について、前記複数のパージ部分範囲のそれぞれのパージ部分範囲に基づいて、前記少なくとも1つのイベントを分割するステップと、
    前記少なくとも1つの分割イベントを、前記それぞれのパージ部分範囲に関連付けられた位置で前記パージバッファに追加するステップと
    を含む、請求項6に記載の方法。
  8. 前記少なくとも1つの分割イベントを、前記それぞれのパージ部分範囲に関連付けられた位置で前記パージバッファに追加する前記ステップは、
    同じイベント関連付け識別子(EAI)を、前記ターゲット範囲に関連付けられた前記位置で前記パージバッファ内の前記少なくとも1つの分割イベントの各々に、割り当てるステップと、
    前記それぞれのパージ部分範囲に関連付けられた前記位置で前記パージバッファ内の前記少なくとも1つの分割イベントの各々について、再生済みフラグを偽として設定するステップであって、前記再生済みフラグは、前記少なくとも1つの分割イベントの各々に関連付けられたメディアセグメントが再生されたか否かを示す、ステップと
    を含む、請求項7に記載の方法。
  9. 前記それぞれのイベントを前記イベント・ディスパッチ・バッファに追加する前記ステップは、
    前記それぞれのイベントの前記ディスパッチモードがon_startモードであると決定するステップと、
    前記イベント開始時間および前記イベント終了時間に基づいて、前記それぞれのイベントのイベントディスパッチ範囲を計算するステップと、
    前記それぞれのイベントの前記イベントディスパッチ範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファ内に重なり合うイベントが存在するとの決定に基づいて、前記イベント・ディスパッチ・バッファ内の前記イベントディスパッチ範囲を複数の部分範囲に分割するステップであって、前記複数の部分範囲の各々が、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである、ステップと、
    少なくとも1つのイベントで占有された前記複数の部分範囲の各々について、前記複数の部分範囲のそれぞれの部分範囲に基づいて、前記少なくとも1つのイベントを分割するステップと、
    前記少なくとも1つの分割イベントを、前記それぞれの部分範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファに追加するステップと
    を含む、請求項6に記載の方法。
  10. 前記少なくとも1つの分割イベントを、前記それぞれの部分範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファに追加する前記ステップは、
    同じイベント関連付け識別子(EAI)を、前記イベントディスパッチ範囲に関連付けられた前記位置で前記イベント・ディスパッチ・バッファ内の前記少なくとも1つの分割イベントの各々に、割り当てるステップ
    を含む、請求項9に記載の方法。
  11. 前記方法は、
    メディアバッファからメディア部分範囲をパージするステップと、
    前記イベント・ディスパッチ・バッファ内の前記メディア部分範囲に関連付けられた位置が、前記イベント・ディスパッチ・バッファ内の前記それぞれのイベントのイベントディスパッチ範囲と重なり合うとの決定に基づいて、前記イベント・ディスパッチ・バッファから、重なり合う部分範囲をパージするステップと
    をさらに含む、請求項1に記載の方法。
  12. メディアバッファからメディア部分範囲をパージするステップと、
    前記パージバッファ内の前記メディア部分範囲に関連付けられた位置と前記パージバッファ内の前記それぞれのイベントの前記ターゲット範囲との間に、重なり合うパージ部分範囲が存在するとの決定に基づいて、前記パージバッファから重なり合うパージ部分範囲をパージするステップと、
    再生済みフラグが偽に設定されている前記パージバッファ内の前記メディア部分範囲に関連付けられた前記位置で前記パージバッファ内のイベントについて、
    前記パージバッファから前記イベントを除去するステップと、
    前記パージバッファ内の前記メディア部分範囲に関連付けられた前記位置の外側の前記パージバッファ内のイベントに、前記除去されたイベントと同じEAIを有しているものがないことと、
    前記パージバッファ内の前記メディア部分範囲に関連付けられた前記位置の内側の前記パージバッファ内のイベントに、前記除去されたイベントと同じ前記EAIを有しているものがなく、さらに再生済みフラグが真に設定されていることと
    のうちの少なくとも1つであるとの決定に基づいて、前記イベント・ディスパッチ・バッファから前記イベントを除去するステップと
    をさらに含む、請求項6に記載の方法。
  13. 前記ディスパッチモードは、処理モードと共に、イベントスキームに対して設定される、請求項1に記載の方法。
  14. プログラムコードを記憶するように構成された少なくとも1つのメモリと、
    前記プログラムコードを読み取り、前記プログラムコードに命令されて動作するように構成された少なくとも1つのプロセッサであって、前記プログラムコードは、
    前記少なくとも1つのプロセッサに、メディアデータを取得させるように構成された第1の取得コードと、
    前記少なくとも1つのプロセッサに、前記メディアデータから、1つまたは複数のイベントセグメントおよび1つまたは複数のメディアセグメントを生成させるように構成された第1の生成コードと、
    前記少なくとも1つのプロセッサに、前記1つまたは複数のイベントセグメントからのそれぞれのイベントを解析させて、イベント開始時間、イベント終了時間、およびディスパッチモードを決定させるように構成された第1の解析コードと、
    前記少なくとも1つのプロセッサに、前記イベント開始時間と現在の再生位置との比較、および前記それぞれのイベントが既にディスパッチされたバッファに存在しないという決定に基づいて、前記1つまたは複数のイベントセグメントからの前記それぞれのイベントを、イベント・ディスパッチ・バッファに追加させるように構成された第1の追加コードであって、前記イベント・ディスパッチ・バッファ内の前記それぞれのイベントに関連付けられた位置が、前記それぞれのイベントの前記ディスパッチモードに基づく、第1の追加コードと、
    前記少なくとも1つのプロセッサに、前記イベント・ディスパッチ・バッファ内の前記それぞれのイベントに関連付けられた前記位置、前記イベント開始時間、前記イベント終了時間、および前記現在の再生位置に基づいて、前記それぞれのイベントをディスパッチさせるように構成された第1のディスパッチコードと
    を備える、少なくとも1つのプロセッサと
    を備える、装置。
  15. 前記第1の追加コードは、
    前記少なくとも1つのプロセッサに、前記それぞれのイベントの前記ディスパッチモードがon_startモードであることを決定させるように構成されたディスパッチモード決定コードと、
    前記少なくとも1つのプロセッサに、前記イベント開始時間および前記イベント終了時間に基づいて、前記それぞれのイベントのイベントディスパッチ範囲を計算させるように構成された第1の計算コードと、
    前記少なくとも1つのプロセッサに、前記それぞれのイベントの前記イベントディスパッチ範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファ内に重なり合うイベントが存在するとの決定に基づいて、前記イベント・ディスパッチ・バッファ内の前記イベントディスパッチ範囲を複数の部分範囲に分割させるように構成された第1の分割コードであって、前記複数の部分範囲の各々が、空であるか、または部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである、第1の分割コードと
    をさらに備える、請求項14に記載の装置。
  16. 前記第1の追加コードは、
    前記少なくとも1つのプロセッサに、少なくとも1つのイベントで占有された前記複数の部分範囲の各々について、前記複数の部分範囲のそれぞれの部分範囲に基づいて、前記少なくとも1つのイベントを分割させるように構成されたイベント分割コードと、
    前記少なくとも1つのプロセッサに、前記少なくとも1つの分割イベントを、前記それぞれの部分範囲に関連付けられた位置で前記イベント・ディスパッチ・バッファに追加させるように構成された第2の追加コードと
    をさらに備える、請求項15に記載の装置。
  17. 前記プログラムコードは、
    前記少なくとも1つのプロセッサに、前記1つまたは複数のメディアセグメントからの1つのメディアセグメントを解析して、セグメント開始時間およびセグメント終了時間を決定させるように構成された第2の解析コードであって、前記1つまたは複数のイベントが、前記メディアセグメントに関連付けられ、前記それぞれのイベントが、前記メディアセグメントに関連付けられる、第2の解析コードと、
    前記少なくとも1つのプロセッサに、前記それぞれのイベントを、ターゲット範囲に関連付けられた位置でパージバッファに追加させるように構成された第3の追加コードであって、前記ターゲット範囲が、前記それぞれのイベントに関連付けられた前記メディアセグメントの前記セグメント開始時間および前記セグメント終了時間に基づく、第3の追加コードと
    をさらに備える、請求項14に記載の装置。
  18. 前記第3の追加コードは、
    前記少なくとも1つのプロセッサに、前記ターゲット範囲に関連付けられた前記位置で前記パージバッファ内に重なり合うイベントが存在するとの決定に基づいて、前記パージバッファ内の前記ターゲット範囲を複数のパージ部分範囲に分割させるように構成された第2の分割コードであって、前記複数のパージ部分範囲の各々が、空であるか、またはパージ部分範囲の全体について同じ状態を有する少なくとも1つのイベントで占有されるか、のいずれかである、第2の分割コードと、
    前記少なくとも1つのプロセッサに、少なくとも1つのイベントで占有された前記複数のパージ部分範囲の各々について、前記複数のパージ部分範囲のそれぞれのパージ部分範囲に基づいて、前記少なくとも1つのイベントを分割させるように構成されたパージイベント分割コードと、
    前記少なくとも1つのプロセッサに、前記少なくとも1つの分割イベントを、前記それぞれのパージ部分範囲に関連付けられた位置で前記パージバッファに追加させるように構成された第4の追加コードと
    をさらに備える、請求項17に記載の装置。
  19. 前記第4の追加コードは、
    前記少なくとも1つのプロセッサに、同じイベント関連付け識別子(EAI)を、前記ターゲット範囲に関連付けられた前記位置で前記パージバッファ内の前記少なくとも1つの分割イベントの各々に割り当てさせるように構成された第1の割当てコードと、
    前記少なくとも1つのプロセッサに、前記それぞれのパージ部分範囲に関連付けられた前記位置で前記パージバッファ内の前記少なくとも1つの分割イベントの各々について、再生済みフラグを偽として設定させるように構成された第1の設定コードであって、前記再生済みフラグは、前記少なくとも1つの分割イベントの各々に関連付けられたメディアセグメントが再生されたか否かを示す、第1の設定コードと
    をさらに備える、請求項18に記載の装置。
  20. コンピュータに、請求項1~13のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
JP2022564804A 2021-04-21 2022-03-25 Process@appendおよびprocess@playモードを使用してメディアと共にdashおよびcmafインバンドイベントを処理するためのw3cメディア拡張 Active JP7477645B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163177791P 2021-04-21 2021-04-21
US63/177,791 2021-04-21
US17/703,252 2022-03-24
US17/703,252 US11588870B2 (en) 2021-04-21 2022-03-24 W3C media extensions for processing DASH and CMAF inband events along with media using process@append and process@play mode
PCT/US2022/021869 WO2022225642A1 (en) 2021-04-21 2022-03-25 W3c media extensions for processing dash and cmaf inband events

Publications (2)

Publication Number Publication Date
JP2023525669A JP2023525669A (ja) 2023-06-19
JP7477645B2 true JP7477645B2 (ja) 2024-05-01

Family

ID=83694538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022564804A Active JP7477645B2 (ja) 2021-04-21 2022-03-25 Process@appendおよびprocess@playモードを使用してメディアと共にdashおよびcmafインバンドイベントを処理するためのw3cメディア拡張

Country Status (6)

Country Link
US (1) US11588870B2 (ja)
EP (1) EP4327536A1 (ja)
JP (1) JP7477645B2 (ja)
KR (1) KR20220160643A (ja)
CN (1) CN115699705A (ja)
WO (1) WO2022225642A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018512102A (ja) 2015-02-11 2018-05-10 ヴィド スケール インコーポレイテッド Http上の動的適応ストリーミング(dash)における一般化されたhttpヘッダのためのシステムおよび方法
US20210006871A1 (en) 2019-07-02 2021-01-07 Tencent America LLC Events in timed metadata tracks
JP2021022898A (ja) 2019-07-30 2021-02-18 日本放送協会 配信サーバー装置、およびプログラム
WO2021067187A1 (en) 2019-10-01 2021-04-08 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over http
WO2021067174A1 (en) 2019-09-30 2021-04-08 Tencent America LLC Session-based information for dynamic adaptive streaming over http
WO2021067171A1 (en) 2019-09-30 2021-04-08 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over http

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6252947B1 (en) * 1999-06-08 2001-06-26 David A. Diamond System and method for data recording and playback
US9197686B1 (en) * 2012-01-06 2015-11-24 Google Inc. Backfill of video stream
US10382815B2 (en) * 2015-10-15 2019-08-13 DISH Technologies L.L.C. Apparatus, systems and methods for buffering of media content
US10880606B2 (en) * 2018-12-21 2020-12-29 Turner Broadcasting System, Inc. Disparate live media output stream playout and broadcast distribution
US11606592B2 (en) * 2019-10-01 2023-03-14 Tencent America LLC Playlist events for combining multiple media timelines and content-insertion in dash streaming

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018512102A (ja) 2015-02-11 2018-05-10 ヴィド スケール インコーポレイテッド Http上の動的適応ストリーミング(dash)における一般化されたhttpヘッダのためのシステムおよび方法
US20210006871A1 (en) 2019-07-02 2021-01-07 Tencent America LLC Events in timed metadata tracks
JP2021022898A (ja) 2019-07-30 2021-02-18 日本放送協会 配信サーバー装置、およびプログラム
WO2021067174A1 (en) 2019-09-30 2021-04-08 Tencent America LLC Session-based information for dynamic adaptive streaming over http
WO2021067171A1 (en) 2019-09-30 2021-04-08 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over http
WO2021067187A1 (en) 2019-10-01 2021-04-08 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over http

Also Published As

Publication number Publication date
KR20220160643A (ko) 2022-12-06
EP4327536A1 (en) 2024-02-28
CN115699705A (zh) 2023-02-03
US11588870B2 (en) 2023-02-21
WO2022225642A1 (en) 2022-10-27
US20220345506A1 (en) 2022-10-27
JP2023525669A (ja) 2023-06-19

Similar Documents

Publication Publication Date Title
JP2023520651A (ja) メディア・ストリーミング方法及び装置
JP7477645B2 (ja) Process@appendおよびprocess@playモードを使用してメディアと共にdashおよびcmafインバンドイベントを処理するためのw3cメディア拡張
US11973820B2 (en) Method and apparatus for mpeg dash to support preroll and midroll content during media playback
US11799943B2 (en) Method and apparatus for supporting preroll and midroll during media streaming and playback
US11838602B2 (en) MPD chaining in a live CMAF/DASH player using W3C media source and encrypted extensions
JP2024515488A (ja) スタッキング特性を有するプレロール、ミッドロールおよびエンドロールをサポートするためのmpeg dash用の補助mpdに関する方法、装置、媒体
US11882170B2 (en) Extended W3C media extensions for processing dash and CMAF inband events
JP7483919B2 (ja) Httpによる動的適応ストリーミングのための方法及び装置
US20230108426A1 (en) Method and apparatus for dynamic dash picture-in-picture streaming
JP2023520757A (ja) Httpを介した動的適応ストリーミングのための方法および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221025

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240418

R150 Certificate of patent or registration of utility model

Ref document number: 7477645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150