【文献】
EE-CDC Participants,"EE#8: Clock Drift Control",ISO/IEC JTC1/SC29/WG11, [online],2010年 9月27日,MPEG2010/Nxxxx,Pages 1-14 (Espacially, section 3.5),[平成25年9月12日検索],インターネット,URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/3_Guangzhou/wg11/m17984-v1-1mpeg_94_Guangzhou_2010-09-16.zip
【文献】
Qualcomm Incorporated,"Overview on MPD Signaling of Transport-Specific Parameters",3GPP TSG-SA4 #69, [online],2012年 8月16日,S4-120598,Pages 1-7,[平成27年9月7日検索], インターネット,URL:http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_69/Docs/S4-120598.zip
【文献】
Telefon AB LM Ericsson, et al.,"Media Presentation Description in HTTP Streaming",3GPPSA4#57, [online],2010年 1月20日,Tdoc S4-100080,Pages 1-11 (Especially, section 2.5),[平成27年9月29日検索], インターネット,URL:http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_57/Docs/S4-100080.zip
【文献】
"Information technology - Dynamic adaptive streaming Over HTTP (DASH) - Part 1: Media presentation description and segment formats",ISO/IEC 23009-1:2012(E),ISO/IEC,2012年 4月 1日,First edition,Pages 6-19
(58)【調査した分野】(Int.Cl.,DB名)
Moving Pictures Experts Group HTTP上の動的適応ストリーミング(MPEG DASH)を用いてメディアデータのストリーミングについての情報を受信する方法であって、
クライアントデバイスによって、メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、前記MPDは、前記クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記データは、前記クライアントデバイスが前記掛け時計時刻を前記クライアントデバイスのクロックと同期させるべきである同期方法を示す、
前記MPDによって示される前記方法を使用して、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させることと、
前記同期したクロックを使用して、前記ソースデバイスからの前記メディアコンテンツのデータを要求することと
を備える方法。
前記MPDによって示される前記同期方法が、ネットワークタイムプロトコル(NTP)を備え、前記MPDが、1つまたは複数のNTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記NTPサーバのうちの少なくとも1つからの時刻を要求することを備える、請求項1に記載の方法。
前記MPDによって示される前記同期方法が、HTTPタイムプロトコル(HTP)を備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求することを備える、請求項1に記載の方法。
前記MPDによって示される前記同期方法が、HTTPを備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求することを備える、請求項1に記載の方法。
前記クロックを同期させることが、HTTP HEAD要求を前記HTTPサーバのうちの少なくとも1つに送ることと、前記HTTP HEAD要求に応答して、前記HTTPサーバのうちの前記少なくとも1つからのHTTPヘッダ内の日付情報を受信することとを備える、請求項4に記載の方法。
前記クロックを同期させることが、HTTP GET要求を前記HTTPサーバのうちの少なくとも1つに送ることと、前記HTTP GET要求に応答して、ネットワークタイムプロトコル(NTP)および拡張マークアップ言語(XML)および国際標準化機構(ISO)時刻コードのうちの1つに従ってフォーマットされたタイムスタンプ値を受信することとを備える、請求項4に記載の方法。
前記MPDが、前記クライアントデバイスが第1の時刻に前記メディアコンテンツのセグメントを取り出すべきであり、別個のクライアントデバイスが前記第1の時刻とは異なる第2の時刻に前記セグメントを取り出すべきであることを示すデータを含み、データを要求することが、前記第1の時刻にまたは前記第1の時刻の後に前記セグメントを要求することを備える、請求項1に記載の方法。
Moving Pictures Experts Group HTTP上の動的適応ストリーミング(MPEG DASH)を用いてメディアデータのストリーミングについての情報を受信するためのクライアントデバイスであって、
クロックと、
メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、前記MPDは、前記クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記データは、前記クライアントデバイスが前記掛け時計時刻を前記クロックと同期させるべきである同期方法を示す、前記MPDによって示される前記方法を使用して、前記クロックを前記掛け時計時刻と同期させることと、前記同期したクロックを使用して、前記ソースデバイスからの前記メディアコンテンツのデータを要求することとを行うように構成された1つまたは複数のプロセッサと
を備えるクライアントデバイス。
実行されると、クライアントデバイスのプロセッサに、請求項1乃至7のうちのいずれか1項に記載の方法のステップを実行させる命令を記憶したコンピュータ可読記憶媒体。
Moving Pictures Experts Group HTTP上の動的適応ストリーミング(MPEG DASH)を用いてメディアデータのストリーミングのための情報をシグナリングする方法であって、
メディアコンテンツのメディアプレゼンテーション記述(MPD)のためのデータを生成することと、ここにおいて、前記MPDは、クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記生成されたデータは、前記クライアントデバイスが前記掛け時計時刻を前記クライアントデバイスのクロックと同期させるべきである同期方法を示す、
前記MPDを出力することと
を備える方法。
前記データを生成することが、前記同期方法がネットワークタイムプロトコル(NTP)を備えることを示すために、および、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させるためのデータを要求するための1つまたは複数のNTPサーバのネットワークアドレスを示すために、前記データを生成することを備える、請求項10に記載の方法。
前記データを生成することが、前記同期方法がHTTPタイミングプロトコル(HTP)を備えることを示すために、および、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させるためのデータを要求するための1つまたは複数のHTTPサーバのネットワークアドレスを示すために、前記データを生成することを備える、または、
前記データを生成することが、前記同期方法がHTTPを備えることを示すために、および、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させるためのデータを要求するための1つまたは複数のHTTPサーバのネットワークアドレスを示すために前記データを生成することを備える、請求項10に記載の方法。
前記クライアントデバイスが第1のクライアントデバイスを備え、前記MPDのための前記データを生成することが、前記第1のクライアントデバイスが第1の時刻に前記メディアコンテンツのセグメントを取り出すべきであり、第2のクライアントデバイスが前記第1の時刻とは異なる第2の時刻に前記セグメントを取り出すべきであることを前記データが示すような前記MPDのための前記データを生成することを備え、前記MPDを送ることが、前記MPDを前記第1のクライアントデバイスおよび前記第2のクライアントデバイスに送ることを備える、請求項10に記載の方法。
【発明を実施するための形態】
【0014】
[0017] 概して、本開示は、HTTP上の動的適応ストリーミング(DASH)環境など、メディアデータをストリーミングするための環境において、クライアントとサーバとの間の正確なタイミングを可能にするための技法について説明する。これらの技法は、HTTPライブストリーミング(HLS)をサポートするために使用され得る。全体的にDASHおよびHLSに関して説明されるが、本開示の技法は、他のネットワークストリーミングプロトコルに適用可能であり得る。DASHは、ISO/IEC 23009−1:2012、http://standards.iso.org/ittf/PubliclyAvailableStandards/c057623_ISO_IEC_23009−1_2012.zipで入手可能な「Information technology − Dynamic adaptive streaming over HTTP(DASH) − Part 1: Media presentation description and segment formats」、2012年4月1日において規定されている。ISO/IEC 23009−1の規格についての正誤表、補正およびさらなる追加が入手可能であり得、同じ技術がこれらの拡張のいずれにも適用され得る。
【0015】
[0018] HTTPストリーミングでは、頻繁に使用される動作はGETと部分GETとを含む。GET動作は、所与のユニフォームリソースロケータ(URL)またはユニフォームリソースネーム(URN)に関連付けられたファイル全体を取り出す。部分GET動作は、入力パラメータとしてバイト範囲を受信し、ファイルの連続するいくつかのバイトを取り出し、バイトの数は、受信されたバイト範囲に対応する。従って、部分GET動作は1つまたは複数の個々のムービーフラグメントを得ることができるので、HTTPストリーミングのためのムービーフラグメントが与えられ得る。ムービーフラグメントには、異なるトラックのいくつかのトラックフラグメントがあり得ることに留意されたい。HTTPストリーミングでは、メディアプレゼンテーションは、クライアントがアクセス可能であるデータの構造化された集合であり得る。クライアントは、ストリーミングサービスをユーザに提示するために、メディアデータ情報を要求し、ダウンロードし得る。
【0016】
[0019] HTTPストリーミングを使用して3GPPデータをストリーミングする例では、マルチメディアコンテンツのビデオおよび/またはオーディオデータのための複数の表現(representations)があり得る。以下で説明されるように、1つの適応セット内の異なる表現は、異なるコーディング特性(例えば、ビデオコーディング規格の異なるプロファイルまたはレベル)、異なるコーディング規格もしくはコーディング規格の拡張(マルチビューおよび/またはスケーラブル拡張など)、または異なるビットレートに対応し得る。異なる適応セットは、異なるソース構成要素、例えば、異なるオーディオ言語または異なるビデオビューを含み得る。各々が1つまたは複数の表現を含むそのような適応セットのマニフェストは、メディアプレゼンテーション記述(MPD)データ構造で定義され得る。メディアプレゼンテーションは、HTTPストリーミングクライアントデバイスがアクセス可能であるデータの構造化された集合に対応し得る。HTTPストリーミングクライアントデバイスは、ストリーミングサービスをクライアントデバイスのユーザに提示するために、メディアデータ情報を要求し、ダウンロードし得る。メディアプレゼンテーションは、MPDの更新を含み得る、MPDデータ構造内に記述され得る。
【0017】
[0020] メディアプレゼンテーションは、1つまたは複数の期間のシーケンスを含み得る。期間は、MPD内のPeriod要素によって定義され得る。各期間は、MPD内に属性startを有し得る。MPDは、期間ごとにavailableStartTime属性とstart属性とを含み得る。「動的」タイプのメディアプレゼンテーション(通常、ライブサービスに使用される)では、期間のstart属性とMPD属性availableStartTimeとメディアセグメントの継続時間(duration)との和が、協定世界時(UTC:Coordinated Universal Time)フォーマットでの期間の利用可能性時間、特に対応する期間内の各表現(representation)の第1のメディアセグメントを規定し得る。静的タイプのメディアプレゼンテーション(通常、オンデマンドサービスに使用される)では、第1の期間のstart属性は0であり得る。任意の他の期間では、start属性は、第1の期間の開始時期に対して、対応する期間の開始時期(start time)の間の時間オフセットを規定し得る。各期間は、次の期間の開始まで、または最後の期間の場合、メディアプレゼンテーションの終了まで継続し得る。期間開始時期は正確であり得る。それらは、全ての前の期間のメディアを再生することから得られる実際のタイミングを反映し得る。
【0018】
[0021] 各期間は1つまたは複数の適応セットを含み得、適応セットの各々は同じメディアコンテンツに対する1つまたは複数の表現を含み得る。表現は、オーディオまたはビデオデータのいくつかの代替的な符号化バージョンのうちの1つであり得る。表現は、符号化タイプによって、例えば、ビデオデータの場合、ビットレート、解像度、および/もしくはコーデックによって、並びに/またはオーディオデータの場合、コーデックによって異なり得る。表現という用語は、マルチメディアコンテンツの特定の期間に対応し、特定の方法で符号化された符号化オーディオまたはビデオデータのセクションを指すために使用され得る。
【0019】
[0022] 特定の期間の適応セットは、MPD内のgroup属性によって示されるグループに割り当てられ得る。同じグループ内の適応セットは、概して互いの代替と見なされる。例えば、特定の期間に対するビデオデータの各適応セットは、適応セットのいずれかが、対応する期間に対するマルチメディアコンテンツのビデオデータを表示するために復号のために選択され得るように、同じグループに割り当てられ得る。1期間内のメディアコンテンツは、いくつかの例では、存在する場合、グループ0からの1つの適応セットか、または各非ゼログループからの多くとも1つの適応セットの組合せのいずれかによって表され得る。期間の各表現についてのタイミングデータは、期間の開始時期に対して表現され得る。
【0020】
[0023] 表現は1つまたは複数のセグメントを含み得る。各表現は初期化セグメントを含むことがあり、または表現の各セグメントは自己初期化していることがある。存在するとき、初期化セグメントは、表現にアクセスするための初期化情報を含み得る。概して、初期化セグメントはメディアデータを含まない。セグメントは、ユニフォームリソースロケータ(URL)、ユニフォームリソースネーム(URN)、またはユニフォームリソース識別子(URI)などの識別子によって一意に参照され得る。MPDは各セグメントに識別子を与え得る。いくつかの例では、MPDはまた、URL、URN、またはURIによってアクセス可能なファイル内のセグメントのためのデータに対応し得るバイト範囲をrange属性の形態で与え得る。
【0021】
[0024] 各表現はまた、1つまたは複数のメディア構成要素を含み得、各メディア構成要素は、オーディオ、ビデオ、または(例えば、クローズドキャプション用の)時限テキストなど、1つの個々のメディアタイプの符号化バージョンに対応し得る。メディア構成要素は、1つの表現内の連続するメディアセグメントの境界にわたって時間連続的であり得る。
【0022】
[0025] 概して、DASHクライアントデバイスは、MPDにアクセスし、DASHサーバデバイスからダウンロードできる。すなわち、DASHクライアントデバイスは、ライブセッションを開始する際に使用するためにMPDを取り出すことができる。このMPDに基づいて、および各選択された表現について、DASHクライアントデバイスは、サーバデバイス上で利用可能な最新のセグメントはどれかを決定することと、次のセグメントおよび場合によっては将来のセグメントのセグメント利用可能性開始時期を決定することと、セグメントのプレイアウトをいつ、セグメント内のどのタイムラインから開始するかを決定することと、新しいMPDをいつ得る/フェッチするかを決定することとを含む、いくつかの決定を行うことができる。サービスがプレイアウトされると、クライアントデバイスは、ライブサービスとそれ自体のプレイアウトとの間のドリフトを追跡することができ、このドリフトは、検出され、補償される必要がある。
【0023】
[0026] HTTPライブストリーミング(HLS)は、これらの問題を次のように解決しようと試みる。利用可能にされる各セグメントに対して、サーバデバイスは新しいMPDを発行する。クライアントデバイスは、サービスに参加した後、最新のMPDを取り出し、プレイリストを解析し、次いで、最新のセグメントにアクセスできる。次いで、クライアントデバイスは、セグメントのプレイアウトを開始し、セグメントを最初からプレイするときに、クライアントデバイスが時間的に次のセグメントに継続的にアクセスできることを期待して構成される。新しいセグメントをフェッチする(またはセグメントをフェッチすることを必要とする)前に、クライアントデバイスは、最新のセグメントをどこで得るべきかのロケーションを与える新しいMPDをフェッチする。
【0024】
[0027] SmoothStreamingは、これらの問題を次のように解決しようと試みる。利用可能にされる各セグメントに対して、サーバデバイスはMPDに相当する新しいマニフェストを発行する。クライアントは、サービスに参加した後、最新のマニフェストを取り出し、最新のS要素のSegmentTimeLineの「@r」属性を得ることによって、利用可能である最新のセグメントを解析する。このことは、最新のセグメントをどこで得るべきかを示す情報を提供する。次いで、クライアントデバイスは、セグメントのプレイアウトを開始し、セグメントを最初からプレイするときに、次の要求がセグメント継続時間を最後の要求の時間に追加することから得られる時間の前でない限り、クライアントデバイスが時間的に次のセグメントに継続的にアクセスできることを期待して構成される。従って、クライアントは、現在のマニフェストがもはや使用できない帯域内信号をクライアントが得るまで、新しいマニフェストをフェッチすることなしに、最新のSegmentTimeline.S要素に基づいてセグメントを構築し続ける。時間的にこの時点で(すなわち、現在のマニフェストがもはや使用できない信号に応答して)、クライアントデバイスは新しいマニフェストを要求する。
【0025】
[0028] 本開示は、HLSおよびSmoothStreamingの提案された解決策が類似の問題に遭遇する可能性があることを認識する。例えば、HLSとSmoothStreamingの両方は、各新たに利用可能なセグメントを用いて、サーバデバイス上でMPD/プレイリスト/マニフェストを更新する。これは、クライアントデバイスがライブセッションに参加するときはいつでも、クライアントデバイスがMPD/プレイリスト/マニフェストをフェッチし、MPD/プレイリスト/マニフェスト内の情報を使用することを必要とすることを意味する。言い換えれば、参加することはMPD/プレイリスト/マニフェストのフェッチを意味し、MPD/プレイリスト/マニフェストは最新のMPD/プレイリスト/マニフェストである必要がある。従って、テンプレートが使用される場合でも、サーバは、「@r」カウントの変更について対応するためにMPD/プレイリスト/マニフェストを更新する必要がある。このアカウンティングは各表現について行われる必要がある。MPD/プレイリスト/マニフェスト更新は、MPD/プレイリスト/マニフェストがFLUTE(File Delivery over Unidirectional Transport)を介して配信されるか、またはキャッシュにプッシュされる必要がある場合に特に重要である。この場合、どの各新しいセグメントに沿って、新しいMPD/プレイリスト/マニフェストがプッシュされる必要がある。
【0026】
[0029] 別の例として、クライアントデバイスは、どの時間に次のセグメントがサーバデバイス上で利用可能であるか/発行されるかに関する情報を有さない。すなわち、クライアントデバイスは、次のセグメントが遅くともセグメント継続時間の後に発行されることを期待して構成される。これは、HLSに必要な、新しいセグメントをフェッチする前にMPD/プレイリストを更新することによって確認され得る。さらに、クライアントは、最新の利用可能なセグメントの最も早いプレゼンテーション時間よりも後の任意のプレゼンテーション時間が、後で再バッファすることを必要とせずにライブエッジ(live edge)により近づくためにプレイアウトされ得るかどうかに関する情報を有さない。緩いタイミングモデルと、次のセグメントがいつ利用可能になるかに関する情報を有さないクライアントとの事実として、クライアントデバイスは、最も早いプレゼンテーション時間がプレイドできるという仮定の下で構成されなければならない。
【0027】
[0030] さらに、クライアントデバイスは、同じセグメントをダウンロードする他のクライアントデバイスによるプレイアウトが同期するかどうかに関する情報を有さない。加えて、クライアントデバイスは、最新の情報を取得するためにサービスに参加するときに、新しいMPDをフェッチする必要がある。この「フェッチ」は、ライブセッションを開始するための要求とクライアントデバイスがプレイアウトを開始できる時間との間に遅延を課すことができる、少なくとも1つのMPDフェッチ往復時間を必要とする。
【0028】
[0031] 上記で指摘された問題の主な原因は、HLSおよびSmoothStreamingの既存の技法がMPDおよびメディアセグメント作成の正確な時間スケジュールについての情報を提供しないということである。一例として、10秒のセグメントで動作する場合、クライアントは、MPD/プレイリスト/マニフェストが発行されたばかりであるかどうか、またはMPD/プレイリスト/マニフェストが間もなく発行されるかどうかに関する情報をほとんど有さない。そのため、タイミングは依然として最大10ε秒だけ外れる可能性があり、εは任意に小さいが、0よりも大きい。加えて、HLSおよびSmoothStreamingのこれらの技法は、全ての新たに生成され、発行されたセグメントを用いて、MPD/プレイリスト/マニフェストを頻繁に更新することを必要とする。HLSおよびSmoothStreamingの技法において、ライブエッジにより近いプレイアウトを可能にするまたは他のクライアントと同期したプレイアウトを可能にするクライアントにとって、基準クロックは利用可能ではない。
【0029】
[0032] Moving Pictures Experts Group(MPEG)DASHおよびDASH−IF DASH−264/AVC技法も、この問題に対処しようと試みる。例えば、これらの技法では、番号ベースのテンプレートが使用され得る。MPEG−DASHは、上述の欠点に対処しようと試みる。すなわち、MPEG−DASHは、同じメディアプレゼンテーションを消費しているクライアントのプレイアウトを同期させ、サーバ上でのMPDの定期的な更新とクライアントによるフェッチとを回避し、サービスに参加するときにリアルタイムでMPDをフェッチすることを回避するために、ライブエッジにより近づいて動作しようと試みる。
【0030】
[0033] 詳細には、MPEG−DASHは、ライブのメディアプレゼンテーションをセットアップするMPD内に提供された(documented)掛け時計時刻を使用する。MPEG−DASHは、MPD生成プロセスが正確なクロックにアクセスできるようにMPDが生成されると仮定する。このことは、何らかの手段によって掛け時計時刻と同期したクライアントデバイスがライブエッジにより近づいて動作することを可能にする。具体的には、番号テンプレートベースの表現を使用し、@duration属性を使用することを使用するときに、MPD内で以下の情報が利用可能である。
【0031】
・ MPD@availabilityStartTime:開始時期は掛け時計時刻におけるMPDのアンカーである。この値はASTとして示される。
【0032】
・ MPD@minimumUpdatePeriod:MPDの最小更新期間。この値はMUPとして示される。
【0033】
・ MPD@suggestedPresentationDelay:セグメント利用可能性開始時期との差分として示唆されるプレゼンテーション遅延。この値はSPDとして示される。
【0034】
・ MPD@minBufferTime:各表現の@bandwidth属性と併せて使用される最小バッファ時間。この値はMBTとして示される。
【0035】
・ MPD@timeShiftBufferDepth:メディアプレゼンテーションの時間シフトバッファ深さ。この値はTSBとして示される。
【0036】
・ Period@start:MPD利用可能性開始時期に対する期間の開始時期。この値はPSとして示される。
【0037】
・ SegmentTemplate@startNumber:期間内の最初のセグメントの番号。この値はSSNとして示される。
【0038】
・ SegmentTemplate@duration:時間の単位でのセグメントの継続時間。@timescaleの値で除算されるこの値はdとして示される。
【0039】
[0034] クライアントデバイスはフェッチ時間FTでMPDをフェッチしたと仮定される。
【0040】
[0035] ここで、クライアントにおける掛け時計時刻がWTにおいて示されると仮定すると、クライアントデバイスは以下の情報を導出できる。
【0041】
・ LSNとして示される最新のセグメント番号を必要とする、サーバ上で利用可能な最新のセグメントのアドレス
・ SAST(SN)として示される、番号LSN+1を有する次のセグメントおよび任意の他のセグメントSNのセグメント利用可能性開始時期。SNは1から始まることに留意されたい。
【0042】
・ ライブエッジと最も近く同期するセグメント内のメディアプレゼンテーション時間、MPTL。
【0043】
・ 他のクライアントと同期するセグメント内のメディアプレゼンテーション時間、MPTS。
【0044】
・ 現在のプレゼンテーション時間に基づく、新しいMPDをフェッチするべき時間。
【0045】
[0036] MPEG−DASHの技法の一例が以下で説明される。この例では、MPDは以下の情報を含むものとする。
【数1】
【0046】
[0037] クライアントデバイスがMPDをフェッチし、掛け時計時刻がNTP=「2011−12−25T12:30:27」であるとさらに仮定する。この例では、この値はFTとして示される。
【0047】
[0038] 次いで、クライアントデバイスは最新のセグメント番号を導出する。すなわち、クライアントデバイスは、AST+PS≦NTPである期間として最新の期間を取得する。NTP≧AST+PS+dである場合、この期間内の少なくとも1つのセグメントが利用可能であり、クライアントデバイスはクライアント上で利用可能な最新のセグメント番号(LSN)を
【数2】
【0049】
[0039] 、この例では、結果として生じるURLは、http://www.example.com/audio/fr/29.mp4として導出される。
【0050】
[0040] 次いで、クライアントデバイスは、番号SNを有するセグメントのセグメント利用可能性開始時期(SAST)を
【数3】
【0052】
[0041] これは、この例では、SN=30の場合、SAST(SN=30)=2011−12−25T12:30:28を意味する。
【0053】
[0042] 次いで、クライアントデバイスは、MPD内の利用可能な情報に基づいてプレイアウトをスケジュールする。クライアントデバイスは、各表現についての期間内のメディアプレゼンテーション時間を、存在する場合、各表現についての@presentationTimeOffsetの値を引いた、メディアセグメント内のプレゼンテーション時間値として決定する。セグメント番号SNを有する各セグメントは、EPT(SN)として示される、最も早いプレゼンテーション時間を含む。
【0054】
[0043] MPEG−DASHでは、MPDを提供することによって、以下のことが保証される。
【0055】
1.この期間内の各セグメントは、その最も早いプレゼンテーション時間の前に利用可能である、すなわち、全てのSNについて、EPT(SN)≧SAST(SN)−(AST+PST)である。
【0056】
2.セグメント番号SNを有する各セグメントが、@bandwidth属性の値に等しいビットレートを有する固定ビットレートチャネル上で、SAST(SN)において開始して配信される場合、各プレゼンテーション時間PTは、最も遅く時間PT+(AST+PST)+MBTで、クライアントにおいて利用可能である。
【0057】
3.他のクライアントと同期して動作するときの、プレゼンテーション時間の推奨されるプレイアウト時間MPTS(PT)は、MPTS(PT)=(AST+PST)+PT+SPDである。
【0058】
4.この期間内の各セグメントは、少なくともSAST(SN)+TSB+dまで利用可能である。
【0059】
[0044] この情報を使用して、クライアントデバイスは、MPD内の情報、ダウンロード速度も考慮して、プレイアウトのスケジューリングを開始できる。好適なプレイアウト時間は、属性@suggestedPresentationDelayが存在する場合、POT(PT)=MPTS(PT)である。@suggestedPresentationDelayが存在しない場合、好適なプレイアウト時間は、上記の第1、第2、および第4の制約、すなわち、サーバにおけるセグメント利用可能性時間並びにメディアストリームのビットレート変動性を考慮する。
【0060】
[0045] クライアントデバイスは、MPDが有効である間、セグメントを構築するためにMPDを使用する。詳細には、クライアントデバイスは、メディア時間FT+MUPまで、セグメントを構築するためにMPDを使用する。すなわち、構築され得る最も大きいセグメント番号(GSN)は、
【数4】
【0062】
[0046] 最新のセグメントは他のセグメントよりも短くてもよいことを理解されたい。セグメント番号45を超える任意のデータをフェッチする前に、上記の例では、クライアントデバイスはMPEG−DASHに従って新しいMPDをフェッチする必要がある。
【0063】
[0047] より一般的には、DASHにおいて異なるタイミングおよびアドレス指定方式と同じ概念を使用するために、ISO/IEC 23009−1に従って以下の値が導入される。
【0064】
・ kとして示される、期間内のセグメントの位置、ただし、k=1,2,...である。
【0065】
・ MST(k)と呼ばれる、位置kにおけるセグメントのMPD開始時期
・ MD(k)と呼ばれる、位置kにおけるセグメントのMPD継続時間。
【0066】
[0048] ここで、クライアントデバイスにおける掛け時計時刻がWTとして示されると仮定すると、クライアントデバイスは以下の情報を導出できる。
【0067】
1.その期間開始時期PST
*によって示される、サーバ上での最新の利用可能な期間
2.SAST(k)として示される、期間内の位置kにおける任意のセグメントのセグメント利用可能性開始時期。
【0068】
3.k
*と呼ばれる、期間内のサーバ上で利用可能な最新のセグメントの位置
4.サーバ上で利用可能な最新のセグメントのアドレス
5.現在のプレゼンテーション時間に基づく、新しいMPDをフェッチするべき時間、より具体的には、このMPDによって構築され得る、この期間内の最も大きいセグメント位置k’。
【0069】
6.ライブエッジと最も近く同期する表現内のメディアプレゼンテーション時間、MPTL。
【0070】
7.他のクライアントと同期する表現内のメディアプレゼンテーション時間、MPTS。
【0071】
[0049] これらの時間を使用して、クライアントデバイスは以下のように上記から値を導出できる。
【0072】
1.最新の期間は、PST≦NTPである期間として取得される。
【0073】
2.セグメント利用可能性開始時期は、
【数5】
【0075】
3.この期間内では、クライアントデバイス上で利用可能な最新のセグメントは、SAST(k
*)の最も大きい値になると同時にNTPよりも小さい、位置k
*におけるセグメントである。
【0076】
4.最新のセグメントのアドレスは位置情報k
*を使用することによって取得され、次いで、セグメントアドレスが導出され得る。セグメントアドレスはアドレス指定方法に依存する。
【0077】
5.この期間内では、このMPDによって構築され得る最も大きいセグメント位置k’は、SAST(k’)の最も大きい値になると同時にFT+MUPよりも小さいセグメント位置である。
【0078】
[0050] クライアントデバイスは、このデータを使用して、MPD時間を導出できる。例えば、@duration属性が存在し、@timescaleの値によって除算される値がdとして示される場合、クライアントデバイスは、従来のDASH技法を使用して、MPD時間を
【数6】
【0080】
[0051] セグメントベース情報が、s=1,...,N
Sでインデックス付けされたN
SS要素を有するSegmentTimeline要素を含む場合、(ISO/IEC 23009−1によるDASHでは)
・ t[s]は、@timescale属性の値によって除算されるs番目のS要素の@tの値である
・ d[s]は、@timescale属性の値によって除算されるs番目のS要素の@dの値である
・ r[s]は、s番目のS要素の@rの値である(@r値が−1でない限り、これは、この値が未知であり、更新された情報が利用可能になるまで@dが使用され得ることを意味する)
[0052] 従って、クライアントデバイスは、次のようにMPD継続時間と開始時期とを導出できる。
【数7】
【0081】
[0053] ISO/IEC 23009−1によるDASHでは、アドレス指定方法はタイムライン生成の使用に依存しない。@startNumberの解釈はアドレス指定方法に依存する。表現がメディアセグメントの明示的なURLのセットを与える1つまたは複数のSegmentList要素を含むまたは継承する場合、クライアントデバイスは@startNumberを使用してセグメントリスト内の最初のセグメントの位置を決定する。次いで、セグメントリストは明示的なURLを与える。表現が$Number$を有するSegmentTemplate要素を含むまたは継承する場合、位置kにおけるメディアセグメントのURLは、$Number$識別子をSegmentTemplate@media列内の(k−1)+@startNumberで置き換えることによって取得される。表現が$Time$を有するSegmentTemplate要素を含むまたは継承する場合、クライアントデバイスは、$Time$識別子をSegmentTemplate@media列内の(@timescale属性の場合、値で非正規化された)MST(k)で置き換えることによって、位置kにおけるメディアセグメントのURLを取得する。
【0082】
[0054] さらに、ISO/IEC 23009−1によるDASHでは、クライアントデバイスは、MPD内の利用可能な情報に基づいてプレイアウトをスケジュールする。クライアントデバイスは、各表現についての期間内のメディアプレゼンテーション時間を、存在する場合、各表現についての@presentationTimeOffsetの値を引いた、メディアセグメント内のプレゼンテーション時間値として決定する。位置kにおける各セグメントは、最も早いメディアプレゼンテーション時間EPT(k)を割り当てている。
【0083】
[0055] MPDを提供することによって、ISO/IEC 23009−1によるDASHは以下のことを保証する。
【0084】
1.この期間内の各セグメントは、その最も早いプレゼンテーション時間およびその継続時間の前に利用可能である、すなわち、全てのkについて、
【数8】
【0086】
2.セグメント番号kを有する各セグメントが、@bandwidth属性の値に等しいビットレートを有する固定ビットレートチャネル上で、SAST(k)において開始して配信される場合、各プレゼンテーション時間PTは、最も遅く時間PT+(AST+PST)+MBT+MD(k)で、クライアントにおいて利用可能である。
【0087】
3.他のクライアントと同期して動作するときの、プレゼンテーション時間の推奨されるプレイアウト時間MPTS(PT)は、MPTS(PT)=(AST+PST)+PT+SPDである。
【0088】
4.この期間内の各セグメントは、少なくともSAST(k)+TSB+MD(k)まで利用可能である。
【0089】
[0056] この情報を使用して、クライアントデバイスは、MPD内の情報、ダウンロード速度も考慮して、プレイアウトのスケジューリングを開始できる。好適なプレイアウト時間は、属性@suggestedPresentationDelayが存在する場合、POT(PT)=MPTS(PT)である。属性@suggestedPresentationDelayがパーセントしない場合、好適なプレイアウト時間は、第1、第2、および第4の制約、すなわち、サーバにおけるセグメント利用可能性時間並びにメディアストリームのビットレート変動性を考慮する。
【0090】
[0057] ISO/IEC 23009−1によるDASHの下で、クライアントデバイスは、メディア時間FT+MUPまで、セグメントを構築および要求するためにMPDを使用することができ、このMPDによって構築され得る最も大きいセグメント位置k’は、SAST(k’)の最も大きい値になると同時にFT+MUPよりも小さいセグメント位置である。最新のセグメントはその他のセグメントよりも短くてもよい。
【0091】
[0058] @durationを有するまたはSegmentTimeline.S@r=「−1」を有するテンプレート構文が使用される場合、ISO/IEC 23009−1によるDASHの手法は、HLSおよびSmoothStreaming手法と比較して、いくつかの利点をもたらし得る。例えば、
1.セグメント構築が継続され得る限り、MPDはサーバデバイス上で更新されなくてもよい。クライアントデバイスがMPDのフェッチ時間を記録する限り、クライアントデバイスは、いくつかの異なるサービスについて、前もってMPDをダウンロードする(またはバッファ内にMPDを保持する)ことができる。
【0092】
2.また、マルチキャスト環境では、MPDは一度だけまたは少なくとも毎秒よりもかなり低い頻度で配信され得る。
【0093】
3.クライアントデバイスは、次のセグメントがサーバデバイス上で利用可能である/発行される時間を正確に示す情報を有する。これは、セグメントが利用可能になるとすぐに、クライアントデバイス要求セグメントとして、ライブエッジにより近い動作を可能にする。
【0094】
4.クライアントデバイスは、クライアントデバイスが正確にダウンロードする最初のセグメントのプレイアウトをプレースできる。クライアントデバイスは、ライブエッジにより近い動作を可能にするために、セグメントの途中でプレイアウトを開始することさえできる。
【0095】
5.クライアントデバイスは、そのプレイアウトを他のクライアントデバイスと同期させることができる。
【0096】
6.サーバデバイス動作は単純である、すなわち、専用のサーバデバイスは必要でない
[0059] これらの潜在的な利点にもかかわらず、より厳しいタイミング制御は、より詳細な解析を必要とし得るいくつかの問題をもたらす可能性もある。例えば、ISO/IEC 23009−1によるDASHの下では、
1.サーバデバイスおよびクライアントデバイスは、正確なUTCタイミングを有する必要がある。これを実装する方法の要件はないが、両端での世界的に正確なタイミング基準の実装を依然として必要とする。特に、以下のオプションが存在する。
【0097】
a. ネットワークタイムプロトコル(NTP):HTTP://www.ntp.org
b. HTTPタイムプロトコル(HTP):HTTP://www.clevervest.com/htp/
c. HTTPタイムシンク(HTS):HTTP://netsecure.alcpress.com/htp/
d. 全地球測位システム(GPS)
e. HTTP日付ヘッダ
f. RESTFUL APIを用いたMPDにおけるダイレクトシグナリング
g. MPDにおけるダイレクトシグナリング
2.セグメント利用可能性時間が明示的に公開されると同時に全てのクライアントデバイスがセグメントにアクセスし得るので、サーバデバイスは過負荷をかけられる可能性がある。
【0098】
[0060] 本開示は、DASH環境におけるクライアントデバイスとサーバデバイスとの間の正確なタイミングを可能にすることを目的とする。
【0099】
[0061]
図1は、ネットワークを介してメディアデータをストリーミングするための技法を実装する例示的なシステム10を示すブロック図である。この例では、システム10は、コンテンツ作成デバイス20と、サーバデバイス60と、クライアントデバイス40とを含む。クライアントデバイス40およびサーバデバイス60は、インターネットを備え得るネットワーク74によって通信可能に結合される。いくつかの例では、コンテンツ作成デバイス20およびサーバデバイス60も、ネットワーク74または別のネットワークによって結合され得るか、あるいは直接通信可能に結合され得る。いくつかの例では、コンテンツ作成デバイス20およびサーバデバイス60は同じデバイスを備え得る。
【0100】
[0062] コンテンツ作成デバイス20は、
図1の例では、オーディオソース22とビデオソース24とを備える。オーディオソース22は、例えば、オーディオエンコーダ26によって符号化されるべき、キャプチャされたオーディオデータを表す電気信号を生成するマイクロフォンを備え得る。代替として、オーディオソース22は、前に記録されたオーディオデータを記憶する記憶媒体、コンピュータシンセサイザなどのオーディオデータ生成器、またはオーディオデータの任意の他のソースを備え得る。ビデオソース24は、ビデオエンコーダ28によって符号化されるべきビデオデータを生成するビデオカメラ、前に記録されたビデオデータで符号化された記憶媒体、コンピュータグラフィックスソースなどのビデオデータ生成ユニット、またはビデオデータの任意の他のソースを備え得る。コンテンツ作成デバイス20は、必ずしも全ての例においてサーバデバイス60に通信可能に結合されるとは限らないが、サーバデバイス60によって読み取られる別個のメディアにマルチメディアコンテンツを記憶し得る。
【0101】
[0063] 未加工オーディオおよびビデオデータは、アナログまたはデジタルデータを備え得る。アナログデータは、オーディオエンコーダ26および/またはビデオエンコーダ28によって符号化される前にデジタル化され得る。オーディオソース22は、通話参加者が話している間、通話参加者からオーディオデータを取得し得、同時に、ビデオソース24は、通話参加者のビデオデータを取得し得る。他の例では、オーディオソース22は、記憶されたオーディオデータを備えるコンピュータ可読記憶媒体を備え得、ビデオソース24は、記憶されたビデオデータを備えるコンピュータ可読記憶媒体を備え得る。このようにして、本開示で説明される技法は、ライブ、ストリーミング、リアルタイムオーディオおよびビデオデータ、またはアーカイブされた、あらかじめ記録されたオーディオおよびビデオデータに適用され得る。
【0102】
[0064] ビデオフレームに対応するオーディオフレームは、概して、ビデオフレーム内に含まれているビデオソース24によってキャプチャされたビデオデータと同時に、オーディオソース22によってキャプチャされたオーディオデータを含むオーディオフレームである。例えば、通話参加者が概して話すことによってオーディオデータを生成する間、オーディオソース22はオーディオデータをキャプチャし、同時に、すなわちオーディオソース22がオーディオデータをキャプチャしている間、ビデオソース24は通話参加者のビデオデータをキャプチャする。従って、オーディオフレームは、1つまたは複数の特定のビデオフレームに時間的に対応し得る。従って、ビデオフレームに対応するオーディオフレームは、概して、オーディオデータとビデオデータとが同時にキャプチャされる状況、およびオーディオフレームとビデオフレームとが、それぞれ、同時にキャプチャされたオーディオデータとビデオデータとを備える状況に対応する。
【0103】
[0065] いくつかの例では、オーディオエンコーダ26は、符号化オーディオフレームのオーディオデータが記録された時間を表す、各符号化オーディオフレームにおけるタイムスタンプを符号化することができ、同様に、ビデオエンコーダ28は、符号化ビデオフレームのビデオデータが記録された時間を表す、各符号化ビデオフレームにおけるタイムスタンプを符号化できる。そのような例では、ビデオフレームに対応するオーディオフレームは、タイムスタンプを備えるオーディオフレームと、同じタイムスタンプを備えるビデオフレームとを備え得る。コンテンツ作成デバイス20は、オーディオエンコーダ26および/またはビデオエンコーダ28がそこからタイムスタンプを生成し得るか、あるいはオーディオソース22およびビデオソース24がオーディオデータとビデオデータとをそれぞれタイムスタンプに関連付けるために使用し得る、内部クロックを含み得る。
【0104】
[0066] いくつかの例では、オーディオソース22は、オーディオデータが記録された時間に対応するデータをオーディオエンコーダ26に送ることができ、ビデオソース24は、ビデオデータが記録された時間に対応するデータをビデオエンコーダ28に送ることができる。いくつかの例では、オーディオエンコーダ26は、必ずしもオーディオデータが記録された絶対時刻を示すことなしに、符号化オーディオデータの相対的時間順序を示すために、符号化オーディオデータ内のシーケンス識別子を符号化し得、同様に、ビデオエンコーダ28も、符号化ビデオデータの相対的時間順序を示すためにシーケンス識別子を使用し得る。同様に、いくつかの例では、シーケンス識別子は、タイムスタンプにマッピングされるか、または場合によってはタイムスタンプと相関し得る。
【0105】
[0067] オーディオエンコーダ26は概して符号化オーディオデータのストリームを生成し、ビデオエンコーダ28は符号化ビデオデータのストリームを生成する。データの各個々のストリームは(オーディオかビデオかにかかわらず)エレメンタリストリームと呼ばれることがある。エレメンタリストリームは、表現のデジタル的にコード化された(場合によっては圧縮された)単一の構成要素である。例えば、表現のコード化ビデオまたはオーディオ部分はエレメンタリストリームであり得る。エレメンタリストリームは、ビデオファイル内にカプセル化される前に、パケット化エレメンタリストリーム(PES)に変換され得る。同じ表現内では、1つのエレメンタリストリームに属するPESパケットを他のものから区別するためにストリームIDが使用され得る。エレメンタリストリームの基本データ単位はパケット化エレメンタリストリーム(PES)パケットである。従って、コード化ビデオデータは概してエレメンタリビデオストリームに対応する。同様に、オーディオデータは1つまたは複数のそれぞれのエレメンタリストリームに対応する。
【0106】
[0068] ITU−T H.264/AVCおよび来るべき高効率ビデオコーディング(HEVC)規格など、多くのビデオコーディング規格は、シンタックスと、セマンティクスと、エラーのないビットストリームのための復号プロセスとを定義し、これらのいずれも特定のプロファイルまたはレベルに準拠する。ビデオコーディング規格は、通常、エンコーダを指定しないが、エンコーダは、生成されたビットストリームがデコーダの規格に準拠することを保証することを課される。ビデオコーディング規格のコンテキストでは、「プロファイル」は、アルゴリズム、機能、またはツール、およびそれらに適用される制約のサブセットに対応する。例えば、H.264規格によって定義される「プロファイル」は、H.264規格によって指定されたビットストリームシンタックス全体のサブセットである。「レベル」は、例えば、ピクチャの解像度、ビットレート、およびブロック処理レートに関連するデコーダメモリおよび計算などの、デコーダリソース消費の制限に対応する。プロファイルはprofile_idc(プロファイルインジケータ)値でシグナリングされ得るが、レベルはlevel_idc(レベルインジケータ)値でシグナリングされ得る。
【0107】
[0069] H.264規格は、例えば、所与のプロファイルのシンタックスによって課される限界内で、復号ピクチャの指定されたサイズなど、ビットストリーム内のシンタックス要素がとる値に応じて、エンコーダおよびデコーダのパフォーマンスの大きい変動を必要とする可能性が依然としてあることを認識している。H.264規格は、多くの適用例において、特定のプロファイル内でシンタックスの全ての仮定的使用を処理することが可能なデコーダを実装することが実際的でもなく、経済的でもないことをさらに認識している。従って、H.264規格は、ビットストリーム内のシンタックス要素の値に課された制約の規定されたセットとして「レベル」を定義する。これらの制約は、値に関する単純な制限であり得る。代替として、これらの制約は、値の演算の組合せ(例えば、ピクチャの幅×ピクチャの高さ×毎秒復号されるピクチャの数)に関する制約の形態をとり得る。H.264規格は、個々の実装形態が、サポートされるプロファイルごとに異なるレベルをサポートし得ることをさらに規定している。
【0108】
[0070] プロファイルに準拠するデコーダは、通常、プロファイルにおいて定義された全ての機能をサポートする。例えば、コーディング機能として、Bピクチャコーディングは、H.264/AVCのベースラインプロファイルではサポートされないが、H.264/AVCの他のプロファイルではサポートされる。レベルに準拠するデコーダは、レベルにおいて定義された制限を超えてリソースを必要としない任意のビットストリームを復号することが可能でなければならない。プロファイルおよびレベルの定義は、説明可能性のために役立ち得る。例えば、ビデオ送信中に、プロファイル定義とレベル定義のペアが全送信セッションについてネゴシエートされ、同意され得る。より具体的には、H.264/AVCでは、レベルは、処理される必要があるマクロブロックの数に関する制限と、復号ピクチャバッファ(DPB)サイズと、コード化ピクチャバッファ(CPB)サイズと、垂直動きベクトル範囲と、2つの連続するMBごとの動きベクトルの最大数と、Bブロックが8×8ピクセル未満のサブマクロブロック区分を有することができるかどうかとを定義し得る。このようにして、デコーダは、デコーダがビットストリームを適切に復号することが可能であるかどうかを決定し得る。
【0109】
[0071]
図1の例では、コンテンツ作成デバイス20のカプセル化ユニット30は、ビデオエンコーダ28からのコード化ビデオデータを備えるエレメンタリストリームと、オーディオエンコーダ26からのコード化オーディオデータを備えるエレメンタリストリームとを受信する。いくつかの例では、ビデオエンコーダ28およびオーディオエンコーダ26は各々、符号化データからPESパケットを形成するためのパケッタイザを含み得る。他の例では、ビデオエンコーダ28およびオーディオエンコーダ26は各々、符号化データからPESパケットを形成するためのそれぞれのパケッタイザとインターフェースし得る。さらに他の例では、カプセル化ユニット30は、符号化オーディオデータと符号化ビデオデータとからPESパケットを形成するためのパケッタイザを含み得る。
【0110】
[0072] ビデオエンコーダ28は、様々なビットレートで、ピクセル解像度、フレームレート、様々なコーディング規格への準拠、様々なコーディング規格のための様々なプロファイルおよび/またはプロファイルのレベルへの準拠、(例えば、2次元または3次元再生用の)1つまたは複数のビューを有する表現、あるいは他のそのような特性などの様々な特性を用いてマルチメディアコンテンツの異なる表現を生成するために、様々な方法でマルチメディアコンテンツのビデオデータを符号化し得る。本開示で使用される場合、表現は、オーディオデータとビデオデータ、例えば、1つまたは複数のオーディオエレメンタリストリームと1つまたは複数のビデオエレメンタリストリームの組合せを備え得る。各PESパケットは、PESパケットが属するエレメンタリストリームを識別するstream_idを含み得る。カプセル化ユニット30は、エレメンタリストリームを様々な表現のビデオファイルにアセンブルすることを担う。
【0111】
[0073] カプセル化ユニット30は、オーディオエンコーダ26とビデオエンコーダ28とから表現のエレメンタリストリームのPESパケットを受信し、PESパケットから対応するネットワーク抽象化レイヤ(NAL)ユニットを形成する。H.264/AVC(アドバンストビデオコーディング)の例では、コード化ビデオセグメントは、ビデオテレフォニー、ストレージ、ブロードキャスト、またはストリーミングなどの適用例に対処する「ネットワークフレンドリーな」ビデオ表現を与えるNALユニットに編成される。NALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと非VCL NALユニットとに分類され得る。VCLユニットは、コア圧縮エンジンを含み得、ブロック、マクロブロック、および/またはスライスレベルのデータを含み得る。他のNALユニットは非VCL NALユニットであり得る。いくつかの例では、通常は1次コード化ピクチャとして提示される、1つの時間インスタンスにおけるコード化ピクチャは、1つまたは複数のNALユニットを含み得るアクセスユニット内に含まれ得る。
【0112】
[0074] 非VCL NALユニットは、特に、パラメータセットNALユニットとSEI NALユニットとを含み得る。パラメータセットは、(シーケンスパラメータセット(SPS)における)シーケンスレベルヘッダ情報と、(ピクチャパラメータセット(PPS)における)まれに変化するピクチャレベルヘッダ情報とを含み得る。パラメータセット(例えば、PPSおよびSPS)がある場合、まれに変化する情報がシーケンスごとまたはピクチャごとに繰り返される必要はなく、従って、コーディング効率が改善され得る。さらに、パラメータセットの使用は、重要なヘッダ情報の帯域外送信を可能にし、誤り耐性のための冗長送信の必要性を回避できる。帯域外送信の例では、SEI NALユニットなど、他のNALユニットとは異なるチャネル上でパラメータセットNALユニットが送信され得る。
【0113】
[0075] 補足エンハンスメント情報(SEI)は、VCL NALユニットからのコード化ピクチャサンプルを復号するためには必要でないが、復号、表示、誤り耐性、および他の目的に関するプロセスを支援し得る情報を含み得る。SEIメッセージは、非VCL NALユニット内に含まれていることがある。SEIメッセージは、一部の規格仕様の規範的部分であり、従って、規格に準拠するデコーダ実装のために常に必須であるとは限らない。SEIメッセージは、シーケンスレベルSEIメッセージまたはピクチャレベルSEIメッセージであり得る。SVCの例におけるスケーラビリティ情報SEIメッセージ、MVCにおけるビュースケーラビリティ情報SEIメッセージなどのSEIメッセージ内に、何らかのシーケンスレベル情報が含まれる場合がある。これらの例示的なSEIメッセージは、例えば、動作点の抽出およびそれらの動作点の特性に関する情報を搬送し得る。加えて、カプセル化ユニット30は、表現の特性を記述するメディアプレゼンテーション記述子(MPD)など、マニフェストファイルを形成し得る。カプセル化ユニット30は、拡張可能マークアップ言語(XML)に従ってMPDをフォーマットし得る。
【0114】
[0076] カプセル化ユニット30は、マニフェストファイル(例えば、MPD)とともに、マルチメディアコンテンツの1つまたは複数の表現についてのデータを出力インターフェース32に与え得る。出力インターフェース32は、ユニバーサルシリアルバス(USB)インターフェース、CDまたはDVDライターまたはバーナーなど、記憶媒体に書き込むためのネットワークインターフェースまたはインターフェース、磁気またはフラッシュ記憶媒体へのインターフェース、あるいはメディアデータを記憶または送信するための他のインターフェースを備え得る。カプセル化ユニット30は、マルチメディアコンテンツの表現の各々のデータを出力インターフェース32に与えることができ、出力インターフェース32は、ネットワーク送信または記憶媒体を介してそのデータをサーバデバイス60に送ることができる。
図1の例では、サーバデバイス60は、様々なマルチメディアコンテンツ64を記憶する記憶媒体62を含み、各マルチメディアコンテンツ64は、それぞれのマニフェストファイル66と1つまたは複数の表現68A〜68N(表現68)とを含む。いくつかの例では、出力インターフェース32はデータを直接ネットワーク74に送ることもできる。
【0115】
[0077] いくつかの例では、表現68は適応セットに分離され得る。上述したように、場合によっては、適応セットは「表現グループ」とも呼ばれ得る。すなわち、表現68の様々なサブセットは、コーデック、プロファイルおよびレベル、解像度、ビューの数、セグメントのファイルフォーマット、表現を用いて表示されるべきテキストおよび/または復号され、例えばスピーカーによって提示されるべきオーディオデータの言語または他の特性を識別し得るテキストタイプ情報、適応セットにおける表現のためのシーンのカメラアングルまたは現実世界のカメラパースペクティブを記述し得るカメラアングル情報、特定の視聴者のコンテンツ適合性を記述するレーティング情報など、特性のそれぞれの共通のセットを含み得る。
【0116】
[0078] マニフェストファイル66は、特定の適応セットに対応する表現68のサブセットを示すデータ、並びに適応セットについての共通の特性を含み得る。マニフェストファイル66はまた、ビットレートなど、適応セットの個々の表現についての個々の特性を表すデータを含み得る。このようにして、適応セットは、簡略化されたネットワーク帯域幅適応を可能にし得る。適応セットにおける表現は、マニフェストファイル66の適応セット要素の子要素を使用して示され得る。
【0117】
[0079] サーバデバイス60は、要求処理ユニット70とネットワークインターフェース72とを含む。いくつかの例では、サーバデバイス60は複数のネットワークインターフェースを含み得る。さらに、サーバデバイス60の機能のうちのいずれかまたは全てが、ルータ、ブリッジ、プロキシデバイス、スイッチ、または他のデバイスなど、コンテンツ配信ネットワークの他のデバイス上で実装され得る。いくつかの例では、コンテンツ配信ネットワークの中間デバイスは、マルチメディアコンテンツ64のデータをキャッシュし、サーバデバイス60の構成要素に実質的に準拠する構成要素を含み得る。概して、ネットワークインターフェース72は、ネットワーク74を介してデータを送信および受信するように構成される。
【0118】
[0080] 要求処理ユニット70は、クライアントデバイス40などのクライアントデバイスから、記憶媒体62のデータについてのネットワーク要求を受信するように構成される。例えば、要求処理ユニット70は、R.Fieldingらによる、RFC2616、「Hypertext Transfer Protocol − HTTP/1.1」、Network Working Group、IETF、1999年6月に記載されている、ハイパーテキスト転送プロトコル(HTTP)バージョン1.1を実装し得る。すなわち、要求処理ユニット70は、HTTP GET要求または部分GET要求を受信し、これらの要求に応答してマルチメディアコンテンツ64のデータを与えるように構成され得る。要求は、例えば、セグメントのURLを使用して、表現68のうちの1つのセグメントを指定し得る。いくつかの例では、要求はまた、セグメントの1つまたは複数のバイト範囲を指定し、従って部分GET要求を備え得る。要求処理ユニット70は、表現68のうちの1つのセグメントのヘッダデータを与えるためのHTTP HEAD要求をサービスするようにさらに構成され得る。いずれの場合も、要求処理ユニット70は、要求されたデータをクライアントデバイス40などの要求元デバイスに与えるための要求を処理するように構成され得る。
【0119】
[0081] 追加または代替として、要求処理ユニット70は、eMBMSなどのブロードキャストまたはマルチキャストプロトコルを介してメディアデータを配信するように構成され得る。コンテンツ作成デバイス20は、説明した方法と実質的に同じ方法でDASHセグメントおよび/またはサブセグメントを作成し得るが、サーバデバイス60は、eMBMSまたは別のブロードキャストもしくはマルチキャストネットワークトランスポートプロトコルを使用して、これらのセグメントまたはサブセグメントを配信し得る。例えば、要求処理ユニット70は、クライアントデバイス40からマルチキャストグループ参加要求を受信するように構成され得る。すなわち、サーバデバイス60は、マルチキャストグループに関連付けられたインターネットプロトコル(IP)アドレスを、クライアントデバイス40を含む、特定のメディアコンテンツ(例えば、ライブイベントのブロードキャスト)に関連付けられたクライアントデバイスに広告できる。今度は、クライアントデバイス40が、マルチキャストグループに参加するための要求をサブミットできる。この要求は、ネットワーク74全体、例えば、ネットワーク74を構成するルータに伝播され得、その結果、ルータは、マルチキャストグループに関連付けられたIPアドレスを宛先とするトラフィックを、クライアントデバイス40などの加入クライアントデバイスに向けさせられる。
【0120】
[0082]
図1の例に示されるように、マルチメディアコンテンツ64は、メディアプレゼンテーション記述(MPD)に対応し得るマニフェストファイル66を含む。マニフェストファイル66は、異なる代替表現68(例えば、異なる品質を有するビデオサービス)の記述を含み得、その記述は、例えば、表現68のコーデック情報と、プロファイル値と、レベル値と、ビットレートと、他の記述特性とを含み得る。クライアントデバイス40は、表現68のセグメントにアクセスする方法を決定するためにメディアプレゼンテーションのMPDを取り出し得る。
【0121】
[0083] 詳細には、取出しユニット52は、ビデオデコーダ48の復号能力とビデオ出力44のレンダリング能力とを決定するために、クライアントデバイス40の構成データ(図示せず)を取り出し得る。構成データはまた、クライアントデバイス40のユーザによって選択された言語の選好、クライアントデバイス40のユーザによって設定された深度の選好に対応する1つまたは複数のカメラパースペクティブ、および/またはクライアントデバイス40のユーザによって選択されたレーティングの選好のうちのいずれかまたは全てを含み得る。取出しユニット52は、例えば、HTTP GET要求と部分GET要求とをサブミットするように構成されたウェブブラウザまたはメディアクライアントを備え得る。取出しユニット52は、クライアントデバイス40の1つまたは複数のプロセッサまたは処理ユニット(図示せず)によって実行されるソフトウェア命令に対応し得る。いくつかの例では、取出しユニット52に関して説明される機能の全てまたは部分が、ハードウェア、あるいはハードウェア、ソフトウェア、および/またはファームウェアの組合せで実装され得、ソフトウェアまたはファームウェアの命令を実行するために必須のハードウェアが設けられ得る。
【0122】
[0084] 取出しユニット52は、クライアントデバイス40の復号能力およびレンダリング能力を、マニフェストファイル66の情報によって示される表現68の特性と比較し得る。取出しユニット52は、最初に、表現68の特性を決定するためにマニフェストファイル66の少なくとも一部分を取り出し得る。例えば、取出しユニット52は、本開示の技法に従って、1つまたは複数の適応セットの特性を記述するマニフェストファイル66の一部分を要求し得る。取出しユニット52は、クライアントデバイス40のコーディング能力およびレンダリング能力によって満たされ得る特性を有する表現68のサブセット(例えば、適応セット)を選択し得る。次いで、取出しユニット52は、適応セットにおける表現のビットレートを決定し、ネットワーク帯域幅の現在利用可能な量を決定し、ネットワーク帯域幅によって満たされ得るビットレートを有する表現のうちの1つからセグメントを取り出し得る。
【0123】
[0085] 概して、より高いビットレート表現はより高品質のビデオ再生を生じ得るが、利用可能なネットワーク帯域幅が減少したとき、より低いビットレート表現は十分な品質のビデオ再生を与え得る。従って、利用可能なネットワーク帯域幅が比較的高いとき、取出しユニット52は比較的高いビットレート表現からデータを取り出し得るが、利用可能なネットワーク帯域幅が低いとき、取出しユニット52は比較的低いビットレート表現からデータを取り出し得る。このようにして、クライアントデバイス40は、ネットワーク74上でマルチメディアデータをストリーミングしながら、ネットワーク74の変化するネットワーク帯域幅利用可能性にも適応し得る。
【0124】
[0086] 追加または代替として、取出しユニット52は、eMBMSまたはIPマルチキャストなどのブロードキャストまたはマルチキャストネットワークプロトコルに従ってデータを受信するように構成され得る。そのような例では、取出しユニット52は、特定のメディアコンテンツに関連付けられたマルチキャストネットワークグループに参加するための要求をサブミットし得る。マルチキャストグループに参加した後、取出しユニット52は、サーバデバイス60またはコンテンツ作成デバイス20に発行されるさらなる要求なしに、マルチキャストグループのデータを受信し得る。取出しユニット52は、マルチキャストグループのデータがもはや必要とされないときに、例えば、再生を停止するために、またはチャネルを異なるマルチキャストグループに変更するために、マルチキャストグループを離れるための要求をサブミットし得る。
【0125】
[0087] ネットワークインターフェース54は、選択された表現のセグメントのデータを受信し、取出しユニット52に与えることができ、取出しユニット52は、今度は、そのセグメントをカプセル化解除ユニット50に与えることができる。カプセル化解除ユニット50は、ビデオファイルの要素を構成PESストリームにカプセル化解除し、符号化データを取り出すためにPESストリームをパケット化解除し、例えば、ストリームのPESパケットヘッダによって示されるように、符号化データがオーディオストリームの一部であるのかビデオストリームの一部であるのかに応じて、符号化データをオーディオデコーダ46またはビデオデコーダ48のいずれかに送ることができる。オーディオデコーダ46は、符号化オーディオデータを復号し、復号オーディオデータをオーディオ出力42に送り、ビデオデコーダ48は、符号化ビデオデータを復号し、ストリームの複数のビューを含み得る復号ビデオデータをビデオ出力44に送る。
【0126】
[0088] ビデオエンコーダ28、ビデオデコーダ48、オーディオエンコーダ26、オーディオデコーダ46、カプセル化ユニット30、取出しユニット52、およびカプセル化解除ユニット50は各々、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適な処理回路のいずれかとして実装され得る。ビデオエンコーダ28およびビデオデコーダ48の各々は、1つまたは複数のエンコーダまたはデコーダ内に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。同様に、オーディオエンコーダ26およびオーディオデコーダ46の各々は、1つまたは複数のエンコーダまたはデコーダ内に含まれ得、そのいずれも複合コーデックの一部として統合され得る。ビデオエンコーダ28、ビデオデコーダ48、オーディオエンコーダ26、オーディオデコーダ46、カプセル化ユニット30、取出しユニット52、および/またはカプセル化解除ユニット50を含む装置は、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【0127】
[0089] クライアントデバイス40、サーバデバイス60、および/またはコンテンツ作成デバイス20は、本開示の技法に従って動作するように構成され得る。例として、本開示は、クライアントデバイス40およびサーバデバイス60に関して、これらの技法について説明する。しかしながら、コンテンツ作成デバイス20は、サーバデバイス60の代わりにこれらの技法を行うように構成され得ることを理解されたい。
【0128】
[0090] 概して、クライアントデバイス40およびサーバデバイス60は、ISO/IEC 23009−1によるDASHに従って動作するように構成され得る。しかしながら、クライアントデバイス40およびサーバデバイス60は、クライアントデバイス40とサーバデバイス60との間の正確なタイミングを可能にするために、本開示の技法に従って動作するように構成され得る。例えば、サーバデバイス60は、クライアントデバイス40とサーバデバイス60との間のタイミングをサポートするために、MPD(例えば、マニフェストファイル66)内の追加のデータをシグナリングするように構成され得る。(単独でまたは任意の組合せで使用され得る)様々な例では、サーバデバイス60は以下を行い得る。
【0129】
1.好ましいサーバを追加するNTPに関する追加の情報をシグナリングする、
2.HTTPタイムプロトコルのために使用されるように推奨されるサーバデバイスにシグナリングする、
3.特定の要求に基づいて正確な時間で応答するHTTPサーバデバイスにシグナリングする。異なる方法が使用される、および/または
4.時間を直接MPD内に追加する
[0091] 従って、クライアントデバイス40およびサーバデバイス60は、ISO/IEC 23009−1に従って動作するように構成され得、その表3に対する下記の修正(追加は下線を引いたテキストを使用して示されている)を伴う。
【表1】
【0130】
[0092] すなわち、ISO/IEC 23009−1の表3は、対応するMPD(例えば、マニフェストファイル66)で使用される掛け時計時刻への同期を得るための推奨される方法に関する情報を指定する追加のUTCTiming属性を含むように、本開示の技法に従って修正され得る。同様に、
図1のマニフェストファイル66などのMPDは、そのようなUTCTiming属性を含み得る。従って、カプセル化ユニット30は、上記で定義されるようなUTCTiming属性を含むようにマニフェストファイル66を形成することができ、サーバデバイス60は、UTCTiming属性を含むマニフェストファイル66をクライアントデバイス40に与えることができ、クライアントデバイス40およびサーバデバイス60は、どのように掛け時計時刻が取得され得るかを調整するためにUTCTiming属性を使用できる。
【0131】
[0093] ISO/IEC 23009−1の表3はまた、下線を引いたテキストで以下に示される追加を含むように修正され得る。
【数9】
【0132】
[0094] すなわち、ISO/IEC 23009−1は、要素「<xs:element name=“UTCTiming” type=“DescriptorType” minOccurs=“0” maxOccurs=“unbounded”/>」を含むように修正され得る。
【0133】
[0095] さらに、ISO/IEC 23009−1は、下記のセクションを含むように修正され得る。
【0134】
5.8.4.10 UTCタイミング記述子
要素UTCTimingについて、メディアプレゼンテーションオーサーは、追加の情報、どのようにメディアプレゼンテーションが掛け時計時刻と同期するかに関する、どのようにクライアントが好適に正確なタイミングを取得し得るかを提供する。複数の方式が指定され得、クライアントはメディアプレゼンテーションオーサーによる選好として順序付けを使用するように推奨される。しかしながら、クライアントは任意の方法を選択してもよく、場合によっては、低減された精度に対処しなければならない。クライアントはまた、信頼性および/または精度を高めるために、複数の方法を選択してもよい。
【0135】
5.8.5.X DASH UTCタイミング方式
DASHは、メディアプレゼンテーションのタイミング同期に関する追加の情報を取得する方法に関するいくつかの方法を定義する。以下の表Xは異なるタイミング方法を示す。
【表2】
【0136】
[0096] 下記のMPDは、ISO/IEC 23009−1への上記の追加に従って実装されたMPDの一例を表す。
【数10】
【0137】
[0097] このようにして、時刻をUTC(掛け時計時刻など)と同期させるために、上記からのUTCタイミングにおいて指定される方法のうちのいずれかが使用され得る。
【0138】
[0098] より詳細には、
図1の例では、クライアントデバイス40はクロック56を含む。クロック56はローカルクロックの一例を表す。本開示の技法によれば、クライアントデバイス40(および詳細には、取出しユニット52)は、メディアコンテンツのセグメントが利用可能になる掛け時計時刻を決定し得る。さらに、クライアントデバイス40は、本開示の技法を使用して、クロック56を同期させ得る。すなわち、マニフェストファイル66(例えば、MPDファイル)は、クライアントデバイス40などのクライアントデバイスがローカルクロックを掛け時計時刻、例えば、UTC時刻と同期させるべき同期方法を示す情報を含み得る。クライアントデバイス40は、マニフェストファイル66を取り出し、マニフェストファイル66から同期方法を決定し得る。マニフェストファイル66の情報は、クライアントデバイス40がそこから正確な掛け時計時刻を取り出し得るサーバの1つまたは複数のネットワークアドレスをさらに示し得る。従って、クライアントデバイス40は、同期方法(例えば、NTP、HTP、またはHTTPなどのネットワークベースの時刻同期プロトコル)を使用して、サーバのうちの1つまたは複数からの時刻を要求し得る。次いで、取出しユニット52は、クロック56によって示される現在時刻がセグメントのマニフェストファイル66内で示される掛け時計時刻であるか、その後であるとき、そのセグメントを要求し得る。
【0139】
[0099] 特定の環境では、コンテンツ配信ネットワーク(CDN)(
図1に図示せず)は、クライアントデバイスに、セグメントが利用可能になるちょうどそのときにセグメントにアクセスさせないように構成され得るか、またはCDNは、クライアントデバイスのサブセットのみに、ちょうどセグメント利用可能性時間にセグメントにアクセスさせるように構成され得る。サーバデバイス60はCDNのサーバデバイスに対応し得る。これの理由は、一部のクライアントはエッジキャッシュをポピュレートする(すなわち、その要求はオリジンサーバにルーティングされる)が、他のクライアントは、キャッシュから独占的にこれらのクライアントにサービスするために、意図的に遅延されるということであり得る。他の例では、CDNは、特定のクライアントデバイス、例えば、ライブエッジのより近くで動作しようと試みるクライアントデバイスを優先することができ、いずれかは、他のクライアントデバイスの優先順位を下げることができる。
【0140】
[0100] さらに他の例では、CDNは、クライアントデバイス間での要求の拡散が選択された表現にも依存し得るように、特定の表現が優先方式でアクセスされることを可能にできる。高レベルでは、要求の拡散をサポートするために、ISO/IEC 23009−1において下記の態様が実装され得る。
【0141】
・ セグメントについての要求の拡散を開始するために、信号をMPDに追加する。
【0142】
○ クライアントデバイスは、何らかの一意のidに基づいて(例えば、設定されているMACアドレスもしくはIPアドレスもしくは特定のクッキー、または任意の他の一意の識別子、場合によっては要求にも基づいて)、特定のタイプの受信機にランダムに割り当てられる。IDはまた、特定のクライアントが優先されるような手段を含み得る。
【0143】
○ このIDに基づいて、クライアントは、利用可能性開始時期にまたはいくらかの遅延を伴って、セグメントについての要求をスケジュールできる。遅延は何らかの配信から引き出されたランダム変数である
○ 配信は何らかの時間間隔にわたって一様に配信され得るか、または任意の他の配信であり得る。
【0144】
・ 信号はまた、例えば、より迅速にアクセス可能になるべきいくつかの表現に対する選好があり得るので、表現ごとに追加され得る。
【0145】
[0101] カプセル化ユニット30は、NALが属するプログラムを識別するヘッダ、並びにペイロード、例えば、オーディオデータ、ビデオデータ、またはNALユニットが対応するトランスポートまたはプログラムストリームを記述するデータを備える、NALユニットを形成し得る。例えば、H.264/AVCでは、NALユニットは1バイトのヘッダと変動するサイズのペイロードとを含む。そのペイロード内にビデオデータを含むNALユニットは、様々なグラニュラリティレベルのビデオデータを備え得る。例えば、NALユニットは、ビデオデータのブロック、複数のブロック、ビデオデータのスライス、またはビデオデータのピクチャ全体を備え得る。カプセル化ユニット30は、ビデオエンコーダ28から符号化ビデオデータをエレメンタリストリームのPESパケットの形態で受信し得る。カプセル化ユニット30は、各エレメンタリストリームを対応するプログラムに関連付け得る。
【0146】
[0102] カプセル化ユニット30はまた、複数のNALユニットからアクセスユニットをアセンブルし得る。概して、アクセスユニットは、ビデオデータのフレームを表すための1つまたは複数のNALユニット、そのフレームに対応するオーディオデータが利用可能なとき、そのようなオーディオデータも備え得る。アクセスユニットは、概して、1つの出力時間インスタンスに対する全てのNALユニット、例えば、1つの時間インスタンスに対する全てのオーディオおよびビデオデータを含む。例えば、各ビューが20フレーム毎秒(fps)のフレームレートを有する場合、各時間インスタンスは0.05秒の時間間隔に対応し得る。この時間間隔中に、同じアクセスユニット(同じ時間インスタンス)の全てのビューの固有のフレームは同時にレンダリングされ得る。一例では、アクセスユニットは、1次コード化ピクチャとして提示され得る、1つの時間インスタンスにおけるコード化ピクチャを備え得る。従って、アクセスユニットは、共通の時間インスタンスの全てのオーディオおよびビデオフレーム、例えば、時間Xに対応する全てのビューを備え得る。本開示はまた、特定のビューの符号化ピクチャを「ビュー構成要素」と呼ぶ。すなわち、ビュー構成要素は、特定の時間における特定のビューの符号化ピクチャ(またはフレーム)を備え得る。従って、アクセスユニットは、共通の時間インスタンスの全てのビュー構成要素を備えるものと定義され得る。アクセスユニットの復号順序は、必ずしも出力または表示順序と同じである必要はない。
【0147】
[0103] メディアプレゼンテーションは、異なる代替表現(例えば、異なる品質を有するビデオサービス)の記述を含み得るメディアプレゼンテーション記述(MPD)を含み得、その記述は、例えば、コーデック情報と、プロファイル値と、レベル値とを含み得る。MPDは、マニフェストファイル66などのマニフェストファイルの一例である。様々なプレゼンテーションのムービーフラグメントにアクセスする方法を決定するために、クライアントデバイス40はメディアプレゼンテーションのMPDを取り出し得る。ムービーフラグメントは、ビデオファイルのムービーフラグメントボックス(moofボックス)内に配置され得る。
【0148】
[0104] ビデオエンコーダ28、ビデオデコーダ48、オーディオエンコーダ26、オーディオデコーダ46、カプセル化ユニット30、およびカプセル化解除ユニット50は各々、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な好適な処理回路のいずれかとして実装され得る。ビデオエンコーダ28およびビデオデコーダ48の各々は、1つまたは複数のエンコーダまたはデコーダ内に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。同様に、オーディオエンコーダ26およびオーディオデコーダ46の各々は、1つまたは複数のエンコーダまたはデコーダ内に含まれ得、そのいずれも複合コーデックの一部として統合され得る。ビデオエンコーダ28、ビデオデコーダ48、オーディオエンコーダオーディオエンコーダ26、オーディオデコーダ46、および/またはカプセル化ユニット30、および/またはカプセル化解除ユニット50を含む装置は、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【0149】
[0105] カプセル化ユニット30が、受信されたデータに基づいてNALユニットおよび/またはアクセスユニットをビデオファイルにアセンブルした後、カプセル化ユニット30はビデオファイルを出力のために出力インターフェース32に渡す。いくつかの例では、カプセル化ユニット30は、ビデオファイルをローカルに記憶するか、またはビデオファイルを直接クライアントデバイス40に送るのではなく、出力インターフェース32を介してビデオファイルをリモートサーバに送り得る。出力インターフェース32は、例えば、送信機、トランシーバ、例えば、オプティカルドライブ、磁気メディアドライブ(例えば、フロッピー(登録商標)ドライブ)など、コンピュータ可読媒体にデータを書き込むためのデバイス、ユニバーサルシリアルバス(USB)ポート、ネットワークインターフェース、または他の出力インターフェースを備え得る。出力インターフェース32は、ビデオファイルを、例えば、送信信号、磁気メディア、光メディア、メモリ、フラッシュドライブ、または他のコンピュータ可読媒体など、コンピュータ可読媒体34に出力する。
【0150】
[0106] ネットワークインターフェース54は、ネットワーク74を介してNALユニットまたはアクセスユニットを受信し、取出しユニット52を介してNALユニットまたはアクセスユニットをカプセル化解除ユニット50に与え得る。カプセル化解除ユニット50は、ビデオファイルの要素を構成PESストリームにカプセル化解除し、符号化データを取り出すためにPESストリームをパケット化解除し、例えば、ストリームのPESパケットヘッダによって示されるように、符号化データがオーディオストリームの一部であるのかビデオストリームの一部であるのかに応じて、符号化データをオーディオデコーダ46またはビデオデコーダ48のいずれかに送ることができる。オーディオデコーダ46は、符号化オーディオデータを復号し、復号オーディオデータをオーディオ出力42に送り、ビデオデコーダ48は、符号化ビデオデータを復号し、ストリームの複数のビューを含み得る復号ビデオデータをビデオ出力44に送る。
【0151】
[0107]
図2は例示的なマルチメディアコンテンツ102の要素を示す概念図である。マルチメディアコンテンツ102は、マルチメディアコンテンツ64(
図1)、または記憶媒体62に記憶された別のマルチメディアコンテンツに対応し得る。
図2の例では、マルチメディアコンテンツ102は、メディアプレゼンテーション記述(MPD)104と複数の表現110〜120とを含む。表現110は、任意選択のヘッダデータ112とセグメント114A〜114N(セグメント114)とを含み、表現120は、任意選択のヘッダデータ122とセグメント124A〜124N(セグメント124)とを含む。文字Nは、便宜上、表現110、120の各々における最後のムービーフラグメントを指定するために使用される。いくつかの例では、表現110と表現120との間で異なる数のムービーフラグメントが存在し得る。
【0152】
[0108] MPD104は、表現110〜120とは別のデータ構造を備え得る。MPD104は
図1のマニフェストファイル66に対応し得る。同様に、表現110〜120は
図1の表現68に対応し得る。概して、MPD104は、コーディング特性およびレンダリング特性、適応セット、MPD104が対応するプロファイル、テキストタイプ情報、カメラアングル情報、レーティング情報、トリックモード情報(例えば、時間サブシーケンスを含む表現を示す情報)、および/または(例えば、再生中のメディアコンテンツへのターゲット広告挿入のための)リモート期間を取り出すための情報など、表現110〜120の特性を全体的に記述するデータを含み得る。本開示の技法によれば、MPD104は、
図1に関して上記で説明したように、UTCTiming情報を含み得る。
【0153】
[0109] ヘッダデータ112は、存在するとき、セグメント114の特性、例えば、ランダムアクセスポイント(RAP、ストリームアクセスポイント(SAP)とも呼ばれる)の時間ロケーションを記述することができ、セグメント114のランダムアクセスポイントは、ランダムアクセスポイント、セグメント114内のランダムアクセスポイントへのバイトオフセット、セグメント114のユニフォームリソースロケータ(URL)、またはセグメント114の他の態様を含む。ヘッダデータ122は、存在するとき、セグメント124についての同様の特性を記述し得る。追加または代替として、そのような特性はMPD104内に完全に含まれ得る。
【0154】
[0110] セグメント114、124は1つまたは複数のコード化ビデオサンプルを含み、コード化ビデオサンプルの各々はビデオデータのフレームまたはスライスを含み得る。セグメント114のコード化ビデオサンプルの各々は、同様の特性、例えば、高さ、幅、および帯域幅の要件を有し得る。そのような特性はMPD104のデータによって記述され得るが、そのようなデータは
図2の例に示されていない。MPD104は、本開示で説明されるシグナリングされた情報のいずれかまたは全てに加えて、3GPP規格に記載されている特性を含み得る。
【0155】
[0111] セグメント114、124の各々は、一意のユニフォームリソースロケータ(URL)に関連付けられ得る。従って、セグメント114、124の各々は、DASHなどのストリーミングネットワークプロトコルを使用して独立して取出し可能であり得る。このようにして、クライアントデバイス40などの宛先デバイスは、セグメント114または124を取り出すためにHTTP GET要求を使用し得る。いくつかの例では、クライアントデバイス40は、セグメント114または124の特定のバイト範囲を取り出すためにHTTP部分GET要求を使用し得る。
【0156】
[0112]
図3は、本開示の技法を実装し得る様々なデバイスを含むシステム138を示す概念図である。この例では、システム138は、ソースデバイス130と、時刻同期(synch)サーバデバイス132と、クライアントデバイス134Aとクライアントデバイス134Bとを含む複数のクライアントデバイス(クライアントデバイス134)とを含む。これらのデバイスは、インターネットに対応し得るネットワーク136を介して相互接続される。概して、ソースデバイス130は
図1のコンテンツ作成デバイス20およびサーバデバイス60のいずれかまたは組合せに対応し得、クライアントデバイス134は
図1のクライアントデバイス40の構成要素に実質的に類似した構成要素を含み得、ネットワーク136は
図1のネットワーク74に対応し得る。時刻同期サーバデバイス132に起因する機能はソースデバイス130によって行われ得るが、説明のために別個に示されている。
【0157】
[0113] 本開示の技法によれば、ソースデバイス130は、クライアントデバイス134がメディアコンテンツのデータ、例えば、セグメントを取り出すことができる掛け時計時刻を示す、メディアプレゼンテーション記述(MPD)などのマニフェストファイルを構築し得る。MPDは、クライアントデバイス134がそれぞれのローカルクロックを掛け時計時刻と同期させるべき同期方法をさらに示し得る。例えば、ソースデバイス130は、同期方法の指示とともに、MPD内の時刻同期サーバデバイス132のインターネットプロトコル(IP)アドレスまたはドメイン名を提供し得る。このようにして、クライアントデバイス134は、ローカルクロックを掛け時計時刻と同期させるために、時刻同期サーバデバイス132からの現在時刻を要求するために同期方法を使用し得る。時刻同期方法は、例えば、ネットワークタイムプロトコル(NTP)、プレシジョンタイムプロトコル(PTP)、ハイパーテキスト転送プロトコル(HTTP)タイムプロトコル(HTP)、またはHTTP自体を含み得る。
【0158】
[0114] 上記で説明したように、ソースデバイス130は、MPDを、クライアントデバイス134A、134Bのローカルクロックを対応するメディアプレゼンテーションの掛け時計時刻と同期させるための推奨される方法についての情報を含むクライアントデバイス134A、134Bに提供し得る。上記で説明した例示的な修正を含むISO/IEC 23009−1の表3は、そのような情報をシグナリングするために使用され得る例示的な要素、UTCTimingを表す。従って、クライアントデバイス134A、134Bは、そのそれぞれのローカルクロックを掛け時計時刻と同期させるために、時刻同期サーバデバイス132と対話するためにこのシグナリングされた情報を使用し得る。加えて、ソースデバイス130は、いくつかの例では、そのローカルクロックを時刻同期サーバデバイス132と同期させ得る。
【0159】
[0115] ローカルクロックを同期させるためにHTTPを使用するとき、クライアントデバイス134はHTTP HEAD要求を時刻同期サーバデバイス132に送り得る。HTTP HEAD要求は、HTTP/1.1を定義するRFC 2616に準拠し得る。HTTP HEAD要求に応答して、時刻同期サーバデバイス132は、日付情報、例えば、日付および時刻を含む応答を送り得る。代替として、クライアントデバイスは、RFC 2616に準拠してHTTP GET要求を時刻同期サーバデバイス132に送り得る。応答して、時刻同期サーバデバイス132は、よくフォーマットされたタイムスタンプ値、例えば、NTPもしくは拡張マークアップ言語(XML)に従ってまたはNTPタイムスタンプもしくはISO時刻コードに従ってフォーマットされたタイムスタンプ値を送り得る。
【0160】
[0116] 加えて、または代替として、ソースデバイス130は、異なるクライアントデバイスが異なる時刻にメディアデータの特定のセグメントを取り出すべきであるというMPD内の指示をシグナリングし得る。これは、多数のクライアントデバイスが実質的に同時に同じセグメントを取り出すシナリオを回避し得る。例えば、指示は、クライアントデバイス134Aに、クライアントデバイス134Bとは異なる時刻に特定のセグメントを取り出させることができる。従って、クライアントデバイス134Aは、MPDに示されているように、第1の時刻にセグメントを取り出すことができ、クライアントデバイス134Bは、やはりMPDに示されているように、第1の時刻とは異なる第2の時刻にセグメントを取り出すことができる。詳細には、クライアントデバイス134A、134Bは異なる時刻にセグメントについての要求を発行できる。
【0161】
[0117] 1つのみの時刻同期サーバデバイス132が
図3の例において示されているが、複数の時刻同期サーバデバイスが設けられ得、ソースデバイス130がMPD内の時刻同期サーバデバイスの各々のアドレスを示し得ることを理解されたい。
【0162】
[0118] 時刻同期サーバデバイス132はNTPサーバとして構成され得る。NTPに従って、時刻同期サーバデバイス132は、基準クロックまたは基準クロックに通信可能に結合された下層クロックを表し得る。クライアントデバイス134A、134Bは、要求を時刻同期サーバデバイス132および追加の時刻同期サーバ遺贈(devise)に送るように構成され得、NTPクライアントは、例えば、要求を3つの異なるNTPサーバに送り得る。NTPに従って、クライアントデバイス134A、134Bは、要求が時刻同期サーバデバイス132に送られた際のタイムスタンプと、要求の受信のタイムスタンプと、要求に応答して時刻同期サーバデバイス132からの応答パケットが送られた際のタイムスタンプと、応答パケットが受信された際のタイムスタンプとを決定し得る。クライアントデバイス134A、134Bは、実際の時刻を決定し、それに応じてそれらの内部クロックを調整するために、これらのタイムスタンプを使用し得る。いくつかの例では、クライアントデバイス134A、134Bは、それらの内部クロックを再調整し、時刻ずれを防止するかまたは相殺するために、NTP手順を周期的に繰り返すことができる。
【0163】
[0119] 追加または代替として、時刻同期サーバデバイス132はHTTPサーバとして構成され得る。HTPに従って、時刻同期サーバデバイス132はHTTPパケットヘッダにおいて日付および時刻情報を提供し得る。詳細には、クライアントデバイス134A、134Bは、時刻同期サーバデバイス132および/または1つもしくは複数の追加のHTTPサーバからのパケットを受信し得る。クライアントデバイス134A、134Bは、現在時刻を導出するために、時刻同期サーバデバイス132を含む1つまたは複数の時刻同期サーバデバイスから受信された時刻の平均を計算し得る(場合によっては、時刻同期サーバデバイスからの特定の受信された時刻、例えば、全ての受信された時刻の平均の1つの標準偏差の外の時刻を除く)。クライアントデバイス134A、134Bはまた、平均および標準偏差の計算を行うために必要な時間を追加し得る。次いで、クライアントデバイス134A、134Bは、計算された時刻に従って、それらの内部クロックを調整し得る。
【0164】
[0120] いくつかの例では、時刻同期サーバデバイス132およびソースデバイス130は同じデバイスに機能的に統合され得る。例えば、MPDについての要求に応答して、ソースデバイス130は、MPD並びにNTPまたはXMLタイムスタンプなどのよくフォーマットされたタイムスタンプを送り得る。代替として、時刻同期サーバデバイス132は、
図3の例に示されるように、ソースデバイス130とは別に設けられ得るが、ソースデバイス130はまた、例えば、よくフォーマットされたタイムスタンプ値を提供することによって、および/またはNTP、HTP、HTTPなどの時刻同期プロトコルもしくは他のそのようなプロトコルのためのサーバとして働くことによって、時刻同期サーバデバイスとして働き得る。同様に、ソースデバイス130とは別の時刻同期サーバデバイス132は、HTTP GET要求に応答して、NTPまたはXMLタイムスタンプなどのよくフォーマットされたタイムスタンプを提供するように構成され得る。例えば、クライアントデバイス134A、134Bは、特定のURLに宛てられたHTTP GET要求を発行し得、応答して、時刻同期サーバデバイス132は、例えば、NTPまたはXMLに従ってフォーマットされた、よくフォーマットされたタイムスタンプを送り得る。
【0165】
[0121] このようにして、クライアントデバイス134A、134Bは、クロックと、メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、MPDは、クライアントデバイスがソースデバイスからのメディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、データは、クライアントデバイスが掛け時計時刻をクロックと同期させるべきである同期方法を示す、MPDによって示される方法を使用して、クロックを掛け時計時刻と同期させることと、同期したクロックを使用して、ソースデバイスからのメディアコンテンツのデータを要求することとを行うように構成された1つまたは複数のプロセッサとを含む、メディアデータのストリーミングのための情報を受信するためのクライアントデバイスの例を表す。MPDは、クライアントデバイス134Aが、例えば、第1の時刻にメディアコンテンツのセグメントを取り出すべきであり、クライアントデバイス134Bが、この例では、第1の時刻とは異なる第2の時刻にセグメントを取り出すべきであることを示すデータを含み得る。
【0166】
[0122] 同様に、ソースデバイス130は、メディアコンテンツのメディアプレゼンテーション記述(MPD)のためのデータを生成することと、ここにおいて、MPDは、クライアントデバイス(例えば、クライアントデバイス134A、134Bのうちの1つ)がソースデバイスからのメディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、生成されたデータは、クライアントデバイスが掛け時計時刻をクライアントデバイスのクロックと同期させるべきである同期方法を示す、MPDをクライアントデバイスに送ることとを行うように構成された1つまたは複数のプロセッサを含む、メディアデータのストリーミングのための情報をシグナリングするためのソースデバイスの一例を表す。
【0167】
[0123]
図4は、クライアントデバイスのローカルクロックを掛け時計時刻と同期させ、同期したクロックを使用してセグメントを取り出す例示的な方法を示すフローチャートである。
図4の方法は、
図3のソースデバイス130、クライアントデバイス134A、および時刻同期サーバデバイス132に関して説明される。しかしながら、他のデバイス(例えば、
図1のクライアントデバイス40、サーバデバイス60、および/もしくはコンテンツ作成デバイス20、並びに/または
図3のクライアントデバイス134B)が、このまたは実質的に同様の方法を行うように構成され得ることを理解されたい。加えて、
図4の方法の特定のステップは、代替の順序でまたは並行して行われ得、他のデバイスによって行われ得る(例えば、時刻同期サーバデバイス132に起因するステップは、ソースデバイス130によって行われ得る)。
【0168】
[0124] 最初に、ソースデバイス130はメディアコンテンツ(例えば、メディアプレゼンテーション)のメディアプレゼンテーション記述(MPD)を生成し得、MPDは、時刻同期情報を示す情報を含む(150)。例えば、ソースデバイス130は、同期方法(例えば、NTP、HTP、またはHTTP)と時刻同期サーバデバイス132などの1つまたは複数の時刻同期サーバのアドレスとを示す、MPD内の情報を含み得る。時刻同期情報は、ISO/IEC 23009−1の表3の修正バージョンに関して上記で説明したUTCTiming要素に対応し得る。加えて、MPDは、メディアコンテンツのセグメントが取出しのために利用可能になる掛け時計時刻を広告できる。いくつかの例では、これらの掛け時計時刻は異なるクライアントデバイスについて異なり得る。例えば、セグメントは、クライアントデバイス134Aに対しては第1の時刻に利用可能になり得るが、クライアントデバイス134Bに対しては第2の異なる時刻に利用可能になり得る。すなわち、MPDは、クライアントデバイス134Aがセグメントを取り出すことができる第1の時刻と、クライアントデバイス134Bがセグメントを取り出すことができる第2の異なる時刻とを示し得る。
【0169】
[0125] 次いで、クライアントデバイス134Aは、メディアコンテンツのMPDを要求し得る(152)。概して、クライアントデバイス134Aは、メディアコンテンツのマニフェストファイルを要求し得る。MPDはマニフェストファイルの一例であるが、他の例では、他のタイプのマニフェストファイルが使用され得る。ソースデバイス130は、MPDについての要求を受信し(154)、次いで、要求に応答して、MPDをクライアントデバイス134Aに送り得る(156)。
【0170】
[0126] クライアントデバイス134Aは、時刻同期方法を決定するためにMPDを使用し得る(158)。例えば、クライアントデバイス134Aは、NTP、HTP、HTTPまたはMPDを使用する別の時刻同期方法を使用して、ローカルクロックを同期させるべきかどうかを決定し得る。クライアントデバイス134Aはまた、MPDから、時刻同期サーバデバイス132などの時刻同期サーバデバイスのアドレスを決定し得る。次いで、クライアントデバイス134Aは、時刻同期サーバデバイス132からの時刻を要求し得る(160)。時刻同期サーバデバイス132は、要求を受信し(162)、要求に応答して、現在時刻の指示をクライアントデバイス134Aに送り得る(164)。次いで、クライアントデバイス134Aは、そのローカルクロックを受信された時刻と同期させ得る(166)。例えば、クライアントデバイス134Aは、そのローカルクロックの時刻を直接リセットし得るか、または示された時刻に達するためにより速いまたはより遅いレートでローカルクロックを稼働し得る。いくつかの例では、クライアントデバイス134Aは、複数の異なる時刻同期サーバからの時刻を要求し、また、実際の現在時刻を決定し、特定のサーバによって示される時刻ではなく、この決定された時刻と同期させるために、これらのサーバから受信された時刻を(例えば、平均することによって)組み合わせ得る。さらに、クライアントデバイス134Aは、ローカルクロックをリセットするときに、処理時間を計算し、これらの処理時間を示された時刻に追加し得る。
【0171】
[0127] ローカルクロックをリセットした後、クライアントデバイス134Aは、メディアコンテンツのセグメントがMPDから利用可能になる掛け時計時刻を決定し得る。次いで、クライアントデバイス134Aは、MPDに示された掛け時計時刻、すなわち、セグメントが取出しのために利用可能であることをMPDが示す時刻にセグメントを要求し得る(168)。クライアントデバイス134Aは、セグメント、またはその一部分のためのHTTP GETまたは部分GET要求を形成し得る。ソースデバイス130は、セグメントについての要求を受信し(170)、要求に応答して、要求されたセグメント(またはその部分)をクライアントデバイス134Aに送り得る(172)。セグメントを受信した後、クライアントデバイス134Aは、セグメントのメディアデータを復号し、レンダリングし得る(174)。復号およびレンダリングの前に、クライアントデバイス134Aは、セグメントのデータが復号され、レンダリングされる準備ができるまで、受信されたセグメントをバッファし得る。
【0172】
[0128] このようにして、
図4は、クライアントデバイスによって、メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、MPDは、クライアントデバイスがソースデバイスからのメディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、データは、クライアントデバイスが掛け時計時刻をクライアントデバイスのクロックと同期させるべきである同期方法を示す、MPDによって示される方法を使用して、クライアントデバイスのクロックを掛け時計時刻と同期させることと、同期したクロックを使用して、ソースデバイスからのメディアコンテンツのデータを要求することとを含む、メディアデータのストリーミングのための情報を受信する方法の一例を表す。
【0173】
[0129] 加えて、
図4は、メディアコンテンツのメディアプレゼンテーション記述(MPD)のためのデータを生成することと、ここにおいて、MPDは、クライアントデバイスがソースデバイスからのメディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、生成されたデータは、クライアントデバイスが掛け時計時刻をクライアントデバイスのクロックと同期させるべきである同期方法を示す、MPDをクライアントデバイスに送ることとを備える、メディアデータのストリーミングのための情報をシグナリングする方法の一例を表す。
【0174】
[0130] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、それらの機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶される場合があるか、またはコンピュータ可読媒体を介して送信される場合があり、ハードウェアベースの処理ユニットによって実行される場合がある。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、データ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法を実施するための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータ、または1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0175】
[0131] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)と、レーザーディスク(登録商標)と、光ディスクと、デジタル多用途ディスク(DVD)と、フロッピーディスクと、ブルーレイ(登録商標)ディスクとを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0176】
[0132] 命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)などの1つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。従って、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実施に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に設けられる場合があるか、または複合コーデックに組み込まれる場合がある。また、本技法は、1つまたは複数の回路または論理要素において完全に実施され得る。
【0177】
[0133] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を行うように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【0178】
[0134] 様々な例が説明されてきた。これらおよび他の例は、以下の特許請求の範囲の範疇である。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
メディアデータのストリーミングについての情報を受信する方法であって、
クライアントデバイスによって、メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、前記MPDは、前記クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記データは、前記クライアントデバイスが前記掛け時計時刻を前記クライアントデバイスのクロックと同期させるべきである同期方法を示す、
前記MPDによって示される前記方法を使用して、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させることと、
前記同期したクロックを使用して、前記ソースデバイスからの前記メディアコンテンツのデータを要求することとを備える方法。
[C2]
前記MPDによって示される前記同期方法が、ネットワークタイムプロトコル(NTP)を備え、前記MPDが、1つまたは複数のNTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記NTPサーバのうちの少なくとも1つからの時刻を要求することを備える、C1に記載の方法。
[C3]
前記MPDによって示される前記同期方法が、HTTPタイムプロトコル(HTP)を備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求することを備える、C1に記載の方法。
[C4]
前記MPDによって示される前記同期方法が、HTTPを備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求することを備える、C1に記載の方法。
[C5]
前記クロックを同期させることが、HTTP HEAD要求を前記HTTPサーバのうちの少なくとも1つに送ることと、前記HTTP HEAD要求に応答して、前記HTTPサーバのうちの少なくとも1つからのHTTPヘッダ内の日付情報を受信することとを備える、C4に記載の方法。
[C6]
前記クロックを同期させることが、HTTP GET要求を前記HTTPサーバのうちの少なくとも1つに送ることと、前記HTTP GET要求に応答して、ネットワークタイムプロトコル(NTP)および拡張マークアップ言語(XML)および国際標準化機構(ISO)時刻コードのうちの1つに従ってフォーマットされた、よくフォーマットされたタイムスタンプ値を受信することとを備える、C4に記載の方法。
[C7]
前記MPDが、前記クライアントデバイスが第1の時刻に前記メディアコンテンツのセグメントを取り出すべきであり、別個のクライアントデバイスが前記第1の時刻とは異なる第2の時刻に前記セグメントを取り出すべきであることを示すデータを含み、データを要求することが、前記第1の時刻にまたは前記第1の時刻の後に前記セグメントを要求することを備える、C1に記載の方法。
[C8]
メディアデータのストリーミングについての情報を受信するためのクライアントデバイスであって、
クロックと、
メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、前記MPDは、前記クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記データは、前記クライアントデバイスが前記掛け時計時刻を前記クロックと同期させるべきである同期方法を示す、前記MPDによって示される前記方法を使用して、前記クロックを前記掛け時計時刻と同期させることと、前記同期したクロックを使用して、前記ソースデバイスからの前記メディアコンテンツのデータを要求することとを行うように構成された1つまたは複数のプロセッサとを備えるクライアントデバイス。
[C9]
前記MPDによって示される前記同期方法が、ネットワークタイムプロトコル(NTP)を備え、前記MPDが、1つまたは複数のNTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させるために、前記1つまたは複数のプロセッサが、前記NTPサーバのうちの少なくとも1つからの時刻を要求するように構成される、C8に記載のクライアントデバイス。
[C10]
前記MPDによって示される前記同期方法が、HTTPタイムプロトコル(HTP)を備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させるために、前記1つまたは複数のプロセッサが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求するように構成される、C8に記載のクライアントデバイス。
[C11]
前記MPDによって示される前記同期方法が、HTTPを備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させるために、前記1つまたは複数のプロセッサが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求するように構成される、C8に記載のクライアントデバイス。
[C12]
前記クロックを同期させるために、前記1つまたは複数のプロセッサが、HTTP HEAD要求を前記HTTPサーバのうちの少なくとも1つに送り、前記HTTP HEAD要求に応答して、前記HTTPサーバのうちの少なくとも1つからのHTTPヘッダ内の日付情報を受信するように構成される、C11に記載のクライアントデバイス。
[C13]
前記クロックを同期させるために、前記1つまたは複数のプロセッサが、HTTP GET要求を前記HTTPサーバのうちの少なくとも1つに送り、前記HTTP GET要求に応答して、ネットワークタイムプロトコル(NTP)および拡張マークアップ言語(XML)のうちの1つに従ってフォーマットされた、よくフォーマットされたタイムスタンプ値を受信するように構成される、C11に記載のクライアントデバイス。
[C14]
前記MPDが、前記クライアントデバイスが第1の時刻に前記メディアコンテンツのセグメントを取り出すべきであり、別個のクライアントデバイスが前記第1の時刻とは異なる第2の時刻に前記セグメントを取り出すべきであることを示すデータを含み、前記1つまたは複数のプロセッサが、前記第1の時刻にまたは前記第1の時刻の後に前記セグメントを要求するように構成される、C8に記載のクライアントデバイス。
[C15]
実行されると、クライアントデバイスのプロセッサに、
メディアコンテンツのメディアプレゼンテーション記述(MPD)を受信することと、ここにおいて、前記MPDは、前記クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記データは、前記クライアントデバイスが前記掛け時計時刻を前記クライアントデバイスのクロックと同期させるべきである同期方法を示す、
前記MPDによって示される前記方法を使用して、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させることと、
前記同期したクロックを使用して、前記ソースデバイスからの前記メディアコンテンツのデータを要求することとを行わせる命令を記憶したコンピュータ可読記憶媒体。
[C16]
前記MPDによって示される前記同期方法が、ネットワークタイムプロトコル(NTP)を備え、前記MPDが、1つまたは複数のNTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記NTPサーバのうちの少なくとも1つからの時刻を要求することを備える、C15に記載のコンピュータ可読記憶媒体。
[C17]
前記MPDによって示される前記同期方法が、HTTPタイムプロトコル(HTP)を備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求することを備える、C15に記載のコンピュータ可読記憶媒体。
[C18]
前記MPDによって示される前記同期方法が、HTTPを備え、前記MPDが、1つまたは複数のHTTPサーバのネットワークアドレスを示すデータを含み、前記クロックを同期させることが、前記HTTPサーバのうちの少なくとも1つからの時刻を要求することを備える、C15に記載のコンピュータ可読記憶媒体。
[C19]
前記クロックを同期させることが、HTTP HEAD要求を前記HTTPサーバのうちの少なくとも1つに送ることと、前記HTTP HEAD要求に応答して、前記HTTPサーバのうちの少なくとも1つからのHTTPヘッダ内の日付情報を受信することとを備える、C18に記載のコンピュータ可読記憶媒体。
[C20]
前記クロックを同期させることが、HTTP GET要求を前記HTTPサーバのうちの少なくとも1つに送ることと、前記HTTP GET要求に応答して、ネットワークタイムプロトコル(NTP)および拡張マークアップ言語(XML)のうちの1つに従ってフォーマットされた、よくフォーマットされたタイムスタンプ値を受信することとを備える、C18に記載のコンピュータ可読記憶媒体。
[C21]
前記MPDが、前記クライアントデバイスが第1の時刻に前記メディアコンテンツのセグメントを取り出すべきであり、別個のクライアントデバイスが前記第1の時刻とは異なる第2の時刻に前記セグメントを取り出すべきであることを示すデータを含み、データを要求することが、前記第1の時刻にまたは前記第1の時刻の後に前記セグメントを要求することを備える、C15に記載のコンピュータ可読記憶媒体。
[C22]
メディアデータのストリーミングのための情報をシグナリングする方法であって、
メディアコンテンツのメディアプレゼンテーション記述(MPD)のためのデータを生成することと、ここにおいて、前記MPDは、クライアントデバイスがソースデバイスからの前記メディアコンテンツのデータを取り出すことができる掛け時計時刻を示すデータを含む、および、ここにおいて、前記生成されたデータは、前記クライアントデバイスが前記掛け時計時刻を前記クライアントデバイスのクロックと同期させるべきである同期方法を示す、
前記MPDを出力することとを備える方法。
[C23]
前記MPDによって示されるセグメントの掛け時計時刻に従って、前記メディアコンテンツの前記セグメントについての要求を受信することと、
前記要求に応答して、前記セグメントを前記クライアントデバイスに送ることとをさらに備える、C22に記載の方法。
[C24]
前記データを生成することが、前記同期方法がネットワークタイムプロトコル(NTP)を備えることを示すために、および、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させるためのデータを要求するための1つまたは複数のNTPサーバのネットワークアドレスを示すために、前記データを生成することを備える、C22に記載の方法。
[C25]
前記データを生成することが、前記同期方法がHTTPタイミングプロトコル(HTP)を備えることを示すために、および、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させるためのデータを要求するための1つまたは複数のHTTPサーバのネットワークアドレスを示すために、前記データを生成することを備える、C22に記載の方法。
[C26]
前記データを生成することが、前記同期方法がHTTPを備えることを示すために、および、前記クライアントデバイスの前記クロックを前記掛け時計時刻と同期させるためのデータを要求するための1つまたは複数のHTTPサーバのネットワークアドレスを示すために前記データを生成することを備える、C22に記載の方法。
[C27]
前記クライアントデバイスが第1のクライアントデバイスを備え、前記MPDのための前記データを生成することが、前記第1のクライアントデバイスが第1の時刻に前記メディアコンテンツのセグメントを取り出すべきであり、第2のクライアントデバイスが前記第1の時刻とは異なる第2の時刻に前記セグメントを取り出すべきであることを前記データが示すような前記MPDのための前記データを生成することを備え、前記MPDを送ることが、前記MPDを前記第1のクライアントデバイスおよび前記第2のクライアントデバイスに送ることを備える、C22に記載の方法。
[C28]
第1の時刻にまたは前記第1の時刻の後に、第1のクライアントデバイスからの前記セグメントについての第1の要求を受信することと、
前記第1の要求に応答して、前記セグメントについてのデータを前記第1のクライアントデバイスに送ることと、
第2の時刻にまたは前記第2の時刻の後に、第2のクライアントデバイスからの前記セグメントについての第2の要求を受信することと、
前記第2の要求に応答して、前記セグメントについての前記データを前記第2のクライアントデバイスに送ることとをさらに備える、C23に記載の方法。
[C29]
前記データを生成することが、前記第1の時刻および前記第2の時刻についての特定の値を生成することを備える、C28に記載の方法。
[C30]
前記第1のクライアントデバイスの第1の優先順位と、前記第2のクライアントデバイスの第2の優先順位とを決定することをさらに備え、前記データを生成することが、前記第1の優先順位および前記第2の優先順位に基づいて、前記データを生成することを備える、C28に記載の方法。