(57)【特許請求の範囲】
【請求項１】
第１のアプリケーションがビデオを要求すると、ビデオサーバとビデオストリームを含むビデオスタックとを接続し、該ビデオサーバからテレビジョンチューナカードを介して該第１のアプリケーションに前記ビデオストリームを提供するステップと、
前記ビデオストリームを受信中に、前記第１のアプリケーションがクラッシュしたことを前記ビデオサーバが検出すると前記カードをリセットして、前記ビデオサーバを介して第２のアプリケーションが前記ビデオスタック内のビデオストリームへ別のテレビジョンチューナカードを介してアクセスできる状態を維持するステップと
を含むビデオストリームへのアクセス方法。
【請求項２】
クラッシュが検出されると、ビデオスタックをシャットダウンするステップを含む請求項１に記載の方法。
【請求項３】
第１のアプリケーションがビデオを要求すると、ビデオサーバとビデオストリームを含むビデオスタックとを接続し、該ビデオサーバからテレビジョンチューナカードを介して該第１のアプリケーションに前記ビデオストリームを提供するステップと、
前記ビデオストリームを受信中に、前記第１のアプリケーションがクラッシュしたことを前記ビデオサーバが検出すると前記カードをリセットして、前記ビデオサーバを介して第２のアプリケーションが前記ビデオスタック内のビデオストリームへ別のテレビジョンチューナカードを介してアクセスできる状態を維持するステップと
をコンピュータに実行させるようにする命令を記憶するための記憶媒体。
【請求項４】
前記第１のアプリケーションがクラッシュしたことを検出するステップをコンピュータに実行させるようにする命令をさらに含む請求項３に記載の記憶媒体。
【請求項５】
例外ハンドラをモニタすることによって、前記第１のアプリケーションがクラッシュしたことを検出するステップを前記コンピュータに実行させるようにする命令をさらに含む請求項４に記載の記憶媒体。
【請求項６】
クラッシュが検出されると、ビデオスタックをシャットダウンさせるステップを前記コンピュータに実行させるようにする命令をさらに含む請求項３に記載の記憶媒体。
【請求項７】
クラッシュが検出されると、テレビジョンチューナカードをシャットダウンさせることを前記コンピュータに実行させるようにする命令をさらに含む請求項３に記載の記憶媒体。
【請求項８】
前記アプリケーションとは別個のアドレス空間において、前記ビデオストリームを操作するステップを前記コンピュータに実行させるようにする命令をさらに含む請求項３に記載の記憶媒体。
【請求項９】
前記ビデオサーバにアクセスするために前記アプリケーションの第１のウィンドウを操作し、ビデオスタックにあるビデオストリームを前記ビデオサーバに接続するために前記テレビジョンサーバの第２のウィンドウをセットアップすることを前記コンピュータに実行させるようにする命令をさらに含む請求項３に記載の記憶媒体。
【発明の詳細な説明】
【０００１】
本発明は、一般に、ビデオストリーム（video streams）を使用するシステム、特に、ビデオストリームを使用しているアプリケーションがクラッシュ（crash）した後でもそれらのビデオストリームへのアクセスを維持するための技術に関する。
【０００２】
コンピュータシステムは、テレビジョンチューナカードを含んでよいコンピュータに接続したテレビジョンあるいはモニタ上にテレビ番組を提供するためにしばしば使用される。テレビジョンとコンピュータの組合せは多くの利点がある。まずコンピュータは、例えば電子プログラムガイドを使用するなどの、テレビ番組の選択を容易にするソフトウェアを提供することができる。さらに、テレビジョンは、付随するウェブコンテンツを持つテレビ番組を含む双方向放送を受信することができる。テレビ番組に関係してよいウェブコンテンツは、テレビ放送の間にユーザの問い合せへの応答を可能にする追加情報を提供してよい。さらに、テレビ視聴者が放送者または放送それ自体に関係するインターネット・ウェブサイトにリンクすることを可能にするためのリンクが提供されてよい。
【０００３】
アプリケーションプログラムがテレビジョンプログラミングを要求すると、アプリケーションプログラムは、ビデオスタックと、そのアプリケーションのためにビデオストリームを提供するビデオを処理するためのソフトウェア層にアクセスする。もし、アプリケーションがビデオストリームの最中にクラッシュすれば、ビデオストリームは適切にシャットダウンされないことがある。結果として、ビデオスタックはクラッシュしなかった別のアプリケーションによってもアクセス不可能になることがある。
【０００４】
クラッシュした後に、テレビジョンビデオにアクセスするためには、次のアプリケーションがビデオスタックにアクセスできるようビデオスタックをリセットするために、コンピュータシステムを再起動させることが、通常、必要である。コンピュータ・ユーザは、彼らのコンピュータシステム上で進行中で、再起動するには中断せざるを得ない他の処理を有しているかもしれないので、このようなことは多くのコンピュータ・ユーザにとって具合が悪い。
【０００５】
従って、ビデオスタックを使用しているアプリケーションがクラッシュしてしまった後、再起動させることなく、ビデオスタックへのアクセスを可能にするテレビジョンビデオストリームシステムが必要とされている。
【０００６】
［概要］
ひとつの具体例にしたがって述べると、ビデオストリームにアクセスするための方法は、第１のアプリケーションがビデオを要求すると、ビデオサーバを使用してビデオストリームを初期化することを含む。もし第１のアプリケーションがクラッシュすれば、ビデオストリームへのアクセスはビデオサーバを介して第２のアプリケーションのために維持される。
【０００７】
［詳細な説明］
アプリケーションは、図１に示されるように、そのアプリケーションそれ自身によって使用されるビデオウィンドウのメモリアドレス空間とは別のメモリアドレス空間にある別個のビデオウィンドウを介して動作するビデオサーバを経由してテレビジョンビデオにアクセスすることが可能である。ビデオサーバは、一例としてテレビジョンビデオサーバあるいはデジタルビデオディスク（ＤＶＤ）サーバでよい。ブロック１０によって示されたアプリケーション「Ａ」は、親ビデオウィンドウ１４をセットアップする。親ビデオウィンドウ１４はビデオサーバ１８に渡され、次いでビデオサーバ１８は親ウィンドウ１４の子ウィンドウ１９を生成する。要するに、親ウィンドウは、ビデオスタックにハンドルを提供する子ウィンドウに、ハンドルを提供する。
【０００８】
次いで、サーバ１８は子ウインドウ１９にビデオを置く。子ウインドウ１９はサーバ１８とビデオスタック２０との間の通信を処理する。ビデオスタック２０は、例えば、両方共にマイクロソフト社から発売されているウィンドゥズあるいはダイレクトショー（DirectShow）用のビデオでよい。ウインドウ１４とウインドウ１９はコンピュータメモリにおける別個の異なったアドレス空間によって動作するので、もし、アプリケーションＡがクラッシュすれば、図１の破線で示されるように、ＴＶサーバ１８中のウィンドウ１９は維持される。
【０００９】
従来のシステムでは、アプリケーションＡがクラッシュしたとき、ビデオサービスを提供したウインドウ１４もクラッシュして、ビデオスタック２０は使用できない状態になる。その後、ブロック１２におけるアプリケーションＢのような、別のアプリケーションがビデオサービスにアクセスしようと試みたときは、コンピュータを再起動しないで、ビデオサービスにアクセスすることは不可能である。
【００１０】
図１に示された具体例では、アプリケーション１２はＴＶサーバ１８のビデオウインドウ１９を処理するそれ自身の親ウインドウ１４をセットアップしてよい。アプリケーションＡがクラッシュしてしまって、もはや動作していないかもしれないという事実にもかかわらず、アプリケーションＢはサーバ１８を介して即座にビデオスタックにアクセスする。サーバ１８とそのビデオウィンドウ１９の設定はアプリケーションＡのクラッシュによって影響されずに維持を続けられる。
【００１１】
次いで図２を参照して説明すると、図１に関連して説明されたシステムの具体例をコンピュータで実行するためのソフトウェアプログラムが２８において開始される。ブロック３０で示されるように、アプリケーションＡといったアプリケーションがＴＶサーバ１８に接続する。そのアプリケーションはビデオを要求して（ブロック３２）、ひし形のブロック３４で示されるように、ビデオが初期化（アプリケーションとＴＶサーバ１８とが接続）されているかどうかを決定するための一つの問い合わせが行われる。もしビデオが初期化されているなら、そのビデオの初期化を行わない（deinitialized）。もしビデオが初期化されていないなら、ＴＶサーバは親ウィンドウとしてアプリケーションによって提供されたウインドウをセットアップしてビデオを初期化する（ブロック３８）。アプリケーションは、ブロック４０で示されるように、所有の目的のためにビデオを使用する。
【００１２】
ひし形４２において、アプリケーションがクラッシュしたかどうか決定するための一つの問い合わせが行われる。クラッシュの検出は、例えば例外ハンドラコード（exception handler codes）をモニタすることによって実行される。ソフトウェアはオペレーティング・システムと結びついて、クラッシュを示す予め設定された例外ハンドラコードを待機してよい。特定コードが検出されると、ソフトウェアは、クラッシュがアプケーションプログラムで起こっていることを決定する。ブロック４８において、ビデオスタックは自動的にシャットダウンされ、ブロック５０において、ＴＶチューナカードもクラッシュの検出時に自動的にシャットダウンされる。
【００１３】
もしクラッシュが一切検出されないなら、ブロック４４で示されるように、最終的にアプリケーションは、ビデオとともにアプリケーションが完了したら、ＴＶサーバにビデオを終わらせるよう要請する。オペレーティング・システムが正しく動作している限り、ブロック４６に示されるように、アプリケーションはビデオをそのままの状態にしておく。
【００１４】
クラッシュの場合には、エラー状態を検出したときに迅速にビデオスタックとＴＶチューナカードを一旦シャットダウンさせることによって、ビデオスタックは、図１に示されたアプリケーションＢといった次に起動されるアプリケーションにとって使用可能な状態に維持できる。たとえ、親ビデオウインドウ１４が使用できないことがあっても、ＴＶサーバの親ウィンドウ１９はアプリケーションのウィンドウ１４とは別個のアドレス空間において動作しているので、ＴＶサーバ１８はなお正しく動作しており、次のアプリケーションはビデオスタック２０に再びアクセスできる。
【００１５】
ビデオは、サーバ１８によって供給されるハンドルを使用するウインドウにおいてアクティブになる。もしクラッシュがあれば、親ウインドウ１４は消滅するが、しかしビデオスタックはまだＴＶサーバのウインドウ１９に接続されている。新しいアプリケーションがスタートすると、それはＴＶサーバ１８からのビデオを要求し、その後ＴＶサーバは、以前のアプリケーションのクラッシュに影響されることなく、ビデオスタックへの接続を提供できる。
【００１６】
次いで図３を参照すると、例示的なコンピュータシステム５１は、本発明の具体例を実行するために、ブリッジ５４に接続したプロセッサ５２を含む。ブリッジ５４はシステムメモリ５６にも接続されている。システムメモリ５６は、アドレス空間７０と７２を含む複数のアドレス空間を含む。アドレス空間７０と７２の中の一方はウインドウ１９に対して使用され、他方はウインドウ１４に対して使用されてよい。
【００１７】
ブリッジ５４は従来のバス５８に接続されている。チューナカード６２はバス５８に接続されてよい。テレビジョンといったディスプレイ６４はチューナカード６２に接続されてよい。ブリッジ６０もバス５８に接続されている。ブリッジ６０は、図１のアプリケーションＡまたはアプリケーションＢに対応するアプリケーションプログラム６８並びにサーバ１８及びビデオスタック２０を実現するためのソフトウェアを含む複数のソフトウェアプログラムを含む、ハードディスク・ドライブ６６に結合している。
【００１８】
本発明は限定された数の具体例に関して説明されてきたが、当業者であればそれらの多数の変更及び修正を考えるであろう。本願が本発明の正確な精神および有効な範囲内にある全てのそうした修正および変形を包含することが意図されている。
【図面の簡単な説明】
【図１】  本発明の一具体例において、一対のアプリケーションが、ビデオサーバ及びビデオスタックと相互作用する様子を説明するための略図である。
【図２】  図１に示されたシステムの動作を説明するためのフローチャートである。
【図３】  本発明の一具体例を実行するためのコンピュータのブロック図である。
【図１】
0004414596.tif 000002
【図２】
0004414596.tif 000003
【図３】
0004414596.tif 000004