(57)【要約】  イベントをタイムスタンプする機械読取可能媒体、方法及び装置である。一実施例では、タイムスタンプ回路は、割り込み信号、仲裁信号等のような関心のあるイベントを検出してもよい。このようなイベントを検出したことに応じて、タイムスタンプ回路はイベントのタイムスタンプを格納してもよい。プロセッサのような要求側は、後にイベントのタイムスタンプについてタイムスタンプ回路に要求してもよい。要求側は、受信したタイムスタンプに基づいて、このようなイベントの生成に関連する処理レートを調整してもよい。
2007501977.tif 000002
【特許請求の範囲】
【請求項１】
装置でイベントを検出し、
前記イベントを検出したことに応じて、前記装置のタイムスタンプで前記イベントをスタンプし、
前記イベントの前記タイムスタンプの要求を受信し、
前記要求を受信したことに応じて、前記イベントの前記タイムスタンプを提供することを有する方法。
【請求項２】
請求項１に記載の方法であって、
前記イベントがタイムスタンプされるか否かを決定し、
前記ベントがタイムスタンプされることを決定したことに応じて、前記タイムスタンプで前記イベントをスタンプすることを更に有する方法。
【請求項３】
請求項１に記載の方法であって、
前記イベントを検出することは、仲裁許可を検出することを有する方法。
【請求項４】
請求項１に記載の方法であって、
前記イベントを検出することは、割り込みを検出することを有する方法。
【請求項５】
請求項１に記載の方法であって、
前記イベントの前記タイムスタンプとストリームのタイムスタンプとに基づいて、ストリームの処理レートを調整することを更に有する方法。
【請求項６】
請求項１に記載の方法であって、
前記イベントの前記タイムスタンプとストリームのタイムスタンプとに基づいて、ストリームを再サンプリングすることを更に有する方法。
【請求項７】
基準クロックに応じてカウントを更新するカウンタと、
イベントを検出し、前記カウンタの前記カウントに基づくタイムスタンプを検出されたイベントに提供するコントローラと、
前記検出されたイベントの要求を受信したことに応じて、検出されたイベントのタイムスタンプを出力するインタフェースと
を有する装置。
【請求項８】
請求項７に記載の装置であって、
検出されたイベントのタイムスタンプを格納し、前記要求の前記検出されたイベントの前記タイムスタンプを前記インタフェースに提供するイベント格納装置を更に有する装置。
【請求項９】
請求項７に記載の装置であって、
検出されたイベントのタイムスタンプを格納し、前記インタフェースから前記検出されたイベントのイベント識別子を受信したことに応じて、前記要求の前記検出されたイベントの前記タイムスタンプを前記インタフェースに提供するイベント格納装置を更に有する装置。
【請求項１０】
請求項９に記載の装置であって、
前記インタフェースは、前記検出されたイベントの要求で、前記検出されたイベントの前記イベント識別子を受信する装置。
【請求項１１】
請求項７に記載の装置であって、
検出されたイベントのタイムスタンプ及び関連のイベント識別子を格納し、前記インタフェースから前記検出されたイベントのイベント識別子を受信したことに応じて、前記要求の前記検出されたイベントの前記タイムスタンプを前記インタフェースに提供するイベント格納装置を更に有する装置。
【請求項１２】
請求項７に記載の装置であって、
前記コントローラは、検出されたイベントがタイムスタンプされるイベント形式であることを決定したことに応じて、タイムスタンプを検出されたイベントに提供する装置。
【請求項１３】
請求項１２に記載の装置であって、
前記コントローラは、検出されたイベントがタイムスタンプされるイベント形式でないことを決定したことに応じて、タイムスタンプを検出されたイベントに提供せずに、検出されたイベントを無視する装置。
【請求項１４】
請求項１３に記載の装置であって、
前記コントローラによりタイムスタンプされるイベント形式は、プログラム可能である装置。
【請求項１５】
請求項７に記載の装置であって、
コンピュータ装置の他の構成要素にプロセッサを結合するチップセットに組み込まれた装置。
【請求項１６】
請求項７に記載の装置であって、
仲裁イベントに基づいて共有リソースへのアクセスを仲裁するアービターに組み込まれた装置。
【請求項１７】
請求項７に記載の装置であって、
割り込みイベントを制御する割り込みコントローラに組み込まれた装置。
【請求項１８】
プログラムクロックレートを示すプログラムクロックレートスタンプとデータブロックとを有するストリームをプログラムクロックレートで受信するネットワークインタフェースと、
基準クロック信号を生成する基準クロックと、
前記基準クロック信号により設定された処理レートで前記ストリームの前記データブロックを処理し、前記処理レートを示すイベントを生じる装置と、
前記処理レートを示すイベントを検出し、前記基準クロック信号に基づくイベントのタイムスタンプを格納するタイムスタンプ回路と
を有するシステム。
【請求項１９】
請求項１９に記載のシステムであって、
タイムスタンプ回路は、前記タイムスタンプ回路にプログラムされたイベント形式に基づいて、前記処理レートを示すイベントを検出するシステム。
【請求項２０】
請求項１９に記載のシステムであって、
前記処理レートを示すイベントのタイムスタンプについて前記タイムスタンプ回路に要求するプロセッサを更に有するシステム。
【請求項２１】
請求項２０に記載のシステムであって、
前記プロセッサは、前記イベントのタイムスタンプと前記ストリームのプログラムクロックレートスタンプとに基づいて前記処理レートを調整するシステム。
【請求項２２】
請求項２０に記載のシステムであって、
前記プロセッサは、前記イベントのタイムスタンプと前記ストリームのプログラムクロックレートスタンプとに基づいて前記基準クロック信号の周波数を調整するシステム。
【請求項２３】
請求項２０に記載のシステムであって、
前記プロセッサは、前記イベントのタイムスタンプと前記ストリームのプログラムクロックレートスタンプとに基づいて前記データブロックを再サンプリングするシステム。
【請求項２４】
請求項２０に記載のシステムであって、
前記タイムスタンプ回路は、検出されたイベントのタイムスタンプを格納し、プロセッサが前記タイムスタンプ回路からタイムスタンプを要求したことに応じて、検出されたイベントの格納されたタイムスタンプを前記プロセッサに提供するシステム。
【請求項２５】
請求項２０に記載のシステムであって、
前記タイムスタンプ回路は、検出されたイベントのタイムスタンプを格納し、プロセッサが検出されたイベントのイベント識別子を前記タイムスタンプ回路に提供したことに応じて、検出されたイベントの格納されたタイムスタンプを前記プロセッサに提供するシステム。
【請求項２６】
請求項１８に記載のシステムであって、
前記タイムスタンプ回路は、検出されたイベントがタイムスタンプされるイベント形式であることを決定したことに応じて、検出されたイベントのタイムスタンプを格納するシステム。
【請求項２７】
請求項２６に記載のシステムであって、
前記タイムスタンプ回路は、検出されたイベントがタイムスタンプされるイベント形式でないことを決定したことに応じて、検出されたイベントのタイムスタンプを格納せずに、検出されたイベントを無視するシステム。
【請求項２８】
請求項２０に記載のシステムであって、
前記タイムスタンプ回路を有し、前記プロセッサを前記ネットワークインタフェースと前記装置とに結合するチップセットを更に有するシステム。
【請求項２９】
請求項１８に記載のシステムであって、
前記タイムスタンプ回路を有し、共有リソースの要求を仲裁するアービターを更に有し、
前記タイムスタンプ回路は、検出されたイベント形式の仲裁信号のタイムスタンプを格納するシステム。
【請求項３０】
請求項１８に記載のシステムであって、
前記タイムスタンプ回路を有し、前記装置から受信した割り込みを処理する割り込みコントローラを更に有し、
前記タイムスタンプ回路は、検出されたイベント形式の割り込み信号のタイムスタンプを格納するシステム。
【請求項３１】
コンピュータ装置により実行されることに応じて、前記コンピュータ装置に
ストリームの処理レートを示す検出されたイベントのタイムスタンプについてタイムスタンプ回路に要求させ、
前記検出されたイベントのタイムスタンプに基づいて前記ストリームの処理レートを決定させ、
前記ストリームのプログラムクロックレートスタンプに基づいて前記ストリームのプログラムクロックレートを決定させ、
前記処理レートと前記プログラムクロックレートとが決定された差を有することに応じて、前記ストリームの前記処理レートを調整させる
複数の命令を有する機械読取可能媒体。
【請求項３２】
請求項３１に記載の機械読取可能媒体であって、
前記複数の命令は、前記コンピュータ装置に、前記ストリームのデータブロックを再サンプリングすることにより前記処理レートを更に調整させる機械読取可能媒体。
【請求項３３】
請求項３１に記載の機械読取可能媒体であって、
前記複数の命令は、前記コンピュータ装置に、前記処理レートを制御する基準クロックを更に調整させる機械読取可能媒体。
【請求項３４】
請求項３１に記載の機械読取可能媒体であって、
前記複数の命令は、前記コンピュータ装置に、前記ストリームの処理レートを示す割り込みイベントをスタンプするように前記タイムスタンプ回路を更にプログラムさせる機械読取可能媒体。
【請求項３５】
請求項３１に記載の機械読取可能媒体であって、
前記複数の命令は、前記コンピュータ装置に、前記ストリームの処理レートを示す仲裁イベントをスタンプするように前記タイムスタンプ回路を更にプログラムさせる機械読取可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ装置は、汎用の非リアルタイム型コンピュータから、デジタル処理タスクを実行するメインプロセッサを有するリアルタイム型処理装置に進化している。現在のコンピュータ装置では、例えばキャッシュメモリや遅延割り込み処理や共有リソースのような要素の組み合わせによって、これらの装置での処理時間をかなり可変且つ予測不能にしている。例えば、一般的なプログラムループの最初の通過は、キャッシュ充填サイクルのため、同じプログラムループの以後の通過より10〜50倍を要することがある。しかし、従来のストリーム処理は、高品質の結果を実現するために、一般的に予測可能且つ実質的に不変の処理時間を要求する。
【発明を実施するための最良の形態】
【０００２】
ここに記載する本発明は、一例として示されており、決して添付図面に限定されない。説明の簡略化及び明瞭性のため、図面の要素は必ずしも縮尺通りに図示されていない。例えば、明瞭にするために、ある要素の大きさは他の要素に比較して強調されていることがある。更に、適切であると考えられる場合には、対応する要素又は類似の要素を示すために、参照ラベルが図面で繰り返して使用されている。
【０００３】
以下の説明は、とりわけストリーム（例えば、オーディオストリーム、ビデオストリーム及び／又はデータストリーム）を処理するのに有用になり得るイベント処理技術について記載している。以下の説明では、ロジック実装、オペコード、オペランドを特定する手段、リソース分割／共有／複製の実装、システム構成要素の形式及び相互関係、並びにロジック分割／統合の選択肢のように、本発明の完全なる理解を提供するために多数の特定の詳細が示されている。しかし、本発明はこのような特定の詳細を用いずに実行されてもよいことが、当業者にわかる。その他に、制御構造、ゲートレベル回路及び全ソフトウェア命令シーケンスは、本発明をあいまいにしないように、詳細には示されていない。当業者は、含まれる説明を用いて、必要以上の実験を行わずに適切な機能を実装することができる。
【０００４】
明細書における“一実施例”、“実施例”、“例示的な実施例”等への参照は、記載されている実施例が特定の機能、構造又は特徴を含んでもよいが、必ずしも全ての実施例が特定の機能、構造又は特徴を含む必要がないことを示す。更に、このような用語は必ずしも同じ実施例を示しているとは限らない。更に、特定の機能、構造又は特徴が実施例に関連して記載されている場合、明示的に記載されていても記載されていなくても、そのような機能、構造又は特徴が他の実施例に関連して実施されることは、当業者の認識範囲であることがわかる。
【０００５】
本発明の実施例は、ハードウェア、ファームウェア、ソフトウェア又はその何らかの組み合わせで実装され得る。本発明の実施例はまた、機械読取可能媒体に格納されている命令として実装されてもよい。その機械読取可能媒体は１つ以上のプロセッサに読み取られて実行されてもよい。機械読取可能媒体は、機械（例えばコンピュータ装置）によって読取可能な形式で情報を格納又は送出する如何なる機構を有してもよい。例えば、機械読取可能媒体は、読取専用メモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、電気・光・音響又は他の形式の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）等を有してもよい。更に、ファームウェア、ソフトウェア、ルーチン、命令は、特定の動作を実行するものとしてここで記述され得る。しかし、このような記述は単に便宜上のものであり、実際にこのような動作はファームウェア、ソフトウェア、ルーチン、命令等を実行するコンピュータ装置、プロセッサ、コントローラ、又は他の装置から生じる。
【０００６】
タイムスタンプ回路102を有するコンピュータ装置100の実施例が図１に図示されている。図示のように、コンピュータ装置100は、１つ以上のプロセッサ104を有してもよい。プロセッサ104は、オペレーティングシステム106、アプリケーション108、デバイスドライバ110、基本入出力システム（BIOS）ファームウェア112及び／又はその他のソフトウェア若しくはファームウェアモジュールの命令の実行に応じて、動作を実行してもよい。
【０００７】
コンピュータ装置100は、プロセッサバスを介してプロセッサ104に結合されているチップセット114を更に有してもよい。チップセット114は、プロセッサ104をコンピュータ装置100の他の構成要素（メモリ116等）に結合する１つ以上の集積回路パッケージ又はチップを有してもよい。メモリ116は、読み取り及び／又は書き込み可能なアドレス可能な記憶装置の位置を有するメモリ装置（図示せず）を有してもよい。メモリ装置は、例えば、RAM（ランダムアクセスメモリ）装置、SRAM（スタティックRAM）装置、DRAM（ダイナミックRAM）装置、SDRAM（シンクロナスDRAM）装置、DDR（double  data  rate）SDRAM装置等のような１つ以上の揮発性メモリ形式を有してもよい。メモリ装置は、例えば、フラッシュメモリ装置、ROM（読取専用メモリ）装置、PROM（プログラム可能読取専用メモリ）装置、EPROM（消去可能PROM）装置、EEPROM（電子消去可能PROM）装置、強誘電性メモリ装置、バッテリ補助メモリ装置等のような１つ以上の不揮発性メモリ形式を更に有してもよい。
【０００８】
チップセット114は、プロセッサ104をBIOSファームウェア112に更に結合してもよい。BIOSファームウェアは、プロセッサ104とチップセット114とコンピュータ装置100の他の構成要素とを初期化するために、コンピュータ装置100がシステム開始中に実行し得るルーチンを有してもよい。更に、BIOSファームウェア112は、コンピュータ装置100がコンピュータ装置100の１つ以上の構成要素と通信するように実行し得るルーチン又はドライバを有してもよい。
【０００９】
チップセット114は、１つ以上のバス124を介して、１つ以上のメディア装置118、ネットワークインタフェース120及び／又は他のI/O装置122にプロセッサ104を更に結合してもよい。メディア装置は、オーディオ／ビデオ再生装置、オーディオ／ビデオ取得装置、オーディオ／ビデオ転送装置等を有してもよい。ネットワークインタフェース120は、LAN（ローカルエリアネットワーク）コントローラ、モデム、及び／又は、他のコンピュータ装置、サーバ及び／又は他のネットワーク可能装置への通信リンクをコンピュータ装置100に提供する無線ネットワークコントローラを有してもよい。更に、I/O装置122は、マウス、キーボード、ビデオコントローラ、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ等を有してもよい。
【００１０】
図示のように、バス124は、１つ以上のメディア装置118、ネットワークインタフェース120及び／又はI/O装置122との間で共有されてもよい。従って、コンピュータ装置100は、共有バス124にアクセスを割り当てる仲裁機構を有してもよい。一実施例では、コンピュータ装置100は、バスを共有する装置118、120、122から要求信号又はメッセージを受領し、共有バス124への１つの要求側装置118、120、122のアクセス又は所有権を認める許可信号又はメッセージを生成するアービター126を有してもよい。図示のように、チップセット114は、共有バス124用のアービター126を有してもよい。しかし、一実施例では、アービター126は、チップセット114の外部でもよい。更に、コンピュータ装置100は、共有バス124用の中央アービター126を用いずに実装されてもよい。このような実施例では、装置118、120、122は、装置118、120、122が共有バス124の所有権を取得するように装置間で仲裁することを生じる信号を生成してもよい。
【００１１】
更に、チップセット144は、装置118、120、122から割り込みイベント（例えば、信号、メッセージ）を受領し、処理用のプロセッサ104に割り込みイベントを送出する割り込みコントローラ127を有してもよい。特に、割り込みコントローラ127は、１つ以上の割り込みイベントの発生を検出し、検出された割り込みイベント毎に関連する優先度に基づいた順序で、検出された割り込みイベントをプロセッサ104に送出してもよい。
【００１２】
図１及び２を参照すると、チップセット114は、イベント・タイムスタンプ回路102を更に有してもよい。しかし、他の実施例では、タイムスタンプ回路は、アービター126、割り込みコントローラ127又はチップセット114と別の構成要素に組み込まれてもよい。タイムスタンプ回路102は、基準クロック128から基準クロック信号を受信し、基準クロック信号に応じてローカルカウント130を定期的に更新してもよい。タイムスタンプ回路102は、ローカルカウント130に基づくタイムスタンプ132を用いてイベントを更にスタンプしてもよい。要求側（例えばプロセッサ104）は、イベントが生じた時の比較的正確な表示を取得するために、後にタイムスタンプ回路102からイベントのタイムスタンプ132を要求してもよい。タイムスタンプ回路102をイベントのソース（例えば、装置118、120、122及びアービター126）の近くに置くことにより、イベントが生じた時とイベントがタイムスタンプ回路102により検出されてスタンプされた時との間に、ほとんど遅延が取り込まれない。更に、イベントのソースとタイムスタンプ回路102との間の構成要素及び共有リソースを小さくすればするほど、イベント間で取り込まれる遅延が小さく変化し得る。従って、プロセッサ104が２つ以上のイベントの発生の間の非常に正確な時間差を決定し得るコンピュータ装置100が実装され得る。
【００１３】
図２に示すように、タイムスタンプ回路102は、カウンタ134と、コントローラ136と、イベント格納装置138と、インタフェース140とを有してもよい。カウンタ134は、例えば27MHzのような基準周波数を有する基準クロック信号を受信するために、基準クロック128に結合されてもよい。更に、カウンタ134は、基準クロック信号の各サイクルに応じて、そのカウント130を更新し得る32ビットのロールオーバーカウンタ（32-bit  roll  over  counter）として実装されてもよい。
【００１４】
コントローラ136は、メディア装置118、ネットワークインタフェース120、I/O装置122及び／又はアービター126からイベント（例えば、割り込み要求信号、割り込み要求メッセージ、仲裁許可信号等）を受信してもよい。コントローラ136は、関心のある特定のイベントにスタンプし、基本的に他のイベントを無視するように更にプログラムされてもよい。例えば、コントローラ136は、メディア装置118のオーディオインタフェースからの割り込み要求に続く最初の仲裁許可信号をスタンプするようにプログラム又は構成されてもよい。同様に、メディア装置118は、特定の割り込みライン（例えば割り込み信号ラインINT_5）で割り込み要求を生成するように割り当てられてもよく、コントローラ136は、メディア装置118に割り当てられた割り込みラインで受信した全ての割り込み要求をスタンプするようにプログラム又は構成されてもよい。
【００１５】
関心のあるイベントを検出したことに応じて、コントローラ136は、検出されたイベントのタイムスタンプ132をイベント格納装置138に格納してもよい。一実施例では、コントローラ136は、検出されたイベントのタイムスタンプ132として、単にカウンタ134の現カウント130を格納してもよい。他の実施例では、コントローラ136は、カウンタ134のカウント130に基づいてタイムスタンプ132を生成してもよい。例えば、コントローラ136は、タイムスタンプ132がカウント130より小さいビットを含むようにカウント130をエンコードすることにより、及び／又は要求側（例えばプロセッサ104）に適した形式で又は要求側により予期された形式でタイムスタンプ132を設定することにより、タイムスタンプ132を生成してもよい。
【００１６】
関心のあるイベントを検出したことに応じて、カウンタ136は、イベント格納装置138にタイムスタンプ132を備えたイベント識別子142を更に格納してもよい。イベント識別子142は、イベントのソース（例えば特定のメディア装置118）又は形式（例えば割り込み信号INT_5又は仲裁許可GNT_1）を示してもよい。イベント識別子142は、イベント格納装置138から特定のイベントのタイムスタンプ132を取り出すために使用されてもよい。一実施例では、イベント格納装置138は、複数のイベント及び同じ形式の複数のイベントを格納してもよい。イベント格納装置138は、イベント識別子142に基づいて、先入れ先出し（FIFO：first  in  first  out）順に、格納されたタイムスタンプ132を更に取り出してもよい。
【００１７】
一実施例では、イベント格納装置138は、図２に示すような単一タグのFIFOキューのような構造として実装されてもよい。このような実施例のコントローラ136は、イベントが検出されたときに、FIFO構造の後部1144にイベント識別子142と関連タイムスタンプ132とをプッシュしてもよい。インタフェース140は、後にイベント識別子142のタイムスタンプ132についてFIFO構造に要求してもよい。要求に応じて、FIFO構造は、関連のイベント識別子142を有するタイムスタンプ132をインタフェース140に提供してもよい。FIFO構造が関連のイベント識別子142を備えた複数のタイムスタンプ132を有する場合、FIFO構造は、FIFO構造の先頭146に最も近いものを戻す。
【００１８】
例えば、図２は、コントローラ136がEID_0、EID_2及びEID_5のイベント識別子142を有する複数のイベントとその関連タイムスタンプ132とをFIFO構造の後部144にプッシュした後のFIFO構造を示している。イベント識別子EID_0に関連するタイムスタンプ132の要求に応じて、FIFO構造は、FIFO構造の先頭146に最も近いタイムスタンプTS_0を戻すことにより、最も古いイベント識別子EID_0に関連するタイムスタンプTS_0を戻してもよい。同様に、イベント識別子EID_5に関連するタイムスタンプ132の要求に応じて、FIFO構造は、FIFO構造の先頭146に最も近いタイムスタンプTS_5を戻すことにより、最も古いイベント識別子EID_0に関連するタイムスタンプTS_5を戻してもよい。
【００１９】
しかし、イベント格納装置138は、他の格納構造を使用して実装されてもよい。例えば、イベント構造138は、対応するイベント形式／ソース毎に別々のFIFO構造を有してもよく、コントローラ136は、適切なFIFO構造にタイムスタンプ132をプッシュしてもよい。このような実施例では、タイムスタンプ132が適切なFIFO構造の先頭146から単にプルされてもよいため、イベント識別子142はイベント格納装置138に格納されなくてもよい。FIFO構造は様々な方法で実装されてもよいこともわかる。例えば、FIFO構造は、各FIFO構造の先頭146と後部144とをトラックする先頭及び後部ポインタを備えたリングバッファとして実装されてもよい。
【００２０】
次に図３を参照すると、ストリーミングシステム148の実施例が図示されている。図示のように、ストリーミングシステム148は、ネットワーク154を介してコンピュータ装置100にストリーム152（例えば、オーディオストリーム、ビデオストリーム、オーディオ／ビデオストリーム、データストリーム等）を送信するサーバ150を有してもよい。図示のように、サーバ150は、PCR（program  clock  rate）を有するプログラムクロック信号を生成するプログラムクロック156を有してもよい。プログラムクロック信号に応じて、サーバ150は、プログラムクロック156のPCRでストリーム152を送信してもよい。一実施例では、サーバ150は、プログラムクロック156から生成された散在したPCRスタンプ160と共にデータブロック158のシーケンスとしてストリーム152を送信してもよい。一般的にPCRスタンプ160は、ストリーム152の再生又は処理のために、基準時間を提供する。
【００２１】
コンピュータ装置100の１つ以上のプロセッサ104は、メディア装置118による処理に適した形式にデータブロック158を設定するために、受信ストリーム152のデータブロック158を用意してもよい。プロセッサ104は、用意したデータブロック158を処理用にメディア装置118（例えばオーディオコーデック）に転送させてもよい。メディア装置118は、データブロック158をオーディオサンプル及び／又はビデオフレームに変換してもよく、コンピュータ装置100の基準クロック128に基づく処理レートでオーディオサンプル及び／又はビデオフレームを再生及び／又は処理してもよい。
【００２２】
基準クロック128の周波数とプログラムクロック156の周波数とが一致することが理想的である。その場合、メディア装置118は、単に基準クロック128により設定された処理レートでデータブロック158を処理することにより、サーバ150と同期を保ってもよい。しかし、実際には、基準クロック128の周波数とプログラムクロック156の周波数とは正確には一致しない。その結果、訂正動作が行われなければ、オーバーラン又はアンダーランの状態が生じ、ストリーム152の再生又は処理に不自然な結果を取り込む。特に、プログラムクロック156が基準クロック128より速い場合、処理されるレートより速いレートでデータブロック158を受信する結果として、コンピュータ装置100のバッファはオーバーランする可能性がある。同様に、プログラムクロック156が基準クロック128より遅い場合、処理されるレートより遅いレートでデータブロック158を受信する結果として、コンピュータ装置100の１つ以上のバッファはアンダーランする可能性がある。
【００２３】
一実施例では、メディア装置118が処理用のデータブロック158を受信する用意ができる毎に、メディア装置118は割り込み信号を生成してもよい。このような実施例では、割り込み信号は、メディア装置118の実際の処理レートを正確に反映してもよい。従って、このような割り込み信号が生成される時間をプロセッサ104が正確に決定し得ると、プロセッサ104はメディア装置118の実際の処理レートを正確に決定してもよい。プロセッサ104がこのような割り込み信号の時間を正確に決定することを可能にするために、タイムスタンプ回路102は、イベント発生とイベントスタンプとの間のかなりの待ち時間及び／又は待ち時間の変化なしに、このような割り込み信号を検出及びスタンプしてもよい。
【００２４】
他の実施例では、アービター126は、データブロック158が処理用にメディア装置118に転送される毎に、バス124へのメディア装置118のアクセスを許可する許可信号を生成してもよい。このような仲裁信号は、メディア装置118の実際の処理レートを正確に反映せいてもよい。この場合も同様に、このような許可信号が生成される時間をプロセッサ104が正確に決定し得ると、プロセッサ104はメディア装置118の実際の処理レートを正確に決定してもよい。プロセッサ104がこのような許可信号の時間を正確に決定することを可能にするために、タイムスタンプ回路102は、検出された許可信号の生成と検出された許可信号のスタンプとの間のかなりの待ち時間及び／又は待ち時間の変化なしに、このような許可信号を検出及びスタンプしてもよい。しかし、他のイベントもメディア装置118の処理レートを正確に反映してもよいことがわかる。従って、タイムスタンプ回路102は、これらのイベントの発生時間が正確に決定され得るように、これらの他のイベントをスタンプするように構成されてもよい。
【００２５】
ストリーム処理方法の実施例が図４に示されている。ブロック200において、アプリケーション108（例えば、MP3（MPEGオーディオプレイヤ3）プレイヤ又はQuickTimeTMムービープレイヤ）は、サーバ150からストリーム152を要求してもよい。ブロック202において、サーバ150は、サーバ150のプログラムクロック156に基づくPCRスタンプ160を備えた要求のストリーム152をアプリケーション108に送信してもよい。ブロック204において、アプリケーション108は、処理用に受信ストリーム152のデータブロック158を用意してもよく、メディア装置118に用意したデータブロック158を処理するように要求してもよい。一実施例では、アプリケーション108はストリーム152のトランスポートヘッダを取り除いてもよく、ストリーム152のデータブロック158をメモリ116に格納してもよい。更に、アプリケーション104は、メモリ116に格納されたデータブロック158を再生するようにメディア装置118に要求してもよい。
【００２６】
アプリケーション108が１つ以上のデータブロック158を処理するようにメディア装置118に要求したことに応じて、ブロック206において、メディア装置118のデバイスドライバ110は、ストリーム152の処理のためにメディア装置118を構成してもよく、メディア装置118の処理レートを示すイベントのスタンプのためにメディア装置118を構成してもよい。一実施例では、デバイスドライバ110は、メディア装置118がデータブロック158を処理する用意ができているときに、メディア装置118により生成された割り込み信号をスタンプするようにタイムスタンプ回路102をプログラムしてもよい。他の実施例では、デバイスドライバ110は、データブロック158が共有バス124を介してメディア装置118に転送される前に、アービター126により生成された許可信号をスタンプするように、タイムスタンプ回路102をプログラムしてもよい。
【００２７】
ブロック208において、メディア装置118がストリーム152の１つ以上のデータブロック158を受信する用意ができているときに、メディア装置118は割り込みイベント（例えば割り込み信号INT_5）を生成してもよい。ブロック210において、タイムスタンプ回路102のコントローラ136は、割り込みイベントをタイムスタンプするか否かを決定してもよい。一実施例では、コントローラ136は、検出された割り込みイベントが、コントローラ136がタイムスタンプするようにプログラムされている関心のあるイベントであるか否かを決定してもよい。割り込みイベントをタイムスタンプするように決定したことに応じて、コントローラ136は、イベント格納装置138にイベントのタイムスタンプ132及びイベント識別子142を格納してもよい（ブロック212）。
【００２８】
割り込みイベントに応じて、ブロック214において、メディア装置118のデバイスドライバ110は、メディア装置118の処理レートを示すイベントのタイムスタンプ132をタイムスタンプ回路102から要求してもよい。一実施例では、このようなイベント（例えば割り込み信号及び／又は仲裁信号）のイベント識別子142をインタフェース140に提供してもよい。ブロック216において、タイムスタンプ回路102は、受信したイベント識別子142に基づいて、そのイベント格納装置138からのタイムスタンプをデバイスドライバ110に提供してもよい。
【００２９】
ブロック218において、デバイスドライバ110は、受信タイムスタンプ132に基づいて、メディア装置118の処理レートを決定してもよく、ストリーム152のPCRスタンプ160に基づいて、ストリーム152のPCRを決定してもよい。一実施例では、デバイスドライバ110は、受信タイムスタンプ132と１つ以上の前に受信したタイムスタンプ132とに基づいて処理レートを決定してもよい。同様に、デバイスドライバ110は、PCRスタンプ160及び／又は１つ以上の前に受信したPCRスタンプ160に基づいてPCRを決定してもよい。例えば、デバイスドライバ110は、現タイムスタンプ132と前に受信したタイムスタンプ132との差を決定してもよく、得られた差に基づいて決定された処理レートを更新してもよい。同様に、デバイスドライバ110は、現PCRスタンプ160と前に受信したPCRタイムスタンプ160との差を決定してもよく、得られた差に基づいて決定されたPCRを更新してもよい。
【００３０】
ブロック220において、デバイスドライバ110は、決定された処理レート及びPCRに基づいてメディア装置118の処理レートを調整してもよい。一実施例では、デバイスドライバ110は、基準クロック128の周波数を調整してもよく、及び／又は基準クロック128の周波数に対するその処理レートを調整するようにメディア装置118を再構成してもよい。他の実施例では、デバイスドライバ110及び／又はアプリケーション108は、ストリーム152の１つ以上のデータブロック158を再サンプリングし、再サンプリングされたデータブロック158のPCRをメディア装置118の処理レートに実質的に一致させてもよい。例えば、メディア装置118の処理レートがストリーム152のPCRより速い場合、デバイスドライバ110及び／又はアプリケーション108は１つ以上のデータブロック158をアップサンプルしてもよい。同様に、メディア装置118の処理レートがストリーム152のPCRより遅い場合、デバイスドライバ110及び／又はアプリケーション108は１つ以上のデータブロック158をダウンサンプルしてもよい。
【００３１】
ブロック222において、デバイスドライバ110は、チップセット114及び／又はメディア装置118にメモリ116からデータブロック158を転送させてもよい。一実施例では、デバイスドライバ110は、チップセット114又はメディア装置118のDMA（direct  memory  access）エンジンに、処理のためにメモリ116からメディア装置118にデータブロック158を転送させてもよい。ブロック224において、チップセット114及び／又はメディア装置118は、メディア装置118の共有バス124の所有権を要求してもよく、アービター126、224は共有バス124の所有権を要求側114、118に許可してもよい。ブロック226において、タイムスタンプ回路102のコントローラ136は、許可イベントをタイムスタンプするか否かを決定してもよい。一実施例では、コントローラ136は、検出された許可イベントが、コントローラ136がタイムスタンプするようにプログラムされている関心のあるイベントであるか否かを決定してもよい。許可イベントをタイムスタンプしたことに応じて、コントローラ136は、イベントのタイムスタンプ132及びイベント識別子142をイベント格納装置138に格納してもよい（ブロック228）。
【００３２】
ブロック230において、メディア装置118は、データブロック158を受信してもよく、基準クロック128により制御された処理レートでデータブロック158を処理してもよい。特に、メディア装置118は、データブロック158からオーディオサンプル及び／又はビデオフレームを生成してもよく、基準クロック128により指示されたレートでオーディオサンプル及び／又はビデオフレームを再生してもよい。ブロック232において、メディア装置118は、ストリーム152の処理を終了したか否かを決定してもよい。メディア装置118がストリーム152の更なるデータブロック158を処理するように決定すると、メディア装置118は、メディア装置118が更なるデータブロック158を受信する用意があることを示す割り込み信号を生成するために、ブロック208に戻ってもよい。そうでない場合には、メディア装置118はストリーム152の処理を中止してもよい。
【００３３】
本発明の特定の特徴について例示的な実施例を参照して説明したが、その説明は限定的な意味に解釈されることを目的としているのではない。本発明が関係する当業者に明らかな例示的な実施例の様々な変更及び本発明の他の実施例は、本発明の要旨及び範囲内にあるとみなされる。
【図面の簡単な説明】
【００３４】
【図１】タイムスタンプ回路を有するコンピュータ装置の実施例
【図２】図１のタイムスタンプ回路の実施例
【図３】サーバと図１のコンピュータ装置とを有するストリーミングシステムの実施例
【図４】図３のストリーミングシステムにより実施され得るストリームを処理する方法の実施例
【図１】
2007501977.tif 000003
【図２】
2007501977.tif 000004
【図３】
2007501977.tif 000005
【図４】
2007501977.tif 000006
【国際調査報告】
2007501977.tif 000007
2007501977.tif 000008
2007501977.tif 000009
2007501977.tif 000010
2007501977.tif 000011