説明

物理カメラを共用するための仮想カメラ

【課題】複数のカメラ使用アプリケーションがカメラを同時に共用することができる仮想カメラコンポーネントを提供する。
【解決手段】例えば、第1アプリケーションは第1セットのデータのためカメラへのアクセスをリクエストすることができ、かつ、第2アプリケーションも第2セットのデータのためカメラへのアクセスをリクエストすることができる。仮想カメラコンポーネントは、第1及び第2アプリケーションとカメラとの間に接続され、かつ、第1及び第2アプリケーションの各要求に従ってデータをキャッシュ及び処理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施例は、複数のアプリケーションが同時に単一のカメラを使用することを可能にする。
【背景技術】
【0002】
ビデオカメラは多数のクライアントアプリケーションにおいて広く使用されている(例えば、ウェブカムレコーディングプログラム、ビデオ会議ツール、及び、インスタントメッセンジャー(IM)ツール)。
【0003】
図1の従来技術を参照すれば、システム100は、カメラ使用アプリケーションブロック102と、Windows(登録商標)ドライバモデル(WDM)キャプチャフィルタ104と、物理ビデオカメラ110とを備えている。ブロック102は、複数のカメラ使用アプリケーションを含む(例えば、MSNメッセンジャー108A、Yahooメッセンジャー108B、SKYPE108C、及び「360 Degree Web FACE(360°ウェブフェース)」(FACE)アプリケーション114)。特に、ブロック102のFACEアプリケーション114は、オーツーマイクロ社によって開発されたインテリジェントログオン及びロック/アンロックアプリケーションである。
【0004】
WDMキャプチャフィルタ104は、標準的なMicrosoft(登録商標)DirectXコンポーネント(カメラ110のデバイスドライバ(図示せず)と相互作用する)である。カメラ110のデバイスドライバは、拡張子(例えば、「.dll」)を有するドライバとして構成される。いったんWDMキャプチャフィルタ104がカメラ110のデバイスドライバを1つのアプリケーションにリンクさせると、カメラ110のデバイスドライバを、他のアプリケーションに利用することができない。換言すれば、WDMキャプチャフィルタ104は、1つのアプリケーションが所定の時間にカメラ110によってキャプチャされたデータを使用することだけを可能にする。
【0005】
例えば、いったんFACEアプリケーション114がビデオカメラ110へのアクセスをリクエストすれば、次いで、WDMキャプチャフィルタ104は呼び出され、かつ、カメラ110のデバイスドライバはロードされる。設定の後、カメラ110は動作を開始し、かつ、FACEアプリケーション114は顔認識のために正常に動作することができる。他のアプリケーション(例えば、MSNアプリケーション108A)がカメラ110を使用しようとするとき(FACEアプリケーション114がカメラを使用している間に)、カメラのデバイスドライバは、MSNアプリケーション108Aによってアクセスされるのに利用することができない。カメラ110を共用するのに競合があり、かつ、後で呼び出されるアプリケーションのMSNアプリケーション108Aは、カメラ110を使用することができない。
【発明の概要】
【課題を解決するための手段】
【0006】
1態様では、仮想カメラコンポーネントは、複数のカメラ使用アプリケーションが同じカメラを同時に使用することを可能にする。1つのそのような態様では、前記仮想カメラコンポーネントは、ビデオキャプチャソースフィルタと、仮想カメラセンタサービスと、仮想カメラ設定ツールとを備える。前記ビデオキャプチャソースフィルタ及び前記仮想カメラ設定ツールは、前記仮想カメラセンタサービスに共に接続されている。前記ビデオキャプチャソースフィルタは、前記カメラからのビデオデータを処理し、かつ、前記データを前記複数のカメラ使用アプリケーションに転送する。前記仮想カメラセンタサービスは、前記ビデオキャプチャソースフィルタを制御し、かつ、前記ビデオデータを、前記カメラから前記ビデオキャプチャソースフィルタに転送する。前記仮想カメラ設定ツールは、適した動作パラメータを用いて、前記仮想カメラセンタサービスを設定する。
【発明の効果】
【0007】
仮想カメラコンポーネントを使用することによって、複数のカメラ使用アプリケーション間の競合が解決され、かつ、複数のアプリケーションが同時に単一のカメラを共用することができる。
【図面の簡単な説明】
【0008】
【図1】複数のカメラ使用アプリケーションがインストールされた従来技術システムを示すブロック図である。
【図2】複数のカメラ使用アプリケーションが単一のカメラを同時に共用することができるシステムの1実施例を示すブロック図である。
【図3】本発明の1実施例のビデオキャプチャソースフィルタのブロック図である。
【図4】本発明の1実施例の複数のカメラ使用アプリケーションによって単一のカメラを共用するシステムのコンポーネントを示すブロック図である。
【図5】本発明の1実施例の複数のカメラ使用アプリケーションによって単一のカメラを共用する方法を示すフローチャートである。
【図6】本発明の1実施例の単一のカメラを使用する複数のアプリケーションを示すフロー図である。
【発明を実施するための形態】
【0009】
本願発明の実施例の特徴及び利点は、以下の詳細な説明が進み、かつ、添付図面を参照することによって明らかになる。類似の番号は類似の部分を示す。
【0010】
これから本発明の実施例を詳細に説明する。本発明は実施例に関連して説明されるが、本発明をこれらの実施例に限定することを意図しないと理解しなければならない。逆に、本発明は、添付の特許請求の範囲に定義された本発明の真の趣旨及び範囲に含まれる代替例、変形例、及び均等物を包含することを意図する。
【0011】
さらに、以下の本発明の詳細な説明には、本発明の完全な理解のために、多数の特定の詳細が記載されている。しかし、本発明がこれらの特定の詳細なしに実施されることを当業者なら理解する。他の実例では、本発明の態様を不必要に分かりにくくするのを避けるために、周知の方法、手順、コンポーネント、及び回路は説明されていない。
【0012】
以下の詳細な説明の一部の部分は、手順、論理ブロック、処理、及び、コンピュータメモリ内のデータビット上のオペレーションの他の象徴に関して示される。これらの記載及び表示は、データ処理分野の当業者によって使用される手段であり、その動作の実質を他の当業者に最も効果的に伝える。本出願では、手順、論理ブロック、プロセスなどは、ステップのセルフコンシステントシーケンス、又は、所望の結果を導く命令であると想起される。ステップは、物理量の物理的な操作を必要とするステップである。一般に、必ずしも必要ではないが、これらの量は、格納、転送、組合せ、比較、及び、コンピュータシステムにおいて別な方法で操作されることが可能な電気又は磁気信号の形態をとる。
【0013】
しかし、これらの全て及び類似の用語は、適した物理量に関連付けられ、かつ、これらの量に適用された単に都合の良いラベルであることに留意しなければならない。以下の論考から明らかなように、別な方法で特に記載されない限り、本出願を通して、論考(例えば、「作成」、「提供」、「キャプチャ」、「処理」、「計算」、「選択」などの用語を利用する)は、コンピュータシステム(又は、類似の電子計算デバイス)のアクション及び処理を称し、コンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表されたデータを、同じように、物理量(コンピュータシステムメモリ又はレジスタ又は他の情報ストレージ、転送又は表示デバイス内の)として表された他のデータに操作及び変形させる。
【0014】
本明細書に記載される実施例は、1又は複数のコンピュータ又は他のデバイスによって実行される、一部の形態のコンピュータ使用可能な媒体(例えば、プログラムモジュール)上に存在するコンピュータ実行可能命令との一般的な関連で論じられる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造など(特定のタスクを実行するか、又は、特定のアブストラクトデータタイプを実施する)を含む。プログラムモジュールの機能は、組み合わせるか、又は、要望に応じて多様な実施例に分配してもよい。
【0015】
一例として、コンピュータ使用可能な媒体は、コンピュータストレージ媒体、及び、通信媒体を含んでいるが、これに限定されない。コンピュータストレージ媒体は、情報(例えば、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は、他のデータ)のストレージのための方法又は技術において実施された揮発性及び不揮発性、取り外し可能及び固定媒体を含む。コンピュータストレージ媒体は、ランダムアクセスムモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去書込み可能なROM(EEPROM)、フラッシュメモリ、又は、他のメモリ技術、コンパクトディスクROM(CD−ROM)、デジタル・ビデオ・ディスク(DVD)、又は、他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、又は、他の磁気ストレージデバイス、又は、所望の情報を格納するのに使用することができる他の媒体を含んでいるが、これに限定されない。
【0016】
通信媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は、変調されたデータ信号における他のデータ(例えば、搬送波、又は、他の転送メカニズム)を具体化することができ、かつ、情報配信媒体を含む。用語「変調されたデータ信号」は、信号において情報をエンコードするような方法で設定又は変更された特徴のうちの1又は複数を有する信号を意味する。一例として、通信媒体は、有線媒体(例えば、有線ネットワーク、又は、直接有線接続)、及び、無線媒体(例えば、アコースティック、無線周波(RF)、赤外、及び、他の無線媒体)を含んでいるが、これに限定されない。また、上記の組合せは、コンピュータ読み取り可能な媒体の範囲に含まれなければならない。
【0017】
図面及びその説明では、単一のブロックが機能(複数可)を実行するように説明してもよいが、実際の実行では、機能(複数可)は、ブロックが単一のコンポーネント、又は、複数のコンポーネントにわたって実行されること、及び/又は、ハードウェアを使用して、ソフトウェアを使用して、又は、ハードウェアとソフトウェアの組合せを使用して実行されることによって実行される。
【0018】
図2は、仮想カメラコンポーネント(複数のカメラ使用アプリケーションが同時に単一のカメラを共用することができる)を備えたシステム200の1実施例を図示している。システム200は、多様なオペレーティングシステム(例えば、Windows(登録商標)オペレーティングシステムを含んでいるが、これに限定されない)を実行する多様な計算プラットフォーム上で実施することができる。例えば、システム200の計算プラットフォームは、パーソナルコンピュータ、ポケットPC(PPC)、パーソナルデジタルアシスタント(PDA)、又は、スマートフォンである。1実施例では、システム200のコンポーネント及び特徴はソフトウェアで実施される。
【0019】
図2の例では、システム200は、カメラ使用アプリケーションブロック202と、仮想カメラコンポーネント206と、WDMキャプチャフィルタ204と、物理カメラ210(例えば、ビデオカメラ)とを備えている。カメラ使用アプリケーションブロック202は、複数のクライアントアプリケーションを有する。1実施例では、クライアントアプリケーションは、リアルタイムビデオチャットをサポートするインスタントメッセンジャー(IM)プログラムを含む(例えば、MSNメッセンジャー208A、Yahooメッセンジャー208B、SKPE208C、アメリカオンラインインスタントメッセンジャー(AIM)(図示せず)、ICQ(図示せず)、グーグルトーク(図示せず)、PALTALK(図示せず)など)。他の実施例では、ブロック202のクライアントアプリケーションは、再生/レコーディングアプリケーションアプリケーション(例えば、Windows(登録商標)メディアプレーヤ(図示せず))と、ビデオ会議アプリケーション(例えば、NETMEETING(図示せず))と、ビデオ編集アプリケーションと、他のマルチメディアアプリケーションとを含んでもよい。1実施例では、カメラ使用アプリケーションブロック202は、「360°ウェブフェース(FACE)」アプリケーション214を含む(オーツーマイクロ社によって開発されたインテリジェントログオン及びロック/アンロックアプリケーションである)。顔認識技術を通じて、FACEアプリケーション214は、Windows(登録商標)オペレーティングシステムの便利でセキュアなログオン及びロック/アンロックを実行することができる。ユーザは、ユーザ名及びパスワードを入力することなく、カメラ210を通じて、その顔を確認する必要があるだけである。
【0020】
ブロック202の全てのアプリケーションは、カメラ210を利用して、マルチメディアデータを提供してもよい。本実施例では、1つのカメラ210だけが示されている。しかし、他の実施例では、1つ以上のカメラを、対応するカメラデバイスドライバを有するホスト計算プラットフォームに接続してもよい。その実施例では、ユーザは、カメラリストから1つのカメラを選択することができる。
【0021】
カメラ210は、アプリケーションの呼出しに応答して、オープンし、かつ、オープンしたままである。カメラ210は、種々の写真(例えば、*.jpeg, *gif, *.bmpなど)及びビデオ(例えば、*.wmv, *avi, *.asf, *.mpeg, *rm, *rmvbなど)メディアをサポートすることができる。
【0022】
図2の実施例では、カメラ使用アプリケーションブロック202は、仮想カメラコンポーネント206に接続されている。1実施例では、仮想カメラコンポーネント206は、Microsoft(登録商標)ソフトウェア開発キット(SDK)コンポーネント(DirectShowと称される)を使用して、具体化される。SDKは、アプリケーションプログラムインターフェース(API)と、プログラミングツールと、ヘッダと、ライブラリと、サンプルコードと、文書とを有するプログラミングパッケージである。DirectShow SDKを用いて、プログラマは、異なる高レベルプログラミング言語において、仮想カメラコンポーネント206のサブプログラムを構築することができる。
【0023】
仮想カメラコンポーネント206は、コンポーネントオブジェクトモデル(COM)対応の実行可能なプログラム又はプロセスとして構成することができる。COMは、Microsoft(登録商標)によって導入されたソフトウェアコンポーネントインターフェース規格である。COM技術をサポートする多様なプログラミング言語(例えば、C++及びJava(登録商標))を使用して、仮想カメラコンポーネント206の動的オブジェクトを作成することができる。したがって、オブジェクト(その内部実行の知識のない)の再使用が可能になり、かつ、仮想カメラコンポーネント206についての十分に定義されたインターフェースだけを提供することができる。
【0024】
Windows(登録商標)オペレーティングシステムはCOM APIを提供する。COM APIは、COM実行可能プログラム(例えば、仮想カメラコンポーネント206)のローディングをハンドルし、かつ、ブロック202のカメラ使用アプリケーションから仮想カメラコンポーネント206への接続を確立する。次いで、仮想カメラコンポーネント206を、ブロック202のアプリケーションに接続することができる。仮想カメラコンポーネント206によって実行されるオペレーションは、物理カメラ210のオペレーションと同じである。上記したように、複数のビデオキャプチャソースフィルタインスタンスは、ブロック202の複数のカメラ使用アプリケーションをサポートするために確立することができる。
【0025】
Windows(登録商標)オペレーティングシステムは、仮想ビデオのためのカーネルモデルWindows(登録商標)ドライバモデル(WDM)キャプチャフィルタ204を備えている。WDMキャプチャフィルタ204は、仮想カメラコンポーネント206に接続され、かつ、カメラデバイスドライバファイル又はダイナミックリンクライブラリ(DLL又は*.dll)ファイルにもリンクされている。DLLファイルへのリンクを作成することによって、WDMキャプチャフィルタ204は、カメラ210にアクセスして、キャプチャされたビデオデータフローを取得することができる。本実施例では、WDMキャプチャフィルタ204は、Microsoft(登録商標)DirectShow SDKによって提供され、かつ、KsProxy(Ksproxy.ax)と称される。また、ビデオストリームの所望のフレームレート及び解像度モードを、WDMキャプチャフィルタ204によって設定することができる。
【0026】
図3は、仮想カメラコンポーネント206の1実施例を図示している(仮想カメラコンポーネント206は、ビデオキャプチャソースフィルタ306と、仮想カメラセンタサービス302と、仮想カメラ設定ツール304とを備えている)。
【0027】
1実施例では、ビデオキャプチャソースフィルタ306は、標準化されたDirectShowモジュラーコンポーネントであり、かつ、ソースフィルタと、変換フィルタと、レンダラ(renderer)フィルタ(図示せず)とを備えている。ビデオキャプチャソースフィルタ306は、カメラ210によってキャプチャされたビデオストリームデータを読み出し、書き込み、かつ、処理し、次いで、カメラ使用アプリケーションブロック202の複数のアプリケーションにデータをレンダリングする。1実施例では、ビデオキャプチャソースフィルタ306は、カメラ210によってキャプチャされたビデオ又は画像データを格納するために、キャッシュ350(図4)にアクセスする。カメラ210を直接使用することに限定する代わりに、複数のカメラ使用アプリケーションMSN208A、Yahooメッセンジャー208B、FACE214などは、キャッシュ350から、写真又はビデオストリームデータを同時に読み出すことができる。ビデオキャプチャソースフィルタ306及び他のフィルタは、フィルタグラフ構成で配置されている。各フィルタは、機能モジュールとして形成してもよい。
【0028】
図3の実施例では、ビデオキャプチャソースフィルタ306は、フィルタ標準インターフェース310と、サービスアクセスモジュール312とを有する。フィルタ標準インターフェース310は、ビデオキャプチャソースフィルタ306の標準インターフェースである。ビデオキャプチャソースフィルタ306は、フィルタ標準インターフェース310を介して、ブロック202のカメラ使用アプリケーションと通信する。サービスアクセスモジュール312は、仮想カメラセンタサービス302に接続されて、仮想カメラセンタサービス302を介して、カメラ210からビデオデータを読み出す。
【0029】
仮想カメラセンタサービス302は、フィルタグラフマネージャとなる。それは、ビデオキャプチャソースフィルタ306のフィルタグラフを組み立てるだけでなく、制御フロー及びデータフローも取り扱う。仮想カメラセンタサービス302は、呼出しコマンドをカメラ210に転送し、かつ、カメラキャプチャデータもビデオキャプチャソースフィルタ306に提供する。仮想カメラセンタサービス302は、動作の前に、仮想カメラ設定ツール304によって設定される。仮想カメラ設定ツール304は、以下で図5に関連してさらに説明するように、仮想カメラセンタサービス302のパラメータを設定する。
【0030】
図4は、システム400の1実施例のブロック図である(仮想カメラコンポーネント206がブロック202の複数のカメラ使用アプリケーションによって使用されて、単一のカメラ210を共用する)。図4では、要素間の双方向矢印は要素間の論理関係を表している。これらの要素は、制御フロー及びデータフローを通じて相互にリンクされている。
【0031】
図4の実施例では、2つのアプリケーションがカメラ210を共用している(FACEアプリケーション214及びブロック410の1つのアプリケーション(例えば、MSNアプリケーション208A)は、共に実行中(同時に)でカメラ210を呼出ししているとき、仮想カメラコンポーネント206にインターフェースされる。)。
【0032】
本実施例では、FACEアプリケーション214及びMSNアプリケーション208Aは、ビデオキャプチャソースフィルタ306のフィルタ標準インターフェース310に接続され、かつ、フィルタ標準インターフェース310は、サービスアクセスモジュール312に接続される。ビデオキャプチャソースフィルタ306は、仮想カメラセンタサービス302に接続され、かつ、それによって制御される。次いで、WDMキャプチャフィルタ204に接続された仮想カメラセンタサービス302を用いて、仮想カメラコンポーネント206は、WDMキャプチャフィルタ204を通じて、カメラ210に接続される。
【0033】
FACEアプリケーション214及びMSNアプリケーション208Aがカメラ210を呼び出すとき、2つの対応するビデオキャプチャソースフィルタインスタンスが作成される。2つのビデオキャプチャソースフィルタインスタンスは、同じビデオデータフォーマット(例えば、解像度、フレームレートなど)か、又は、2つの異なるビデオデータフォーマットをリクエストしてもよい。FACEアプリケーション214に対する第1ビデオキャプチャソースフィルタインスタンスは、顔認識コマンドを開始し、一方では、MSNアプリケーション208Aに対する他のビデオキャプチャソースフィルタインスタンスは単にビデオストリームをリクエストしてもよい。2つのビデオキャプチャソースフィルタインスタンスが作成されると直ちに、次いで、仮想カメラコンポーネント206が動作するように設定される。
【0034】
そのシナリオでは、まず、仮想カメラ設定ツール304が仮想カメラセンタサービス302に対して適したパラメータ(例えば、解像度)を設定する。仮想カメラセンタサービス302は、カメラ210を検索し、かつ、仮想カメラコンポーネント206をカメラ210に接続してもよい。2つのビデオキャプチャソースフィルタインスタンスからの2つの呼出しコマンドを分析及び処理した後、仮想カメラセンタサービス302は、WDMキャプチャフィルタ204を通じて2つのコマンドをカメラ210に転送する。それに応じて、カメラ210はWDMキャプチャフィルタ204によって駆動され、かつ、ビデオストリーム又は画像データをキャプチャするのを開始する。例えば、2つのアプリケーションが異なる画像解像度に依存した場合、次いで、カメラ210は、より高い解像度でビデオ又は画像データキャプチャしてもよい。この例では、キャプチャされたデータは、顔認識計算も通過するが、第1ビデオキャプチャソースフィルタインスタンス(FACEアプリケーション214に対応する)に対してだけである。
【0035】
キャプチャされたビデオストリーム又は画像データは、WDMキャプチャフィルタ204を通じて仮想カメラコンポーネント206に転送され、かつ、キャッシュ350内にキャッシュされる。データを受信すると、仮想カメラコンポーネント206は、データを、2つのビデオキャプチャソースフィルタインスタンスによってリクエストされたフォーマットに処理する(2つの異なるフォーマットがリクエストされた場合、次いで、データはリクエストされたフォーマットに処理される。)。特に、ビデオストリーム又は画像データを受信するのは仮想カメラセンタサービス302であり、かつ、データを処理するのはビデオキャプチャソースフィルタ306である。次いで、2つの対応するビデオキャプチャソースフィルタインスタンスに続いて、処理されたデータは、フィルタ標準インターフェース310を介して、FACEアプリケーション214及びMSNアプリケーション208Aにそれぞれレンダリングされる。
【0036】
図5は、本発明の1実施例による複数のカメラ使用アプリケーションによって単一のカメラを同時に共用するための方法500のフローチャートである。1実施例では、方法500は、コンピュータ読み取り可能な媒体に格納されたコンピュータ実行可能命令として実施される。1実施例では、仮想カメラコンポーネントは、Microsoft(登録商標)DirectShow SDKのプラットフォーム上で開発され、かつ、COM対応の実行可能プロセスとして構成される。仮想カメラコンポーネントは、物理カメラに接続される(複数の物理カメラが存在した場合、次いで、ユーザはリストから1つの物理カメラを選択することができ、かつ、仮想カメラコンポーネントは選択された物理カメラに接続される。)。1実施例では、仮想カメラコンポーネントは、仮想カメラセンタサービスと、ビデオキャプチャソースフィルタ(前記仮想カメラセンタサービスに接続された)と、仮想カメラ設定ツール(前記仮想カメラセンタサービスにまた接続された)とを備えている。ビデオキャプチャソースフィルタは、物理カメラからのキャプチャされたビデオデータを処理し、かつ、それを複数のカメラ使用アプリケーションに転送する。仮想カメラセンタサービスは、ビデオキャプチャソースフィルタを制御し、かつ、ビデオデータをビデオキャプチャソースフィルタに転送する。仮想カメラ設定ツールは、適した動作パラメータを用いて、仮想カメラセンタサービスを設定する。
【0037】
仮想カメラコンポーネントは、複数のカメラ使用アプリケーション(同時アクセスを物理カメラにリクエストしている)に利用可能である。本実施例では、明確性及び簡潔性のため、図5は、ちょうど2つのカメラ使用アプリケーションのための仮想カメラコンポーネントの接続を確立する動作プロセスを図示している。例えば、顔認識(例えば、図2のFACEアプリケーション)に基づくインテリジェントログオン及びロック/アンロックアプリケーション、及び、インターネットベースインスタントメッセンジャーアプリケーション(例えば、図2のMSNアプリケーション)を、同時に物理カメラにアクセスするために呼び出してもよい。本論は、2つ以上のカメラ使用アプリケーションに容易に拡張することができる。
【0038】
ステップ502Aでは、カメラへの第1接続は、FACEアプリケーションによってリクエストされる。FACEアプリケーションは、顔認識のために、カメラにアクセスするように呼び出してもよい。ステップ502Bでは、第1接続と同時に、カメラへの第2接続がMSNアプリケーションによってリクエストされる。MSNアプリケーションは、ビデオストリームデータ転送のために、カメラにアクセスするように呼び出してもよい。FACEアプリケーションもMSNアプリケーションも、初めて物理カメラにアクセスするように呼び出すとき、仮想カメラコンポーネントの存在を知る必要はない(カメラ使用アプリケーションから見れば、仮想カメラコンポーネントへの接続はトラスペアレントであり、したがって、アプリケーションが物理カメラと直接通信しているように見える。)。FACE及びMSNアプリケーションは、連続して又は同時に2つの接続リクエストを送信してもよい。2つの接続コマンドがホストコンピュータによって同時に受信されたとき、仮想カメラコンポーネントは呼出し及びロードされる。
【0039】
ステップ504A及び504Bでは、FACEアプリケーションに対する第1ビデオキャプチャソースフィルタインスタンス、及び、MSNアプリケーションに対する第2ビデオキャプチャソースフィルタインスタンスがそれぞれ作成される。仮想カメラコンポーネントは、2つのアプリケーションのリクエストに応じてトリガすることができる。仮想カメラコンポーネントを使用するとき、ビデオキャプチャソースフィルタインスタンスは、2つの呼出しアプリケーションのFACE及びMSNをサポートするために、作成される。インスタンスは、実際の使用、及び、メモリ内にロードされたエンティティのコピーの結果として生じる仮想作成の両方である。ビデオキャプチャソースフィルタインスタンスは、仮想カメラコンポーネントに対するCOM APIのコピーである。仮想カメラコンポーネントに対するCOM APIの適したインターフェースパラメータを設定することができる。第1ビデオキャプチャソースフィルタインスタンスを作成することによって、顔認識のための仮想カメラコンポーネントへの第1接続が確立される。同様に、第2ビデオキャプチャソースフィルタインスタンスを作成することによって、MSNアプリケーションのための仮想カメラコンポーネントへの第2接続が確立される。1実施例では、仮想カメラコンポーネントについてのフィルタ名は、ステップ504A及び504Bで得ることができる。フィルタ名は、仮想カメラコンポーネントCOM APIプログラマによって指定される。
【0040】
ステップ506で、FACE及びMSNアプリケーションが異なるフォーマット又は異なる解像度のビデオデータをリクエストしたとき、最も高い要求が物理カメラに転送される(物理カメラは、同時リクエストの最も重要か又は最も制限された要求に従って動作する。)。例えば、より複雑なフォーマットのビデオデータについてのリクエスト、又は、より高い解像度のビデオデータについてのリクエストが、最も高い要求として取り扱われる。例えば、FACEアプリケーションに対する第1ビデオキャプチャソースフィルタインスタンスは、顔認識コマンドを送信し、かつ、一連の画像(640×480ピクセルの解像度を有する)をリクエストし、一方では、MSNアプリケーションに対する第2インスタンスは、320×240ピクセルの解像度を有するビデオストリームをリクエストする場合がある。2つのリクエストを分析及び処理した後、次いで、仮想カメラデバイスの仮想カメラセンタサービスは、コマンドを送信して、最も高く要求された解像度(640×480ピクセル)でビデオデータをキャプチャする。コマンドは、WDMキャプチャフィルタを通じて物理カメラに送信される。
【0041】
ステップ508では、カメラが駆動されて、最も高い要求に従ってビデオデータをキャプチャする。上記した例では、受信した最も高い要求に応じて、WDMキャプチャフィルタは呼出し及びロードされ、かつ、カメラはWDMキャプチャフィルタによって駆動されて、ビデオデータ(640×480ピクセルの解像度を有する)をキャプチャする。
【0042】
ステップ510では、キャプチャされたビデオデータは、仮想カメラコンポーネントに転送され、かつ、キャッシュされる。WDMキャプチャフィルタは、キャプチャされたデータを読み出し、かつ、データを仮想カメラコンポーネントに転送する。仮想カメラコンポーネントの仮想カメラセンタサービスは、キャプチャされたデータをまず受信する。
【0043】
ステップ512Aでは、ビデオデータ(最も高い要求のビデオデータにまだ対応する)は、第1ビデオキャプチャソースフィルタインスタンス(FACEアプリケーションに対する)によってリクエストされたフォーマット及び解像度に従ったデータに処理される。また、ステップ512Bでは、同じビデオデータは、第2ビデオキャプチャソースフィルタインスタンス(MSNアプリケーションに対する)によってリクエストされたフォーマット及び解像度に従うデータに処理される。上記したように、仮想カメラコンポーネントのビデオキャプチャソースフィルタは、ビデオデータを処理する。上記した例では、受信したビデオデータ(640×480ピクセルの解像度を有する)は、仮想カメラセンタサービスからビデオキャプチャソースフィルタに転送される。FACEについての第1ビデオキャプチャソースフィルタインスタンスに従って、ビデオデータは、一連の画像(640×480ピクセルの同じ解像度を有する)にサンプリングされ、次いで、顔認識アルゴリズムプログラムに通される。同じように、MSNについての第2ビデオキャプチャソースフィルタインスタンスによれば、ビデオデータ(640×480ピクセルの解像度を有する)は、320×240ピクセルにスケーリング又は切取りされる。
【0044】
ステップ514Aでは、データ(第1ビデオキャプチャソースフィルタインスタンスによってリクエストされたフォーマット及び解像度を有する)は、FACEアプリケーションにレンダリングされる。上記した実施例では、一連の画像(640×480ピクセルの解像度を有する)は、顔認識処理のために、FACEアプリケーションにレンダリングされる。ステップ514Bでは、第2ビデオキャプチャソースフィルタインスタンスによってリクエストされたデータが、MSNアプリケーションにレンダリングされる。上記した実施例では、ビデオストリームデータ(320×240ピクセルの解像度を有する)が、インターネットを通じた瞬時転送のために、MSNアプリケーションにレンダリングされる。このように、FACE及びMSNアプリケーションの両方は、カメラによってキャプチャされたビデオデータを使用することができ、かつ、適切に動作することができる。
【0045】
図6は、本発明の1実施例による単一の物理カメラを使用した複数のアプリケーションを示すワークフロー図600である。ワークフロー図600は、一連の制御フロー及びビデオデータフローに関して図示されている。実線は制御フローを表し、一方では、破線はビデオデータフローを表している。1実施例では、仮想カメラコンポーネントは、COM対応の実行可能なプロセス又はプログラムとして構成される。
【0046】
多数のユーザ及び多数のタスクをサポートするオペレーティングシステム(例えば、Windows(登録商標))では、ユーザ602は、同時に多くのアプリケーションをオープンし、かつ、オープンされたアプリケーションの一部は、物理カメラを使用する必要があってもよい。1態様では、例として、第1インスタントメッセンジャーアプリケーションMSN208Aと、第2インスタントメッセンジャーアプリケーションYahooメッセンジャー208Bと、インテリジェントログオン及びロック/アンロックアプリケーション(顔認識FACE214に基づく)とが全て動作中であり、かつ、カメラへのアクセスをリクエストしている。この例のために、コンピュータシステムに接続された単一の物理カメラだけが存在すると仮定する。図6は図4に関連して説明される。
【0047】
いったんMSNアプリケーション208Aがカメラにアクセスするように呼び出すと、第1ビデオキャプチャソースフィルタインスタンス610Aが作成される。いったんYahooメッセンジャーアプリケーション208Bがカメラにアクセスするように呼び出すと、第2ビデオキャプチャソースフィルタインスタンス610Bが作成される。同様に、Nビデオキャプチャソースフィルタインスタンスが、カメラにアクセスするための各呼出しに応じて作成される。FACEアプリケーション214がカメラにアクセスするように呼び出したとき、N番目のビデオキャプチャソースフィルタインスタンス610Cが作成される。ビデオキャプチャソースフィルタインスタンス610A、610B及び610Cは、物理カメラへの仮想インターフェースであり、かつ、ビデオキャプチャソースフィルタ306のインスタンスである。
【0048】
次いで、仮想カメラセンタサービス302は、Nビデオキャプチャソースフィルタインスタンス610A、610B及び610Cを分析及び管理し、かつ、WDMキャプチャフィルタ204を通じて物理カメラにコマンドを転送する。仮想カメラセンタサービス302は、ビデオキャプチャソースフィルタインスタンスの最も高い要求(例えば、最も高くリクエストされた解像度)をカメラに送信してもよい。また、仮想カメラセンタサービス302は、Nインスタンスからのリクエストを優先させ、かつ、競合するリクエストを多重化する。
【0049】
コマンドに応じて、カメラは最も高い要求でビデオデータをキャプチャする。カメラはカメラデバイスドライバ614によって駆動される(WDMキャプチャフィルタ204によって制御される)。WDMキャプチャフィルタ204は、キャプチャされたデータを読み出し、かつ、データを仮想カメラコンポーネントに転送する。仮想カメラコンポーネントの仮想カメラセンタサービス302は、データをまず受信及びキャッシュする。
【0050】
次いで、仮想カメラセンタサービス302は、キャッシュ350内にビデオデータをキャッシュする(ビデオキャプチャソースフィルタ306によってアクセスすることができる)。Nビデオキャプチャソースフィルタインスタンス610A、610B及び610Cを満足させるために、ビデオキャプチャソースフィルタは、ビデオキャプチャソースフィルタ306に、最も高い要求のビデオデータを、データ(Nインスタンス610A、610B及び610Cによってリクエストされた各フォーマット及び解像度を有する)に処理するように依頼する。Nビデオキャプチャソースフィルタインスタンス610A、610B及び610Cは、同じフォーマット及び/又は解像度か、又は、異なるフォーマット/解像度のデータをリクエストしてもよい。
【0051】
最後に、ワークフロー600に示すように、データは、Nカメラ使用アプリケーションにディスパッチされる(Nビデオキャプチャソースフィルタインスタンス610A、610B及び610Cに続く)。
【0052】
要約すれば、複数のカメラ使用アプリケーションによってカメラを共用することが達成され、かつ、そのアプリケーション間の競合が回避される。カメラ使用アプリケーションは、物理カメラ又は仮想カメラコンポーネントのどちらと通信しているかを見分けることができない(仮想カメラコンポーネントの使用はカメラ使用アプリケーションに対してトランスペアレントであり、かつ、物理カメラと直接インターフェースしているように動作する。)。同様に、ユーザ602は、物理カメラと相互作用するように、仮想カメラコンポーネントと相互作用する。カメラ使用の観点及びユーザの観点の両方から、全てのアプリケーションが物理カメラを使用しているようである。
【0053】
上記した説明及び図面は本発明の実施例を表すが、添付の特許請求の範囲に定義された本発明の原理の真の趣旨及び範囲から逸脱することなく、多様な追加、変更及び置換えがそれになされることを理解しなければならない。本発明が形態、構造、配置、比率、材料、要素、及びコンポーネントの多くの変形例で使用され、かつ、別な方法で、本発明の実施(本発明の原理から逸脱することなく、特定の環境及び動作上の要求に特に適合された)に使用されることを当業者なら理解する。したがって、ここで開示された実施例は、あらゆる点で説明的であり、限定するものではなく、本発明の範囲は添付の特許請求の範囲及びその法的均等物によって示され、かつ、上記した説明に限定されないものとして取り扱わなければならない。
【符号の説明】
【0054】
202 カメラ使用アプリケーション
204 WDMキャプチャフィルタ
206 仮想カメラコンポーネント
210 カメラ
208A MSN
208B Yahooメッセンジャー
208C SKYPE
214 FACE
302 仮想カメラセンタサービス
304 仮想カメラ設定ツール
306 ビデオキャプチャソースフィルタ
310 フィルタ標準インターフェース
312 サービスアクセスモジュール
350 キャッシュ
602 ユーザ
610A,B,C ビデオキャプチャソースフィルタインスタンス1,2,N
614 カメラデバイスドライバ

【特許請求の範囲】
【請求項1】
コンピュータシステムであって、
マルチメディアデータをキャプチャするカメラと、
前記カメラに接続されたメモリと
を備え、前記メモリは、
第1セットのデータのため、前記カメラへの第1アクセスをリクエストする第1アプリケーションと、
第2セットのデータのため、前記カメラへの第2アクセスをリクエストする第2アプリケーションと、
前記第1及び第2アプリケーションと、前記カメラとの間に接続された仮想カメラコンポーネントと
を備えたコンピュータ実行可能コンポーネントをその中に格納し、
前記第1及び第2アクセスは時間が重複し、
前記仮想カメラコンポーネントは、前記第1及び第2アプリケーションの各要求に従って、前記マルチメディアデータをキャッシュし、次いで、処理することを特徴とするコンピュータシステム。
【請求項2】
前記仮想カメラコンポーネントは、前記カメラに接続されているキャプチャフィルタに接続されたビデオキャプチャソースフィルタを備え、
前記ビデオキャプチャソースフィルタは、前記処理を実行し、かつ、前記第1及び第2アプリケーションに処理された前記マルチメディアデータをレンダリングすることを特徴とする請求項1に記載のコンピュータシステム。
【請求項3】
前記仮想カメラコンポーネントは、前記ビデオキャプチャソースフィルタを制御するために、及び、前記カメラから、前記キャプチャフィルタを介して前記ビデオキャプチャソースフィルタに、前記マルチメディアデータを転送するために、前記ビデオキャプチャソースフィルタに接続された仮想カメラセンタサービスをさらに備えることを特徴とする請求項2に記載のコンピュータシステム。
【請求項4】
前記仮想カメラコンポーネントは、前記第1及び第2アプリケーションに関連付けられた要求を識別するために、及び、前記要求のうちの最も制限された要求に従って、前記カメラを設定してマルチメディアデータをキャプチャするために、仮想カメラ設定ツールをさらに備えることを特徴とする請求項2に記載のコンピュータシステム。
【請求項5】
前記キャプチャフィルタは、Windows(登録商標)ドライバモジュール(WDM)キャプチャフィルタを含むことを特徴とする請求項2に記載のコンピュータシステム。
【請求項6】
前記第1アプリケーションは、インスタントメッセージアプリケーションであり、かつ、
前記第2アプリケーションは、顔認識アプリケーションであることを特徴とする請求項1に記載のコンピュータシステム。
【請求項7】
前記第1及び第2アプリケーションは、異なるフォーマット及び異なる解像度の前記マルチメディアデータをリクエストすることを特徴とする請求項1に記載のコンピュータシステム。
【請求項8】
前記仮想カメラコンポーネントは、前記カメラによってキャプチャされた前記マルチメディアデータを、前記異なるフォーマット及び前記異なる解像度に適合させることを特徴とする請求項7に記載のコンピュータシステム。
【請求項9】
複数のアプリケーションが物理カメラを同時に使用できるようにするためのコンピュータ実行可能な仮想カメラコンポーネントを具備するコンピュータ読み取り可能な媒体であって、
前記仮想カメラコンポーネントは、
前記物理カメラに接続されているキャプチャフィルタに接続されたビデオキャプチャソースフィルタと、
前記ビデオキャプチャソースフィルタを制御するために、及び、前記物理カメラから、前記キャプチャフィルタを介して前記ビデオキャプチャソースフィルタに、前記ビデオデータを転送するために、前記ビデオキャプチャソースフィルタに接続された仮想カメラセンタサービスと、
を具備し、
前記ビデオキャプチャソースフィルタは、前記物理カメラによってキャプチャされたビデオデータを処理し、かつ、前記複数のアプリケーションに処理された前記ビデオデータをレンダリングし、
前記物理カメラによってキャプチャされた前記ビデオデータは、前記処理ステップ及び前記レンダリングステップに先立って、キャッシュ内に格納されることを特徴とするコンピュータ読み取り可能な媒体。
【請求項10】
前記仮想カメラコンポーネントは、前記複数のアプリケーションに関連付けられた要求を識別するために、及び、前記要求のうちの最も制限された要求に従って、前記物理カメラを設定してビデオデータをキャプチャするために、前記仮想カメラセンタサービスに接続された仮想カメラ設定ツールをさらに備えることを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
【請求項11】
前記ビデオキャプチャソースフィルタは、前記アプリケーションのそれぞれについてのフィルタインスタンスを含むことを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
【請求項12】
前記キャプチャフィルタは、前記物理カメラを駆動するために、Windows(登録商標)ドライバモジュール(WDM)キャプチャフィルタを含むことを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
【請求項13】
前記ビデオキャプチャソースフィルタは、前記複数のアプリケーションを前記仮想カメラコンポーネントに接続するために、及び、前記処理されたビデオデータを前記複数のアプリケーションに転送するために、フィルタ基準インターフェースを含むことを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
【請求項14】
前記複数のアプリケーションは、異なるフォーマット及び異なる解像度の前記ビデオデータをリクエストすることを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
【請求項15】
前記ビデオキャプチャソースフィルタは、前記物理カメラによってキャプチャされた前記ビデオデータを、前記異なるフォーマット及び前記異なる解像度に適合させることを特徴とする請求項14に記載のコンピュータ読み取り可能な媒体。
【請求項16】
前記複数のアプリケーションは、インスタントメッセージアプリケーション、及び、顔認識アプリケーションを含むことを特徴とする請求項9に記載のコンピュータ読み取り可能な媒体。
【請求項17】
複数のアプリケーションが単一の物理カメラを同時に使用できるようにする方法であって、
前記複数のアプリケーションは、第1アプリケーション及び第2アプリケーションを有し、
前記方法は、
第1セットのデータについての前記第1アプリケーションからのリクエストに応じて、前記第1アプリケーションによる第1呼出しコマンドに応じて、第1ビデオキャプチャソースフィルタインスタンスを作成するステップと、
第2セットのデータについての前記第2アプリケーションからのリクエストに応じて、前記第2アプリケーションによる第2呼出しコマンドに応じて、第2ビデオキャプチャソースフィルタインスタンスを作成するステップと、
前記第1ビデオキャプチャソースフィルタインスタンスに従って、前記第1アプリケーションに前記第1セットのデータを提供するステップと、
前記第2ビデオキャプチャソースフィルタインスタンスに従って、前記第2アプリケーションに前記第2セットのデータを提供するステップと、
を具備し、
前記第1セットのデータに対する前記リクエストは、前記第2セットのデータに対する前記リクエストと同時であり、
前記第1セットのデータは、前記物理カメラによってキャプチャされたビデオデータから生成され、かつ、前記第1アプリケーションに関連付けられた第1要求を満足するように構成され、
前記第2セットのデータは、前記物理カメラによってキャプチャされた同じ前記ビデオデータから生成され、かつ、前記第2アプリケーションに関連付けられた第2要求を満足するように構成され、
前記第2要求は前記第1要求とは異なることを特徴とする方法。
【請求項18】
前記物理カメラによってキャプチャされた生データをキャッシュするステップと、
前記第1要求に従って、前記生データを前記第1セットのデータに処理するステップと、
前記第2要求に従って、前記生データを前記第2セットのデータに処理するステップと
をさらに具備することを特徴とする請求項17に記載の方法。
【請求項19】
前記第1及び第2アプリケーションに関連付けられた要求を識別するステップと、
前記第1及び第2要求のうちの最も制限された要求に従って、前記物理カメラを操作して、データをキャプチャするステップと
をさらに具備することを特徴とする請求項17に記載の方法。
【請求項20】
前記生データは、前記第1及び第2要求に従って指定された、最も高い解像度のデータに対応することを特徴とする請求項17に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate