(57)【要約】【課題】ローカルパソコンのビデオや３Ｄ加速をサポートするための、グラフィックフィルタドライバを採用してグラフィックデバイスインターフェイスコールを取得する方法を提供する。【解決手段】グラフィックデバイスインターフェイスエンジン１００と実ディスプレイドライバ２００に対して透明であるグラフィックフィルタドライバ１５０を採用して、グラフィックデバイスインターフェイスコールを取得する方法であって、実ディスプレイドライバから回送されたＤＤＩ関数テーブルをコピーするステップと、スクリーン更新をキャプチャーすべき実ディスプレイドライバのＤＤＩ関数を補正するステップと、補助バッファーを作成し、キャプチャーしたスクリーン更新の更新バッファーとするステップと、更新バッファーに対して後続処理４００を行うステップとを含む。【選択図】図１
2008046616.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックデバイスインターフェイスエンジンと実ディスプレイドライバとに対して透明であるグラフィックフィルタドライバを採用して、グラフィックデバイスインターフェイスコールを取得する方法であって、
実ディスプレイドライバから回送したＤＤＩ関数テーブルをコピーするステップと、
スクリーン更新をキャプチャーすべき実ディスプレイドライバのＤＤＩ関数を補正するステップと、
補助バッファーを作成し、キャプチャーしたスクリーン更新の更新バッファーとするステップと、
更新バッファーに対する後続処理を行うステップとを含む方法。
【請求項２】
請求項１に記載の方法であって、
前記スクリーン更新をキャプチャーすべきＤＤＩ関数を補正するステップは、
スクリーン更新をキャプチャーすべきＤＤＩ関数の関数テーブルにおける値を、フィルタドライバ対応関数に指向するポインターに補正すると共に、原始関数ポインターを記憶するステップをさらに含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
前記更新バッファーに対する後続処理を行うステップは、
需要に応じて、更新バッファーをドットマトリックスに描画したり、キャプチャーしたプリミティブを直接に処理したりするステップをさらに含むことを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、
実ディスプレイドライバの描画ＤＤＩをコールして、ローカルの表示更新を完成するステップをさらに含むことを特徴とする方法。
【請求項５】
請求項４に記載の方法であって、
前記実ディスプレイドライバの描画ＤＤＩをコールして、ローカルの表示更新を完成するステップは、
記憶している原始関数ポインターによって実ディスプレイドライバの描画ＤＤＩをコールして、実ディスプレイカードの表示更新を完成するステップをさらに含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックス及び画像処理の分野に関し、具体的には、グラフィックフィルタドライバによりコンピュータディスプレイデバイスのグラフィックデータを取得する方法に関する。
【背景技術】
【０００２】
ＰＣの演算能力の増強及びハードウエアとしてセットとなるグラフィックプロセッサーによって、ＰＣにおけるグラフィック画像処理能力が逐次増強され、早期の２Ｄビットマップ、ベクトルの応用から、３Ｄやビデオのサポートに進んできた。豊富な内容は、より優れた体験をユーザに与えると共に、表示内容を同期的に取得する必要がある応用、例えば、リモートコントロール、リモートプロジェクション、マルチユーザの共用、及びスクリーンスタティックキャプチャー等に大きな挑戦を与える、特に、スクリーン内容をリアルタイムに取得する必要がある応用である。
【０００３】
スクリーン内容をリアルタイムに取得する技術には、ソフトウェア実現方式及びハードウェア実現方式がある。ハードウェアによりスクリーン内容をリアルタイムに取得する技術は、表示アダプタのビデオ出力信号を直接にキャプチャーし、これを入力源としてビデオ圧縮カードに入力し、圧縮カードにより圧縮してストリームの形で記録している。このようなハードウェアで実現する方法は簡単であり、ハードウェア圧縮カードによりビデオ信号を処理するので、パソコンの処理能力に特別な要求がない。しかしながら、この方法の欠点は、ビデオ圧縮カードのようなハードウェアの増加を必要とし、デバイス配置が複雑でユーザの使用上の不便を招いてしまうことにある。さらに、ハードウェアで実現する方法では、信号が二回のデジタルアナログ変換を介してある程度の精度損失があり、大きな歪みがあるので、高品質の画面をユーザに提供することができない。
【０００４】
以下に、ソフトウェアによりスクリーン内容をリアルタイムに取得する技術を簡単に紹介する。Ｗｉｎｄｏｗｓ操作システムでは、アプリケーションプログラムはＧＤＩ（グラフィック・デバイス・インターフェイス）を介してスクリーンの描画を完成し、ＧＤＩはプリミティブ操作及びドットマトリックスインターフェイスをサポートしている。プリミティブレベルのインターフェイスは、相対的に高級なものであり、必要とされる記述データは少ないが直接表示できず、Ｗｉｎｄｏｗｓ表示体系とディスプレイカードによるハードウェア協力によってドットマトリックスに転換して出力しなければならない。ドットマトリックスレベルのインターフェイスは、相対的に低級なものであり、データ量は多いがキャプチャーしたデータを直接表示することができる。そこで、ソフトウェアで実現する方法において、ＧＤＩデータをキャプチャーすることは、ドットマトリックスのレベルにて行っても、プリミティブコールのレベルにて行ってもよく、或いは、両方を結合して行ってもよい。
【０００５】
第１のソフトウェアで実現する方法は、ユーザアプリケーションプログラムを採用してＦｒａｍｅ Ｂｕｆｆｅｒ（フレームバッファー）を定時に取得し、取得したフレーム画像に対して後続の処理を行うことである。第２のソフトウェアで実現する方法は、マイクロソフト社が定義している表示Ｍｉｒｒｏｒ体系を採用して、マップディスプレイドライバプログラム（ｍｉｒｒｏｒ）をロードし、目前のディスプレイの各更新をリアルタイムにコピーして、マッピングしたデータを圧縮しストリームの形で記録することである。
【０００６】
第１のソフトウェアで実現する方法では、区域が更新されたか否かに拘わらず、毎回取得するものはスクリーン全体である。さらに、当該方法はドットマトリックスインターフェイスしか採用できないので、データ量が多く、処理が遅く、帯域幅の要求が高いので、スタティック単一スクリーンのキャプチャー処理に対する応用に適している。第２のソフトウェアで実現する方法では、スクリーンの変化部分だけを取得するので、画像データを取得する速度が速く、画像表示と同時にコピー可能であり（リアルタイム性が高い）、広汎に採用されている。しかしながら、ビデオや３Ｄ処理のソースデータ量が多く、複雑なローカル計算を必要とするので、一般的には、ディスプレイカードハードウェアのＧＰＵ（グラフィック処理ユニット）により加速処理される。そこで、マイクロソフト社は、Ｍｉｒｒｏｒ体系を定義する際に、ローカルパソコンのビデオや３Ｄ加速に対するサポートを自動的に禁止し、３Ｄやビデオ加速に依存しているアプリケーションプログラムの運用ができなくなり、Ｍｉｒｒｏｒを採用するアプリケーションプログラムの運用効果が大きな制限を受けている。
【０００７】
したがって、Ｍｉｒｒｏｒと類似した、ビデオや３Ｄ加速をサポートしているＧＤＩコールを早くキャプチャーする方法が必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記の課題に鑑みてなされたものである。本発明は、ローカルパソコンのビデオや３Ｄ加速をサポートするための、グラフィックフィルタドライバを採用してグラフィックデバイスインターフェイスコールを取得する方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面では、グラフィックデバイスインターフェイスエンジンと実ディスプレイドライバに対して透明であるグラフィックフィルタドライバを採用して、グラフィックデバイスインターフェイスコールを取得する方法であって、実ディスプレイドライバから回送されたＤＤＩ関数テーブルをコピーするステップと、スクリーン更新をキャプチャーすべき実ディスプレイドライバのＤＤＩ関数を補正するステップと、補助バッファーを作成し、キャプチャーしたスクリーン更新の更新バッファーとするステップと、更新バッファーに対して後続処理を行うステップとを含む方法を提起している。
【発明の効果】
【００１０】
本発明の方法によれば、ソフトウェアによってローカルパソコンのビデオや３Ｄ加速に対するサポートを実現して、高い品質の画面と表示効果をユーザに提供することができる。従来技術であるＭｉｒｒｏｒ体系と比べ、本発明はＭｉｒｒｏｒ体系を採用していないので、システムのグラフィックデバイスインターフェイスエンジンがグラフィックフィルタドライバの存在を知らず、ディスプレイカードのビデオや３Ｄ加速の機能が依然として存在しており、これらの機能が依然としてシステムにてサポートされ、ビデオや３Ｄ加速を採用するアプリケーションプログラムは正常に動作できる。
【００１１】
本発明の上記並びにその他の目的と新規な特徴は、添付図面を参照しつつ、以下に示す実施形態の説明を読むと、より完全に明らかとなるであろう。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の具体的な実施態様について図面を参照して説明する。以下の説明において、当該分野における公知の技術の細部については一部省略している。これは、これらの公知の技術に対する詳しい記述は本発明のいくつかの特徴及び利点を曖昧にするからである。
【００１３】
Ｗｉｎｄｏｗｓ操作システムにおいて、ディスプレイドライバには、一系列のグラフィックデバイスドライバインターフェイスＤＤＩのサポートが要求され、これらのインターフェイスは、ドライバを管理するデバイス対象、Ｓｕｒｆａｃｅ、マウス、デバイスビットマップ、ＤｉｒｅｃｔＸ及び描画ＤＤＩに大きく分けられる。プログラムは、ＤＤＩインターフェイスを実現できれば、ディスプレイドライバとしてシステムにロードされ得る。
【００１４】
図１は、本発明の実施例に基づく方法に使用するグラフィックフィルタドライバ１５０、ＧＤＩエンジン１００、及び実ディスプレイドライバ２００間の論理関係を示している。
【００１５】
図１に示すように、本発明では、ＧＤＩエンジン１００と実ディスプレイドライバ２００との間に一つのフィルタ層を加入している。それはグラフィックフィルタドライバ１５０と称される。当該グラフィックフィルタドライバ１５０を組み込んでシステムを初期化することで、当該フィルタ層は、ＷｉｎｄｏｗｓＧＤＩエンジン１００に対して実ディスプレイドライバ２００として表されるが、実ディスプレイドライバ２００はＷｉｎｄｏｗｓＧＤＩエンジン１００として表される。即ち、ここでのグラフィックフィルタドライバ１５０は、ＧＤＩエンジン１００と実ディスプレイドライバ２００に対して透明なものである。
【００１６】
各表示更新と対応する描画ＤＤＩに対して、グラフィックフィルタドライバ１５０のＤＤＩは真っ先にコールされ、実行に際して、まず実ディスプレイドライバの対応ＤＤＩをコールしてローカル表示更新を完成させ、そして、当該コールパラメータを更新コールテーブル３００に記憶したり、ＧＤＩエンジン１００をコールしてドットマトリックスに転換すると共に、表示画面中に変化している区域を記録したりする。
【００１７】
図２は、本発明の実施例に基づく方法を説明するためのフローチャートである。図２に示すように、ステップＳ２１０において、前記のグラフィックフィルタドライバ１５０を目前のディスプレイカードの仮想ドライバとして実装する。
【００１８】
実装過程において、実装プログラムは、目前のシステムの主要表示デバイスのＰＮＤ  ＤｅｖｉｃｅＩＤ（即ち、プラグアンドプレイデバイスの標識）を取得し、ディスプレイカードのレジストエントリ｛4d36e968-e325-11ce-bfc1-08002be10318｝での各レジストエントリのＤｅｖｉｃｅＩＤを列挙してマッチングする。マッチングしたレジストエントリに対して、そのSettings（設置）キーでのInstalledDisplayDriversのレジストエントリを補正し、当該Keyの値を本発明のグラフィックフィルタドライバ１５０の名前に補正する。
【００１９】
ステップＳ２２０において、操作システムは、グラフィックフィルタドライバの名前に基づいてディスプレイドライバのモジュール名称を取得し、システムにロードして、グラフィックフィルタドライバ１５０をシステムにロードする。
【００２０】
システムがグラフィックフィルタドライバをロードする期間において、ドライバ入口関数DrvEnableDriver中に、グラフィックフィルタドライバ１５０が実ディスプレイドライバ２００をロードし、実ディスプレイドライバ２００が回送したＤＤＩ関数テーブルを１部コピーして、スクリーン更新に対するキャプチャーを必要とするＤＤＩ関数に対して、それの関数テーブルにおける値をフィルタドライバ対応関数を指向してなるポインターに補正し、同時に原始関数ポインターを記憶する。一方、処理が必要とされない関数、例えばビデオや３Ｄ加速インターフェイスに対して、実ディスプレイドライバの関数ポインターとして保留したまま、コピーした関数テーブルをＧＤＩに回送する。このようにして、グラフィックフィルタドライバ１５０は、実ディスプレイドライバ２００のコールに対するフィルタ機能を実現する。
【００２１】
図３は、グラフィックフィルタドライバをロードする際にコピー及び処理を必要とするインターフェイスの名前を示したＤＤＩリストである。
【００２２】
これらのインターフェイスＤＤＩにおいて、グラフィックフィルタドライバ１５０は、すべてのドライバ管理ＤＤＩを実現することで、ＧＤＩが要求するドライバロード、ドライバ禁止などの機能をキャプチャーし、内部の管理データを作成し、コールを実ディスプレイドライバの相応関数に転送する。
【００２３】
なお、描画ＤＤＩはキャプチャー内容の重点であり、すべてのスクリーン更新は、共に描画ＤＤＩによって完成されるものである。これらの関数中に、グラフィックフィルタドライバ１５０は、更新ＤＤＩのパラメータと更新のソースデータとを記録し、更新コールテーブル３００に記憶し、実ディスプレイドライバ２００の相応ＤＤＩをコールしてローカル描画を完成させる。必要であれば、グラフィックフィルタドライバ１５０は、更新ＤＤＩのコールをドットマトリックスに変換し、更新フレームバッファーに記憶してもよい。
【００２４】
また、マウス制御ＤＤＩは、マウス位置と形状の更新を実現し、グラフィックフィルタドライバ１５０は、これらの情報を記録して後続する処理４００に供給する。
【００２５】
ステップＳ２３０において、グラフィックフィルタドライバ２００のDrvEnableSurface  DDIがコールされ、当該ＤＤＩは、主要Ｓｕｒｆａｃｅを作成し、後続するすべての描画ＤＤＩの出力結果は、当該主要Ｓｕｒｆａｃｅに記憶される。フィルタドライバが更新バッファーを記憶しようとすれば、グラフィックフィルタドライバ１５０は、補助Ｓｕｒｆａｃｅを作成し、キャプチャーしたスクリーン更新の更新バッファーとし、後続の描画ＤＤＩがコールされるとき、描画したドットマトリックスをこの補助Ｓｕｒｆａｃｅに記憶する。
【００２６】
ステップＳ２４０において、スクリーン更新をキャプチャーすべき描画ＤＤＩがコールされ、グラフィックフィルタドライバ１５０は、コールパラメータと更新データソースを更新コールテーブル３００に記憶し、まず記憶した原始関数ポインターにより実ディスプレイドライバのＤＤＩをコールし、実ディスプレイカードの表示更新を完成させ、フレームバッファーを記憶しようとすれば、グラフィックフィルタドライバ１５０自身、又はＧＤＩエンジン１００を介して、補助Ｓｕｒｆａｃｅに描画を完成させる。このようにして、補助バッファーにおける内容は、表示スクリーンと同期して更新されている。
【００２７】
図４は、更新ドットマトリックスを記録するTextOutを例として前記方法のステップＳ２４０における処理フローを示している。
【００２８】
図４に示すように、ステップＳ４１０において、システムは、真っ先に実ディスプレイドライバ２００が当該ＤＤＩをサポートしているか否かを判断し、サポートしていれば、ステップＳ４２０において、実ディスプレイドライバ２００の関数をコールしてローカル表示を更新し、そうでなければ、ローカル更新をスキップする。
【００２９】
そして、ステップＳ４３０において、システムは、グラフィックフィルタドライバ１５０が動作状態にあるか否かを判断し、動作していなければ終了する。グラフィックフィルタドライバが動作状態にあれば、ステップＳ４４０において、DrvEnablePDEV段階で作成されたフィルタドライバの構造をサーチする。ステップＳ４５０において、見出されたか否かを判断する。見出されたならば、当該構造は確かにフィルタドライバで作成されたものであることを証明するものであり、ステップＳ４６０において、補助Ｓｕｒｆａｃｅをロックし、ステップＳ４７０において、ドットマトリックスを当該補助Ｓｕｒｆａｃｅに描画し、ステップＳ４８０にて当該補助Ｓｕｒｆａｃｅをアンロックする。ステップＳ４９０において、取得したドットマトリックスに対して後続する処理を行う。
【００３０】
本発明に係るフィルタドライバを採用してＧＤＩデータをキャプチャーする方法は、ビデオや３Ｄ応用をサポートの無線投影方法に適用することができ、当該方法には、キャプチャーした描画ＤＤＩに対し、ＧＤＩ  Ｅｎｇｉｎｅの対応関数をコールして描画処理を完成させ、そして、更新バッファーに記憶しているドットマトリックスを他のモジュールにより圧縮符号化して、ネットワークを介してプロジェクタの遠隔地に送信する。或いは、キャプチャーした描画プリミティブを分類し、ドットマトリックス操作に関するＤＤＩのドットマトリックスデータを圧縮処理する一方、非ドットマトリックスデータを直接処理してバッファーにおける描画プリミティブを更新し、両データを一緒にプロジェクタ側に送信して解凍及びプリミティブ描画を行うことで、マスタ側の画面をコピーする。
【００３１】
以上述べた内容は、本発明における具体的実施態様に過ぎず、本発明の保護範囲はこれに限定されるものではなく、当該発明の属する技術分野における通常の知識を有する者が本発明に掲げている技術範囲内にて容易に想到できる変更や交換であれば、本発明の保護範囲内に含まれるべきである。そこで、本発明の保護範囲は、請求の範囲によって限定されるものである。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施例に基づく方法に使用するグラフィックフィルタドライバ、ＧＤＩエンジン、及び実ディスプレイドライバ間の論理関係を示している。
【図２】本発明の実施例に基づく方法を説明するためのフローチャートである。
【図３】グラフィックフィルタドライバをロードする際にコピーと処理を必要とするインターフェイスの名前を示したＤＤＩリストである。
【図４】更新ドットマトリックスを記録するTextOutを例として上記方法のステップにおける処理フローを示している。
【符号の説明】
【００３３】
１００    グラフィックデバイスインターフェイス（ＧＤＩ）エンジン
１５０    グラフィックフィルタドライバ
２００    実ディスプレイドライバ
３００    更新コールテーブル
４００    後続処理
【図１】
2008046616.tif 000003
【図２】
2008046616.tif 000004
【図３】
2008046616.tif 000005
【図４】
2008046616.tif 000006