JP5198734B2 - クライアントバッファ占有量の監視によるネットワークデバイスのクロックドリフトの検出 - Google Patents

クライアントバッファ占有量の監視によるネットワークデバイスのクロックドリフトの検出 Download PDF

Info

Publication number
JP5198734B2
JP5198734B2 JP2006035609A JP2006035609A JP5198734B2 JP 5198734 B2 JP5198734 B2 JP 5198734B2 JP 2006035609 A JP2006035609 A JP 2006035609A JP 2006035609 A JP2006035609 A JP 2006035609A JP 5198734 B2 JP5198734 B2 JP 5198734B2
Authority
JP
Japan
Prior art keywords
clock
client
host
buffer
buffer occupancy
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.)
Expired - Fee Related
Application number
JP2006035609A
Other languages
English (en)
Other versions
JP2006222976A (ja
JP2006222976A5 (ja
Inventor
ヴァーディ ガープラタップ
エイ.デイヴィス ジェフリー
ボウラ トッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006222976A publication Critical patent/JP2006222976A/ja
Publication of JP2006222976A5 publication Critical patent/JP2006222976A5/ja
Application granted granted Critical
Publication of JP5198734B2 publication Critical patent/JP5198734B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B26HAND CUTTING TOOLS; CUTTING; SEVERING
    • B26DCUTTING; DETAILS COMMON TO MACHINES FOR PERFORATING, PUNCHING, CUTTING-OUT, STAMPING-OUT OR SEVERING
    • B26D5/00Arrangements for operating and controlling machines or devices for cutting, cutting-out, stamping-out, punching, perforating, or severing by means other than cutting
    • B26D5/20Arrangements for operating and controlling machines or devices for cutting, cutting-out, stamping-out, punching, perforating, or severing by means other than cutting with interrelated action between the cutting member and work feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B26HAND CUTTING TOOLS; CUTTING; SEVERING
    • B26DCUTTING; DETAILS COMMON TO MACHINES FOR PERFORATING, PUNCHING, CUTTING-OUT, STAMPING-OUT OR SEVERING
    • B26D7/00Details of apparatus for cutting, cutting-out, stamping-out, punching, perforating, or severing by means other than cutting
    • B26D7/26Means for mounting or adjusting the cutting member; Means for adjusting the stroke of the cutting member
    • B26D7/2628Means for adjusting the position of the cutting member
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B32LAYERED PRODUCTS
    • B32BLAYERED PRODUCTS, i.e. PRODUCTS BUILT-UP OF STRATA OF FLAT OR NON-FLAT, e.g. CELLULAR OR HONEYCOMB, FORM
    • B32B38/00Ancillary operations in connection with laminating processes
    • B32B38/10Removing layers, or parts of layers, mechanically or chemically
    • B32B38/105Removing layers, or parts of layers, mechanically or chemically on edges
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B27WORKING OR PRESERVING WOOD OR SIMILAR MATERIAL; NAILING OR STAPLING MACHINES IN GENERAL
    • B27DWORKING VENEER OR PLYWOOD
    • B27D5/00Other working of veneer or plywood specially adapted to veneer or plywood
    • B27D5/006Trimming, chamfering or bevelling edgings, e.g. lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mechanical Engineering (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Forests & Forestry (AREA)
  • Communication Control (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Description

本開示は、一般に、デジタルメディア再生システムに関し、より詳細には、そのようなシステム内でメディアストリームの再生を調整することに関する。
オーディオ、ビデオ、および/またはテキストメディアコンテンツのストリーミングなどのデジタルメディアストリーミングは、ますます普及しつつある。「ストリーミング」という用語は、通常、メディアコンテンツを表すデータが、ネットワーク経由でホストコンピュータデバイスによりクライアントデバイス(すなわち、デスクトップPC、ノートブックまたはポータブルコンピュータ、携帯電話またはその他の無線通信デバイス、携帯情報端末(PDA)、ゲーム機、IPセットトップボックス、ハンドヘルドPCなどの様々な従来のコンピューティングデバイスとして実装されるメディア再生デバイス)に提供されることを示すために使用される。クライアントデバイスは、すべてのコンテンツまたは完全な「ファイル」が配信されるのを待つことなく、ストリーミングコンテンツをホストから受信しながらストリーミングコンテンツをレンダリングする。
メディアコンテンツは、ネットワーク経由で「ストリーミング」される場合、通常、データパケットの形でストリーミングされる。しかし、データパケットが、送信されたときの順序と同じ順序で送信先に届くという保証はなく、あるいは、その送信先に届くという保証さえも常にあるわけではない。さらに、通常、データパケットが送信元から送信先へ伝わるのに要する時間は特定の持続時間であるという保証も、あるいは、その時間が異なるデータパケットについても同じであるという保証もない。
クライアントデバイスへのデータ配信のこれらの変動に対処するため、クライアントデバイスでは、通常、データのバッファを保持する。バッファを使用することにより、クライアントデバイスはデータ配信の変動を除去し、コンテンツの再生時にユーザに気付かれないようにすることができる。そのため、例えば、ネットワーク輻輳によってネットワーク帯域幅に短い障害が生じても(例えば、ネットワーククロストラフィック(network cross-traffic)、干渉、無線受信不良)、ほとんどの場合、バッファ内のデータ量によりクライアントデバイスはメディアコンテンツの再生を続けることができ、ユーザは障害の影響(例えば、再生の中断または一時停止)を受けることがない。しかし、場合によっては、例えば、ネットワークの障害によりデータ配信に変動が生じると、バッファ内のデータが枯渇し、再生の中断または一時停止が生じることがある。
クライアントバッファが断続的に不足し、メディアコンテンツ再生中に周期的な中断を引き起こす別の問題は、ホストデバイス(すなわち、ストリーミングコンテンツを符号化し、送信するソースデバイス)およびクライアントデバイス(すなわち、ストリーミングコンテンツを受信し、再生するデバイス)に異なるクロック周波数が存在することである。すなわち、クライアントデバイス上の再生を調整するクライアントクロックは、ホスト/ソースデバイス上の符号化プロセスを調整するホストクロックとわずかに異なる周波数で動作する場合がある。ホストクロックとクライアントクロックとの間にクロックドリフトがあると、クライアントバッファは、再生のメディアコンテンツを使い果たす場合がある。クライアントクロックの動作がホストクロックよりも速い場合、クライアントは、ホストが補充できる速度よりもわずかに速い速度でクライアントバッファのメディアコンテンツを消費することになる。この場合、クライアントバッファは、断続的にメディアコンテンツを使い果たし、バッファの回復のために、周期的な一時停止または中断がメディア再生時に発生する。逆に、クロックドリフトは、クライアントバッファをメディアコンテンツでオーバーフローさせる原因となる場合もある。クライアントクロックの動作がホストクロックよりも遅い場合、クライアントは、ホストがバッファに補充する速度よりもわずかに遅い速度でクライアントバッファからのメディアコンテンツを消費することになる。この場合、クライアントバッファはメディアコンテンツでオーバーフローする。
したがって、ストリーミングコンテンツをクライアント再生デバイスに配信するホストデバイスとクライアントデバイスとの間のクロックドリフトを検出する方法が必要とされる。
デジタルメディアシステムおよび方法では、クライアントバッファ占有量レポートを使用して、ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間のクリックドリフトを検出する。
一実施形態では、クライアントデバイス上のバッファモニタは、クライアントバッファを監視し、クライアントバッファ内のデータのレベルを示すバッファ占有量レポートを生成する。バッファモニタは、バッファ占有量レポートをホストデバイス上のクロックドリフト検出および復旧コンポーネントに送信する。クロックドリフト検出および復旧コンポーネントは、バッファ占有量レポートから、クライアントデバイスクロックとホストデバイスクロックとの間のクロックドリフトの程度を判別する。クライアントクロックとホストクロックとの間にクロックドリフトがある場合、クロックドリフト検出および復旧コンポーネントは、クロックを同期させる復旧方法を実施する。
他の実施形態では、クライアントデバイス上のバッファモニタは、バッファ占有量レポートをクライアントデバイス上のクロックドリフト検出および復旧コンポーネントに送信する。クライアントデバイス上のクロックドリフト検出および復旧コンポーネントは、クライアントクロックとホストクロックとの間のクロックドリフトの程度を判別し、クロックを同期させる復旧方法をクライアントデバイス上で実施する。さらに他の実施形態では、クライアントデバイス上のクロックドリフト検出および復旧コンポーネントは、検出されたクロックドリフトに関するメッセージをホストデバイスに送信し、ホストデバイス上のクロック復旧コンポーネントは、クロックを同期させる復旧方法を実施する。クロックドリフト検出および復旧コンポーネントは、さらに、第3のデバイス(例えば、専用制御デバイス)上に存在し、バッファ占有量レポートをクライアントから受信することもできる。ここでもまた、クロックドリフト検出および復旧コンポーネントは、クライアントクロックとホストクロックとの間のクロックドリフトの程度を判別し、クロックを同期させる復旧方法を実施する。
(はじめに)
以下の説明は、ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間のクロックドリフトを検出するデジタルメディアシステムおよび方法に関する。ホストクロックは、ホストデバイス上のストリーミングメディアの符号化を調整し、クライアントクロックは、クライアントデバイス上のストリーミングメディアの再生を調整する。説明されているシステムおよび方法の利点は、ストリーミングメディアコンテンツの再生時の再生中断を低減すること、およびホスト/ソースデバイスにより符号化された「ライブ」コンテンツがクライアントデバイス上の再生を通じて「ライブ」コンテンツとして実際に体験できる可能性を高めることを含む。
(例示的環境)
図1は、ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間のクロックドリフトを検出するのに好適な例示的環境100を示している。ネットワーク106は、様々な従来のネットワークプロトコル(公開および/または非標準プロトコルを含む)のいずれかを使用して、様々な従来のネットワークトポロジおよびタイプ(光、有線および/または無線ネットワークを含む)のいずれかを表すことが意図されている。例えば、ネットワーク106は、家庭ネットワーク、企業ネットワーク、またはインターネットに加え、場合によっては、1つまたは複数のローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)の少なくとも一部を含むことができる。
ホスト/ソースデバイス102は、一般に、メディアファイルなどの格納されたメディアコンテンツ、および/または生放送のケーブルテレビ配信またはウェブ放送などのライブメディアコンテンツへのアクセスを提供する。ホストデバイス102は、要求があると、クライアント再生デバイス104にメディアコンテンツをストリーミングする。クライアントデバイス104は、一般に、ホストデバイス102からストリーミングメディアコンテンツを受信し、ユーザに対してストリーミングメディアコンテンツを再生する。クライアントデバイス104からのホストデバイス102上で利用可能なストリーミングメディアコンテンツの要求は、ネットワーク106を介してクライアントデバイス104からホストデバイス102に送られる。ホストデバイス102は、ネットワーク106を介して、その要求を受信し、要求されたコンテンツを要求元クライアントデバイス104に返す。
ホストデバイス102は、格納されたメディアコンテンツおよび/またはライブメディアコンテンツをクライアントデバイス104にストリーミングするために構成可能な、例えばデスクトップPC、ノートブックまたはポータブルコンピュータ、ワークステーション、メインフレームコンピュータ、インターネット家電、それらの組合せなどを含む、様々な従来のコンピューティングデバイスのいずれかとして実装することができる。クライアント再生デバイス104もまた、例えばデスクトップPC、ノートブックまたはポータブルコンピュータ、ワークステーション、メインフレームコンピュータ、インターネット家電、ゲーム機、ハンドヘルドPC、携帯電話またはその他の無線通信デバイス、携帯情報端末(PDA)、セットトップボックス、それらの組合せなどを含む、様々な従来のコンピューティングデバイスのいずれかとして実装することができる。ホストデバイス102およびクライアントデバイス104を実装するための例示的コンピューティング環境は、図8を参照しながら以下でより詳しく説明する。
ホストデバイス102は、オーディオ、ビデオ、テキスト、イメージ、アニメーションなどのコンテンツを含む様々なデータを、クライアント再生デバイス104へストリーミングするのに利用できる状態にすることができる。しかし、後述の例示的実施形態に関して本明細書で使用されているように、メディアコンテンツ200は、オーディオ/ビデオ(A/V)コンテンツまたは単なるビデオコンテンツを表すことが意図されている。さらに、本明細書の「メディアコンテンツ」、「ストリーミングメディア」、「ストリーミングビデオ」、「ビデオコンテンツ」、およびそれらの変更形態に対する言及は、一般に、オーディオ/ビデオコンテンツを含むことが意図されている。「ストリーミング」という用語は、メディアコンテンツを表すデータがネットワーク経由でクライアント再生デバイス104に提供されること、およびコンテンツ全体が配信される前にコンテンツの再生が開始できることを示すために使用される。データは、公開利用可能とすることも、あるいは制限することもできる(例えば、特定のユーザにのみ制限する、適切な料金が支払われる場合のみ利用可能とする、特定のネットワークへのアクセス権を有するユーザに制限する、など)。さらに、データは、「オンデマンド」(例えば、事前に記録され、格納されている既知のサイズのコンテンツ)、あるいはライブ「ブロードキャスト」(例えば、コンサートが上演され、取込み後まもなくストリーミングで利用できる状態にするときに取込まれているコンサートのデジタル表現などの、既知のサイズを有さないもの)とすることができる。
(例示的実施形態)
図2は、ストリーミングメディアコンテンツを配信するホスト/ソースデバイス102上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス104上のクロックとの間のクロックドリフトを検出するのに好適なデジタルメディアシステムの例示的実施形態を示している。ホストデバイス102は、一般に、ホストデバイス102のホストクロック202により調整される速度でメディア/ビデオコンテンツ200を符号化するように構成される。その後、ホストデバイス102は、ネットワーク106経由で、符号化されたメディア/ビデオコンテンツ200をクライアントデバイス104に格納および/またはストリーミングすることができる。クライアントデバイス104は、一般に、ストリーミングメディア/ビデオコンテンツ200を受信し、クライアントデバイス104のクライアントクロック204により調整される速度でストリーミングコンテンツを再生するように構成される。
本実施形態では、ホストデバイス102は、クライアントクロック204とホストクロック202との間にクロックドリフトが存在するかどうかを判定するために構成されたクロックドリフト検出および復旧モジュール206を備える。検出および復旧モジュール206は、(1つ以上の)クライアントメディアバッファ208に関してクライアントデバイス104から受信する情報に基づきクロックドリフトを判定する。クライアントデバイス104は、バッファ占有量レポート210という形態で、バッファ情報をホストデバイス102に提供する。バッファ占有量レポート210は、ホストデバイス102からクライアントデバイス104にメディアコンテンツ200をストリーミングしているときにクライアントデバイス104上で(1つ以上の)クライアントメディアバッファ208に存在するデータのレベルを示す。バッファ占有量レポート210により示されるデータのレベルは、オーディオバッファ208(1)内のオーディオデータ212のレベルおよび/またはビデオバッファ208(2)内のビデオデータ214のレベルを含むことができる。ホストデバイス102上のクロックドリフト検出および復旧モジュール206は、以下で詳しく説明するように、クライアントデバイス104から受け取ったバッファ占有量レポート210(2)に基づいてクロックドリフトを判定する。
ホストデバイス102は、クライアントデバイス104上のメディア再生アプリケーション216により選択可能なメディアコンテンツ200の1つまたは複数のファイルを保持する(例えば、メディア再生アプリケーション216を経由するユーザ入力に応答して)。さらに、ホストデバイス102は、要求があった場合にクライアント再生デバイス104にストリーミングする生放送のケーブルテレビ配信またはウェブ放送などのライブコンテンツへのアクセスを提供する。本実施形態では、メディアコンテンツ200は、通常、オーディオコンポーネントを備えるビデオコンテンツと考えられる。したがって、上述したように、本明細書の「メディアコンテンツ」、「ストリーミングメディア」、「ストリーミングビデオ」、「ビデオコンテンツ」、およびそれらの変更形態に対する言及は、一般に、オーディオ/ビデオ(A/V)および/またはビデオコンテンツを意味することが意図されている。ホストデバイス102は、要求されたメディアコンテンツ200をネットワーク106経由でデータのストリームとしてクライアントデバイス104上のメディア再生アプリケーション216に送信する。
クライアントデバイス104は、ネットワーク106経由でのデータ配信の変動(例えば、ネットワーククロストラフィック、干渉、無線受信不良などにより生じるネットワーク障害)を除去する手段として、(1つ以上の)メディアバッファ208を保持するため、その変動はコンテンツの再生中にユーザに気付かれない。良好なネットワーク条件下では、(1つ以上の)バッファ208の占有量レベルは、比較的高く(例えば、占有率80%より大)、正常な占有量レベルを示すであろう。(1つ以上の)バッファ208の占有量レベルが高い場合は、一般に、(1つ以上の)バッファ208内のすべてのメディアンコンテンツだけでなくホストデバイス102からの残りのストリーミングメディアコンテンツのリアルタイム再生が可能となる。
クライアントデバイス104上のバッファモニタ218は、メディアコンテンツ200がホストデバイス102からストリーミングされている間に、(1つ以上の)バッファ208の占有量レベルを監視し、バッファ占有量レポート210(1)を生成するように構成される。バッファ占有量レポート210は、クライアントデバイス104がバッファ占有量情報をホストデバイス102にレポートする場合に使用する機構である。一般に、この情報は、クライアントクロック204とホストクロック202との間にクロックドリフトが存在するかどうかを判定するために、ホストデバイス102上のクロックドリフト検出および復旧モジュール206によって使用される。
図3は、ホストデバイス102がメディアコンテンツをクライアントデバイス104にストリーミングする際の時間経過とともにクライアントメディアバッファ208の占有量レベルがどのように変わるかを示す4つの事例を示している。各事例において、バッファ208は、約80%の比較的高いまたは正常な占有量レベルで始まる。プロットされた直線300により示される第1の事例では、バッファ占有量レベルは時間経過とともに緩やかに増加している。これは、バッファ208内のデータが消費されるよりも速く補充されていることを示す。この事例では、バッファ208は最終的にデータでオーバーフローし、その結果、通常、オーバーフローデータ(フレーム)は、クライアント104により破棄され/落とされて再生されないか、またはホストデバイス102上のホストバッファ(図示せず)に格納される。プロットされた直線302により示される第2の事例では、バッファ占有量レベルは時間が経過しても同じままである。これは、バッファ208内のデータが消費されるのと同じ速さで補充されていることを示す。プロットされた直線304により示される第3の事例では、バッファ占有量レベルは時間経過とともに緩やかに減少している。これは、バッファ208内のデータが消費されるよりも遅く補充されていることを示す。第3の事例では、バッファ208は最終的に枯渇し、バッファ208を回復する(すなわち、データが補充される)間、クライアントデバイス104上でメディア再生の一時停止または中断が生じることになる。プロットされた直線306により示される第4の事例では、バッファ占有量は時間経過とともに急激に減少するが、これは、バッファ208内のデータが、消費されるよりもかなり遅い速度で補充されていることを示す。
クライアントクロック204とホストクロック202との間にクロックドリフトが存在するかどうかを判定するために、ホストデバイス102上のクロックドリフト検出および復旧モジュール206は、クライアントデバイス104上のバッファモニタ218により生成されたバッファ占有量レポート210(2)を受け取り、バッファ占有量レポート210(2)の中に示されているように、経時的にバッファ占有量レベルをプロットする。したがって、クロックドリフト検出および復旧モジュール206は、図3に関して上で例示され、説明されているようなプロットを生成することができる。クロックドリフト検出および復旧モジュール206は、プロットにより生成された直線の勾配を監視し、クライアントクロック204とホストクロック202との間にクロックドリフトが存在するかどうかを判定する。一般に、緩やかに傾斜する直線は、正の勾配でも負の勾配でも、クライアントクロック204とホストクロック202との間にクロックドリフトが存在することを示す。以下で詳しく説明するように、ネットワークジッタを除去するため、経時的に勾配の平均をとる。
例えば、図3を再び参照すると、直線300などの直線をプロットしている間に、クロックドリフト検出および復旧モジュール206は、直線300が緩やかな勾配を持つため、クライアントクロック204とホストクロック202との間にクロックドリフトが存在することを示していると判定する。さらに、直線300の勾配は正であるため、クロックドリフト検出および復旧モジュール206は、ホストデバイス102(ホストクロック202により調整される)がデータを補充するよりも遅い速度でバッファ208内のデータが消費される(すなわち、クライアント104上の再生アプリケーション216により再生される)ので、クライアントクロック204はホストクロック202よりも遅い速度で動作していると判定する。同様に、バッファ占有量プロット210(2)から生成される他のプロットについて、検出および復旧モジュール206は、プロットされた直線の勾配からクライアントクロック204とホストクロック202との間にクロックドリフトが存在したかどうかを判定する。例えば、図3に示される直線302に関して、検出および復旧モジュール206は、直線302の勾配がゼロであるためクロックドリフトはないと判定する。直線304に関して、検出および復旧モジュール206は、直線の緩やかな負の勾配から、クロックドリフトが存在していたこと、およびホストデバイス102がデータを補充するよりも速い速度でバッファ208内のデータが消費されるので、クライアントクロック204はホストクロック202よりも速い速度で動作していたと判定する。直線306に関して、検出および復旧モジュール206は、直線306の急激な負の勾配から、クライアントバッファ208の急速な減少を引き起こしている、ネットワーク機能停止などの、単なるクロックドリフトを超えた状況にあると判定する。ネットワークから入ってくるメディアコンテンツの速度はネットワーク機能停止の場合にはゼロに近づくが、ネットワーク機能停止ではない場合には平均して、一定のままである可能性が高いので、ネットワーク機能停止は、クロックドリフトと区別できる。さらに、ネットワーク輻輳時には、メディアコンテンツの流れは遅くなる場合があるが、完全にゼロに落ちることはない。例えば、ネットワーク容量がストリームのビットレートよりも低い場合(例えば、5.5Mbpsのネットワーク上で6Mbpsのストリームを送信しようとした場合)、クライアントデバイス104上のバッファ占有量は、時間経過とともに枯渇することがある。ネットワークレベルでの再送/損失パケットの数、時間経過による往復時間の変動、または他の統計量などの追加的な統計量を監視すると、そのようなネットワーク過負荷を識別することができる。したがって、ネットワーク制限によるものと判断されるバッファ枯渇の結果は、クロックドリフトがホストクロックとクライアントクロックとの間に存在するかどうかを判定するときに除去することができる。
図4は、プロットされた直線400によって示されるように、ネットワーク帯域幅の変動に起因してバッファ占有量レベルが時間経過とともに変動する、追加的な事例を示している。この事例では、バッファ占有量は、時間経過とともに直線的に増加または減少するように見えないかもしれない。しかし、ネットワーク帯域幅の変動は、時間範囲を広くとってバッファ占有量を平均し、その結果をプロットすることにより除去することができる(例えば、プロットされた直線402)。その後、検出および復旧モジュール206は、プロットされた直線402の勾配を計算し、バッファ占有量は、実際に、一定速度で減少していると判定することができる。したがって、上述したように、検出および復旧モジュール206は、直線402の緩やかな負の勾配から、クロックドリフトが存在し、クライアントクロック204がホストクロック202よりも速い速度で動作していると判定する。
クライアントクロック204とホストクロック202との間にクロックドリフトが存在するかどうかを判定することに加えて、検出および復旧モジュール206は、ホストクロック202とクライアントクロック204との間のクロック速度差を計算する。様々な数学的モデル(例えば、数学的ローパスフィルタ処理、統計解析など)は、クライアントバッファ208からのバッファ占有量データに基づいて、ホストクロック202とクライアントクロック204との間のクロック速度差を計算するときに有用である。一実施例においては、ホストクロック202とクライアントクロック204との間のクロック速度差は、以下の定義および式(1)、(2)、および(3)により定義される。
rh−rc=dpc*(ch−cc) (1)
chは、ホストクロック202の実速度であり、単位はヘルツ(Hz)である。
ccは、クライアントクロック204の実速度であり、単位はヘルツである。
dpcは、データストリームの仕様上の(すなわち、指定される値に基づく予想値)データ速度を示す定数である。すなわち、dpcは、ホストデバイス102とクライアントデバイス104の両方の仕様上のデータ速度に等しい。
rhは、ホストデバイス102上のデータ生成の実速度であり、ヘルツを単位とする、仕様上のデータ速度(ビット/秒)*ch/仕様上のホストクロック速度で表される。したがって、以下のようになる。
rh=ch*dpc
rcは、クライアントデバイス104上のデータ消費の実速度であり、ヘルツを単位とする、仕様上のデータ速度(ビット/秒)*cc/仕様上のクライアントクロック速度で表される。したがって、以下のようになる。
rc=cc*dpc
したがって、上記の式(1)は、rhからrcを引くことにより導かれる。式(1)は、それに代わって、以下の定義および式(2)によりバッファ占有量と時間に関して表すことができる。
rh−rc=(ft−f0)/t (2)
f0は、時刻0でのバッファ占有量(データのビット数)であり、時刻0でのバッファ占有率にバッファ208のサイズ(ビット数)を乗じたものである。
ftは、時刻tでのバッファ占有量(データのビット数)であり、時刻tでのバッファ占有率にバッファ208のサイズ(ビット数)を乗じたものである。
上記の式(1)と(2)を等しいとおくことによって、ホストクロック202とクライアントクロック204との間のクロック速度差(すなわち、クロックドリフト量)についての解は、以下の式(3)のように明らかである。
dpc*(ch−cc)=(ft−f0)/t
Figure 0005198734
ft、f0、およびtの値は、グラフを生成するために使用されたデータから(すなわち、バッファ占有量レポート210(2)のデータから)決定することができる。数量(ft−f0)/tは、バッファ占有量レポート210(2)に基づいてプロットされた直線の勾配から求められる。したがって、クロックドリフト検出および復旧モジュール206は、式(3)に基づいて、クライアントクロック204とホストクロック202との間のクロックドリフト量を容易に計算することができる(すなわち、数量ch−ccにより示されるクロック速度差)。
上記の計算において、平均ネットワーク容量は、時間を通じてホストデバイス102によって送信されているメディアストリームのビットレートよりも高いと仮定している。ネットワーク容量がストリームのビットレートよりも低い場合、クライアントデバイス104上のバッファ占有量も、時間経過とともに枯渇する可能性がある。ネットワーク過負荷を識別できるネットワークレベルでの再送/損失パケット数、時間経過に伴う往復時間の変動、または他の統計量などの追加的な統計量を監視することで、ネットワーク容量が時間を通じてストリームのビットレートよりも低い可能性がある場合について上述した結果を改善することができる。
クライアントクロック204とホストクロック202との間にクロックドリフトがあると判定し、クロックドリフト量を計算した後、検出および復旧モジュール206は、クロックを同期させる復旧方法を実施することができる。例えば、ホストデバイス102は、クロック変更要求をクライアント104に送信し、クライアントにクライアントクロック204の速度を上げる、または下げるよう指示することができる。クライアントクロック204がホストクロック202よりも遅れる場合、ホストデバイス102は、ホストクロック202に対するクライアントクロック204の遅れを取り戻すため、クライアント104にストリーミングするメディアコンテンツ200から一部のビデオフレームを落とすこともできる。ホストデバイス102は、さらに、クロックを同期させるため自クロックを調整することもできる。クライアントクロック204およびホストクロック202を同期させることにより、ホストクロック202よりも速い速度でクライアントクロック202が動作する結果としてクライアントバッファ208が枯渇するときに生じる可能性がある再生中断を低減することができる。さらに、クライアントクロック204とホストクロック202を同期させることにより、ホストクロック速度でホストデバイス102により符号化されている「ライブ」コンテンツを、ホストデバイス102上で符号化されるのと同じ速度の「ライブ」コンテンツとして、クライアントデバイス104上で経験または再生できることが保証される。
図5は、ストリーミングメディアコンテンツを配信するホストデバイス102上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス104上のクロックとの間のクロックドリフトを検出するのに好適なデジタルメディアシステムの1つまたは複数の追加の例示的実施形態を示している。ホストデバイス102およびクライアントデバイス104は、一般に、図2に示される実施形態に関して上述のように構成される。しかし、図5に示される一実施形態では、クライアントデバイス104は、さらに、クライアントクロック204とホストクロック202との間にクロックドリフトが存在するかどうかを判定し、上述したものと類似の方法でホストクロック202とクライアントクロック204との間のクロック速度差を計算するクロックドリフト検出および復旧モジュール502を備えるように構成することができる。さらに、クロックドリフトを検出し、ホストクロック202とクライアントクロック204との間のクロック速度差を計算した後、クライアントデバイス104の検出および復旧モジュール502は、クライアントクロック204をホストクロック202と同期させるクロック復旧方法(例えば、一定の割合でクライアントクロック204の速度を調整する)を実装することができる。他の実施形態では、ホストデバイス102は、クライアントデバイス104上のクロックドリフト検出および復旧モジュール502からクロック復旧要求および/または情報を受信するように構成されたクロック復旧モジュール500を備えることができる。そのような要求および/または情報を受信したときには、クロック復旧モジュール500は、図2に示される実施形態に関して上記で説明されているようなクロック復旧方法を実施することができる。
(例示的方法)
ストリーミングメディアコンテンツを配信するホスト/ソースデバイス102上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス104上のクロックとの間のデジタルメディアシステム内のクロックドリフトを検出するための例示的方法は、図6および7に示す流れ図を主に参照しながら説明する。これらの方法は、図1〜5に関して上記で説明された例示的実施形態に適用される。1つまたは複数の方法が、流れ図およびそれらの流れ図のブロックに関連付けられたテキストを用いて開示されているが、説明されている方法の要素は、必ずしも、提示される順序で実行されなくてもよく、また別の順序でも類似の利点が得られることは理解されるであろう。さらに、これらの方法は、排他的ではなく、単独で、または互いに組み合せて実行することができる。説明されている方法の要素は、例えば、ASIC上のハードウェア論理ブロックまたはプロセッサ読み取り可能媒体上で定義されるプロセッサ読み取り可能命令の実行などを含む適切な手段により実行することができる。
本明細書で使用されているように、「プロセッサ読み取り可能媒体」は、プロセッサにより使用または実行される命令を、含む、格納する、伝達する、伝搬する、または移送することができる任意の手段とすることができる。プロセッサ読み取り可能媒体は、電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、デバイス、または伝搬媒体とすることができるが、これらに限定されるものではない。プロセッサ読み取り可能媒体のより具体的な実施例として、特に、1つまたは複数の電線を有する電気接続(電子)、ポータブルコンピュータのディスケット(磁気)、ランダムアクセスメモリ(RAM)(磁気)、読み取り専用メモリ(ROM)(磁気)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ(光)、書き換え可能コンパクトディスク(CD−RW)(光)、およびポータブルコンパクトディスク読み取り専用メモリ(CDROM)(光)が挙げられる。
方法600のブロック602で、クライアント再生デバイス104は、ホストデバイス102からネットワーク106を介してストリーミングメディアコンテンツを受信する。例えば、メディアコンテンツは、オーディオ/ビデオおよび/またはビデオコンテンツを含む。ブロック604で、クライアントデバイス104は、クライアントバッファ208内にメディアコンテンツのデータを保持する。ストリーミングメディアコンテンツの再生時に、バッファを使用して、ネットワーク帯域幅の変動によるデータ配信の変動(例えば、ネットワーククロストラフィック、干渉、無線受信不良などにより生じるネットワーク障害による)を除去し、コンテンツの再生中にユーザに気付かれないようにする。ブロック606で、バッファモニタ218はバッファ208内のデータの占有量レベルを監視し、ブロック608で、バッファ占有量レポート210(1)がバッファ監視に基づいて生成される。したがって、メディアコンテンツがバッファ内にストリーミングされ、クライアント再生デバイス104により消費されると、バッファモニタにより、コンテンツストリーミング中の様々な時点においてバッファ内に存在するデータ量を示すバッファ占有量レポートが生成される。
方法600のブロック610で、クロックドリフト検出および復旧モジュール(206、502)は、メディアンコンテンツのストリーミングを調整するホストデバイス102上のクロックとメディアコンテンツの再生を調整するクライアントデバイス104上のクロックとの間にクロックドリフトが存在するかどうかを判定する。続く図7に示し、以下に記載する方法700によって、さらに、クロックドリフトの判定方法を説明する。
方法600のブロック612で、クロックドリフト量が計算される。上記で説明されているように、クロックドリフト量は以下の式にしたがって計算されるが、dpcは定数であり、ft、f0、およびtは、グラフを生成するために使用されるデータから(すなわち、バッファ占有量レポート210(2)内のデータから)決定することができる。
Figure 0005198734
方法600のブロック614で、クロックドリフト検出および復旧モジュール(206、502)またはクロック復旧モジュール500は、クライアントクロック204をホストクロック202に同期させるクロック復旧方法を実施する。例えば、復旧方法は、クライアントクロックの調整、ホストクロックの調整、ホストデバイスからのストリーミングコンテンツの変更(例えば、フレームを落とす)などを含むことができる。
上述したように、図7に示す方法700により、さらに、クロックドリフト検出および復旧モジュール(206、502)によってホストクロックとクライアントクロックとの間にクロックドリフトが存在するかどうかを判定する方法を説明する。方法700のブロック702で、検出および復旧モジュール(206、502)は、クライアントデバイス104へのメディアコンテンツのストリーミング中に、一定時間間隔でバッファ占有量レベルをプロットする。ブロック704で、プロットにより形成される直線の平均勾配が計算される。平均勾配の計算は、広い時間範囲にわたってバッファ占有量の平均を計算すること、および、その結果をプロットすることを含むことができ、これらを含まなければバッファ占有量レベルの変化を示す可能性のあるネットワーク帯域幅の変動を除去することができる。
ブロック706で、クロックドリフト検出および復旧モジュール(206、502)は、(1つ以上の)クライアントバッファ208の枯渇を引き起こす可能性があるネットワーク制限などの、クロックドリフト以外の要因が存在するかどうかを判定する。例えば、ネットワーク容量がストリームのビットレートよりも低い場合、クライアントデバイス104上のバッファ占有量も時間経過とともに枯渇することがある。ネットワークレベルでの再送/損失パケットの数、時間経過による往復時間の変動、または他の統計量などの追加的な統計量を監視すると、ネットワーク過負荷を識別することができる。したがって、ネットワーク制限によるものと判断されるバッファ枯渇の結果は、クロックドリフトがホストクロックとクライアントクロックとの間に存在するかどうかを判定する場合に除去することができる。
ブロック708で、検出および復旧モジュール(206、502)は、直線の平均勾配を監視し、ホストクロックとクライアントクロックとの間にクロックドリフトが存在するかどうかを判定する。直線の平均勾配がゼロの場合、検出および復旧モジュール(206、502)は、ブロック710に示されるように、クロックドリフトが存在しないと判定する。直線の平均勾配が負の場合、検出および復旧モジュール(206、502)は、ブロック712に示されるように、クライアントクロックはホストクロックよりも速いと判定する。直線の平均勾配が正の場合、検出および復旧モジュール(206、502)は、ブロック714に示されるように、クライアントクロックはホストクロックよりも遅いと判定する。
(例示的コンピューティング環境)
図8は、図1〜7を参照しながら上記で説明されているホストデバイス102およびクライアント再生デバイス104などのコンピュータデバイスを実装するのに好適な例示的コンピューティング環境を示している。1つの具体的な構成が図8に示されているが、そのようなコンピューティングデバイスは、他のコンピューティング構成においても実装することができる。
コンピューティング環境800は、コンピュータ802の形態の汎用コンピューティングシステムを備える。コンピュータ802のコンポーネントとして、1つまたは複数のプロセッサまたは処理装置804、システムメモリ806、およびプロセッサ804を含む様々なシステムコンポーネントをシステムメモリ806に連結するシステムバス808を備えることができるが、これらに限定されるものではない。
システムバス808は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む数種類のバス構造のうちの1つまたは複数を表している。システムバス808の例として、メザニンバスとしても知られる周辺コンポーネント相互接続(PCI)バスが挙げられる。
コンピュータ802は、様々なコンピュータ読み取り可能媒体を備える。そのような媒体は、コンピュータ802によってアクセス可能な媒体であればどのような媒体でも使用可能であり、揮発性および不揮発性媒体、着脱可能および着脱不能媒体を含む。システムメモリ806は、ランダムアクセスメモリ(RAM)810などの揮発性メモリ、および/または読み取り専用メモリ(ROM)812などの不揮発性メモリの形態のコンピュータ読み取り可能媒体を備える。起動時などにコンピュータ802内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム(BIOS)814は、ROM812に格納される。RAM810は、処理装置804が直ちにアクセス可能であり、および/または処理装置804によって現在操作されているデータおよび/またはプログラムモジュールを格納する。
コンピュータ802は、他の着脱可能/着脱不能、揮発性/不揮発性コンピュータ記録媒体も備えることができる。例えば、図8には、着脱不能な不揮発性磁気媒体(図示せず)に対して読み書きを行うハードディスクドライブ816、着脱可能な不揮発性磁気ディスク820(例えば、「フロッピー(登録商標)ディスク」)に対して読み書きを行う磁気ディスクドライブ818、およびCD−ROM、DVD−ROM、またはその他の光媒体などの着脱可能な不揮発性光ディスク824に対して読み出しおよび/または書き込みを行う光ディスクドライブ822が示されている。ハードディスクドライブ816、磁気ディスクドライブ818、および光ディスクドライブ822は、それぞれ、1つまたは複数のデータ媒体インターフェース825を介してシステムバス808に接続される。その代わりとして、SCSIインターフェース(図示せず)を介しても、ハードディスクドライブ816、磁気ディスクドライブ818、および光ディスクドライブ822は、システムバス808に接続することができる。
ディスクドライブおよびそれらに関連するコンピュータ読み取り可能媒体は、コンピュータ802にコンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶を提供する。図8には、ハードディスク816、着脱可能な磁気ディスク820、および着脱可能な光ディスク824が例示されているが、磁気カセットまたはその他の磁気記憶デバイス、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)などの、コンピュータによりアクセス可能なデータを格納することができる他のタイプのコンピュータ読み取り可能媒体も、この例示的コンピューティングシステムおよび環境を実装するために使用できることは理解されるであろう。
例えば、オペレーティングシステム826、1つまたは複数のアプリケーションプログラム828、その他のプログラムモジュール830、およびプログラムデータ832を含む、多くのプログラムモジュールは、ハードディスク816、磁気ディスク820、光ディスク824、ROM812、および/またはRAM810に格納することができる。そのようなオペレーティングシステム826、1つまたは複数のアプリケーションプログラム828、その他のプログラムモジュール830、およびプログラムデータ832(またはそれらのいずれかの組合せ)はそれぞれ、ユーザネットワークアクセス情報に対するキャッシングスキームの一形態を有することができる。
コンピュータ802は、通信媒体として識別される様々なコンピュータ/プロセッサ読み取り可能媒体を備えることができる。通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または搬送波もしくはその他の移送機構など変調データ信号内のその他のデータを表現するものであり、任意の情報配信媒体を含む。「変調データ信号」という用語は、信号中の情報を符号化するような方法で設定または変更された特性の1つまたは複数を有する信号を意味する。例えば、限定はしないが、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、および音波、RF、赤外線、およびその他の無線媒体などの無線媒体が含まれる。上記のいずれの組合せもコンピュータ読み取り可能媒体の範囲に含まれる。
ユーザはキーボード834およびポインティングデバイス836(例えば、「マウス」)などの入力デバイスを介してコンピュータシステム802にコマンドおよび情報を入力することができる。他の入力デバイス838(特に図示されてはいない)として、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、スキャナなどが挙げられる。これらの入力デバイスおよびその他の入力デバイスは、システムバス808に結合されている入力/出力インターフェース840を介して処理装置804に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造により接続されることもある。
モニタ842またはその他のタイプのディスプレイ装置も、ビデオアダプタ844などのインターフェースを介してシステムバス808に接続できる。モニタ842に加えて、他の出力周辺装置は、スピーカ(図示せず)およびプリンタ846などのコンポーネントを含み、入力/出力インターフェース840を介してコンピュータ802に接続できる。
コンピュータ802は、リモートコンピューティングデバイス848などの1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク接続環境で動作することができる。例えば、リモートコンピューティングデバイス848は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の共通ネットワークノードなどとすることができる。リモートコンピューティングデバイス848は、コンピュータシステム802に関して本明細書で説明されている要素および特徴の多くまたはすべてを備えることができるポータブルコンピュータとして例示されている。
コンピュータ802とリモートコンピュータ848との間の論理接続は、ローカルエリアネットワーク(LAN)850と一般的なワイドエリアネットワーク(WAN)852として表されている。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。LANネットワーキング環境で実装される場合、コンピュータ802は、ネットワークインターフェースまたはアダプタ854を介してローカルネットワーク850に接続される。WANネットワーキング環境で実装される場合、コンピュータ802は、ワイドエリアネットワーク852上での通信を確立するためのモデム856または他の手段を備える。モデム856は、コンピュータ802に内蔵されても、外付けされてもよいが、入力/出力インターフェース840または他の適切な機構を介してシステムバス808に接続することができる。図示されているネットワーク接続は例示的なものであり、コンピュータ802と848との間の通信リンクを確立する他の手段も使用できることは理解されるであろう。
コンピューティング環境800とともに例示されるようなネットワーク接続環境では、コンピュータ802に関して示されたプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納することができる。例えば、リモートアプリケーションプログラム858は、リモートコンピュータ848のメモリ装置に存在する。説明の目的上、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能なプログラムコンポーネントは、本明細書では、離散ブロックとして例示されているが、そのようなプログラムおよびコンポーネントは、様々な時点において、コンピュータシステム802の異なる記憶コンポーネント内に存在し、コンピュータの(1つ以上の)データプロセッサにより実行されることは理解されるであろう。
(結論)
本発明は構造的特性および/または方法的動作に特有の言語で説明されているが、添付の特許請求の範囲で定められる発明は、説明されている具体的な特性または動作に必ずしも限られないことを理解されたい。むしろ、具体的な特性および動作は特許請求されている発明を実施するための例示的形態として開示されている。
ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間のクロックドリフトを検出するのに好適な例示的環境を示す図である。 ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間のクロックドリフトを検出するのに好適なデジタルメディアシステムの例示的実施形態を示す図である。 ホストデバイスがメディアコンテンツをクライアントデバイスにストリーミングするときに時間経過とともにクライアントメディアバッファ占有量レベルがどのように変化するかを示す事例の図である。 ネットワーク帯域幅変動により時間経過とともにバッファ占有量レベルが変動する場合、クライアントメディアバッファ占有量レベルがどのように変化するかを示す追加事例の図である。 ストリーミングメディアコンテンツを配信するホストデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間のクロックドリフトを検出するのに好適なデジタルメディアシステムの追加の例示的実施形態を示す図である。 ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間の、デジタルメディアシステム内のクロックドリフトを検出するための例示的方法を示す流れ図である。 ストリーミングメディアコンテンツを配信するホスト/ソースデバイス上のクロックとストリーミングメディアコンテンツを受信するクライアント再生デバイス上のクロックとの間の、デジタルメディアシステム内のクロックドリフトを検出するための例示的方法を示す流れ図である。 図1〜7を参照しながら説明されるホストコンピュータデバイスおよびクライアント再生デバイスを実装するのに好適な例示的コンピューティング環境を示す図である。
符号の説明
102 ホストデバイス
104 クライアントデバイス
202 ホストクロック
204 クライアントクロック
206、502 クロックドリフト検出および復旧モジュール
208 (1つ以上の)メディアバッファ
218 バッファモニタ
210(1)、210(2) バッファ占有量レポート
500 クロック復旧モジュール

Claims (11)

  1. 少なくともホストデバイスとクライアントデバイスとを含むデジタルメディアシステムにおいてクロックドリフトを検出する方法であって、
    前記クライアントデバイスにおいて、
    ストリーミングコンテンツの符号化プロセスを調整するホストクロックを有する前記ホストデバイスから、ストリーミングコンテンツを受信することであって、前記クライアントデバイスは、前記ストリーミングコンテンツの再生を調整するクライアントクロックを有すること、
    前記ストリーミングコンテンツのデータをクライアントデバイスバッファ内に保持すること、
    前記クライアントデバイスバッファ内のデータのレベルを反映するバッファ占有量レベルを監視すること、および、
    バッファ占有量レベルのレポートを生成して、前記ホストデバイスに送信すること
    を備え、
    前記ホストデバイスにおいて、
    前記バッファ占有量レベルのレポートに基づいて、前記ホストクロックと前記クライアントクロックとの間にクロックドリフトが存在するかどうかを判定することと、
    前記バッファ占有量レベルのレポートに基づいて、前記ホストクロックと前記クライアントクロックとの間のクロックドリフト量を計算すること
    をさらに備え、前記クロックドリフト量は、
    Figure 0005198734
    にしたがって計算され、ただし、
    前記クロックドリフト量はch−ccに等しく、
    chは、前記ホストクロックの周波数であり、
    ccは、前記クライアントクロックの周波数であり、
    dpcは、単位をビット/秒とする前記ホストデバイス上の指定されたデータ生成速度であり、
    f0は、時刻0における前記バッファ占有量レベルであり、
    ftは、時刻tにおける前記バッファ占有量レベルであることを特徴とする方法。
  2. 前記判定することは、
    一定時間間隔でバッファ占有量レベルをプロットすること、
    前記プロットすることにより形成される直線の平均勾配を計算すること、および、
    前記直線の前記平均勾配を監視すること
    を備えることを特徴とする請求項1に記載の方法。
  3. 前記直線の前記平均勾配ゼロであるとき、前記判定することは前記ホストクロックと前記クライアントクロックとの間にクロックドリフトがないと判定することを備えることを特徴とする請求項2に記載の方法。
  4. 前記直線の前記平均勾配負であるとき、前記判定することは前記クライアントクロックが前記ホストクロックよりも速いと判定することを備えることを特徴とする請求項2に記載の方法。
  5. 前記直線の前記平均勾配正であるとき、前記判定することは前記クライアントクロックが前記ホストクロックよりも遅いと判定することを備えることを特徴とする請求項2に記載の方法。
  6. 前記ホストクロックと前記クライアントクロックとの間の前記クロックドリフトを除去するクロック復旧方法を実施することをさらに備えることを特徴とする請求項1に記載の方法。
  7. 前記クロック復旧方法を実施することは、
    前記クライアントクロックを調整すること、
    前記ホストクロックを調整すること、
    前記ホストデバイスからの前記ストリーミングコンテンツを変更すること、および、
    前記クライアントデバイス上で前記ストリーミングコンテンツのデータフレームを落とすこと
    を含むグループから選択されることを特徴とする請求項に記載の方法。
  8. デジタルメディアシステム内のクロックドリフトを検出するように構成されたプロセッサ実行可能命令を格納するプロセッサ読み取り可能記録媒体であって、前記命令は、
    ストリーミングコンテンツの符号化プロセスを調整するホストクロックを有するホストデバイスから、ストリーミングコンテンツの再生を調整するクライアントクロックを有するクライアントデバイスに、ストリーミングコンテンツを伝送することと
    一定の測定時間間隔にわたって前記クライアントデバイス上の前記ストリーミングコンテンツのデータについてデータバッファのバッファ占有量レベルを監視することと
    バッファ占有量レベルのレポートを生成して、前記クライアントデバイスから前記ホストデバイスに送信することと
    前記バッファ占有量レベルのレポートに基づいて、前記ホストデバイス上の前記ホストクロックと前記クライアントデバイス上の前記クライアントクロックとの間にクロックドリフトが存在するかどうかを判定することと、
    前記バッファ占有量レベルのレポートに基づいて、前記ホストクロックと前記クライアントクロックとの間のクロックドリフト量を計算することと
    を実行させるように構成され、前記クロックドリフト量は、
    Figure 0005198734
    にしたがって計算され、ただし、
    前記クロックドリフト量はch−ccに等しく、
    chは、前記ホストクロックの周波数であり、
    ccは、前記クライアントクロックの周波数であり、
    dpcは、単位をビット/秒とする前記ホストデバイス上の指定されたデータ生成速度であり、
    f0は、時刻0における前記バッファ占有量レベルであり、
    ftは、時刻tにおける前記バッファ占有量レベルであることを特徴とするプロセッサ読み取り可能記録媒体。
  9. 前記判定することは、
    前記一定の測定時間間隔にわたる前記バッファ占有量レベルの変化率を計算すること、および、
    前記バッファ占有量レベルの前記変化率に基づいて、前記クロックドリフトは存在すると判定すること
    を備えることを特徴とする請求項に記載のプロセッサ読み取り可能記録媒体。
  10. メディアコンテンツの符号化プロセスを調整するホストクロックを有するホストデバイスからメディアコンテンツを受信し、前記メディアコンテンツを再生するように構成されたクライアントデバイスであって、前記メディアコンテンツの再生を調整するクライアントクロックを有するクライアントデバイス、
    クライアントバッファを監視し、前記クライアントバッファ内のデータ量を示すバッファ占有量のレポートを生成するように構成された前記クライアントデバイス上のバッファモニタ、および、
    前記バッファモニタから前記バッファ占有量のレポートを受信し、前記バッファ占有量のレポートから前記ホストクロックと前記クライアントクロックとの間にクロックドリフトが存在するかどうかを判定し、および前記ホストクロックと前記クライアントクロックとの間のクロックドリフト量を計算するように構成された前記ホストデバイス上のクロックドリフト検出および復旧モジュール
    を備え、前記クロックドリフト検出および復旧モジュールは、前記クロックドリフト量を、
    Figure 0005198734
    にしたがって計算するように構成され、ただし、
    前記クロックドリフト量はch−ccに等しく、
    chは、前記ホストクロックの周波数であり、
    ccは、前記クライアントクロックの周波数であり、
    dpcは、単位をビット/秒とする前記ホストデバイス上の指定されたデータ生成速度であり、
    f0は、時刻0における前記バッファ占有量レベルであり、
    ftは、時刻tにおける前記バッファ占有量レベルであることを特徴とするシステム。
  11. 前記クロックドリフト検出および復旧モジュールは、前記クロックドリフトを修正する復旧方法を実施するように構成されることを特徴とする請求項10に記載のシステム。
JP2006035609A 2005-02-11 2006-02-13 クライアントバッファ占有量の監視によるネットワークデバイスのクロックドリフトの検出 Expired - Fee Related JP5198734B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/056,058 US20060184697A1 (en) 2005-02-11 2005-02-11 Detecting clock drift in networked devices through monitoring client buffer fullness
US11/056,058 2005-02-11

Publications (3)

Publication Number Publication Date
JP2006222976A JP2006222976A (ja) 2006-08-24
JP2006222976A5 JP2006222976A5 (ja) 2009-04-30
JP5198734B2 true JP5198734B2 (ja) 2013-05-15

Family

ID=35783023

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006035609A Expired - Fee Related JP5198734B2 (ja) 2005-02-11 2006-02-13 クライアントバッファ占有量の監視によるネットワークデバイスのクロックドリフトの検出

Country Status (10)

Country Link
US (1) US20060184697A1 (ja)
EP (1) EP1691514A1 (ja)
JP (1) JP5198734B2 (ja)
KR (1) KR20060090923A (ja)
CN (1) CN1825955B (ja)
AU (1) AU2006200155A1 (ja)
BR (1) BRPI0600248A (ja)
CA (1) CA2532486A1 (ja)
MX (1) MXPA06001522A (ja)
RU (1) RU2408149C2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060209684A1 (en) * 2005-03-18 2006-09-21 Via Technologies, Inc. Data rate controller, and method of control thereof
US20070239839A1 (en) * 2006-04-06 2007-10-11 Buday Michael E Method for multimedia review synchronization
US7571340B2 (en) * 2006-06-13 2009-08-04 Intel Corporation Eliminating receiver clock drift caused by voltage and temperature change in a high-speed I/O system that uses a forwarded clock
US7765315B2 (en) * 2007-01-08 2010-07-27 Apple Inc. Time synchronization of multiple time-based data streams with independent clocks
US20080212690A1 (en) * 2007-03-01 2008-09-04 Qualcomm Incorporated Transcoder media time conversion
EP2073552A1 (en) 2007-12-21 2009-06-24 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for controlling a media consumption rate of a receiver
WO2009095839A1 (en) * 2008-01-28 2009-08-06 Nxp B.V. Device and method for decoding digital tv broadcast
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
CN101277209B (zh) * 2008-05-14 2010-07-14 山东大学 网络流媒体传输断线重连技术
US8370887B2 (en) 2008-05-30 2013-02-05 Microsoft Corporation Media streaming with enhanced seek operation
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US8621044B2 (en) * 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
US8301794B2 (en) 2010-04-16 2012-10-30 Microsoft Corporation Media content improved playback quality
US9276989B2 (en) 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
RU2519470C1 (ru) * 2012-10-17 2014-06-10 Общество с ограниченной ответственностью "Сетевизор" Способ защищенного распространения мультимедийной информации посредством развертывания децентрализованной сети типа peer-to-peer и децентрализованная сеть для осуществления способа
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US10616086B2 (en) 2012-12-27 2020-04-07 Navidia Corporation Network adaptive latency reduction through frame rate control
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
US20150098020A1 (en) * 2013-10-07 2015-04-09 Nvidia Corporation Method and system for buffer level based frame rate recovery
US9756141B2 (en) * 2015-06-04 2017-09-05 Airwatch Llc Media content consumption analytics
CN114138057A (zh) * 2021-11-19 2022-03-04 广西电网有限责任公司 基于agent的智能化时钟对时装置及使用方法
AU2023223376A1 (en) 2022-02-28 2024-07-18 Arris Enterprises Llc Method of measuring timing holdover performance in an r-phy system

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792654B2 (ja) * 1992-10-23 1995-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション ビデオ・データ・フレーム伝送方法および装置
CA2140850C (en) * 1994-02-24 1999-09-21 Howard Paul Katseff Networked system for display of multimedia presentations
GB9410943D0 (en) * 1994-06-01 1994-07-20 Newbridge Networks Corp Clock recovery unit
SE510170C2 (sv) * 1997-05-16 1999-04-26 Ericsson Telefon Ab L M Metod och anordning för styrning av datapaketflöde medelst baktrycksmeddelande
US6014694A (en) * 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US6343350B1 (en) * 1998-02-13 2002-01-29 International Business Machines Corporation Conserving storage space by means of low resolution objects
SG71835A1 (en) * 1998-09-07 2000-04-18 Victor Company Of Japan A dejittering and clock recovery technique for real-time audio/visual network applications
US6519004B1 (en) * 1998-10-09 2003-02-11 Microsoft Corporation Method for transmitting video information over a communication channel
US6507587B1 (en) * 1998-10-09 2003-01-14 Microsoft Corporation Method of specifying the amount of bandwidth to reserve for use in network communications
US6618363B1 (en) * 1998-10-09 2003-09-09 Microsoft Corporation Method for adapting video packet generation and transmission rates to available resources in a communications network
US6611530B1 (en) * 1999-09-21 2003-08-26 Hewlett-Packard Development Company, L.P. Video communication using multiple streams
US6757273B1 (en) * 2000-02-07 2004-06-29 Nokia Corporation Apparatus, and associated method, for communicating streaming video in a radio communication system
JP2001257715A (ja) * 2000-03-09 2001-09-21 Nippon Hoso Kyokai <Nhk> 蓄積送信端末
US20020146023A1 (en) * 2001-01-09 2002-10-10 Regan Myers Transport stream multiplexer utilizing smart FIFO-meters
KR100410973B1 (ko) * 2001-04-18 2003-12-18 엘지전자 주식회사 주문형 비디오 시스템에서 동영상의 스트리밍 방법
US7151749B2 (en) * 2001-06-14 2006-12-19 Microsoft Corporation Method and System for providing adaptive bandwidth control for real-time communication
US20030198184A1 (en) * 2001-08-31 2003-10-23 Joe Huang Method of dynamically determining real-time multimedia streaming rate over a communications networks
US7274661B2 (en) * 2001-09-17 2007-09-25 Altera Corporation Flow control method for quality streaming of audio/video/media over packet networks
FI115418B (fi) * 2001-09-20 2005-04-29 Oplayo Oy Adaptiivinen mediavirta
US7155532B2 (en) * 2002-01-04 2006-12-26 Scientific-Atlanta, Inc. Transmitting streams over asynchronous networks
US6910079B2 (en) * 2002-01-25 2005-06-21 University Of Southern California Multi-threshold smoothing
CN1464131A (zh) * 2002-06-13 2003-12-31 中国石化上海石油化工股份有限公司 用于生产阳离子染料可染丙纶的染色添加剂的制备方法
KR100547889B1 (ko) * 2003-08-25 2006-01-31 삼성전자주식회사 Mpeg-2 전송을 위한 널 패킷 필터링 장치
US7366199B1 (en) * 2002-12-10 2008-04-29 Apple Inc. Method and apparatus measuring bandwidth
KR100759954B1 (ko) * 2003-02-13 2007-09-19 노키아 코포레이션 멀티미디어 스트리밍에서 클라이언트 레이트 능력을시그널링하는 방법
GB0304808D0 (en) * 2003-03-03 2003-04-09 Cambridge Internetworking Ltd Managing data transmission
US7844727B2 (en) * 2003-04-24 2010-11-30 Nokia Corporation Method and device for proactive rate adaptation signaling

Also Published As

Publication number Publication date
CA2532486A1 (en) 2006-08-11
RU2006101067A (ru) 2007-08-10
AU2006200155A1 (en) 2006-08-31
EP1691514A1 (en) 2006-08-16
BRPI0600248A (pt) 2006-10-03
KR20060090923A (ko) 2006-08-17
US20060184697A1 (en) 2006-08-17
CN1825955B (zh) 2011-01-19
JP2006222976A (ja) 2006-08-24
CN1825955A (zh) 2006-08-30
MXPA06001522A (es) 2006-09-20
RU2408149C2 (ru) 2010-12-27

Similar Documents

Publication Publication Date Title
JP5198734B2 (ja) クライアントバッファ占有量の監視によるネットワークデバイスのクロックドリフトの検出
KR101153153B1 (ko) 대역폭이 제한된 네트워크를 통한 미디어 트랜스레이팅
US8949452B2 (en) System and method for progressive download with minimal play latency
US7743183B2 (en) Flow control for media streaming
US8745260B2 (en) System and method for progressive download using surplus network capacity
US9648385B2 (en) Adaptive streaming for digital content distribution
DK2457174T3 (en) ADAPTIVE STREAMING TO DIGITAL DISTRIBUTION OF CONTENT
JP4620041B2 (ja) 確率的適応コンテンツ・ストリーミング
KR101982290B1 (ko) 적응적 스트리밍 서비스의 체감 품질 향상을 위한 콘텐츠 특성 기반 스트리밍 시스템 및 방법
JP2014502483A (ja) 適応ストリーミングのための様々なビットのビデオストリーム
US9813475B1 (en) Delivering a video stream
WO2013152015A1 (en) Pipelining for parallel network connections to transmit a digital content stream
US7830794B2 (en) Method and apparatus for improved isochronous data delivery over non-isochronous communication fabric
Kim et al. A bandwidth estimation scheme to improve the QoE of HTTP adaptive streaming in the multiple client environment
Cui et al. MM-ABR: an Enhanced ABR Algorithm with Multi-Metric Information for QUIC-based Video Streaming
Park et al. Rate adaptation scheme for HTTP-based streaming to achieve fairness with competing TCP traffic
CN116614656A (zh) 多媒体流推送方法、装置、电子设备和可读介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120501

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: 20130125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees